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

Aaron Ballman aaron at aaronballman.com
Thu Aug 14 11:39:44 PDT 2014


On Thu, Aug 14, 2014 at 1:02 PM, Vassil Vassilev
<vasil.georgiev.vasilev at cern.ch> wrote:
> On 08/01/2014 04:11 PM, Vassil Vassilev 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.
>>
>> That was quick :-)
>> Thanks a lot!
>
> Another interesting issue with AnnotateAttr is that setAnnotation uses:
> ...
> this->annotation = new (C, 1) char [annotationLength];
> ...
>
> But operator new[]( (unsigned long, clang::ASTContext const&, unsigned long)
> is not defined and I get a linker error. For clang it works because nobody
> calls setAnnotation.
>
> I can provide more accurate information if needed.

On what platform are you seeing this link failure? I am unable to
reproduce with MSVC when I force a usage of setAnnotation, but that
holds with my belief that the code is fine. See ASTContext.h:2401 for
the definition of operator new[](size_t, ASTContext&, size_t);

~Aaron



More information about the cfe-dev mailing list