version 1.1, 2019/08/29 12:43:34
|
version 1.2, 2019/08/29 12:46:29
|
Line 2
|
Line 2
|
|
|
# libgomp crash with -O2 # |
# libgomp crash with -O2 # |
Repro: |
Repro: |
```` |
|
#!/bin/sh |
|
|
|
cat << EOF > oacc.i |
#!/bin/sh |
int a, b; |
|
int e() { |
cat << EOF > oacc.i |
short *c = 0; |
int a, b; |
char d = c[a + 1]; |
int e() { |
b = d; |
short *c = 0; |
a += 2; |
char d = c[a + 1]; |
} |
b = d; |
EOF |
a += 2; |
vax--netbsdelf-gcc -O2 -c oacc.i |
} |
```` |
EOF |
|
vax--netbsdelf-gcc -O2 -c oacc.i |
|
|
Asserts at emit-rtl.c:2310 gcc_assert (memory_address_addr_space_p (mode, addr, as)); |
Asserts at emit-rtl.c:2310 gcc_assert (memory_address_addr_space_p (mode, addr, as)); |
|
|
NetBSD avoids it with a local diff to reload.c/dse.c. |
NetBSD avoids it with a local diff to reload.c/dse.c. |
|
|
It looks like a real bug in vax_legitimate_address_p not handling some addressing modes |
It looks like a real bug in vax_legitimate_address_p not handling some addressing modes. |
|
|
|
The code to handle offset(reg)[index] might be off: it doesn't like if neither xfoo0, xfoo1 are constant. |