私はソフトウェアのコード生成バックエンドとしてllvmを使用しようとしていますが、llvmがC++例外処理のサポートなしで)。しかし私のソフトウェアでは、例外処理を広範囲に使用しています。例外処理(C++/LLVM)をサポートしていないコードとのリンク
try-catch-blocksですべてのコールバック関数をラップすると(例外なく、llvmコードを "伝える"必要がないように)、 "-fno-exceptions"(GCC用)私のリンカーの旗から? (このフラグは通常、llvmとリンクするときに必要です。llvm-config --cxxflags
を実行したときに表示されます)。
もしそうでなければ、 "throws()"で宣言された関数でllvm関数をラップすると状況は変わりますか?これらの関数の実装は、-fno-exceptionsでコンパイルできます。
私はABIのコンプライアンスには賭けませんが、誰が知っていますか?例外を有効にしてLLVMをコンパイルする方が簡単で安全です。 – delnan
@delnan llvmのコンパイルはオプションではありません。私のソフトウェアは、さまざまなプラットフォーム(Linux、Mac、Windows)上の複数の人々によって使用されており、あなたが得るデフォルトのllvmのインストールに依存する必要があります。 apt-getから。 – Joel
@delnan:私はABIとの互換性についてはあまりよく分かりませんが、関数がthrows()で宣言されていれば、この場合は得られますか?私はそれに応じて問題を修正した。 – Joel