[cfe-dev] class template methods

Peter Stirling peter at pjstirling.plus.com
Sat May 9 14:00:16 PDT 2015


I forgot to mention that I'm also spamming each test as it's performed, 
the last few lines of which are:

std::__1::__tuple_like<std::__1::pair<TagLib::String, 
TagLib::StringList> const>::operator =
std::__1::pair<unsigned long, unsigned long>::operator =
std::__1::pair<unsigned long, unsigned long>::operator =
std::__1::pair<unsigned long, unsigned long>::swap
std::__1::pair<TagLib::String const, TagLib::StringList>::operator =

So it appears to be crashing on the first instantiation of 
std::pair::operator= with a const type

On 09/05/15 21:36, Peter Stirling wrote:
> 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
>
>
>
>
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20150509/84af805f/attachment.html>


More information about the cfe-dev mailing list