https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91130

--- Comment #10 from Richard Earnshaw <rearnsha at gcc dot gnu.org> ---
I'm not particularly familiar with how LTO is supposed to work.  I can
reproduce the crash on ARM as Martin described (but not on AArch64).  The
problem seems to be an assert that the number of files to analyse passed on the
command line matches the number of files described in the resolution file.  We
have:

lto1 -quiet -dumpbase aaaa -mcpu=cortex-a72 -mfloat-abi=hard -mtls-dialect=gnu
-mcpu=cortex-a72 -mfloat-abi=hard -mtls-dialect=gnu -marm
-march=armv8-a+crc+simd -auxbase aaaa -version -fno-openmp -fno-openacc
-fno-pie -fltrans-output-list=/tmp/ccoC6W9f.ltrans.out -fwpa
-fresolution=main.res -flinker-output=exec @/tmp/ccHCf4bh

Where ccHCf4bh contains:
aaaa
main.o

and main.res contains:
1
main.o 1
195 4bf9aa6f81679e65 PREVAILING_DEF main

So if I've understood this correctly, the resolution file says to expect one
file to analyse, but two are passed.  It looks like something is interpreting
aaaa as an additional file.

Going back another step, we see

/home/rearnsha/scratch/gnu/gcc-install/armv8l/gcc-9.1.0/libexec/gcc/armv8l-unkno
wn-linux-gnueabihf/9.1.0/lto-wrapper -fresolution=main.res -flinker-output=exec 
main.o 
/home/rearnsha/scratch/gnu/gcc-install/armv8l/gcc-9.1.0/bin/gcc @/tmp/cc8Su59l

where cc8Su59l contains:
-xlto
-c
-fno-openmp
-fno-openacc
-fno-pie
-mcpu=cortex-a72
-mfloat-abi=hard
-mtls-dialect=gnu
-marm
-march=armv8-a+crc+simd
-v
aaaa
-save-temps
-mcpu=cortex-a72
-mfloat-abi=hard
-mtls-dialect=gnu
-marm
-march=armv8-a+crc+simd
-fltrans-output-list=/tmp/ccoC6W9f.ltrans.out
-fwpa
-fresolution=main.res
-flinker-output=exec
main.o

I think the problem is that 'aaaa' mid-way through the list of options.  It
looks as though it has had a preceding -MF gobbled but not its argument.

Does this help any?

Reply via email to