<p dir="ltr"><br>
On Jan 14, 2013 6:59 AM, "Kal Conley" <<a href="mailto:kcconley@gmail.com">kcconley@gmail.com</a>> wrote:<br>
><br>
> Heads up!<br>
> Its easy to crash clang 3.2 with this input:<br>
><br>
> template<...><br>
> int operator"" _b();<br>
> int main() { return 0_b; }<br>
><br>
> Output:<br>
><br>
> user-defined-literals-crash.cc:1:13: error: expected template parameter<br>
> template<...><br>
>             ^<br>
> user-defined-literals-crash.cc:2:5: error: no function template matches<br>
> function template specialization 'operator "" _b'<br>
> int operator"" _b();<br>
>     ^<br>
> 0  clang           0x00000000019ede2f<br>
> 1  clang           0x00000000019ee2182  libpthread.so.0 0x00007f9266cfc030<br>
> 3  clang           0x0000000000a8ab27<br>
> clang::Sema::LookupLiteralOperator(clang::Scope*, clang::LookupResult&,<br>
> llvm::ArrayRef<clang::QualType>, bool) + 151<br>
> 4  clang           0x0000000000a02953<br>
> clang::Sema::ActOnNumericConstant(clang::Token const&, clang::Scope*) + 851<br>
> 5  clang           0x00000000008c61f3<br>
> clang::Parser::ParseCastExpression(bool, bool, bool&,<br>
> clang::Parser::TypeCastState) + 259<br>
> 6  clang           0x00000000008c3876<br>
> clang::Parser::ParseAssignmentExpression(clang::Parser::TypeCastState) + 118<br>
> 7  clang           0x00000000008c37ec<br>
> clang::Parser::ParseExpression(clang::Parser::TypeCastState) + 12<br>
> 8  clang           0x00000000008ef3dc<br>
> clang::Parser::ParseReturnStatement() + 412<br>
> 9  clang           0x00000000008eafa2<br>
> clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*,<br>
> 32u>&, bool, clang::SourceLocation*,<br>
> clang::Parser::ParsedAttributesWithRange&) + 1618<br>
> 10 clang           0x00000000008ea8ea<br>
> clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*,<br>
> 32u>&, bool, clang::SourceLocation*) + 154<br>
> 11 clang           0x00000000008f0b59<br>
> clang::Parser::ParseCompoundStatementBody(bool) + 569<br>
> 12 clang           0x00000000008f2951<br>
> clang::Parser::ParseFunctionStatementBody(clang::Decl*,<br>
> clang::Parser::ParseScope&) + 161<br>
> 13 clang           0x000000000089cc88<br>
> clang::Parser::ParseFunctionDefinition(clang::ParsingDeclarator&,<br>
> clang::Parser::ParsedTemplateInfo const&,<br>
> clang::Parser::LateParsedAttrList*) + 2440<br>
> 14 clang           0x00000000008a9002<br>
> clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, unsigned int,<br>
> bool, clang::SourceLocation*, clang::Parser::ForRangeInit*) + 1442<br>
> 15 clang           0x000000000089c2ef<br>
> clang::Parser::ParseDeclOrFunctionDefInternal(clang::Parser::ParsedAttributesWithRange&,<br>
> clang::ParsingDeclSpec&, clang::AccessSpecifier) + 831<br>
> 16 clang           0x000000000089bd61<br>
> clang::Parser::ParseDeclarationOrFunctionDefinition(clang::Parser::ParsedAttributesWithRange&,<br>
> clang::ParsingDeclSpec*, clang::AccessSpecifier) + 241<br>
> 17 clang           0x000000000089b485<br>
> clang::Parser::ParseExternalDeclaration(clang::Parser::ParsedAttributesWithRange&,<br>
> clang::ParsingDeclSpec*) + 2357<br>
> 18 clang           0x000000000089aaca<br>
> clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&)<br>
> + 314<br>
> 19 clang           0x0000000000897bc6 clang::ParseAST(clang::Sema&,<br>
> bool, bool) + 326<br>
> 20 clang           0x0000000000795694<br>
> clang::CodeGenAction::ExecuteAction() + 996<br>
> 21 clang           0x0000000000664823 clang::FrontendAction::Execute() + 83<br>
> 22 clang           0x000000000064ae3d<br>
> clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) + 909<br>
> 23 clang           0x0000000000634842<br>
> clang::ExecuteCompilerInvocation(clang::CompilerInstance*) + 3602<br>
> 24 clang           0x000000000062c53b cc1_main(char const**, char<br>
> const**, char const*, void*) + 795<br>
> 25 clang           0x00000000006308c8 main + 696<br>
> 26 libc.so.6       0x00007f9265dd1ead __libc_start_main + 253<br>
> 27 clang           0x000000000062c159<br>
> Stack dump:<br>
> 0.      Program arguments: /opt/bin/clang -cc1 -triple<br>
> x86_64-unknown-linux-gnu -emit-obj -mrelax-all -disable-free<br>
> -disable-llvm-verifier -main-file-name user-defined-literals-crash.cc<br>
> -mrelocation-model static -mdisable-fp-elim -fmath-errno -masm-verbose<br>
> -mconstructor-aliases -munwind-tables -fuse-init-array -target-cpu<br>
> x86-64 -target-linker-version 2.22 -momit-leaf-frame-pointer<br>
> -resource-dir /opt/bin/../lib/clang/3.2 -fmodule-cache-path<br>
> /var/tmp/clang-module-cache -internal-isystem<br>
> /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7<br>
> -internal-isystem<br>
> /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/x86_64-linux-gnu<br>
> -internal-isystem<br>
> /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/backward<br>
> -internal-isystem /usr/local/include -internal-isystem<br>
> /opt/bin/../lib/clang/3.2/include -internal-externc-isystem<br>
> /usr/include/x86_64-linux-gnu -internal-externc-isystem /include<br>
> -internal-externc-isystem /usr/include -std=c++11 -fdeprecated-macro<br>
> -fdebug-compilation-dir /home/kal/devel/user-defined-literals<br>
> -ferror-limit 19 -fmessage-length 190 -mstackrealign -fobjc-runtime=gcc<br>
> -fcxx-exceptions -fexceptions -fdiagnostics-show-option<br>
> -fcolor-diagnostics -o /tmp/user-defined-literals-crash-jccQn7.o -x c++<br>
> user-defined-literals-crash.cc<br>
> 1.      user-defined-literals-crash.cc:3:21: current parser token '0_b'<br>
> 2.      user-defined-literals-crash.cc:3:12: parsing function body 'main'<br>
> 3.      user-defined-literals-crash.cc:3:12: in compound statement ('{}')<br>
> clang: error: unable to execute command: Segmentation fault<br>
> clang: error: clang frontend command failed due to signal (use -v to see<br>
> invocation)<br>
> clang version 3.2 (tags/RELEASE_32/final 170703)<br>
> Target: x86_64-unknown-linux-gnu<br>
> Thread model: posix<br>
> clang: note: diagnostic msg: PLEASE submit a bug report to<br>
> <a href="http://llvm.org/bugs/">http://llvm.org/bugs/</a> and include the crash backtrace, preprocessed<br>
> source, and associated run script.</p>
<p dir="ltr">As per these instructions, please file a bug at <a href="http://llvm.org/bugs">llvm.org/bugs</a><br></p>
<p dir="ltr">> clang: note: diagnostic msg:<br>
> ********************<br>
><br>
> PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:<br>
> Preprocessed source(s) and associated run script(s) are located at:<br>
> clang: note: diagnostic msg: /tmp/user-defined-literals-crash-izTAuB.cpp<br>
> clang: note: diagnostic msg: /tmp/user-defined-literals-crash-izTAuB.sh<br>
> clang: note: diagnostic msg:<br>
><br>
> ********************<br>
><br>
> _______________________________________________<br>
> cfe-dev mailing list<br>
> <a href="mailto:cfe-dev@cs.uiuc.edu">cfe-dev@cs.uiuc.edu</a><br>
> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev</a><br>
</p>