Bug 89659 - [microblaze] unrecognizable insn at floating point conversion
Summary: [microblaze] unrecognizable insn at floating point conversion
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: target (show other bugs)
Version: 7.3.1
: P3 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2019-03-11 15:40 UTC by Rico Amslinger
Modified: 2019-05-31 12:46 UTC (History)
0 users

See Also:
Host: x86_64-host_w64-mingw32
Target: microblaze-xilinx-elf
Build: x86_64-build_unknown-linux-gnu
Known to work: 8.2.0
Known to fail: 7.2.0, 7.3.1
Last reconfirmed:


Attachments
The preprocessed source file (152 bytes, text/plain)
2019-03-11 15:40 UTC, Rico Amslinger
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Rico Amslinger 2019-03-11 15:40:32 UTC
Created attachment 45939 [details]
The preprocessed source file

Compiling the attached test case results in an unrecognizable insn internal compiler error. The test case was reduced from the PARSEC Benchmark Suite, fluidanimate, pthreads.cpp:344. The compiler used is the one shipped with Vivado 2018.3, running on Windows 10. -O2 is necessary for the error to occur, but I was not able to identify the exact optimization flag.

$ mb-gcc -v -save-temps -O2 -mhard-float -mxl-float-convert "test_case.c"

Using built-in specs.
COLLECT_GCC=mb-gcc
COLLECT_LTO_WRAPPER=c:/xilinx/sdk/2018.3/gnu/microblaze/nt/bin/../libexec/gcc/microblaze-xilinx-elf/7.3.1/lto-wrapper.exe
Target: microblaze-xilinx-elf
Configured with: /proj/sdk/gnu/microblaze/builds/HEAD/nightly/2018_11_29/rdi_scripts/../build/nt/ctng_bld/target_build/src/gcc-custom/configure --build=x86_64-build_unknown-linux-gnu --host=x86_64-host_w64-mingw32 --target=microblaze-xilinx-elf --prefix=/proj/sdk/gnu/microblaze/builds/HEAD/nightly/2018_11_29/rdi_scripts/../build/nt/ctng_output --with-local-prefix=/proj/sdk/gnu/microblaze/builds/HEAD/nightly/2018_11_29/rdi_scripts/../build/nt/ctng_output/microblaze-xilinx-elf/sysroot --disable-libmudflap --with-sysroot=/proj/sdk/gnu/microblaze/builds/HEAD/nightly/2018_11_29/rdi_scripts/../build/nt/ctng_output/microblaze-xilinx-elf/sysroot --with-newlib --enable-threads=no --disable-shared --with-pkgversion='crosstool-NG 1.20.0' --disable-__cxa_atexit --with-gmp=/proj/sdk/gnu/microblaze/builds/HEAD/nightly/2018_11_29/rdi_scripts/../build/nt/ctng_bld/target_build/microblaze-xilinx-elf/buildtools/complibs-host --with-mpfr=/proj/sdk/gnu/microblaze/builds/HEAD/nightly/2018_11_29/rdi_scripts/../build/nt/ctng_bld/target_build/microblaze-xilinx-elf/buildtools/complibs-host --with-mpc=/proj/sdk/gnu/microblaze/builds/HEAD/nightly/2018_11_29/rdi_scripts/../build/nt/ctng_bld/target_build/microblaze-xilinx-elf/buildtools/complibs-host --with-ppl=no --with-isl=no --with-cloog=no --with-libelf=/proj/sdk/gnu/microblaze/builds/HEAD/nightly/2018_11_29/rdi_scripts/../build/nt/ctng_bld/target_build/microblaze-xilinx-elf/buildtools/complibs-host --enable-lto --enable-target-optspace --without-long-double-128 --disable-libgomp --disable-libmudflap --disable-nls --disable-libstdcxx-pch --enable-languages=c,c++
Thread model: single
gcc version 7.3.1 20180425 (crosstool-NG 1.20.0)
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-O2' '-mhard-float' '-mxl-float-convert'
 c:/xilinx/sdk/2018.3/gnu/microblaze/nt/bin/../libexec/gcc/microblaze-xilinx-elf/7.3.1/cc1.exe -E -quiet -v -iprefix c:\xilinx\sdk\2018.3\gnu\microblaze\nt\bin\../lib/gcc/microblaze-xilinx-elf/7.3.1/ test_case.c -mhard-float -mxl-float-convert -O2 -fpch-preprocess -o test_case.i
