https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118537
--- Comment #18 from Julian Andres Klode <j...@jak-linux.org> --- (In reply to Sam James from comment #17) > (In reply to Julian Andres Klode from comment #16) > > I built apt and couldn't reproduce it using this yet with tip of 14 release > branch and trunk too. I need to try building gcc-14 branch itself and see for myself, also if I can still reproduce it on AWS, then I can bisect it to the commit introducing the issue. Meanwhile, my initial attempt at cvise on the full .ii was not fruitful as I mocked that up using if (Encoding != Closes) exit(42) and cvise helpfully trimmed it down to Encoding != Closes; exit(42) - that is, it always failed. I started a second attempt where I split out the offending BaseHttpMethod::Loop() into its own source file and then cvised that and that reduced it to: void BaseHttpMethod::Loop() { while (1) { Run(); Server = CreateServerState(URI(Queue->Uri)); Server->Open(); RequestState Req(this, Server.get()); switch (Server->RunHeaders(Req, Queue->Uri)); } } When downloading over https (i.e. Server->Open() makes OpenSSL calls), I get the error, without OpenSSL calls, I do not get the error, so it sounds like something messes up (register?) state there. This boils down to: isb // 0 "" 2 // basehttp-loop.cc:12: time(&Date); #NO_APP ldr x0, [sp, 16] //, %sfp // basehttp-loop.cc:11: : Server() { str d15, [sp, 48] // tmp332, MEM <vector(2) unsigned int> [(void *)&Req] // basehttp-loop.cc:12: time(&Date); bl time // // basehttp-loop.cc:13: assert(Encoding == Closes); ldr w0, [sp, 48] //, Req.Encoding cmp w0, 1 // Req.Encoding, bne .L56 //, // /usr/include/aarch64-linux-gnu/bits/stdio2.h:118: return __printf_chk (__USE_FORTIFY_LEVEL - 1, __fmt, __va_arg_pack ()); adrp x1, .LC3 // tmp267, mov w0, 2 //, add x1, x1, :lo12:.LC3 //, tmp267, bl __printf_chk // .LEHE3: // basehttp-loop.cc:41: __asm__("isb"); #APP // 41 "basehttp-loop.cc" 1 isb Now per ARM, `D part of V8-V15 need to be saved`, but the only other mention of `d15` is ldr d15, [x0, #:lo12:.LC4] // tmp332, earlier in the function way before we call any of the other functions. The question I'm not sure is D part of V15 caller-saved or callee-saved?