https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118600

--- Comment #1 from Gaius Mulley <gaius at gcc dot gnu.org> ---
Created attachment 60236
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=60236&action=edit
PR-118600-Assigning-to-a-record-causes-alignment-exception.patch

Proposed fix.  This exploratory proposed fix tests to see if the assignment lhs
and rhs types are GCC equivalent.  If rhs and rhs are not GCC equivalent then
it copies records by fields and uses __builtin_strncpy to copy strings into
arrays.

$ gm2 -fm2-dump=all -fdump-lang-all strcons.mod  -fdump-tree-all
$ cat a-strcons.mod.007t.gimple

PROC _M2_strcons_init (INTEGER argc, PROC * argv, PROC * envp)
{
  year.0_1 = year;
  date.year = year.0_1;
  month.1_2 = month;
  date.month = month.1_2;
  day.2_3 = day;
  date.day = day.2_3;
  date.year = 1623;
  date.month = 6;
  date.day = 19;
  __builtin_strncpy (&person.name, "Blaise Pascal", 14);
  person.DateOfBirth = date;
}

Reply via email to