d: Fix segfault in build_frontend_type on alpha-*-*
authorIain Buclaw <ibuclaw@gdcproject.org>
Mon, 1 Jun 2020 11:27:06 +0000 (13:27 +0200)
committerIain Buclaw <ibuclaw@gdcproject.org>
Tue, 2 Jun 2020 07:33:51 +0000 (09:33 +0200)
commit70f6320462d91e5add99ae5b50226356302a8c0b
tree232915ce57fdf3666e878c1b8d317fe2ac0a5f80
parent9a8bac4d7e7209a1fef96a077c80bb2416aac6ce
d: Fix segfault in build_frontend_type on alpha-*-*

The va_list type for Alpha includes a nameless dummy field for alignment
purposes.  To transpose this into D, a field named "__pad%d" is inserted
into the struct definition.

It was also noticed that in the D front-end AST copy of the backend
type, all offsets for fields generated by build_frontend_type were set
to zero due to a wrong assumption that DECL_FIELD_OFFSET would have a
non-zero value.  This has been fixed to use byte_position instead.

gcc/d/ChangeLog:

* d-builtins.cc (build_frontend_type): Handle struct fields with NULL
DECL_NAME.  Use byte_position to get the real field offset.
gcc/d/d-builtins.cc