ignoring duplicate directory "c:/xilinx/sdk/2018.3/gnu/microblaze/nt/lib/gcc/../../lib/gcc/microblaze-xilinx-elf/7.3.1/include"
ignoring nonexistent directory "/proj/sdk/gnu/microblaze/builds/HEAD/nightly/2018_11_29/rdi_scripts/../build/nt/ctng_output/microblaze-xilinx-elf/sysroot/proj/sdk/gnu/microblaze/builds/HEAD/nightly/2018_11_29/rdi_scripts/../build/nt/ctng_output/lib/gcc/microblaze-xilinx-elf/7.3.1/../../../../include"
ignoring duplicate directory "c:/xilinx/sdk/2018.3/gnu/microblaze/nt/lib/gcc/../../lib/gcc/microblaze-xilinx-elf/7.3.1/include-fixed"
ignoring duplicate directory "c:/xilinx/sdk/2018.3/gnu/microblaze/nt/lib/gcc/../../lib/gcc/microblaze-xilinx-elf/7.3.1/../../../../microblaze-xilinx-elf/include"
ignoring nonexistent directory "/proj/sdk/gnu/microblaze/builds/HEAD/nightly/2018_11_29/rdi_scripts/../build/nt/ctng_output/microblaze-xilinx-elf/sysroot/usr/include"
#include "..." search starts here:
#include <...> search starts here:
 c:\xilinx\sdk\2018.3\gnu\microblaze\nt\bin\../lib/gcc/microblaze-xilinx-elf/7.3.1/include
 c:\xilinx\sdk\2018.3\gnu\microblaze\nt\bin\../lib/gcc/microblaze-xilinx-elf/7.3.1/include-fixed
 c:\xilinx\sdk\2018.3\gnu\microblaze\nt\bin\../lib/gcc/microblaze-xilinx-elf/7.3.1/../../../../microblaze-xilinx-elf/include
End of search list.
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-O2' '-mhard-float' '-mxl-float-convert'
 c:/xilinx/sdk/2018.3/gnu/microblaze/nt/bin/../libexec/gcc/microblaze-xilinx-elf/7.3.1/cc1.exe -fpreprocessed test_case.i -quiet -dumpbase test_case.c -mhard-float -mxl-float-convert -auxbase test_case -O2 -version -o test_case.s
GNU C11 (crosstool-NG 1.20.0) version 7.3.1 20180425 (microblaze-xilinx-elf)
        compiled by GNU C version 4.8.0 20121031 (experimental), GMP version 5.0.1, MPFR version 3.0.1, MPC version 1.0.2, isl version none
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
GNU C11 (crosstool-NG 1.20.0) version 7.3.1 20180425 (microblaze-xilinx-elf)
        compiled by GNU C version 4.8.0 20121031 (experimental), GMP version 5.0.1, MPFR version 3.0.1, MPC version 1.0.2, isl version none
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 76da5aca25a80f9fc438452dd1398ae2
test_case.c: In function 'main':
test_case.c:12:1: error: unrecognizable insn:
 }
 ^
(insn 42 41 13 2 (set (reg:SF 3 r3 [orig:42 vec.0_1 ] [42])
        (reg:SI 4 r4 [orig:43 ci.1_2 ] [43])) "test_case.c":7 -1
     (nil))
test_case.c:12:1: internal compiler error: in extract_insn, at recog.c:2311
Please submit a full bug report,
with preprocessed source if appropriate.
See <https://gcc.gnu.org/bugs/> for instructions.

C:\Users\amslinri\Desktop\multiversioning_fpga\multiversion_memory\multiversion_memory.sdk\crash_test\src>mb-gcc -O2 -mhard-float -mxl-float-convert "test_case.c"
test_case.c: In function 'main':
test_case.c:12:1: error: unrecognizable insn:
 }
 ^
(insn 42 41 13 2 (set (reg:SF 3 r3 [orig:42 vec.0_1 ] [42])
        (reg:SI 4 r4 [orig:43 ci.1_2 ] [43])) "test_case.c":7 -1
     (nil))
test_case.c:12:1: internal compiler error: in extract_insn, at recog.c:2311
Please submit a full bug report,
with preprocessed source if appropriate.
See <https://gcc.gnu.org/bugs/> for instructions.
Comment 1 Rico Amslinger 2019-05-31 12:46:47 UTC
The issue does no longer occur in 8.2.0, as it was fixed by mbodapat. See 
https://forums.xilinx.com/t5/Embedded-Development-Tools/quot-unrecognizable-insn-quot-when-compiling-Parsec-Benchmarks/td-p/949479 for details.