[LLVMbugs] [Bug 22931] New: Assertion `isa<LabelDecl>(D) && "declaration not instantiated in this scope"' failed.

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Mon Mar 16 17:24:22 PDT 2015


https://llvm.org/bugs/show_bug.cgi?id=22931

            Bug ID: 22931
           Summary: Assertion `isa<LabelDecl>(D) && "declaration not
                    instantiated in this scope"' failed.
           Product: clang
           Version: trunk
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: Frontend
          Assignee: unassignedclangbugs at nondot.org
          Reporter: rtrieu at google.com
                CC: llvmbugs at cs.uiuc.edu
    Classification: Unclassified

clang: ../tools/clang/lib/Sema/SemaTemplateInstantiate.cpp:2798:
llvm::PointerUnion<Decl *, LocalInstantiationScope::DeclArgumentPack *>
*clang::LocalInstantiationScope::findInstantiationOf(const clang::Decl *):
Assertion `isa<LabelDecl>(D) && "declaration not instantiated in this scope"'
failed.

Commandline:
clang -cc1 -fsyntax-only fs.cpp

Repro:
#define THREAD_ANNOTATION_ATTRIBUTE__(x)   __attribute__((x))

#define EXCLUSIVE_LOCKS_REQUIRED(x) \
      THREAD_ANNOTATION_ATTRIBUTE__(exclusive_locks_required(x))
#define UNLOCK_FUNCTION(x) \
      THREAD_ANNOTATION_ATTRIBUTE__(unlock_function(x))

struct F {
  void mutex();
};

template <typename A>
class TemplateClass {
 public:
  template <typename B>
  static void Function(F* file)
      EXCLUSIVE_LOCKS_REQUIRED(file->mutex()) UNLOCK_FUNCTION(file->mutex()) {
  }
};

void test() {
  TemplateClass<int> X;
}

Backtrace:
#1 0x14bf78b SignalHandler(int) (/usr/local/bin/clang-3.5+0x14bf78b)
#2 0x7fb9b9bcf340 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x10340)
#3 0x7fb9b90fbcc9 gsignal
/build/buildd/eglibc-2.19/signal/../nptl/sysdeps/unix/sysv/linux/raise.c:56:0
#4 0x7fb9b90ff0d8 abort /build/buildd/eglibc-2.19/stdlib/abort.c:91:0
#5 0x7fb9b90f4b86 __assert_fail_base
/build/buildd/eglibc-2.19/assert/assert.c:92:0
#6 0x7fb9b90f4c32 (/lib/x86_64-linux-gnu/libc.so.6+0x2fc32)
#7 0x2427bee clang::LocalInstantiationScope::findInstantiationOf(clang::Decl
const*) (/usr/local/bin/clang-3.5+0x2427bee)
#8 0x244568b clang::Sema::FindInstantiatedDecl(clang::SourceLocation,
clang::NamedDecl*, clang::MultiLevelTemplateArgumentList const&)
(/usr/local/bin/clang-3.5+0x244568b)
#9 0x24282c4 (anonymous
namespace)::TemplateInstantiator::TransformDecl(clang::SourceLocation,
clang::Decl*) (/usr/local/bin/clang-3.5+0x24282c4)
#10 0x24376a6 clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformDeclRefExpr(clang::DeclRefExpr*)
(/usr/local/bin/clang-3.5+0x24376a6)
#11 0x242e96c clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformMemberExpr(clang::MemberExpr*)
(/usr/local/bin/clang-3.5+0x242e96c)
#12 0x2436b4e clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformCallExpr(clang::CallExpr*)
(/usr/local/bin/clang-3.5+0x2436b4e)
#13 0x242c3d4 clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformCXXMemberCallExpr(clang::CXXMemberCallExpr*)
(/usr/local/bin/clang-3.5+0x242c3d4)
#14 0x2423411 clang::Sema::SubstExpr(clang::Expr*,
clang::MultiLevelTemplateArgumentList const&)
(/usr/local/bin/clang-3.5+0x2423411)
#15 0x24435b4 clang::sema::instantiateTemplateAttribute(clang::Attr const*,
clang::ASTContext&, clang::Sema&, clang::MultiLevelTemplateArgumentList const&)
(/usr/local/bin/clang-3.5+0x24435b4)
#16 0x241fd6b clang::Sema::InstantiateClass(clang::SourceLocation,
clang::CXXRecordDecl*, clang::CXXRecordDecl*,
clang::MultiLevelTemplateArgumentList const&,
clang::TemplateSpecializationKind, bool) (/usr/local/bin/clang-3.5+0x241fd6b)
#17 0x24218fb
clang::Sema::InstantiateClassTemplateSpecialization(clang::SourceLocation,
clang::ClassTemplateSpecializationDecl*, clang::TemplateSpecializationKind,
bool) (/usr/local/bin/clang-3.5+0x24218fb)
#18 0x24855cd clang::Sema::RequireCompleteTypeImpl(clang::SourceLocation,
clang::QualType, clang::Sema::TypeDiagnoser&)
(/usr/local/bin/clang-3.5+0x24855cd)
#19 0x2485390 clang::Sema::RequireCompleteType(clang::SourceLocation,
clang::QualType, clang::Sema::TypeDiagnoser&)
(/usr/local/bin/clang-3.5+0x2485390)
#20 0x2476255 clang::Sema::RequireCompleteType(clang::SourceLocation,
clang::QualType, unsigned int) (/usr/local/bin/clang-3.5+0x2476255)
#21 0x20cc797 clang::Sema::ActOnUninitializedDecl(clang::Decl*, bool)
(/usr/local/bin/clang-3.5+0x20cc797)
#22 0x1e818ba
clang::Parser::ParseDeclarationAfterDeclaratorAndAttributes(clang::Declarator&,
clang::Parser::ParsedTemplateInfo const&, clang::Parser::ForRangeInit*)
(/usr/local/bin/clang-3.5+0x1e818ba)
#23 0x1e7fad6 clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, unsigned
int, clang::SourceLocation*, clang::Parser::ForRangeInit*)
(/usr/local/bin/clang-3.5+0x1e7fad6)
#24 0x1e7b677 clang::Parser::ParseSimpleDeclaration(unsigned int,
clang::SourceLocation&, clang::Parser::ParsedAttributesWithRange&, bool,
clang::Parser::ForRangeInit*) (/usr/local/bin/clang-3.5+0x1e7b677)
#25 0x1e7b2e7 clang::Parser::ParseDeclaration(unsigned int,
clang::SourceLocation&, clang::Parser::ParsedAttributesWithRange&)
(/usr/local/bin/clang-3.5+0x1e7b2e7)
#26 0x1ee341f
clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*,
32u>&, bool, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&)
(/usr/local/bin/clang-3.5+0x1ee341f)
#27 0x1ee251f
clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*,
32u>&, bool, clang::SourceLocation*) (/usr/local/bin/clang-3.5+0x1ee251f)
#28 0x1ee9bb4 clang::Parser::ParseCompoundStatementBody(bool)
(/usr/local/bin/clang-3.5+0x1ee9bb4)
#29 0x1eea583 clang::Parser::ParseFunctionStatementBody(clang::Decl*,
clang::Parser::ParseScope&) (/usr/local/bin/clang-3.5+0x1eea583)
#30 0x1e6e3df clang::Parser::ParseFunctionDefinition(clang::ParsingDeclarator&,
clang::Parser::ParsedTemplateInfo const&, clang::Parser::LateParsedAttrList*)
(/usr/local/bin/clang-3.5+0x1e6e3df)
#31 0x1e7f9e0 clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, unsigned
int, clang::SourceLocation*, clang::Parser::ForRangeInit*)
(/usr/local/bin/clang-3.5+0x1e7f9e0)
#32 0x1e6da26
clang::Parser::ParseDeclOrFunctionDefInternal(clang::Parser::ParsedAttributesWithRange&,
clang::ParsingDeclSpec&, clang::AccessSpecifier)
(/usr/local/bin/clang-3.5+0x1e6da26)
#33 0x1e6d46c
clang::Parser::ParseDeclarationOrFunctionDefinition(clang::Parser::ParsedAttributesWithRange&,
clang::ParsingDeclSpec*, clang::AccessSpecifier)
(/usr/local/bin/clang-3.5+0x1e6d46c)
#34 0x1e6c645
clang::Parser::ParseExternalDeclaration(clang::Parser::ParsedAttributesWithRange&,
clang::ParsingDeclSpec*) (/usr/local/bin/clang-3.5+0x1e6c645)
#35 0x1e6bbd1
clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&)
(/usr/local/bin/clang-3.5+0x1e6bbd1)
#36 0x1e67c46 clang::ParseAST(clang::Sema&, bool, bool)
(/usr/local/bin/clang-3.5+0x1e67c46)
#37 0x164ce6e clang::FrontendAction::Execute()
(/usr/local/bin/clang-3.5+0x164ce6e)
#38 0x161e68c clang::CompilerInstance::ExecuteAction(clang::FrontendAction&)
(/usr/local/bin/clang-3.5+0x161e68c)
#39 0x16cc0e4 clang::ExecuteCompilerInvocation(clang::CompilerInstance*)
(/usr/local/bin/clang-3.5+0x16cc0e4)
#40 0x6e20b2 cc1_main(llvm::ArrayRef<char const*>, char const*, void*)
(/usr/local/bin/clang-3.5+0x6e20b2)
#41 0x6e102f main (/usr/local/bin/clang-3.5+0x6e102f)

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20150317/42f6bc3c/attachment.html>


More information about the llvm-bugs mailing list