[Bug tree-optimization/85579] [9 regression] SIGSEV in fortran test case gfortran.dg/pr51434.f90 starting with r259754
rguenth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed May 2 08:32:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85579
--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> ---
To me the testcase looks invalid:
integer, parameter :: n = 5
character(len=1), parameter :: s(n) = 'a'
type :: a
integer :: m = n
character(len=1):: t(n) = transfer('abcde ', s)
this initializes an array of size 5 with a sequence of too many chars:
bar ()
{
static struct a c = {.m=5, .t={"a", "b", "c", "d", "e", " ", " ", " ", " ", "
", " ", " ", " ", " ", " ", " ", " ", " "}};
OTOH maybe nothing cares. But we definitely do output the constants and for
aarch64 I see:
.set .LANCHOR0,. + 0
.type options.3.2654, %object
.size options.3.2654, 28
options.3.2654:
.word 102
.word 8191
.word 1
.word 1
.word 1
.word 0
.word 31
.zero 4
.type c.2640, %object
.size c.2640, 12
c.2640:
.word 5
.ascii "a"
.ascii "b"
.ascii "c"
.ascii "d"
.ascii "e"
.ascii " "
.ascii " "
.ascii " "
.ascii " "
.ascii " "
.ascii " "
.ascii " "
.ascii " "
.ascii " "
.ascii " "
.ascii " "
.ascii " "
.ascii " "
.zero 4
.type A.1.2647, %object
.size A.1.2647, 40
A.1.2647:
.xword .LC0
.xword .LC1
.xword .LC2
...
notice the bogus .size of c.2640. But then we get to both c and A via
adrp x0, .LANCHOR0
add x0, x0, :lo12:.LANCHOR0
add x3, x0, 32
add x0, x0, 48
which looks wrong.
Not sure why it worked before (or why it doesn't work on powerpc) but
clearly the frontend emits bogus IL here and/or the output machinery
should avoid emitting excess elements(?).
More information about the Gcc-bugs
mailing list