From 44d4d9a4cb1b590f81b5bf08b922e1ec2715e90e Mon Sep 17 00:00:00 2001 From: NAKAMURA Takumi Date: Wed, 29 Oct 2014 08:11:47 +0000 Subject: Don't capture DeclRefExpr::getNameInfo().getInfo(). It returns reference in temporary object. DeclarationNameInfo::getInfo() returns reference, but DeclRefExpr::getNameInfo() returns temporary DeclarationNameInfo(). It triggered a local crash for me. Failing Tests (1): Clang :: SemaTemplate/instantiate-overload-candidates.cpp Assertion failed! Program: bin\clang.EXE File: clang/lib/Basic/SourceManager.cpp, Line 822 Expression: 0 && "Invalid SLocOffset or bad function choice" llvm-svn: 220841 --- clang/lib/Sema/TreeTransform.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'clang/lib/Sema/TreeTransform.h') diff --git a/clang/lib/Sema/TreeTransform.h b/clang/lib/Sema/TreeTransform.h index c569d31f7e3..854ff52f52a 100644 --- a/clang/lib/Sema/TreeTransform.h +++ b/clang/lib/Sema/TreeTransform.h @@ -10460,7 +10460,7 @@ TreeTransform::RebuildCXXOperatorCallExpr(OverloadedOperatorKind Op, SourceLocation RBrace; if (DeclRefExpr *DRE = dyn_cast(Callee)) { - DeclarationNameLoc &NameLoc = DRE->getNameInfo().getInfo(); + DeclarationNameLoc NameLoc = DRE->getNameInfo().getInfo(); LBrace = SourceLocation::getFromRawEncoding( NameLoc.CXXOperatorName.BeginOpNameLoc); RBrace = SourceLocation::getFromRawEncoding( -- cgit v1.2.3