GCCについて part7at TECH
GCCについて part7 - 暇つぶし2ch981:デフォルトの名無しさん
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