[cfe-dev] class template methods
Peter Stirling
peter at pjstirling.plus.com
Sat May 9 13:36:33 PDT 2015
On 04/05/15 19:00, Reid Kleckner wrote:
> On Sat, May 2, 2015 at 2:06 PM, Peter Stirling
> <peter at pjstirling.plus.com <mailto:peter at pjstirling.plus.com>> wrote:
>
> On 28/04/15 23:31, Reid Kleckner wrote:
>> On Wed, Apr 15, 2015 at 10:25 PM, Peter Stirling
>> <peter at pjstirling.plus.com <mailto:peter at pjstirling.plus.com>>
>> wrote:
>>
>> Visitor::RequestCompleteType() calls
>> Sema::RequireCompleteType() (which IMO has the wrong name, it
>> returns false on what I would consider, from the name, success).
>>
>>
>> Much has been made about the sense of boolean return values in
>> Clang. It isn't consistent or sane, but such is life. =/
>>
>> So, I don't construct the specializations for methods
>> directly in my code, I assume that some of the instantiation
>> is performed by RequireCompleteType(), but surely if I
>> checked for SFINAE at that level then I would lose EVERY
>> methods for std::pair<int const, int const> and not just the
>> ones that involve mutation?
>>
>>
>> I think RequireCompleteType won't instantiate all the member
>> functions, like operator=, but you can look it up, and ask for an
>> instantiation of it.
>
> Perhaps I misunderstand what you mean by 'instantiate' but this
> doesn't seem to be the case. When I walk the CXXRecordDecl for
> 'std::pair<int const, int const>' there ARE declarations for the
> methods that require mutation. My tool scans the AST for functions
> and methods and outputs a file containing functions that invoke
> the ones it finds, which is then compiled into a shared library,
> so what I want is protection against functions that can't be called.
>
> How do I go about asking for an instantiation of a method on its own?
>
>
> Right, instantiating the class will create decls of all the member
> functions, but the bodies will be empty because C++ essentially
> requires that they be parsed lazily. I'd have to lookup the detailed
> mechanics, but you should be able to look at the method decl, figure
> out that it needs instantiation, instantiate it, and put the error
> trap around that.
I added the following test:
if(inInstantiation) {
clang::Sema::SFINAETrap trap(sema);
sema.InstantiateFunctionDefinition(d->getParent()->getLocation(), d,
true, true);
if(trap.hasErrorOccurred()) {
return false;
}
}
Now I'm hitting a seg-fault (null pointer) deep inside clang:
Program received signal SIGSEGV, Segmentation fault.
clang::Scope::getEntity (this=0x0) at
/home/peter/Programming/llvm/llvm/tools/clang/include/clang/Sema/Scope.h:310
310 DeclContext *getEntity() const { return Entity; }
(gdb) bt
#0 clang::Scope::getEntity (this=0x0) at
/home/peter/Programming/llvm/llvm/tools/clang/include/clang/Sema/Scope.h:310
#1 0x00007ffff535cdaf in clang::Sema::PushOnScopeChains (this=0x6b6e00,
D=0x38392c8, S=0x0, AddToContext=true) at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/SemaDecl.cpp:1190
#2 0x00007ffff535ef9a in clang::Sema::LazilyCreateBuiltin
(this=0x6b6e00, II=0x69f638, ID=370, S=0x0, ForRedeclaration=false,
Loc=...) at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/SemaDecl.cpp:1778
#3 0x00007ffff572247e in LookupBuiltin (S=..., R=...) at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/SemaLookup.cpp:544
#4 0x00007ffff5722240 in clang::Sema::LookupName (this=0x6b6e00, R=...,
S=0x0, AllowBuiltinCreation=true) at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/SemaLookup.cpp:1426
#5 0x00007ffff572362c in clang::Sema::LookupParsedName (this=0x6b6e00,
R=..., S=0x0, SS=0x7ffffffea958, AllowBuiltinCreation=true,
EnteringContext=false) at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/SemaLookup.cpp:1868
#6 0x00007ffff5524491 in clang::Sema::ActOnIdExpression (this=0x6b6e00,
S=0x0, SS=..., TemplateKWLoc=..., Id=..., HasTrailingLParen=true,
IsAddressOfOperand=false,
CCC=std::unique_ptr<clang::CorrectionCandidateCallback> containing
0x0, IsInlineAsmIdentifier=false, KeywordReplacement=0x0) at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/SemaExpr.cpp:2114
#7 0x00007ffff5523d96 in clang::Sema::DefaultVariadicArgumentPromotion
(this=0x6b6e00, E=0x38383f0, CT=clang::Sema::VariadicConstructor,
FDecl=0x878b20) at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/SemaExpr.cpp:936
#8 0x00007ffff55367c6 in clang::Sema::GatherArgumentsForCall
(this=0x6b6e00, CallLoc=..., FDecl=0x878b20, Proto=0x878ad0,
FirstParam=0, Args=..., AllArgs=...,
CallType=clang::Sema::VariadicConstructor, AllowExplicit=false,
IsListInitialization=false) at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/SemaExpr.cpp:4477
#9 0x00007ffff5426487 in clang::Sema::CompleteConstructorCall
(this=0x6b6e00, Constructor=0x878b20, ArgsPtr=..., Loc=...,
ConvertedArgs=..., AllowExplicit=false, IsListInitialization=false)
at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/SemaDeclCXX.cpp:11427
#10 0x00007ffff56f4184 in clang::InitializationSequence::Perform
(this=0x7ffffffebff0, S=..., Entity=..., Kind=..., Args=...,
ResultType=0x0) at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/SemaInit.cpp:6189
#11 0x00007ffff56fe47b in clang::Sema::PerformCopyInitialization
(this=0x6b6e00, Entity=..., EqualLoc=..., Init=...,
TopLevelOfInitList=false, AllowExplicit=false)
at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/SemaInit.cpp:7495
#12 0x00007ffff55364e9 in clang::Sema::GatherArgumentsForCall
(this=0x6b6e00, CallLoc=..., FDecl=0x3839080, Proto=0x3839010,
FirstParam=0, Args=..., AllArgs=...,
CallType=clang::Sema::VariadicDoesNotApply, AllowExplicit=false,
IsListInitialization=false) at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/SemaExpr.cpp:4433
#13 0x00007ffff5535c19 in clang::Sema::ConvertArgumentsForCall
(this=0x6b6e00, Call=0x3839240, Fn=0x3839228, FDecl=0x3839080,
Proto=0x3839010, Args=..., RParenLoc=..., IsExecConfig=false)
at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/SemaExpr.cpp:4378
#14 0x00007ffff5538209 in clang::Sema::BuildResolvedCallExpr
(this=0x6b6e00, Fn=0x3839228, NDecl=0x3839080, LParenLoc=..., Args=...,
RParenLoc=..., Config=0x0, IsExecConfig=false)
at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/SemaExpr.cpp:4964
#15 0x00007ffff57b4ad2 in FinishOverloadedCallExpr (SemaRef=..., S=0x0,
Fn=0x3839190, ULE=0x3837ab8, LParenLoc=..., Args=..., RParenLoc=...,
ExecConfig=0x0, CandidateSet=0x7ffffffee548, Best=0x7ffffffee510,
OverloadResult=clang::OR_Success, AllowTypoCorrection=true) at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/SemaOverload.cpp:10798
#16 0x00007ffff57b47cd in clang::Sema::BuildOverloadedCallExpr
(this=0x6b6e00, S=0x0, Fn=0x3837ab8, ULE=0x3837ab8, LParenLoc=...,
Args=..., RParenLoc=..., ExecConfig=0x0, AllowTypoCorrection=true)
at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/SemaOverload.cpp:10871
#17 0x00007ffff5525999 in clang::Sema::ActOnCallExpr (this=0x6b6e00,
S=0x0, Fn=0x3837ab8, LParenLoc=..., ArgExprs=..., RParenLoc=...,
ExecConfig=0x0, IsExecConfig=false)
at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/SemaExpr.cpp:4768
#18 0x00007ffff5975fee in clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::RebuildCallExpr (this=0x7fffffff2738,
Callee=0x3837ab8, LParenLoc=..., Args=..., RParenLoc=..., ExecConfig=0x0)
at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/TreeTransform.h:1833
#19 0x00007ffff5975f26 in clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformCallExpr
(this=0x7fffffff2738, E=0x8d8a08) at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/TreeTransform.h:7617
#20 0x00007ffff5967982 in (anonymous
namespace)::TemplateInstantiator::TransformCallExpr
(this=0x7fffffff2738, CE=0x8d8a08) at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/SemaTemplateInstantiate.cpp:823
#21 0x00007ffff595e10a in clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformExpr (this=0x7fffffff2738,
E=0x8d8a08) at tools/clang/include/clang/AST/StmtNodes.inc:299
#22 0x00007ffff597fbb2 in clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformDecltypeType
(this=0x7fffffff2738, TLB=..., TL=...) at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/TreeTransform.h:4922
#23 0x00007ffff5954aa6 in clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformType (this=0x7fffffff2738,
TLB=..., T=...) at
/home/peter/Programming/llvm/llvm/tools/clang/include/clang/AST/TypeNodes.def:88
#24 0x00007ffff59539bf in clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformType (this=0x7fffffff2738,
DI=0x8d8aa8) at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/TreeTransform.h:3706
#25 0x00007ffff597404d in clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformTemplateArgument
(this=0x7fffffff2738, Input=..., Output=...)
at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/TreeTransform.h:3441
#26 0x00007ffff597332a in clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformTemplateArguments<clang::TemplateArgumentLocContainerIterator<clang::TemplateSpecializationTypeLoc>
> (this=0x7fffffff2738,
First=..., Last=..., Outputs=...) at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/TreeTransform.h:3661
#27 0x00007ffff5971f79 in clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformTemplateSpecializationType
(this=0x7fffffff2738, TLB=..., TL=..., Template=...)
at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/TreeTransform.h:5213
#28 0x00007ffff5971c34 in clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformTSIInObjectScope
(this=0x7fffffff2738, TL=..., ObjectType=..., UnqualLookup=0x0, SS=...)
at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/TreeTransform.h:3854
#29 0x00007ffff5990278 in clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformTypeInObjectScope
(this=0x7fffffff2738, TL=..., ObjectType=..., UnqualLookup=0x0, SS=...)
at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/TreeTransform.h:3813
#30 0x00007ffff59604c8 in clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformNestedNameSpecifierLoc
(this=0x7fffffff2738, NNS=..., ObjectType=..., FirstQualifierInScope=0x0)
at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/TreeTransform.h:3189
#31 0x00007ffff59817be in clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformDependentNameType
(this=0x7fffffff2738, TLB=..., TL=...)
at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/TreeTransform.h:5434
#32 0x00007ffff5954f1a in clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformType (this=0x7fffffff2738,
TLB=..., T=...) at
/home/peter/Programming/llvm/llvm/tools/clang/include/clang/AST/TypeNodes.def:101
#33 0x00007ffff59539bf in clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformType (this=0x7fffffff2738,
DI=0x8d8cc0) at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/TreeTransform.h:3706
#34 0x00007ffff59537ff in clang::Sema::SubstType (this=0x6b6e00,
T=0x8d8cc0, Args=..., Loc=..., Entity=...) at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/SemaTemplateInstantiate.cpp:1472
#35 0x00007ffff59581e7 in clang::Sema::SubstBaseSpecifiers
(this=0x6b6e00, Instantiation=0x3837850, Pattern=0x8d8440,
TemplateArgs=...) at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/SemaTemplateInstantiate.cpp:1810
#36 0x00007ffff5958675 in clang::Sema::InstantiateClass (this=0x6b6e00,
PointOfInstantiation=..., Instantiation=0x3837850, Pattern=0x8d8440,
TemplateArgs=..., TSK=clang::TSK_ImplicitInstantiation, Complain=true)
at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/SemaTemplateInstantiate.cpp:1971
#37 0x00007ffff595a361 in
clang::Sema::InstantiateClassTemplateSpecialization (this=0x6b6e00,
PointOfInstantiation=..., ClassTemplateSpec=0x3837850,
TSK=clang::TSK_ImplicitInstantiation, Complain=true)
at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/SemaTemplateInstantiate.cpp:2427
#38 0x00007ffff5a157c1 in clang::Sema::RequireCompleteTypeImpl
(this=0x6b6e00, Loc=..., T=..., Diagnoser=...) at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/SemaType.cpp:5290
#39 0x00007ffff5a150f6 in clang::Sema::RequireCompleteType
(this=0x6b6e00, Loc=..., T=..., Diagnoser=...) at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/SemaType.cpp:5117
#40 0x00007ffff52aa25a in
clang::Sema::RequireCompleteType<clang::SourceRange> (this=0x6b6e00,
Loc=..., T=..., DiagID=2256, Args=...) at
/home/peter/Programming/llvm/llvm/tools/clang/include/clang/Sema/Sema.h:1303
#41 0x00007ffff53ff108 in clang::Sema::CheckBaseSpecifier
(this=0x6b6e00, Class=0x38362d8, SpecifierRange=..., Virtual=false,
Access=clang::AS_public, TInfo=0x38379e0, EllipsisLoc=...)
at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/SemaDeclCXX.cpp:1454
#42 0x00007ffff595828a in clang::Sema::SubstBaseSpecifiers
(this=0x6b6e00, Instantiation=0x38362d8, Pattern=0x8d94d8,
TemplateArgs=...) at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/SemaTemplateInstantiate.cpp:1822
#43 0x00007ffff5958675 in clang::Sema::InstantiateClass (this=0x6b6e00,
PointOfInstantiation=..., Instantiation=0x38362d8, Pattern=0x8d94d8,
TemplateArgs=..., TSK=clang::TSK_ImplicitInstantiation, Complain=true)
at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/SemaTemplateInstantiate.cpp:1971
#44 0x00007ffff595a361 in
clang::Sema::InstantiateClassTemplateSpecialization (this=0x6b6e00,
PointOfInstantiation=..., ClassTemplateSpec=0x38362d8,
TSK=clang::TSK_ImplicitInstantiation, Complain=true)
at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/SemaTemplateInstantiate.cpp:2427
#45 0x00007ffff5a157c1 in clang::Sema::RequireCompleteTypeImpl
(this=0x6b6e00, Loc=..., T=..., Diagnoser=...) at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/SemaType.cpp:5290
#46 0x00007ffff5a150f6 in clang::Sema::RequireCompleteType
(this=0x6b6e00, Loc=..., T=..., Diagnoser=...) at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/SemaType.cpp:5117
#47 0x00007ffff52aa25a in
clang::Sema::RequireCompleteType<clang::SourceRange> (this=0x6b6e00,
Loc=..., T=..., DiagID=2259, Args=...) at
/home/peter/Programming/llvm/llvm/tools/clang/include/clang/Sema/Sema.h:1303
#48 0x00007ffff52a5c38 in clang::Sema::RequireCompleteDeclContext
(this=0x6b6e00, SS=..., DC=0x3836310) at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/SemaCXXScopeSpec.cpp:212
#49 0x00007ffff552c8ec in clang::Sema::BuildQualifiedDeclarationNameExpr
(this=0x6b6e00, SS=..., NameInfo=..., IsAddressOfOperand=false,
RecoveryTSI=0x0) at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/SemaExpr.cpp:2294
#50 0x00007ffff5976d14 in clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::RebuildDependentScopeDeclRefExpr
(this=0x7fffffff75b8, QualifierLoc=..., TemplateKWLoc=..., NameInfo=...,
TemplateArgs=0x0,
IsAddressOfOperand=false, RecoveryTSI=0x0) at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/TreeTransform.h:2402
#51 0x00007ffff5976ac0 in clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformDependentScopeDeclRefExpr
(this=0x7fffffff75b8, E=0x7d1a50, IsAddressOfOperand=false, RecoveryTSI=0x0)
at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/TreeTransform.h:8997
#52 0x00007ffff5969433 in clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformDependentScopeDeclRefExpr
(this=0x7fffffff75b8, E=0x7d1a50)
at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/TreeTransform.h:8963
#53 0x00007ffff595e47c in clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformExpr (this=0x7fffffff75b8,
E=0x7d1a50) at tools/clang/include/clang/AST/StmtNodes.inc:433
#54 0x00007ffff59743e4 in clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformTemplateArgument
(this=0x7fffffff75b8, Input=..., Output=...)
at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/TreeTransform.h:3480
#55 0x00007ffff597332a in clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformTemplateArguments<clang::TemplateArgumentLocContainerIterator<clang::TemplateSpecializationTypeLoc>
> (this=0x7fffffff75b8,
First=..., Last=..., Outputs=...) at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/TreeTransform.h:3661
#56 0x00007ffff5971f79 in clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformTemplateSpecializationType
(this=0x7fffffff75b8, TLB=..., TL=..., Template=...)
at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/TreeTransform.h:5213
#57 0x00007ffff598143b in clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformTemplateSpecializationType
(this=0x7fffffff75b8, TLB=..., TL=...)
at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/TreeTransform.h:5112
#58 0x00007ffff5954dfd in clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformType (this=0x7fffffff75b8,
TLB=..., T=...) at
/home/peter/Programming/llvm/llvm/tools/clang/include/clang/AST/TypeNodes.def:98
#59 0x00007ffff59539bf in clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformType (this=0x7fffffff75b8,
DI=0x7d1c48) at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/TreeTransform.h:3706
#60 0x00007ffff59537ff in clang::Sema::SubstType (this=0x6b6e00,
T=0x7d1c48, Args=..., Loc=..., Entity=...) at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/SemaTemplateInstantiate.cpp:1472
#61 0x00007ffff59581e7 in clang::Sema::SubstBaseSpecifiers
(this=0x6b6e00, Instantiation=0x3836030, Pattern=0x7d1578,
TemplateArgs=...) at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/SemaTemplateInstantiate.cpp:1810
#62 0x00007ffff5958675 in clang::Sema::InstantiateClass (this=0x6b6e00,
PointOfInstantiation=..., Instantiation=0x3836030, Pattern=0x7d1578,
TemplateArgs=..., TSK=clang::TSK_ImplicitInstantiation, Complain=true)
at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/SemaTemplateInstantiate.cpp:1971
#63 0x00007ffff595a361 in
clang::Sema::InstantiateClassTemplateSpecialization (this=0x6b6e00,
PointOfInstantiation=..., ClassTemplateSpec=0x3836030,
TSK=clang::TSK_ImplicitInstantiation, Complain=true)
at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/SemaTemplateInstantiate.cpp:2427
#64 0x00007ffff5a157c1 in clang::Sema::RequireCompleteTypeImpl
(this=0x6b6e00, Loc=..., T=..., Diagnoser=...) at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/SemaType.cpp:5290
#65 0x00007ffff5a150f6 in clang::Sema::RequireCompleteType
(this=0x6b6e00, Loc=..., T=..., Diagnoser=...) at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/SemaType.cpp:5117
#66 0x00007ffff52aa25a in
clang::Sema::RequireCompleteType<clang::SourceRange> (this=0x6b6e00,
Loc=..., T=..., DiagID=2256, Args=...) at
/home/peter/Programming/llvm/llvm/tools/clang/include/clang/Sema/Sema.h:1303
#67 0x00007ffff53ff108 in clang::Sema::CheckBaseSpecifier
(this=0x6b6e00, Class=0x3835810, SpecifierRange=..., Virtual=false,
Access=clang::AS_public, TInfo=0x38361b0, EllipsisLoc=...)
at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/SemaDeclCXX.cpp:1454
#68 0x00007ffff595828a in clang::Sema::SubstBaseSpecifiers
(this=0x6b6e00, Instantiation=0x3835810, Pattern=0x7d1e20,
TemplateArgs=...) at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/SemaTemplateInstantiate.cpp:1822
#69 0x00007ffff5958675 in clang::Sema::InstantiateClass (this=0x6b6e00,
PointOfInstantiation=..., Instantiation=0x3835810, Pattern=0x7d1e20,
TemplateArgs=..., TSK=clang::TSK_ImplicitInstantiation, Complain=true)
at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/SemaTemplateInstantiate.cpp:1971
#70 0x00007ffff595a361 in
clang::Sema::InstantiateClassTemplateSpecialization (this=0x6b6e00,
PointOfInstantiation=..., ClassTemplateSpec=0x3835810,
TSK=clang::TSK_ImplicitInstantiation, Complain=true)
at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/SemaTemplateInstantiate.cpp:2427
#71 0x00007ffff5a157c1 in clang::Sema::RequireCompleteTypeImpl
(this=0x6b6e00, Loc=..., T=..., Diagnoser=...) at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/SemaType.cpp:5290
#72 0x00007ffff5a150f6 in clang::Sema::RequireCompleteType
(this=0x6b6e00, Loc=..., T=..., Diagnoser=...) at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/SemaType.cpp:5117
#73 0x00007ffff52aa25a in
clang::Sema::RequireCompleteType<clang::SourceRange> (this=0x6b6e00,
Loc=..., T=..., DiagID=2259, Args=...) at
/home/peter/Programming/llvm/llvm/tools/clang/include/clang/Sema/Sema.h:1303
#74 0x00007ffff52a5c38 in clang::Sema::RequireCompleteDeclContext
(this=0x6b6e00, SS=..., DC=0x3835848) at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/SemaCXXScopeSpec.cpp:212
#75 0x00007ffff552c8ec in clang::Sema::BuildQualifiedDeclarationNameExpr
(this=0x6b6e00, SS=..., NameInfo=..., IsAddressOfOperand=false,
RecoveryTSI=0x0) at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/SemaExpr.cpp:2294
#76 0x00007ffff5976d14 in clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::RebuildDependentScopeDeclRefExpr
(this=0x7fffffffbac8, QualifierLoc=..., TemplateKWLoc=..., NameInfo=...,
TemplateArgs=0x0,
IsAddressOfOperand=false, RecoveryTSI=0x0) at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/TreeTransform.h:2402
#77 0x00007ffff5976ac0 in clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformDependentScopeDeclRefExpr
(this=0x7fffffffbac8, E=0x9a8628, IsAddressOfOperand=false, RecoveryTSI=0x0)
at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/TreeTransform.h:8997
#78 0x00007ffff5969433 in clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformDependentScopeDeclRefExpr
(this=0x7fffffffbac8, E=0x9a8628)
at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/TreeTransform.h:8963
#79 0x00007ffff595e47c in clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformExpr (this=0x7fffffffbac8,
E=0x9a8628) at tools/clang/include/clang/AST/StmtNodes.inc:433
#80 0x00007ffff596339c in clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformBinaryOperator
(this=0x7fffffffbac8, E=0x9a8818) at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/TreeTransform.h:7704
#81 0x00007ffff595dca3 in clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformExpr (this=0x7fffffffbac8,
E=0x9a8818) at tools/clang/include/clang/AST/StmtNodes.inc:157
#82 0x00007ffff5955af2 in clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformExceptionSpec
(this=0x7fffffffbac8, Loc=..., ESI=..., Exceptions=...,
Changed=@0x7fffffffba7f: false)
at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/TreeTransform.h:4697
#83 0x00007ffff59559ea in clang::Sema::SubstExceptionSpec
(this=0x6b6e00, New=0x7ffff0b023a8, Proto=0x9a8840, Args=...) at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/SemaTemplateInstantiate.cpp:1611
#84 0x00007ffff59aca2b in clang::Sema::InstantiateExceptionSpec
(this=0x6b6e00, PointOfInstantiation=..., Decl=0x7ffff0b023a8) at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:3193
#85 0x00007ffff5518b88 in clang::Sema::ResolveExceptionSpec
(this=0x6b6e00, Loc=..., FPT=0x7ffff0b02470) at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/SemaExceptionSpec.cpp:162
#86 0x00007ffff53839f5 in clang::Sema::ActOnStartOfFunctionDef
(this=0x6b6e00, FnBodyScope=0x0, D=0x7ffff0b023a8) at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/SemaDecl.cpp:10475
#87 0x00007ffff59ad779 in clang::Sema::InstantiateFunctionDefinition
(this=0x6b6e00, PointOfInstantiation=..., Function=0x7ffff0b023a8,
Recursive=true, DefinitionRequired=true)
at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:3449
#88 0x0000000000428f79 in QuaffVisitor::CanBeSafeToHandle
(this=0x694b30, d=0x7ffff0b023a8, inInstantiation=true) at
/home/peter/Programming/llvm/llvm/tools/clang/tools/extra/quaff/quaff-visitor.cc:179
#89 0x000000000042a46f in QuaffVisitor::VisitCXXMethod (this=0x694b30,
d=0x7ffff0b023a8, instantiation=true) at
/home/peter/Programming/llvm/llvm/tools/clang/tools/extra/quaff/quaff-visitor.cc:388
#90 0x000000000040dd50 in Walker::Traverse (this=0x694c40,
d=0x7ffff0b023a8) at
/home/peter/Programming/llvm/llvm/tools/clang/tools/extra/quaff/walker.cc:64
#91 0x000000000040e28d in Walker::TraverseCXXRecord (this=0x694c40,
d=0x7ffff0bf1218) at
/home/peter/Programming/llvm/llvm/tools/clang/tools/extra/quaff/walker.cc:96
#92 0x000000000040df33 in Walker::TraverseClassTemplate (this=0x694c40,
d=0x96d750) at
/home/peter/Programming/llvm/llvm/tools/clang/tools/extra/quaff/walker.cc:109
#93 0x000000000040dbce in Walker::Traverse (this=0x694c40, d=0x96d750)
at
/home/peter/Programming/llvm/llvm/tools/clang/tools/extra/quaff/walker.cc:45
#94 0x000000000040e0b2 in Walker::TraverseNamespace (this=0x694c40,
d=0x95ea20) at
/home/peter/Programming/llvm/llvm/tools/clang/tools/extra/quaff/walker.cc:119
#95 0x000000000040dc25 in Walker::Traverse (this=0x694c40, d=0x95ea20)
at
/home/peter/Programming/llvm/llvm/tools/clang/tools/extra/quaff/walker.cc:51
#96 0x000000000040e0b2 in Walker::TraverseNamespace (this=0x694c40,
d=0x95e9b8) at
/home/peter/Programming/llvm/llvm/tools/clang/tools/extra/quaff/walker.cc:119
#97 0x000000000040dc25 in Walker::Traverse (this=0x694c40, d=0x95e9b8)
at
/home/peter/Programming/llvm/llvm/tools/clang/tools/extra/quaff/walker.cc:51
#98 0x000000000040d8d2 in Walker::TraverseTranslationUnit
(this=0x694c40, d=0x693bd0) at
/home/peter/Programming/llvm/llvm/tools/clang/tools/extra/quaff/walker.cc:17
#99 0x000000000040d054 in Consumer<Options,
QuaffVisitor>::HandleTranslationUnit (this=0x694b20, context=...) at
/home/peter/Programming/llvm/llvm/tools/clang/tools/extra/quaff/consumer.hh:21
#100 0x00007ffff1f9dab6 in clang::ParseAST (S=..., PrintStats=false,
SkipFunctionBodies=false) at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Parse/ParseAST.cpp:151
#101 0x00007ffff610824f in clang::ASTFrontendAction::ExecuteAction
(this=0x660f50) at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Frontend/FrontendAction.cpp:536
#102 0x00007ffff6107d50 in clang::FrontendAction::Execute
(this=0x660f50) at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Frontend/FrontendAction.cpp:439
#103 0x00007ffff60b4f5f in clang::CompilerInstance::ExecuteAction
(this=0x7fffffffd368, Act=...) at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Frontend/CompilerInstance.cpp:814
#104 0x00007ffff77bca6e in
clang::tooling::FrontendActionFactory::runInvocation
(this=0x7fffffffde88, Invocation=0x6612a0, Files=0x65f4f0,
DiagConsumer=0x0) at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Tooling/Tooling.cpp:272
#105 0x00007ffff77bc979 in clang::tooling::ToolInvocation::runInvocation
(this=0x7fffffffdb80, BinaryName=0x65fec8
"/home/peter/Programming/llvm/clang/bin/quaff", Compilation=0x65aae0,
Invocation=0x6612a0)
at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Tooling/Tooling.cpp:249
#106 0x00007ffff77bc211 in clang::tooling::ToolInvocation::run
(this=0x7fffffffdb80) at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Tooling/Tooling.cpp:235
#107 0x00007ffff77bd3aa in clang::tooling::ClangTool::run
(this=0x7fffffffdea8, Action=0x7fffffffde88) at
/home/peter/Programming/llvm/llvm/tools/clang/lib/Tooling/Tooling.cpp:364
#108 0x000000000040873d in main (argc=5, argv=0x7fffffffe178) at
/home/peter/Programming/llvm/llvm/tools/clang/tools/extra/quaff/main.cc:149
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20150509/71bcec91/attachment.html>
More information about the cfe-dev
mailing list