2017-02-27 12 views
0

次のリンクに従って、カスタムclangフロントエンドツールを作成しました。 http://clang.llvm.org/docs/RAVFrontendAction.htmlカスタムクランを実行中の例外一部の入力ファイルのフロントエンドツール

私は静的解析のフロントエンドツールにclangソースコードを提供しています。 ツールがこのテストケースの例外をスローしています https://llvm.org/svn/llvm-project/cfe/trunk/test/CXX/expr/expr.const/p2-0x.cpp

このテストケースのドキュメントからは、未定義の動作のために書かれています。 そして、このテストでClangToolを実行している間に、コントロールがHandleTranslationUnitに入る前でも、stackoverflow例外がスローされます。

上記のテストケースに対してclangがASTを生成できるため、コンパイル時に例外が発生する可能性があると仮定します。今質問は私が入力ソースファイルのセマンティクスを気にしないので、私はそのようなファイルのASTノードを訪れ続けることができません。私は静的分析にのみ興味があります。

これは予期された動作ですか?次に、生成されたASTをトラバースしてノードを訪問する方法。私は本当にこの瞬間に立ち往生しており、どのように進むべきかわからない。 この問題を解決するのに手伝ってください。

ありがとうございます!

おかげで、 Hemant Bhagat

答えて

0

は、私は答えを見つけました。システム再帰の深さに問題があります。 Windowsでは、デフォルトの再帰深度制限は512です。したがって、問題のテストケースの場合、スタックは再帰制限に達する前にオーバーフローしています。したがって、再帰深度制限を27に減らすと、スタックオーバーフロー例外が回避されます。

テンプレートの深さの場合も同様です。

関連する問題