[LLVMbugs] [Bug 14929] New: getLinkageAndVisibility(): Assertion `LV == computeLVForDecl(this, false)' failed

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Fri Jan 11 17:26:24 PST 2013


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

             Bug #: 14929
           Summary: getLinkageAndVisibility(): Assertion `LV ==
                    computeLVForDecl(this, false)' failed
           Product: clang
           Version: trunk
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: release blocker
          Priority: P
         Component: C++
        AssignedTo: unassignedclangbugs at nondot.org
        ReportedBy: clang at martinien.de
                CC: dgregor at apple.com, llvmbugs at cs.uiuc.edu
    Classification: Unclassified


Hi,

the following code causes an assert in a clang Release+Asserts build of trunk.
Similiar issues were fixed in Bug#14835 and bug#14898 but this example still
fails. I am setting it to release blocker since it worked previously and also
in an earlier post-3.2 version of trunk.


class TemplateArg1
{
};

class TemplateArg2
{
};

template <typename T1>
class Class1
{
  void f1()
  {
    f2();
  }

  inline void f2()
  {
  }
};


template<>
inline void Class1<TemplateArg1>::f2()
{
}

template<>
inline void Class1<TemplateArg2>::f2()
{
}

template class __attribute__ ((visibility("default"))) Class1<TemplateArg1>;




0  clang           0x0000000001bf4125 llvm::sys::PrintStackTrace(_IO_FILE*) +
37
1  clang           0x0000000001bf4613
2  libpthread.so.0 0x00002b32ea3716b0
3  libc.so.6       0x00002b32eb138945 gsignal + 53
4  libc.so.6       0x00002b32eb139f21 abort + 385
5  libc.so.6       0x00002b32eb131810 __assert_fail + 240
6  clang           0x0000000000fce599
clang::NamedDecl::getLinkageAndVisibility() const + 121
7  clang           0x00000000007ca4ef
clang::CodeGen::CodeGenModule::SetFunctionAttributes(clang::GlobalDecl,
llvm::Function*, bool) + 255
8  clang           0x00000000007cbe1a
clang::CodeGen::CodeGenModule::GetOrCreateLLVMFunction(llvm::StringRef,
llvm::Type*, clang::GlobalDecl, bool, llvm::Attribute) + 362
9  clang           0x00000000007cdbda
clang::CodeGen::CodeGenModule::GetAddrOfFunction(clang::GlobalDecl,
llvm::Type*, bool) + 106
10 clang           0x000000000084d50e
clang::CodeGen::CodeGenFunction::EmitCXXMemberCallExpr(clang::CXXMemberCallExpr
const*, clang::CodeGen::ReturnValueSlot) + 1390
11 clang           0x0000000000841a23
clang::CodeGen::CodeGenFunction::EmitCallExpr(clang::CallExpr const*,
clang::CodeGen::ReturnValueSlot) + 227
12 clang           0x000000000086a8d3
13 clang           0x0000000000865484
14 clang           0x000000000085f9fd
clang::CodeGen::CodeGenFunction::EmitScalarExpr(clang::Expr const*, bool) + 93
15 clang           0x000000000083513e
clang::CodeGen::CodeGenFunction::EmitAnyExpr(clang::Expr const*,
clang::CodeGen::AggValueSlot, bool) + 174
16 clang           0x0000000000835089
clang::CodeGen::CodeGenFunction::EmitIgnoredExpr(clang::Expr const*) + 57
17 clang           0x00000000008b6469
clang::CodeGen::CodeGenFunction::EmitStmt(clang::Stmt const*) + 217
18 clang           0x00000000008bb57b
clang::CodeGen::CodeGenFunction::EmitCompoundStmt(clang::CompoundStmt const&,
bool, clang::CodeGen::AggValueSlot) + 235
19 clang           0x00000000008b6c3f
clang::CodeGen::CodeGenFunction::EmitSimpleStmt(clang::Stmt const*) + 351
20 clang           0x00000000008b63b5
clang::CodeGen::CodeGenFunction::EmitStmt(clang::Stmt const*) + 37
21 clang           0x00000000008c6370
clang::CodeGen::CodeGenFunction::GenerateCode(clang::GlobalDecl,
llvm::Function*, clang::CodeGen::CGFunctionInfo const&) + 672
22 clang           0x00000000007cd19f
clang::CodeGen::CodeGenModule::EmitGlobalFunctionDefinition(clang::GlobalDecl)
+ 623
23 clang           0x00000000007ca7e5
clang::CodeGen::CodeGenModule::EmitGlobalDefinition(clang::GlobalDecl) + 293
24 clang           0x00000000007cc796
clang::CodeGen::CodeGenModule::EmitGlobal(clang::GlobalDecl) + 806
25 clang           0x00000000007d15c7
clang::CodeGen::CodeGenModule::EmitTopLevelDecl(clang::Decl*) + 951


1.      preproc2.cpp:33:76: current parser token ';'
2.      preproc2.cpp:12:8: LLVM IR generation of declaration
'Class1<TemplateArg1>::f1'
3.      preproc2.cpp:12:8: Generating code for declaration
'Class1<TemplateArg1>::f1'
4.      preproc2.cpp:13:3: LLVM IR generation of compound statement ('{}')

-- 
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