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

            Bug ID: 86487
           Summary: [7/8/9 Regression] insn does not satisfy its
                    constraints on arm big-endian
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Keywords: ice-on-valid-code
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: ktkachov at gcc dot gnu.org
  Target Milestone: ---
            Target: arm

int a, b, c, d;
long long fn1(long long p2) { return p2 == 0 ? -1 : -1 % p2; }
void fn2(long long p1, short p2, long p3) {
  b = fn1((d || 6) & a);
  c = b | p3;
}

Compiled for arm-none-eabi with -O1 -mfloat-abi=hard -mfpu=neon -mbig-endian
-march=armv7-a ICEs with:

anddi.c: In function 'fn2':
anddi.c:6:1: error: insn does not satisfy its constraints:
 }
 ^
(insn 13 11 14 2 (set (reg:DI 0 r0 [124])
        (and:DI (reg:DI 1 r1 [orig:121+-4 ] [121])
            (const_int 1 [0x1]))) "anddi.c":2 79 {*anddi3_insn}
     (nil))
during RTL pass: reload
anddi.c:6:1: internal compiler error: in extract_constrain_insn, at
recog.c:2205
0xb6d56c _fatal_insn(char const*, rtx_def const*, char const*, int, char
const*)
        $SRC/gcc/rtl-error.c:108
0xb6d59d _fatal_insn_not_found(rtx_def const*, char const*, int, char const*)
        $SRC/gcc/rtl-error.c:119
0xb40af6 extract_constrain_insn(rtx_insn*)
        $SRC/gcc/recog.c:2205
0xa3d659 check_rtl
        $SRC/gcc/lra.c:2156
0xa42258 lra(_IO_FILE*)
        $SRC/gcc/lra.c:2590
0x9f9298 do_reload
        $SRC/gcc/ira.c:5465
0x9f9298 execute
        $SRC/gcc/ira.c:5649
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.

Reply via email to