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

Reply via email to