This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/79058] [7 Regression] ARM: internal compiler error: in extract_constrain_insn, at recog.c:2213
- From: "arnd at linaro dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Fri, 13 Jan 2017 19:55:21 +0000
- Subject: [Bug target/79058] [7 Regression] ARM: internal compiler error: in extract_constrain_insn, at recog.c:2213
- Auto-submitted: auto-generated
- References: <bug-79058-4@http.gcc.gnu.org/bugzilla/>
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);
}