This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug target/79058] [7 Regression] ARM: internal compiler error: in extract_constrain_insn, at recog.c:2213


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);
}

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]