GCCについて part7at TECH
GCCについて part7 - 暇つぶし2ch906:デフォルトの名無しさん
07/09/19 17:48:48
いきなり豆知識 「殺菌灯」

ディパートメントゥストゥア(英語は発音大事だがこのように書くと非常にムカつくので注意が必要)などでよくある殺菌灯は
何か特別なものだと思い込んでいるのもいるが、あれは蛍光灯と同じである。
蛍光灯というのは水銀蒸気を封入し、そこに電荷をかけることで強力なUV-Cと呼ばれる紫外線を発生させる。
(封入されているのは水銀蒸気であるから、割れた蛍光管のそばにいるのは危険である)

蛍光灯と殺菌等の違いは、この紫外線をどう利用するかによって異なり、
蛍光物質で紫外線を吸収して可視光線に変換するのが蛍光灯
そういうことをせず、直にUV-Cを出すのが殺菌灯

というわけだ。
UV-C領域の紫外線は殺菌性に優れるが、皮膚に深く浸透して細胞まで害を及ぼすため
直視してはいけないのである。

907:デフォルトの名無しさん
07/09/19 17:50:44
GCCとどういった関係が

908:デフォルトの名無しさん
07/09/19 21:09:59
>>907
>水銀蒸気で殺菌する

まで読んだ

909:デフォルトの名無しさん
07/09/19 21:35:13
↓で誘導されますた
マルチスレッドプログラミング相談室 その6
スレリンク(tech板)

【OS】
Debian Etch Linux kernel 2.6.18
【言語】
C pthread
【実行環境】
GNU gdb 6.4.90-debian
gcc (GCC) 4.1.2

gdbでのマルチスレッドのデバッグ中、任意のスレッドでステップ実行をしていると
とつぜんカレントスレッドが切り替わり、
ステップ実行していたスレッドの実行位置が失われる現象に遭遇します。
デバッグ対象のプログラムは、動作確認がとれているオープンソースのプログラムです。
原因、回避法等ご存知のかた、ご教示いただけないでしょうか

910:デフォルトの名無しさん
07/09/19 21:59:00
>>909
裏のブレークも引っかかった

911:デフォルトの名無しさん
07/09/19 22:12:45
>>910
仮に別スレッドのブレークポイントでスレッドが切り替わったとしても
threadコマンドで元スレッドにもどれますよね?
切り替わった時点でステップ実行していたスレッドの現在位置が??() (こんな表示)
になって元に戻れなくなってしまいます。

912:デフォルトの名無しさん
07/09/22 18:39:25
GCC4.2.2を使ってました。このスレを読んでいたら4.1か4.3にした方が良いような気がしてきたので
4.3をコンパイルしたらエラーもなく終わったのでインストール。
しかし。。。カーネルのコンパイルが出来ません(TT)
getnstimeofdayとかudivdi3とかのエラー関係がでます。おとなしく4.1系に戻そう・・

913:デフォルトの名無しさん
07/09/22 23:26:06
Linux(x86,32bit)で下記プロセサを使っている場合、-mXXX や -mcpu=XXX や -march=XXX には何を書くのが良いのでしょうか?

processor       : 0
vendor_id       : AuthenticAMD
cpu family      : 15
model           : 47
model name      : AMD Athlon(tm) 64 Processor 3200+
stepping        : 2
cpu MHz         : 999.876
cache size      : 512 KB
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 1
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt lm 3dnowext 3dnow up pni lahf_lm ts fid vid ttp tm stc
bogomips        : 3537.29
clflush size    : 64


914:デフォルトの名無しさん
07/09/22 23:46:49
-march=athlon

915:デフォルトの名無しさん
07/09/23 00:26:42
-march=athlon64

916:デフォルトの名無しさん
07/09/23 00:59:43
>>913
ゲントとかいうLinuxのサイトからですが
URLリンク(gentoo-wiki.com)

917:デフォルトの名無しさん
07/09/23 01:33:38
じぇんつー

