https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79058
--- Comment #20 from Arnd Bergmann <arnd at linaro dot org> --- // new reduced test case, build with "arm-linux-gnueabi-gcc-7.0.0 -c -Os -mbig-endian" struct nilfs_segment_usage { int su_flags; } a; enum { NILFS_SEGMENT_USAGE_ACTIVE, NILFS_SEGMENT_USAGE_DIRTY } fn1(); int b; void fn2(int *, long long); void fn3() { int c, d; struct nilfs_segment_usage e = a; fn1(); c = e.su_flags & 1 << NILFS_SEGMENT_USAGE_DIRTY; d = c; fn2(&b, d ? -1 : 0); } arnd@wuerfel:~/creduce/0x2F25F020$ cp old.i cp: missing destination file operand after 'old.i' Try 'cp --help' for more information. arnd@wuerfel:~/creduce/0x2F25F020$ cat > old.i enum { NILFS_SEGMENT_USAGE_ACTIVE, NILFS_SEGMENT_USAGE_DIRTY } a; void fn2 (long long); ----- ICE after applying patch from comment 16 sufile-0x2F25F020.i: In function 'fn3': sufile-0x2F25F020.i:14:1: error: insn does not satisfy its constraints: } ^ (insn 11 9 21 2 (set (reg:DI 0 r0 [118]) (and:DI (reg:DI 1 r1 [orig:116+-4 ] [116]) (const_int 1 [0x1]))) "sufile-0x2F25F020.i":13 79 {*anddi3_insn} (nil)) sufile-0x2F25F020.i:14:1: internal compiler error: in extract_constrain_insn, at recog.c:2213 0x98a923 _fatal_insn(char const*, rtx_def const*, char const*, int, char const*) /home/arnd/git/gcc/gcc/rtl-error.c:108 0x98a94f _fatal_insn_not_found(rtx_def const*, char const*, int, char const*) /home/arnd/git/gcc/gcc/rtl-error.c:119 0x95f05d extract_constrain_insn(rtx_insn*) /home/arnd/git/gcc/gcc/recog.c:2213 0x93c54c reload_cse_simplify_operands /home/arnd/git/gcc/gcc/postreload.c:391 0x93f355 reload_cse_simplify /home/arnd/git/gcc/gcc/postreload.c:179 0x93f355 reload_cse_regs_1 /home/arnd/git/gcc/gcc/postreload.c:218 0x93f423 reload_cse_regs /home/arnd/git/gcc/gcc/postreload.c:64 0x93f423 execute /home/arnd/git/gcc/gcc/postreload.c:2342 void fn1() { int b = a & 1 << NILFS_SEGMENT_USAGE_DIRTY; fn2 (b ? (long long) -1 : 0); }