https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110736
Bug ID: 110736 Summary: gcc: internal compiler error: in change_stack, at reg-stack.cc:2709 Product: gcc Version: 14.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: 141242068 at smail dot nju.edu.cn Target Milestone: --- The bug triggering program: ``` long double a, b; long double f(long double x) { asm("sqxbr\t%0,%1" : "=f"(a) : "f"(x)); return a; } int main(void) { return b / f(0x1.0000000000001p+0L); } ``` When attempting to compile it using the option `gcc-14 -Os small.c`, gcc crashes: ``` <source>: In function 'f': <source>:3:3: error: output constraint 0 must specify a single register 3 | asm("sqxbr\t%0,%1" : "=f"(a) : "f"(x)); | ^~~ during RTL pass: stack <source>:5:1: internal compiler error: in change_stack, at reg-stack.cc:2709 5 | } | ^ 0x21594ee internal_error(char const*, ...) ???:0 0x9cf35e fancy_abort(char const*, int, char const*) ???:0 Please submit a full bug report, with preprocessed source (by using -freport-bug). Please include the complete backtrace with any bug report. See <https://gcc.gnu.org/bugs/> for instructions. ``` This crash can be verified at compiler explorer: https://gcc.godbolt.org/z/EKrY7s576