https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111444
--- Comment #9 from Richard Biener <rguenth at gcc dot gnu.org> --- (In reply to Richard Biener from comment #8) > The best fix would likely be to pre-insert all the IPA-CP known constants > instead of trying to discover them "late". > > I'm testing the easy fix for now. Hmm. gcc.dg/ipa/pr92497-1.c FAILs because of that. We get __attribute__((noinline)) int bar.constprop (struct a a) { intD.6 a$aD.2808; intD.6 D.2807; struct a aD.2806; intD.6 _4; <bb 2> [local count: 1073741824]: # .MEM_5 = VDEF <.MEM_2(D)> aD.2806 = aD.2800; # VUSE <.MEM_5> a$a_3 = aD.2806.aD.2769; here and thus translate through the aggregate copy - the result should then be put on aD.2806 but of course only with .MEM_5. Maybe we can and should always use the default def here but I'm slightly uneasy with the ref adjustment, esp. since we're going to record for the saved operands (if those exist - the path where it goes wrong isn't translated).