GCCのすべての最適化をオフにするにはどうすればよいですか? -O0を使用すると、エフェクトのないステートメント、またはブレークステートメントのない無限ループの後のコードが最適化されるため、機能しません。GCCのすべての最適化をオフにする方法
8
A
答えて
7
gccが到達不能なコードや効果のない文を無視しないようにする方法はありません。
あなたができることは、揮発性変数を使用して到達できないように見えることです。上記の例では
volatile bool always_true = true;
if(always_true )
{
//infinite loop
//return something
}
//Useless code
gccがないので、それはこの例では役に立たない
int a = 5;
int b = 5;
volatile int c = 9;
c += 37;
return a + b;
Infactはある知ることができないので、GCCは無駄なコードをoptomizeません、整数cがアウト最適化されないであろうそれが死んだ重量コードであることが分かりません。
2
コンパイラが最適化するためにコードをほとんど不可能にする必要があります。たとえば :あなたは
- 使用
volatile
キーワードたとえば、コードは効果があることを確認してください:ただ値だけを印刷したり、それを保存するだけでなく、変数の値を変更しません
関連する問題
何もありません別の変数または変数に算術演算を行うと、別の変数
すべての最適化をオフにすることはできません。 –
フラグがなくてもgccはいくつかの基本的な最適化を行います。エフェクトのないステートメントを削除することは理にかなっています(最適化の有無)。ただ好奇心が強い:なぜあなたはデッドコードを保持したいですか? –