https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110667

            Bug ID: 110667
           Summary: gcc-14, ICE: internal compiler error: in replace_reg,
                    at reg-stack.cc:722
           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: ---

When compiling below program using gcc-14 with option `gcc-14 -Ofast a.c`,
gcc-14 crashes:
```
#include <assert.h>
#include <stdint.h>

void f() {
  long double res = 0;
  asm("" : "=&f"(res) : "f"(40.), "f"(2.));
  assert(res == 42.);
}
```

GCC's output is pasted below:
```
<source>: In function 'f':
<source>:6:3: error: output constraint 0 must specify a single register
    6 |   asm("" : "=&f"(res) : "f"(40.), "f"(2.));
      |   ^~~
during RTL pass: stack
<source>:8:1: internal compiler error: in replace_reg, at reg-stack.cc:722
    8 | }
      | ^
0x214e13e internal_error(char const*, ...)
        ???:0
0x9cd8e8 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 can be verified by visiting the Compiler Explorer:
https://gcc.godbolt.org/z/cbYGeaze8
  • [Bug c/110667] New: gcc-14,... 141242068 at smail dot nju.edu.cn via Gcc-bugs

Reply via email to