918:デフォルトの名無しさん
07/09/23 22:39:33
>>913
-march=k8 -msse3

919:デフォルトの名無しさん
07/09/23 23:43:46
頼むからmarchを「マーチ」ちゅうのやめてくれと。


920:デフォルトの名無しさん
07/09/23 23:47:09
マーチです

921:デフォルトの名無しさん
07/09/24 01:23:18
ですマーチ

922:920
07/09/24 01:34:19
予想通り

923:デフォルトの名無しさん
07/09/24 01:59:33
さりげな・く~♪

924:デフォルトの名無しさん
07/09/24 10:05:21 BE:23579377-2BP(1)
>>913
-march=native

925:デフォルトの名無しさん
07/09/24 18:27:32
gcc -Wp,hogehoge の-Wpって何をするオプションですか?

926:デフォルトの名無しさん
07/09/24 18:38:12
そんなんも知らんのか バカじゃねぇのw

927:デフォルトの名無しさん
07/09/24 18:42:32
質問を変えよう。

Fedoraのrpmのspecファイルを見ていると、CFLAGSに-Wp,-DXXX=YYYという指定をしている例がみられるの
だけど、単に-DXXX=YYYとしない理由は何か考えられますか?

gcc-4.1.2のinfoだと、-Wpはなるべく使うなと書かれているのだが...。
よろしくおねがいします。

928:デフォルトの名無しさん
07/09/24 18:43:53
>>926 よろしく。

929:デフォルトの名無しさん
07/09/24 21:57:37
天才926降臨期待age

930:デフォルトの名無しさん
07/09/26 12:27:49
MinGWの中の人がいつかきっとGCC3.4.6 for MinGWをリリースしてくれると信じてる。

931:デフォルトの名無しさん
07/09/27 00:33:49
MinGW

ゴールデンウィークが最小限なこと。
休みが一日しかないに違いない。

932:デフォルトの名無しさん
07/09/27 00:49:16
ゴールデンウィークなんて死語だぜ

933:デフォルトの名無しさん
07/09/27 00:50:02
ゴールデンウィークなんて(毎年)仕事だぜ

934:デフォルトの名無しさん
07/09/27 12:48:27
GCC online docs

ジーシーシー オンライン ドクス

なんだよドクスって
ドクスとか言うな!!

935:デフォルトの名無しさん
07/09/27 13:04:36
>>931
2008年や2014年の
 5月3日 = 土曜日
 5月4日 = 日曜日
 5月5日 = 月曜日
のことかー!!!

# でも4月29日の昭和の日が火曜日だから、4/26(土)・27(日)・28(月)・29(火)の連休もとりやすいんだよねw

936:935
07/09/27 13:06:58
# やべっ、忘れてた。法改正されたから、2008年や2014年は5月6日が振替休日!

937:デフォルトの名無しさん
07/09/27 14:59:21
掴もうぜ
ゴールデンボール

938:デフォルトの名無しさん
07/10/03 15:55:44
gcc4.2.2rcが先月末にあがってたので入れてみた。
マーチネイチブ、エムチュンネイチブ、何気にいいですね。なんかアプリの動きが早くなった。


939:デフォルトの名無しさん
07/10/03 16:05:31
>>938
>なんかアプリの動きが早くなった。
たぶん気のせいだよw

940:デフォルトの名無しさん
07/10/03 16:28:39
>>939
気のせいかなwww
4.2が正式リリースされてすぐに入れた時は逆に遅くなったような気がしたけど、今度のはいい感じなんだけど
なあ。mplayerなんかではgcc関連の値をセットしなくてもconfigureかけるとアプリが勝手に-mtune=nativeに
設定してくるね。

941:デフォルトの名無しさん
07/10/04 12:21:41
>>938
mtuneをエムチュンと読むのにmarchがマーチと読む心は?

942:デフォルトの名無しさん
07/10/04 22:06:39
>>941
エムアーチ

