[LLVMbugs] [Bug 9967] New: enum class values as default template arguments causes segfault in C++0x

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Fri May 20 08:19:19 PDT 2011


http://llvm.org/bugs/show_bug.cgi?id=9967

           Summary: enum class values as default template arguments causes
                    segfault in C++0x
           Product: clang
           Version: unspecified
          Platform: PC
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P
         Component: C++0x
        AssignedTo: unassignedclangbugs at nondot.org
        ReportedBy: chris at bubblescope.net
                CC: llvmbugs at cs.uiuc.edu, dgregor at apple.com


The following code segfaults the compiler the the backtrace below. This is
causing problems with boost, because clang claims to support enum structs.

enum struct alignment
{ unaligned };

template <alignment A >
struct X {};

X<alignment::unaligned> x;


Backtrace:

ICE cannot be evaluated!
UNREACHABLE executed at ExprConstant.cpp:3057!
0  clang           0x0000000002649982
1  clang           0x000000000264977e
2  libpthread.so.0 0x00007f3249519c60
3  libc.so.6       0x00007f3248804d05 gsignal + 53
4  libc.so.6       0x00007f3248808ab6 abort + 390
5  clang           0x0000000002634fcf
6  clang           0x00000000019f3d72
clang::Expr::isIntegerConstantExpr(llvm::APSInt&, clang::ASTContext&,
clang::SourceLocation*, bool) const + 204
7  clang           0x00000000016a0c3f
clang::Sema::CheckTemplateArgument(clang::NonTypeTemplateParmDecl*,
clang::QualType, clang::Expr*, clang::TemplateArgument&,
clang::Sema::CheckTemplateArgumentKind) + 689
8  clang           0x000000000169c7de
clang::Sema::CheckTemplateArgument(clang::NamedDecl*,
clang::TemplateArgumentLoc const&, clang::NamedDecl*, clang::SourceLocation,
clang::SourceLocation, unsigned int,
llvm::SmallVectorImpl<clang::TemplateArgument>&,
clang::Sema::CheckTemplateArgumentKind) + 1014
9  clang           0x000000000169d653
clang::Sema::CheckTemplateArgumentList(clang::TemplateDecl*,
clang::SourceLocation, clang::TemplateArgumentListInfo&, bool,
llvm::SmallVectorImpl<clang::TemplateArgument>&) + 1451
10 clang           0x00000000016996b4
clang::Sema::CheckTemplateIdType(clang::TemplateName, clang::SourceLocation,
clang::TemplateArgumentListInfo&) + 520
11 clang           0x000000000169a15d
clang::Sema::ActOnTemplateIdType(clang::CXXScopeSpec&,
clang::OpaquePtr<clang::TemplateName>, clang::SourceLocation,
clang::SourceLocation, clang::ASTTemplateArgsPtr, clang::SourceLocation) + 975
12 clang           0x000000000149c0fb
clang::Parser::AnnotateTemplateIdTokenAsType() + 267
13 clang           0x00000000014b1c5a
clang::Parser::ParseDeclarationSpecifiers(clang::DeclSpec&,
clang::Parser::ParsedTemplateInfo const&, clang::AccessSpecifier,
clang::Parser::DeclSpecContext) + 3874
14 clang           0x00000000014a4e3e
clang::Parser::ParseDeclarationOrFunctionDefinition(clang::Parser::ParsingDeclSpec&,
clang::AccessSpecifier) + 88
15 clang           0x00000000014a5251
clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttributes&,
clang::AccessSpecifier) + 113
16 clang           0x00000000014a4ac6
clang::Parser::ParseExternalDeclaration(clang::Parser::ParsedAttributesWithRange&,
clang::Parser::ParsingDeclSpec*) + 2428
17 clang           0x00000000014a40a7
clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&) + 283
18 clang           0x000000000148505c clang::ParseAST(clang::Sema&, bool) + 416
19 clang           0x00000000011f119f clang::ASTFrontendAction::ExecuteAction()
+ 263
20 clang           0x0000000001325a7b clang::CodeGenAction::ExecuteAction() +
927
21 clang           0x00000000011f0dfb clang::FrontendAction::Execute() + 325
22 clang           0x00000000011d7feb
clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) + 741
23 clang           0x000000000117ee13
clang::ExecuteCompilerInvocation(clang::CompilerInstance*) + 909
24 clang           0x000000000117034a cc1_main(char const**, char const**, char
const*, void*) + 952
25 clang           0x000000000117a5a3 main + 496
26 libc.so.6       0x00007f32487efeff __libc_start_main + 255
27 clang           0x000000000116fa19
Stack dump:
0.      Program arguments: /llvmdebug/bin/clang -cc1 -triple
x86_64-unknown-linux-gnu -emit-obj -mrelax-all -disable-free -main-file-name
t.cc -mrelocation-model static -mdisable-fp-elim -masm-verbose
-mconstructor-aliases -munwind-tables -target-cpu x86-64 -target-linker-version
2.21.51.20110409 -momit-leaf-frame-pointer -resource-dir
/llvmdebug/bin/../lib/clang/3.0 -std=gnu++0x -fdeprecated-macro -ferror-limit
19 -fmessage-length 180 -fcxx-exceptions -fexceptions -fgnu-runtime
-fdiagnostics-show-option -fcolor-diagnostics -o /tmp/cc-XS6Ybo.o -x c++ t.cc 
1.      t.cc:8:1: at annotation token 
clang: error: unable to execute command: Aborted
clang: error: clang frontend command failed due to signal 1 (use -v to see
invocation)

-- 
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.



More information about the llvm-bugs mailing list