On Tue, Jan 9, 2024 at 9:18 PM Eric Botcazou <[email protected]> wrote:
>
> Hi,
>
> this is not really a regression but the patch was written last week and is
> quite straightforward, so hopefully can nevertheless be OK. It implements the
> support of DW_AT_endianity for enumeration types because they are scalar and,
> therefore, reverse Scalar_Storage_Order is supported for them, but only when
> the -gstrict-dwarf switch is not passed because this is an extension.
>
> There is an associated GDB patch to be submitted by Tom to grok the new DWARF.
>
> Tested on x86-64/Linux, OK for the mainline? It may also help the GDB side to
> backport it for the upcoming 13.3 release.
Can you elaborate on the DIE order constraint and why it was chosen? That is,
+ /* The DIE with DW_AT_endianity is placed right after the naked DIE. */
+ if (reverse)
+ {
+ gcc_assert (type_die);
...
and
+ /* The DIE with DW_AT_endianity is placed right after the naked DIE. */
+ if (reverse_type)
+ {
+ dw_die_ref after_die
+ = modified_type_die (type, cv_quals, false, context_die);
+ gen_type_die (type, context_die, true);
+ gcc_assert (after_die->die_sib
+ && get_AT_unsigned (after_die->die_sib, DW_AT_endianity));
+ return after_die->die_sib;
?
Likewise the extra argument to the functions is odd - is that not available
on the tree type?
Richard.
>
> 2024-01-09 Eric Botcazou <[email protected]>
>
> * dwarf2out.cc (modified_type_die): Extend the support of reverse
> storage order to enumeration types if -gstrict-dwarf is not passed.
> (gen_enumeration_type_die): Add REVERSE parameter and generate the
> DIE immediately after the existing one if it is true.
> (gen_tagged_type_die): Add REVERSE parameter and pass it in the
> call to gen_enumeration_type_die.
> (gen_type_die_with_usage): Add REVERSE parameter and pass it in the
> first recursive call as well as the call to gen_tagged_type_die.
> (gen_type_die): Add REVERSE parameter and pass it in the call to
> gen_type_die_with_usage.
>
> --
> Eric Botcazou