https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85938
Bug ID: 85938 Summary: Spurious assert failure for matmul with reshaped array Product: gcc Version: 8.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran Assignee: unassigned at gcc dot gnu.org Reporter: stephan.kramer at imperial dot ac.uk Target Milestone: --- The following program program foo real, dimension(9) :: A real, dimension(3) :: b integer :: n = 3 A = 1.0 b = 1.0 print *, matmul(reshape(A, (/ n, n /)), b) end program compiled with, or without optimisation, produces the following runtime assertion failure in libgfortran: $ gfortran test.f90 $ ./a.out a.out: ../../../src/libgfortran/generated/matmul_r4.c:651: matmul_r4_avx2: Assertion `GFC_DESCRIPTOR_RANK (a) == 2 || GFC_DESCRIPTOR_RANK (b) == 2' failed. Program received signal SIGABRT: Process abort signal. I also tried -fno-frontend-optimize to no avail. Backtrace in gdb: (gdb) bt #0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51 #1 0x00007ffff6dfc231 in __GI_abort () at abort.c:79 #2 0x00007ffff6df39da in __assert_fail_base (fmt=0x7ffff6f46d48 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=assertion@entry=0x7ffff7ba9ec8 "GFC_DESCRIPTOR_RANK (a) == 2 || GFC_DESCRIPTOR_RANK (b) == 2", file=file@entry=0x7ffff7baa300 "../../../src/libgfortran/generated/matmul_r4.c", line=line@entry=651, function=function@entry=0x7ffff7baa368 "matmul_r4_avx2") at assert.c:92 #3 0x00007ffff6df3a52 in __GI___assert_fail (assertion=0x7ffff7ba9ec8 "GFC_DESCRIPTOR_RANK (a) == 2 || GFC_DESCRIPTOR_RANK (b) == 2", file=0x7ffff7baa300 "../../../src/libgfortran/generated/matmul_r4.c", line=651, function=0x7ffff7baa368 "matmul_r4_avx2") at assert.c:101 #4 0x00007ffff7a5c9a3 in ?? () from /usr/lib/x86_64-linux-gnu/libgfortran.so.5 #5 0x0000555555554c32 in foo () at test.f90:8 #6 0x0000555555554cf0 in main (argc=1, argv=0x7fffffffe38c) at test.f90:10 #7 0x00007ffff6de7a87 in __libc_start_main (main=0x555555554cba <main>, argc=1, argv=0x7fffffffe088, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffe078) at ../csu/libc-start.c:310 #8 0x000055555555482a in _start () This is based on source and debugging symbols for Debian gcc-8 8.1.0-3