[cfe-dev] -ast-print-xml hasUninstantiatedDefaultArg assert

Garrison Venn gvenn.cfe.dev at gmail.com
Mon Nov 1 13:07:19 PDT 2010


On OS X (10.6.x) when running (with trunk revision: 117928):

clang++ -cc1 -ast-print-xml unparsedDefaultArg.cc 

produces the following partial stack dump with:

Assertion failed: (!hasUninstantiatedDefaultArg() && "Default argument is not yet instantiated!"), function getDefaultArg, file llvm/tools/clang/lib/AST/Decl.cpp, line 1092.
0  clang++           0x000000010120978b PrintStackTrace(void*) + 38
1  clang++           0x0000000101209d46 SignalHandler(int) + 254
2  libSystem.B.dylib 0x00007fff812e635a _sigtramp + 26
3  libSystem.B.dylib 0x0000000104c4dc65 _sigtramp + 2207676709
4  clang++           0x000000010002099f raise + 27
5  clang++           0x00000001000209af abort + 14
6  clang++           0x0000000100020a3c __gnu_cxx::new_allocator<std::pair<void (*)(void*), void*> >::new_allocator() + 0
7  clang++           0x00000001006bbda8 clang::ParmVarDecl::getDefaultArg() + 138
8  clang++           0x0000000100079831 clang::DocumentXML::DeclPrinter::addSubNodes(clang::ParmVarDecl*) + 25
9  clang++           0x000000010007994f clang::DocumentXML::DeclPrinter::VisitParmVarDecl(clang::ParmVarDecl*) + 249
10 clang++           0x0000000100079eab clang::DeclVisitor<clang::DocumentXML::DeclPrinter, void>::Visit(clang::Decl*) + 1055
11 clang++           0x000000010007a803 clang::DocumentXML::DeclPrinter::addSubNodes(clang::FunctionDecl*) + 61
12 clang++           0x000000010007aee2 clang::DocumentXML::DeclPrinter::VisitCXXMethodDecl(clang::CXXMethodDecl*) + 858
...


such that unparsedDefaultArg.cc ==

---------------------- START --------------------------------
#include <string>

int main (int argc, char* argv[])
{
    return(0);
}
----------------------- END -------------------------------

Same result occurs with a release build, and when building on Linux (32bit on ec2, clang+llvm
built with gcc4.2.1 and -m686).

I do not yet have the proficiency in Clang internals to debug this, but pointers 
in this direction would help mitigate my time. Specifically given that I need to
search for a parameter with a default arg, is there a symbol one could give
me which I could use in gdb to dump the current source (SourceLocation/SourceRange?)
at frame 7 above?

Thanks in advance

Garrison






More information about the cfe-dev mailing list