943:デフォルトの名無しさん
07/10/04 22:21:24
えむつね/えむあーち

944:デフォルトの名無しさん
07/10/04 23:02:36
むちゅーん
むあーき

945:デフォルトの名無しさん
07/10/04 23:41:23
むとーね
まるは

946:デフォルトの名無しさん
07/10/05 00:47:05
まーくエッチ

947:デフォルトの名無しさん
07/10/05 01:21:57
こうして日々GCCは進化していくのであった

948:デフォルトの名無しさん
07/10/05 17:34:00
エムアークゥィティクチュワ!

949:デフォルトの名無しさん
07/10/05 18:45:18
ウィキピィーディア

950:デフォルトの名無しさん
07/10/06 18:25:57
gccの--paramって、gcc4から使えるオプションだっけ?
あと、paramってコマンドラインでしか指定できないの?#pragmaで指定できると嬉しいのだが。

951:デフォルトの名無しさん
07/10/06 18:32:43
>>950 3でも使える。pragmaの件は知らん。

952:大槻
07/10/06 19:00:47
すべてはpragmaのせいです。

953:デフォルトの名無しさん
07/10/07 00:18:12
ストールマンって今何してんの?
まだemacsでオナニーしてんの?

954:デフォルトの名無しさん
07/10/07 08:52:40
秀○やSAKURAでオナニーするよりよっぽど良いべ。

955:デフォルトの名無しさん
07/10/07 09:15:57
少なくとも人の役にたってるオナニーだからいいじゃねぇか

956:デフォルトの名無しさん
07/10/07 09:38:54
公開オナニーてっこと?

957:デフォルトの名無しさん
07/10/08 01:29:18
あるデバッグオプションを有効にしてコンパイルすると、
Segmentation faultで落ちたときにソースのファイル名と
行番号を表示するという機能があるらしいんですが
どのオプションでしょうか

958:デフォルトの名無しさん
07/10/08 01:39:02
>>957
OSがわからんからLinuxだとエスパー。

行番号情報をバイナリに埋めるには、gcc -g だ。できあがったバイナリをstripしないこと。
% file ./your_broken_software して、not stripped と表示されることを確認。

でも、SEGV食らったときに自動で落ちた場所を表示するコードを埋める機能はgccには無いよ。
一部のLinuxには、catchsegvというコマンドがついてるからそれ使え。

% catchsegv ./your_broken_software


959:デフォルトの名無しさん
07/10/08 01:46:54
うそだ、ごめん。catchsegvだと、PCの値とかバックトレースはでるけど、行番号は出ないね。
素直にgdb上で実行するのがよいと思うが?



960:957
07/10/08 02:39:57
>>959
catchsegvか・・・ オッケー、刻んだ!

961:デフォルトの名無しさん
07/10/08 03:56:23
PCがわかれば addr2line -e a.out pc で行番号わかるよ。

962:デフォルトの名無しさん
07/10/08 09:29:06
$ gcc -g foo.c
$ gdb --batch -ex 'run あれば引数' ./a.out


963:デフォルトの名無しさん
07/10/09 11:05:30
gccのループ展開の抑制について質問させてください。

コードサイズの評価をしようとして、常用している -O3 に
ループ展開の抑制だけを加えて -O3 -fno-unroll-loops -fno-peel-loops と
したんですが、ループ展開を止めてくれません。どうやればいいんでしょう?

gccのバージョンは4.1.2(tarballから展開・パッチなし)、
実行環境はi686-pc-linux-gnuとpowerpc-linuxです(どちらでも現象は同じ)。

問題のコードを直接晒せないので、再現コードを書きます:

 #define N 5

 int foo(int a[])
 {
  int t = 0, i;
  for (i = 0; i < N; i++) t += a[i];
  return t;
 }

上のように定数回の小ループがあって、ループ回数が少ないと展開するようです。
展開した場合は、ループ構造は削除され、中身が回数分反復されます。

