[llvm-dev] DebugInfo: purpose of align field

Adrian Prantl via llvm-dev llvm-dev at lists.llvm.org
Mon Sep 12 14:43:07 PDT 2016


> On Sep 10, 2016, at 12:50 PM, Victor Leschuk via llvm-dev <llvm-dev at lists.llvm.org> wrote:
> 
> Hello all,
> 
> I am currently implementing support for DWARFv5 DW_AT_alignment attr and I got a question about align field in debug info section of IR/Bitcode.

Thanks for looking into this!

> Currently it is being dumped almost in any case, however according to code we use align from DI* objects only when dealing with class/structure bitfields: DwarfUnit::constructMemberDIE.
> 
> Dumping align information everywhere only for 1 case looks like overhead to me.

One your patch is finished it will be used in more cases, right? :-)
> 
> Consider the following code:
> 
> struct S {
>  char c;
> } s;
> 
> When compiled with debug enabled in IR we get smth like that:
> 
> !6 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "S", file: !5, line: 1, size: 8, align: 8, elements: !7)
> 
> Am I missing something? What is the purpose of "align: 8" here? Maybe we could include alignment information into DI* objects only when required (and thus dump it only when required): for types with bitfields and when alignas() was specified in code.

What do you mean by "include" in this context? Are you arguing for making an alignment of 8 the implicit default in textual IR? Or do you want to make DICompositeType variable length?

-- adrian

> 
> Please advise.
> 
> -- 
> Best Regards,
> Victor
> 
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev



More information about the llvm-dev mailing list