[LLVMbugs] [Bug 9923] New: enum class streaming causes clang stack dump

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Sun May 15 17:49:54 PDT 2011


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

           Summary: enum class streaming causes clang stack dump
           Product: clang
           Version: trunk
          Platform: PC
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P
         Component: C++0x
        AssignedTo: unassignedclangbugs at nondot.org
        ReportedBy: hhinnant at apple.com
                CC: llvmbugs at cs.uiuc.edu, dgregor at apple.com


I wouldn't have even bothered filing this bug (yet) except that
__has_feature(cxx_strong_enums) answered true in C++0x mode.  So here it is:

Apple clang version 3.0 (trunk 131335) (based on LLVM 3.0svn)
Target: x86_64-apple-darwin10.7.0
Thread model: posix

$ clang++ -stdlib=libc++ -std=c++0x -I. main.cpp

#include <ostream>

#if __has_feature(cxx_strong_enums)

enum class duration_fmt {prefix, symbol};

#else

struct duration_fmt
{
    enum _ {prefix, symbol};

    _ __v_;

    duration_fmt(_ __v) : __v_(__v) {}
    operator int() const {return __v_;}
};

#endif

template<class charT, class traits>
std::basic_ostream<charT, traits>&
operator <<(std::basic_ostream<charT, traits>& os, duration_fmt d)
{
    return os;
}

#include <iostream>

int main()
{
    std::cout << duration_fmt::symbol;
}