-O2 とすればループ展開を行わなくなります。
でも、ループ展開以外の最適化は -O3 のままにしておきたいんです。


964:デフォルトの名無しさん
07/10/09 11:47:28
トゥーチャノー(英語は発音大事)での、話のループを抑制したい。
こればっかりは、流れ石のGCC様の-Oも効かんでのう~ゴホゴホッ(持病の癪が)

965:デフォルトの名無しさん
07/10/09 12:06:44
>>964
癪は胸部腹部の痛みの総称なので、癪で咳き込む人はいない

966:デフォルトの名無しさん
07/10/09 12:38:41
ボケ殺し……

967:デフォルトの名無しさん
07/10/09 21:19:18
GCC 4.2.2 リリース age

968:デフォルトの名無しさん
07/10/09 21:51:46
>>963
4.1.2で色々やってみたけど抑制できなかった

969:デフォルトの名無しさん
07/10/09 22:02:20
そこだけソース別けて-O2でコンパイルするとか...

970:デフォルトの名無しさん
07/10/09 23:04:35
>>967
了解。今から長いコンパイルを開始します。

971:963
07/10/10 00:53:43
>>968
どもです。お手数おかけしてます。やっぱり地味に難しいんでしょうか。

>>969
避けてしまうのはどうにでもできるんですが、ほしいのは
「このコードをこういう条件でコンパイルするとこういう結果になります」という
コード評価でして。コードの一部だけ最適化条件を変えるのは
できるだけしたくない、という事情です。
ただ、ここで詰まっていてもしょうがないので、
適当なところで見切りをつけますけどね。全体を-O2にしてしまうとか。

4.1.2のmanを調べたら「-O3は-O2に-finline-functions -funswitch-loops
-fgcse-after-reloadを足したもの」と書いてあったのですが、
-O2にこれらを足しても-O3と等しくはなりませんでした。うーむ。

972:デフォルトの名無しさん
07/10/10 02:02:49
-O3 -fno-unroll-loops でいいんでないの?

973:デフォルトの名無しさん
07/10/10 04:53:20
>>971
manは結構いいかげんなのでソースを当たるべし。

974:デフォルトの名無しさん
07/10/10 08:52:16
さんざん既出だが、
自分で細かくコントロールしたければ、
-O3, -O2などを使ってはいけない。

975:868
07/10/10 11:29:11
逆に考えて -O2 に -O3 で追加されるような -fhogehoge 追加してけば?

976:私立ミンミンゼミ
07/10/10 12:24:09
 

977:デフォルトの名無しさん
07/10/10 15:01:37
念のため聞くけど、>>972とか>>975はギャグだよね……??

978:デフォルトの名無しさん
07/10/10 15:18:43
>>975の何がおかしいのかわからない。

979:デフォルトの名無しさん
07/10/10 15:22:26
きっと、-fhogehogeって名前のフラグがあると思ってるんだと推測。

980:デフォルトの名無しさん
07/10/10 15:29:25
>>978-979
>>971に既にその方法でやってるが、manでは正確ではないようだ
という話が出てるのに>>975を敢えて書くってのは自爆ギャグとか
かと考えないと、辻褄が合いそうにない。
ま、ギャグだとしても全然面白くないけど。

てか、おまえらも注意力散漫なんだな。

981:デフォルトの名無しさん
07/10/10 15:35:05
GNU製品のmanなんて宛てにしないでソースで正確なの調べろよ。

982:デフォルトの名無しさん
07/10/10 18:33:46
GNU製品のmanなんて信用せずに素直にinfo見ろよな

983:デフォルトの名無しさん
07/10/10 18:58:49
GNU製かどうかは関係ない。
ソースから生成してるのでもないかぎり文書は不正確なもの。

984:デフォルトの名無しさん
07/10/10 19:45:03
いや、info見ろよ。

985:デフォルトの名無しさん
07/10/10 20:57:03
infoもこう書いてあるけど
`-O3'
Optimize yet more. `-O3' turns on all optimizations specified by
`-O2' and also turns on the `-finline-functions',
`-funswitch-loops' and `-fgcse-after-reload' options.

