[LLVMbugs] [Bug 9884] New: Assert when derived class calls base class constructor with protected visibility

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Mon May 9 23:54:01 PDT 2011


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

           Summary: Assert when derived class calls base class constructor
                    with protected visibility
           Product: clang
           Version: trunk
          Platform: PC
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P
         Component: C++
        AssignedTo: unassignedclangbugs at nondot.org
        ReportedBy: scoopr at iki.fi
                CC: llvmbugs at cs.uiuc.edu, dgregor at apple.com


This testcase triggers a unreachable assert:


class Base {
protected:
  Base(int val);
};


class Derived : public Base {
public:
  Derived(int val);
};


Derived::Derived(int val) 
  :  Base( val )
{
}


Resulting this:
obscure:tc1 scoopr$ clang++ test.cpp -c
getSpecialMember on non-special member
UNREACHABLE executed at
/Users/scoopr/Code/ext/llvm/tools/clang/lib/Sema/SemaDecl.cpp:1521!
0  clang             0x0000000101129772
llvm::SmallVectorImpl<llvm_regmatch_t>::resize(unsigned int) + 2514
1  clang             0x0000000101129d59
llvm::SmallVectorImpl<llvm_regmatch_t>::resize(unsigned int) + 4025
2  libSystem.B.dylib 0x00007fff831f266a _sigtramp + 26
3  libSystem.B.dylib 000000000000000000 _sigtramp + 2095110576
4  clang             0x00000001011299c6
llvm::SmallVectorImpl<llvm_regmatch_t>::resize(unsigned int) + 3110
5  clang             0x0000000101119a62 std::_Rb_tree<std::string,
std::pair<std::string const, void*>, std::_Select1st<std::pair<std::string
const, void*> >, std::less<std::string>, std::allocator<std::pair<std::string
const, void*> > >::_M_erase(std::_Rb_tree_node<std::pair<std::string const,
void*> >*) + 1538
6  clang             0x00000001002f20f8
clang::CodeCompletionBuilder::AddOptionalChunk(clang::CodeCompletionString*) +
25656
7  clang             0x00000001002802d6
llvm::StringMapEntry<clang::IdentifierInfo*>&
llvm::StringMap<clang::IdentifierInfo*,
llvm::BumpPtrAllocator>::GetOrCreateValue<clang::IdentifierInfo*>(llvm::StringRef,
clang::IdentifierInfo*) + 9318
8  clang             0x00000001003c5619
clang::ObjCPropertyRefExpr::ObjCPropertyRefExpr(clang::ObjCPropertyDecl*,
clang::QualType, clang::ExprValueKind, clang::ExprObjectKind,
clang::SourceLocation, clang::SourceLocation, clang::QualType) + 21049
9  clang             0x0000000100337ab7 clang::VecReturnAttr*
clang::Decl::getAttr<clang::VecReturnAttr>() const + 59975
10 clang             0x0000000100336a68 clang::VecReturnAttr*
clang::Decl::getAttr<clang::VecReturnAttr>() const + 55800
11 clang             0x000000010023b707
clang::Parser::MaybeParseCXX0XAttributes(clang::Declarator&) + 27671
12 clang             0x000000010023b2b0
clang::Parser::MaybeParseCXX0XAttributes(clang::Declarator&) + 26560
13 clang             0x00000001002652ec
llvm::SmallVectorTemplateBase<clang::ParsedTemplateArgument,
false>::grow(unsigned long) + 26908
14 clang             0x000000010022c023
clang::Parser::LateParsedMethodDeclaration::~LateParsedMethodDeclaration() +
22467
15 clang             0x0000000100264a6a
llvm::SmallVectorTemplateBase<clang::ParsedTemplateArgument,
false>::grow(unsigned long) + 24730
16 clang             0x0000000100264c24
llvm::SmallVectorTemplateBase<clang::ParsedTemplateArgument,
false>::grow(unsigned long) + 25172
17 clang             0x00000001002641fc
llvm::SmallVectorTemplateBase<clang::ParsedTemplateArgument,
false>::grow(unsigned long) + 22572
18 clang             0x0000000100263868
llvm::SmallVectorTemplateBase<clang::ParsedTemplateArgument,
false>::grow(unsigned long) + 20120
19 clang             0x0000000100224aed clang::MSP430InterruptAttr*
clang::Decl::getAttr<clang::MSP430InterruptAttr>() const + 749
20 clang             0x00000001002032ca
llvm::DenseMap<std::pair<clang::CXXRecordDecl const*, unsigned int>,
clang::CharUnits, llvm::DenseMapInfo<std::pair<clang::CXXRecordDecl const*,
unsigned int> >, llvm::DenseMapInfo<clang::CharUnits> >::grow(unsigned int) +
3434
21 clang             0x000000010002fb3a llvm::DenseMap<clang::IdentifierInfo
const*, unsigned int, llvm::DenseMapInfo<clang::IdentifierInfo const*>,
llvm::DenseMapInfo<unsigned int> >::grow(unsigned int) + 12714
22 clang             0x0000000100009d75 std::_Rb_tree<std::string, std::string,
std::_Identity<std::string>, std::less<std::string>,
std::allocator<std::string> >::_M_insert_unique(std::string const&) + 3173
23 clang             0x0000000100002821
24 clang             0x00000001000061a2 std::vector<llvm::SourceMgr::SrcBuffer,
std::allocator<llvm::SourceMgr::SrcBuffer>
>::_M_insert_aux(__gnu_cxx::__normal_iterator<llvm::SourceMgr::SrcBuffer*,
std::vector<llvm::SourceMgr::SrcBuffer,
std::allocator<llvm::SourceMgr::SrcBuffer> > >, llvm::SourceMgr::SrcBuffer
const&) + 1410
25 clang             0x0000000100001334
Stack dump:
0.    Program arguments: /opt/llvm/bin/clang -cc1 -triple
x86_64-apple-macosx10.6.7 -emit-obj -mrelax-all -disable-free -main-file-name
test.cpp -pic-level 1 -mdisable-fp-elim -masm-verbose -munwind-tables
-target-cpu core2 -target-linker-version 123.2 -coverage-file test.o
-resource-dir /opt/llvm/bin/../lib/clang/3.0 -fdeprecated-macro -ferror-limit
19 -fmessage-length 80 -stack-protector 1 -fblocks -fcxx-exceptions
-fexceptions -fdiagnostics-show-option -fcolor-diagnostics -o test.o -x c++
test.cpp 
1.    test.cpp:17:1: current parser token '{'
clang: error: unable to execute command: Illegal instruction
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