0  clang             0x0000000100cb0f62 PrintStackTrace(void*) + 34
1  clang             0x0000000100cb1419 SignalHandler(int) + 601
2  libSystem.B.dylib 0x00007fff81e0e66a _sigtramp + 26
3  clang             0x00000001001b8443
llvm::FoldingSet<clang::CodeGen::CGFunctionInfo>::NodeEquals(llvm::FoldingSetImpl::Node*,
llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const + 35
4  clang             0x00000001001bb994 llvm::IRBuilder<false,
llvm::ConstantFolder, llvm::IRBuilderDefaultInserter<false>
>::CreateLoad(llvm::Value*, char const*) + 52
5  clang             0x0000000100136d4d
clang::CodeGen::CodeGenFunction::EmitLoadOfLValue(clang::CodeGen::LValue,
clang::QualType) + 205
6  clang             0x00000001001533d1 clang::StmtVisitorBase<clang::make_ptr,
(anonymous namespace)::ScalarExprEmitter, llvm::Value*>::Visit(clang::Stmt*) +
10881
7  clang             0x000000010014c598
clang::CodeGen::CodeGenFunction::EmitScalarExpr(clang::Expr const*, bool) + 72
8  clang             0x0000000100130b89
clang::CodeGen::CodeGenFunction::EmitAnyExpr(clang::Expr const*,
clang::CodeGen::AggValueSlot, bool) + 57
9  clang             0x0000000100131197
clang::CodeGen::CodeGenFunction::EmitAnyExprToTemp(clang::Expr const*) + 183
10 clang             0x000000010010b82b
clang::CodeGen::CodeGenFunction::EmitCallArg(clang::CodeGen::CallArgList&,
clang::Expr const*, clang::QualType) + 123
11 clang             0x0000000100139e6d void
clang::CodeGen::CodeGenFunction::EmitCallArgs<clang::FunctionProtoType>(clang::CodeGen::CallArgList&,
clang::FunctionProtoType const*, clang::ConstExprIterator,
clang::ConstExprIterator) + 109
12 clang             0x00000001001392b3
clang::CodeGen::CodeGenFunction::EmitCall(clang::QualType, llvm::Value*,
clang::CodeGen::ReturnValueSlot, clang::ConstExprIterator,
clang::ConstExprIterator, clang::Decl const*) + 147
13 clang             0x00000001001391f1
clang::CodeGen::CodeGenFunction::EmitCallExpr(clang::CallExpr const*,
clang::CodeGen::ReturnValueSlot) + 401
14 clang             0x0000000100133007
clang::CodeGen::CodeGenFunction::EmitCallExprLValue(clang::CallExpr const*) +
39
15 clang             0x0000000100130d03
clang::CodeGen::CodeGenFunction::EmitLValue(clang::Expr const*) + 243
16 clang             0x0000000100130b4a
clang::CodeGen::CodeGenFunction::EmitIgnoredExpr(clang::Expr const*) + 58
17 clang             0x000000010018f312
clang::CodeGen::CodeGenFunction::EmitStmt(clang::Stmt const*) + 194
18 clang             0x0000000100193b4b
clang::CodeGen::CodeGenFunction::EmitCompoundStmt(clang::CompoundStmt const&,
bool, clang::CodeGen::AggValueSlot) + 267
19 clang             0x000000010018f658
clang::CodeGen::CodeGenFunction::EmitSimpleStmt(clang::Stmt const*) + 152
20 clang             0x000000010018f270
clang::CodeGen::CodeGenFunction::EmitStmt(clang::Stmt const*) + 32
21 clang             0x00000001001aafdf
clang::CodeGen::CodeGenFunction::GenerateCode(clang::CodeGen::GlobalDecl,
llvm::Function*, clang::CodeGen::CGFunctionInfo const&) + 719
22 clang             0x00000001001b0af9
clang::CodeGen::CodeGenModule::EmitGlobalFunctionDefinition(clang::CodeGen::GlobalDecl)
+ 1881
23 clang             0x00000001001af099
clang::CodeGen::CodeGenModule::EmitGlobalDefinition(clang::CodeGen::GlobalDecl)
+ 393
24 clang             0x00000001001afe6d
clang::CodeGen::CodeGenModule::EmitGlobal(clang::CodeGen::GlobalDecl) + 605
25 clang             0x00000001001b31ec
clang::CodeGen::CodeGenModule::EmitTopLevelDecl(clang::Decl*) + 204
26 clang             0x00000001001bd11f (anonymous
namespace)::CodeGeneratorImpl::HandleTopLevelDecl(clang::DeclGroupRef) + 95
27 clang             0x00000001001a9771
clang::BackendConsumer::HandleTopLevelDecl(clang::DeclGroupRef) + 161
28 clang             0x00000001001c4ba2 clang::ParseAST(clang::Sema&, bool) +
290
29 clang             0x00000001001a8adf clang::CodeGenAction::ExecuteAction() +
671
30 clang             0x000000010002935b
clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) + 875
31 clang             0x0000000100009738
clang::ExecuteCompilerInvocation(clang::CompilerInstance*) + 2536
32 clang             0x00000001000026a5 cc1_main(char const**, char const**,
char const*, void*) + 5221
33 clang             0x0000000100005fbb main + 667
34 clang             0x0000000100001234 start + 52
Stack dump:
0.    Program arguments:
/Users/hhinnant/Downloads/current-clang/Developer/usr/bin/clang -cc1 -triple
x86_64-apple-macosx10.6.7 -emit-obj -mrelax-all -disable-free
-disable-llvm-verifier -main-file-name main.cpp -pic-level 1 -mdisable-fp-elim
-relaxed-aliasing -masm-verbose -munwind-tables -target-cpu core2
-target-linker-version 123.2 -resource-dir
/Users/hhinnant/Downloads/current-clang/Developer/usr/bin/../lib/clang/3.0 -I .
-nostdinc++ -cxx-isystem /usr/include/c++/v1 -std=c++0x -fdeprecated-macro
-ferror-limit 19 -fmessage-length 113 -stack-protector 1 -fblocks
-fcxx-exceptions -fexceptions -fdiagnostics-show-option -fcolor-diagnostics -o
/var/folders/9S/9SAm-D9iHUW4BIKyeX7pTE+++TI/-Tmp-/cc-Tl7sdS.o -x c++ main.cpp 
1.    <eof> parser at end of file
2.    main.cpp:30:5: LLVM IR generation of declaration 'main'
3.    main.cpp:30:5: Generating code for declaration 'main'
4.    main.cpp:31:1: LLVM IR generation of compound statement ('{}')
clang: error: unable to execute command: Segmentation fault
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