986:デフォルトの名無しさん
07/10/10 21:53:56
>>983
でもさ、それって実装であって設計じゃないよね
ソフトウェア工学的にはうんこだよな

987:デフォルトの名無しさん
07/10/10 22:31:46
>>986
いまだにMDAとか言ってる位に仕様書からの実装合成はhype気味なんだから
一介のフリーソフトがそこまでできてなくてもしょうがないだろう。だって人間だもの(みつを

988:デフォルトの名無しさん
07/10/11 08:03:19
>>975
-O2使ったとたんに他の指定は上書きされるのが現実です。

個別に設定しても必ずその通りになるものではないし。
最適化技法間の制約があるので。

暗黙に無効、有効にする時に、Warningも出しません。
ソース読むしかないんです。

989:デフォルトの名無しさん
07/10/11 09:27:31
どの最適化をするかくらいならすぐ読めるよね

990:963
07/10/12 00:58:21
ソースを読みました。opts.c の decode_options() に最適化オプション読み込みの
基本部分がありました。大雑把には次のような構造でした。

 for (i = 1; i < argc; i++)
  { /* すべての-Oxオプションを通し読み */ }
 if (optimize >= 1)
  { flag_hoge = 1; ... } /* -O1以上でのフラグ設定を適用 */
 if (optimize >= 2)
  { flag_geho = 1; ... } /* -O2以上でのフラグ設定を適用 */
 ...
 handle_options(argc, argv, ...); /* 各オプションを処理 */

optimize >= 3 では、flag_inline_functions と flag_unswitch_loops と
flag_gcse_after_reload を 1 にしていました。
その箇所だけ読むとmanやinfoの記述は正しいことになるんですが、はて。
結局追いきれませんでした。

それから、>>988の通り、フラグ変数を書き換えてもその情報をどこにも伝えません。
ちょっと不便なような。。。

で、別解なんですが、「-O3 --param max-completely-peeled-insns=0」
と指定してpeelingを止めてしまえば目的を果たせることがわかりました。
この指定で行こうと思います。


991:デフォルトの名無しさん
07/10/12 01:22:28
いや、該当するフラグ変数を全ソースで検索しないと。
コンパイル中にフラグの値変ることもあるし。

992:デフォルトの名無しさん
07/10/12 02:23:32
>>991
ヒントありがとうございます。flag_unroll_loops と flag_peel_loops に
当たりをつけて探してみました。これだろうな、ってのが出てきました。

tree-ssa-loop.c:
static void
tree_complete_unroll (void)
{
 if (!current_loops)
  return;

 tree_unroll_loops_completely (current_loops,
                flag_unroll_loops
                || flag_peel_loops
                || optimize >= 3);
}

"optimize" でも軽く眺めてみましたが、フラグではなく最適化レベルの数値を
最適化の適用条件にしている箇所はそれなりに珍しいようです。


993:デフォルトの名無しさん
07/10/12 08:47:02
> optimize >= 3

ワラ
イヤだねー

994:デフォルトの名無しさん
07/10/12 09:03:27
将来を見据えた設計なのでは?

995:デフォルトの名無しさん
07/10/12 12:37:26
>>994
断言できる。何も考えてないだけ。

996:デフォルトの名無しさん
07/10/12 22:06:08
>>987
いや、ストールマンって趣味ならとても楽しくやりそうだけど
絶対に一緒に仕事やりたくない人種だよな

997:デフォルトの名無しさん
07/10/12 22:10:13
次スレ建てられなかった
誰か頼む

998:デフォルトの名無しさん
07/10/13 00:08:45
GCCについて part8
スレリンク(tech板)

999:デフォルトの名無しさん
07/10/13 00:36:21
>>998

次スレでもみんなよろしく

1000:デフォルトの名無しさん
07/10/13 00:37:18
1000

1001:1001
Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch