https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96882
Richard Earnshaw <rearnsha at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Target| |arm --- Comment #4 from Richard Earnshaw <rearnsha at gcc dot gnu.org> --- typedef struct { double m_a; double m_b; double m_c; double m_d; } AtLeast32BytesObject; static AtLeast32BytesObject __attribute__((noinline,noclone)) CalledFunction() { AtLeast32BytesObject result = {1.1, 2.2, 3.3, 4.4}; return result; } void __attribute__((noinline)) _start() { volatile AtLeast32BytesObject result = CalledFunction(); while(1) {} } Will miscompile without needing LTO.