[cfe-dev] Why is "..." printed 'After' the arg name in TypePrinter?

Peter Stirling peter at pjstirling.plus.com
Mon Sep 15 06:41:13 PDT 2014


I have a clang tool that spits a c++ file of functions that return the 
string name of an enum value, if this might be of aid (the code isn't 
pretty, but it works for my limited use case).

of On 15/09/14 14:11, Vassil Vassilev wrote:
> On 09/15/2014 03:09 PM, Aaron Ballman wrote:
>> On Mon, Sep 15, 2014 at 5:45 AM, Vassil Vassilev
>> <vasil.georgiev.vasilev at cern.ch> wrote:
>>> On 08/01/2014 03:58 PM, Aaron Ballman wrote:
>>>> On Fri, Aug 1, 2014 at 9:34 AM, Aaron Ballman <aaron at aaronballman.com>
>>>> wrote:
>>>>> On Fri, Aug 1, 2014 at 9:26 AM, Vassil Vassilev
>>>>> <vasil.georgiev.vasilev at cern.ch> wrote:
>>>>>> Hi,
>>>>>>     Thanks for fixing this issue:
>>>>>>     There seem to be another issue with recent clang when printing:
>>>>>>     cat T.h
>>>>>>     typedef struct { } __pthread_unwind_buf_t __attribute__
>>>>>> ((__aligned__));
>>>>>>
>>>>>>     clang -cc1  -x c++ -fsyntax-only T.h -ast-print
>>>>>> struct {
>>>>>> } typedef __pthread_unwind_buf_t __attribute__((aligned(clang:
>>>>>>
>>>>>> /home/vvassilev/workspace/llvm-github/obj/tools/clang/lib/AST/../../include/clang/AST/AttrImpl.inc:294: 
>>>>>>
>>>>>> virtual void clang::AlignedAttr::printPretty(llvm::raw_ostream &, 
>>>>>> const
>>>>>> clang::PrintingPolicy &) const: Assertion `isalignmentExpr &&
>>>>>> alignmentExpr
>>>>>> != nullptr' failed.
>>>>> This is a problem with the way we tablegen attribute helper methods.
>>>>> I'll look into it, thank you for bringing it to my attention!
>>>> This should be resolved in r214513.
>>> (Sorry for reusing the thread)
>>> template<typename, unsigned = 0>
>>> struct __attribute__((type_visibility("default"))) extent;
>>>
>>> gets printed as:
>>>
>>> template<typename, unsigned = 0>
>>> struct __attribute__((type_visibility(0))) extent;
>>>
>>> (and it doesn't compiler because a string is expected) Is that by 
>>> design or
>>> a bug?
>> That seems like a bug to me. Enumerations print their integral value,
>> not their enumerator identifier, which is what causes the issue. It
>> shouldn't be too hard to fix, I'll look into it today.
> Thanks! It seems that printPretty would need to reuse (somehow?) the 
> implementation of ASTDumper::dumpAttr... I am not sure if this can be 
> done without a lot of changes to table gen...
>
> Vassil
>>
>> Thanks!
>>
>> ~Aaron
>
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev




More information about the cfe-dev mailing list