1 名前:デフォルトの名無しさん [2006/04/18(火) 19:57:04 ] 史上最強かもしれないツール、GCC(GNU Compiler Collection)について語るスレ。 GNU本家のGCCページ gcc.gnu.org/ Binutils - Collection of binary utilities ←これも必要だぞ。 www.gnu.org/directory/GNU/binutils.html GNU Binutils sources.redhat.com/binutils/ GCC online documentation gcc.gnu.org/onlinedocs/ Installing GCC gcc.gnu.org/install/ GCC Timeline gcc.gnu.org/releases.html#timeline Calendar gcc.gnu.org/develop.html#timeline
968 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 21:51:46 ] >>963 4.1.2で色々やってみたけど抑制できなかった
969 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 22:02:20 ] そこだけソース別けて-O2でコンパイルするとか...
970 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 23:04:35 ] >>967 了解。今から長いコンパイルを開始します。
971 名前:963 mailto:sage [2007/10/10(水) 00:53:43 ] >>968 どもです。お手数おかけしてます。やっぱり地味に難しいんでしょうか。 >>969 避けてしまうのはどうにでもできるんですが、ほしいのは 「このコードをこういう条件でコンパイルするとこういう結果になります」という コード評価でして。コードの一部だけ最適化条件を変えるのは できるだけしたくない、という事情です。 ただ、ここで詰まっていてもしょうがないので、 適当なところで見切りをつけますけどね。全体を-O2にしてしまうとか。 4.1.2のmanを調べたら「-O3は-O2に-finline-functions -funswitch-loops -fgcse-after-reloadを足したもの」と書いてあったのですが、 -O2にこれらを足しても-O3と等しくはなりませんでした。うーむ。
972 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 02:02:49 ] -O3 -fno-unroll-loops でいいんでないの?
973 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 04:53:20 ] >>971 manは結構いいかげんなのでソースを当たるべし。
974 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 08:52:16 ] さんざん既出だが、 自分で細かくコントロールしたければ、 -O3, -O2などを使ってはいけない。
975 名前:868 mailto:sage [2007/10/10(水) 11:29:11 ] 逆に考えて -O2 に -O3 で追加されるような -fhogehoge 追加してけば?
976 名前:私立ミンミンゼミ [2007/10/10(水) 12:24:09 ]
977 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 15:01:37 ] 念のため聞くけど、>>972 とか>>975 はギャグだよね……??
978 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 15:18:43 ] >>975 の何がおかしいのかわからない。
979 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 15:22:26 ] きっと、-fhogehogeって名前のフラグがあると思ってるんだと推測。
980 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 15:29:25 ] >>978-979 >>971 に既にその方法でやってるが、manでは正確ではないようだ という話が出てるのに>>975 を敢えて書くってのは自爆ギャグとか かと考えないと、辻褄が合いそうにない。 ま、ギャグだとしても全然面白くないけど。 てか、おまえらも注意力散漫なんだな。
981 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 15:35:05 ] GNU製品のmanなんて宛てにしないでソースで正確なの調べろよ。
982 名前:デフォルトの名無しさん [2007/10/10(水) 18:33:46 ] GNU製品のmanなんて信用せずに素直にinfo見ろよな
983 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 18:58:49 ] GNU製かどうかは関係ない。 ソースから生成してるのでもないかぎり文書は不正確なもの。
984 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 19:45:03 ] いや、info見ろよ。
985 名前:デフォルトの名無しさん mailto:sage [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 21:53:56 ] >>983 でもさ、それって実装であって設計じゃないよね ソフトウェア工学的にはうんこだよな
987 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 22:31:46 ] >>986 いまだにMDAとか言ってる位に仕様書からの実装合成はhype気味なんだから 一介のフリーソフトがそこまでできてなくてもしょうがないだろう。だって人間だもの(みつを
988 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 08:03:19 ] >>975 -O2使ったとたんに他の指定は上書きされるのが現実です。 個別に設定しても必ずその通りになるものではないし。 最適化技法間の制約があるので。 暗黙に無効、有効にする時に、Warningも出しません。 ソース読むしかないんです。
989 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 09:27:31 ] どの最適化をするかくらいならすぐ読めるよね
990 名前:963 mailto:sage [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 01:22:28 ] いや、該当するフラグ変数を全ソースで検索しないと。 コンパイル中にフラグの値変ることもあるし。
992 名前:デフォルトの名無しさん mailto:sage [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 08:47:02 ] > optimize >= 3 ワラ イヤだねー
994 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 09:03:27 ] 将来を見据えた設計なのでは?
995 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 12:37:26 ] >>994 断言できる。何も考えてないだけ。
996 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 22:06:08 ] >>987 いや、ストールマンって趣味ならとても楽しくやりそうだけど 絶対に一緒に仕事やりたくない人種だよな
997 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 22:10:13 ] 次スレ建てられなかった 誰か頼む
998 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 00:08:45 ] GCCについて part8 pc11.2ch.net/test/read.cgi/tech/1192201659/
999 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 00:36:21 ] >>998 乙 次スレでもみんなよろしく
1000 名前:デフォルトの名無しさん [2007/10/13(土) 00:37:18 ] 1000
1001 名前:1001 [Over 1000 Thread] このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。