LLVM-3.0 では、名前付き構造体は常に一意であり、他の構造的に同じ構造体とのポインターの等価性は機能しません。LLVM-3.0 types に関するブログ エントリから、ハイライトは私のものです。
識別された構造は、私たちが話している種類のものです。それらは名前を持つことができ、型が作成された後に本体を指定することができます。識別された構造は、他の構造タイプと一意ではありません。これが、StructType::create(...) で生成される理由です。識別された型は潜在的に再帰的であるため、asmprinter は常にそれらの名前 (識別された構造体に名前がない場合は %42 のような番号) で出力します。
これにより、型ポインターのチェックによる型の等価性チェックが中断されます。たとえば、haskell パッケージllvmは、コンパイル時の型チェックと型キャストで等しい llvm 型ポインターに依存します。
2 つの構造体が同型 (同じ構造体) であることを確認する方法はありますか? できればllvm-c apiで?