https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56457
Nicholas Krause <xerofoify at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |xerofoify at gmail dot com --- Comment #2 from Nicholas Krause <xerofoify at gmail dot com> --- defs = DF_REF_CHAIN (use); if (!defs) { unsigned int regno = DF_REF_REGNO (use); /* If this is the use of an uninitialized argument register that is likely to be spilled, do not move it lest this might extend its lifetime and cause reload to die. This can occur for a call to a function taking complex number arguments and moving the insns preparing the arguments without moving the call itself wouldn't gain much in practice. */ if ((DF_REF_FLAGS (use) & DF_HARD_REG_LIVE) && FUNCTION_ARG_REGNO_P (regno) && targetm.class_likely_spilled_p (REGNO_REG_CLASS (regno))) return false; return true; } This is the actual code and it seems to be used not in the if block below it Eric. I haven't run a build for it on the current gcc sources but it seems to be used currently. As for memory I don't recall it happening during my latest gcc builds on the upstream sources.