Introduced by
r13-1104-gf4c3ce32fa54c1, which had an accidental self
assignment of TYPE_PACKED when it should have been assigned to the
type's variants.
PR d/117621
gcc/d/ChangeLog:
* types.cc (finish_aggregate_type): Propagate TYPE_PACKED to variants.
gcc/testsuite/ChangeLog:
* gdc.dg/pr117621.d: New test.
(cherry picked from commit
a12dd79ff4e469652be6d8ef501e1d70178b44cd)
TYPE_LANG_SPECIFIC (t) = TYPE_LANG_SPECIFIC (type);
TYPE_SIZE (t) = TYPE_SIZE (type);
TYPE_SIZE_UNIT (t) = TYPE_SIZE_UNIT (type);
- TYPE_PACKED (type) = TYPE_PACKED (type);
+ TYPE_PACKED (t) = TYPE_PACKED (type);
SET_TYPE_ALIGN (t, TYPE_ALIGN (type));
TYPE_USER_ALIGN (t) = TYPE_USER_ALIGN (type);
}
--- /dev/null
+// { dg-do "compile" }
+// { dg-options "-g" }
+void pr117621()
+{
+ auto fun()(inout int)
+ {
+ struct S {}
+ return inout(S)();
+ }
+ auto s = fun(0);
+}