https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120308
Thomas Schwinge <tschwinge at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Assignee|unassigned at gcc dot gnu.org |tschwinge at gcc dot gnu.org Status|UNCONFIRMED |ASSIGNED Ever confirmed|0 |1 Last reconfirmed| |2025-05-16 --- Comment #2 from Thomas Schwinge <tschwinge at gcc dot gnu.org> --- Created attachment 61442 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=61442&action=edit '0001-TYPE_EMPTY_P-vs.-code-offloading-PR120308.patch' (In reply to Richard Biener from comment #1) > It looks like TYPE_EMPTY_P is only used during RTL expansion for ABI > purposes, so computing it during layout_type is premature as shown here. Thanks for confirming what I suspected/hoped. > I would suggest to simply re-compute it at offload stream-in time. I'm testing the patch that I'm attaching here. Does that look alright? Do I understand correctly that (per (non-)handling of other similar cases) I do *not* conditionalize 'compare_values (TYPE_EMPTY_P);' in 'gcc/lto/lto-common.cc:compare_tree_sccs_1'? > Design-wise we might want to replace all TYPE_EMPTY_P uses with a call > to the target hook or instead make it tri-state and maintain only a cache > in the tree node ACK, noted for further improvement, later on. > and make sure that cache isn't populated until after > LTO stream-in. ACK. I wish that we generally were more explicit about which information in GCC data structures is valid at which stage during compilation.