到達不能コードはデッドコード()の一種である(デッドコード削除も参照)。デッドコードには、「冗長コード」なども含まれる。冗長コードは例えば、同じアドレスに同じ内容を繰り返し書き込む、あるいは内容が変化する可能性が無いのに繰り返し読み出す、などといったコードで、実行しても意味のある影響が無いコードである。他に、宣言されているが実際には使われない変数などの宣言を「冗長宣言」などと呼ぶこともある。到達不能コードの検出.静的コード解析の一種としては、変数の値やその他の実行時の条件がどうであっても決して実行されないコードを、単純なものでは制御構造の分析によって、より高度には抽象解釈などにより検出する。一部のプログラミング言語(Javaなど)では、ある種の到達不能コードは言語の仕様上許容されない。デッドコードの削除について詳しくはデッドコード削除の記事を参照のこと。しかし、静的に決定が可能なパターンの到達不能コードの検出は、そういったコードを意図的に書くことは無いといった意味では、最適化よりも、バグ(の可能性)を警告する、といった目的のためのほうが有用かもしれない。また、実際のところ、静的解析よりも、実行時の動的な最適化(例えばコマンドライン引数に対応して、動的コード生成を行うプログラムなどがある)の際のほうが、if文の条件式などが恒真式になったりして、到達不能コードが現れやすいかもしれない。コンパイラによる高度な最適化などの結果によっては、例えば共通式削除などで、ソースコード中には複数あらわれる表現であるのに、オブジェクトコード中で相当するのは一箇所だけ、といったような場合も、一種のデッドコードのようなものとして、デバッガなどからは見える場合もある。到達不能コードが生まれる原因.以下では、到達不能コードが生じる原因をいくつか解説する。while(condition)bar();while(condition)bar();他の到達不能コードが生じる原因として、条件判断が冗長化している場合や、デバッグ用コードを削除せずに残してしまう場合がある。関数やサブルーチンは、どこからも呼び出されない場合はデッドコードになるし、到達不能コードからのみ呼び出されている関数もデッドコードになる。