コンパイラ

不要コードの削除(デッドコード除去)で取り除かれるものとして正しいものはどれか。

  1. Aプログラムの中で、最もよく実行される一番重要な部分のコード
  2. B実行されることがない部分や、結果がどこにも使われない計算
  3. C画面に結果を表示するための出力の命令
答えと解説を見る

正解:B. 実行されることがない部分や、結果がどこにも使われない計算

不要コードの削除は、条件が常に偽で決して実行されない分岐の中身や、計算しても結果がどこにも使われない代入などを取り除く最適化です。定数伝播や定数畳み込みのあとには、使われなくなった代入がたくさん生まれるので、組み合わせて使われます。よく実行される部分は速くするべき大事な部分で、削除してはいけません。画面への出力のように外から見える効果のある命令は、プログラムの結果の一部なので削除されません。

  • A. よく実行される部分は削除してはいけません。
  • B. 正しい。実行されない部分や使われない計算を取り除きます。
  • C. 外に見える効果のある命令は削除されません。
この分野を解く 分野ページへ

コンパイラのほかの問題

  1. 関数のインライン展開の利点と欠点の組み合わせとして正しいものはどれか。
  2. ループ展開(ループアンローリング)の主な効果として正しいものはどれか。
  3. 上のループで、ループ不変式の移動(ループの外への移動)の対象になる計算はどれか。(x、yはループ内で変更されないものとする)
  4. 上のループで、添字の計算 i * 4 に強度低減を行ったときの変換として正しいものはどれか。
  5. 上のループを、SIMD命令を使ってベクトル化しにくい主な理由はどれか。