2017-04-05 11 views
1

私は(それの何バイナリバージョンがありませんよう、ARMに7.8)再び元からGHCを構築し、それはいくつかの点でこれを行い気づいている:ghcがそれ自身のビルドで矛盾した最適化フラグを渡すのはなぜですか?

"inplace/bin/ghc-stage1" -static -optc-DTHREADED_RTS -optc-DDEBUG -H32m \ 
    -O -Iincludes -Iincludes/dist -Iincludes/dist-derivedconstants/header \ 
    -Iincludes/dist-ghcconstants/header -Irts -Irts/dist/build -DCOMPILING_RTS \ 
    -package-name rts -dcmm-lint -i -irts -irts/dist/build  \ 
    -irts/dist/build/autogen -Irts/dist/build -Irts/dist/build/autogen \ 
    -O2 -O0 -c rts/StgMiscClosures.cmm -o rts/dist/build/StgMiscClosures.thr_debug_o 

まあ、それは-O-O2-O0中です単一のコマンド!

この理由は何ですか。このような場合には、どのフラグが優先されますか?

答えて

0

processArgsプロセスコマンドライン引数左から右へ(process in CmdLineParser.processArgsを参照。また、-Oフラグの意味は、それらのそれぞれがオンするようなものである個々の最適化(updOptLevel参照)のオン/オフ特定のサブセット中のSOそれは-O-O2の効果を上書きするので、あなたの例-O0「勝利」。

+0

[OK]をクリックします。そして、GHCを削除するには悩まずに、不要な、あまり特定のフラグをシャドーイング、コールスタックの並べ替えなどのコマンドラインを使用して悪用にこれを構築します前のもの? – leftaroundabout

+0

そうです、はい。 – Cactus

関連する問題