http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56043
Bug #: 56043 Summary: ICE in rs6000_builtin_vectorized_libmass for vsx-mass-1.c Classification: Unclassified Product: gcc Version: 4.7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target AssignedTo: unassig...@gcc.gnu.org ReportedBy: ja...@gcc.gnu.org CC: meiss...@gcc.gnu.org Target: powerpc-none-eabi My mainline compiler for powerpc-none-eabi gets a null pointer dereference for a test: /scratch/janisjo/build6/fsf-powerpc-eabi/src/gcc-mainline/gcc/testsuite/gcc.target/powerpc/vsx-mass-1.c: In function 'test_float_atan2':^M /scratch/janisjo/build6/fsf-powerpc-eabi/src/gcc-mainline/gcc/testsuite/gcc.target/powerpc/vsx-mass-1.c:80:1: internal compiler error: Segmentation fault^M 0x85fb2d2 crash_signal^M /scratch/janisjo/build6/fsf-powerpc-eabi/src/gcc-mainline/gcc/toplev.c:332^M 0x813611c contains_struct_check /scratch/janisjo/build6/fsf-powerpc-eabi/src/gcc-mainline/gcc/tree.h:3782 0x88b5172 rs6000_builtin_vectorized_libmass /scratch/janisjo/build6/fsf-powerpc-eabi/src/gcc-mainline/gcc/config/rs6000/rs6000.c:3751 0x88093be vect_analyze_loop_operations /scratch/janisjo/build6/fsf-powerpc-eabi/src/gcc-mainline/gcc/tree-vect-loop.c:1443 0x880ac46 vect_analyze_loop_2 /scratch/janisjo/build6/fsf-powerpc-eabi/src/gcc-mainline/gcc/tree-vect-loop.c:1720 0x880ac46 vect_analyze_loop(loop*) /scratch/janisjo/build6/fsf-powerpc-eabi/src/gcc-mainline/gcc/tree-vect-loop.c:1773 0x8825e13 vectorize_loops() /scratch/janisjo/build6/fsf-powerpc-eabi/src/gcc-mainline/gcc/tree-vectorizer.c:113 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <http://gcc.gnu.org/bugs.html> for instructions. FAIL: gcc.target/powerpc/vsx-mass-1.c (internal compiler error) FAIL: gcc.target/powerpc/vsx-mass-1.c (test for excess errors) The null pointer dereference comes from a null value assigned to bdecl returned from builtin_decl_implicit in calls in rs6000_builtin_vectorized_libmass. If that function returns NULL_TREE when bdecl is NULL then the test program compiles but nost of the assembly scans fail, so perhaps that isn't a valid fix. Here's the output from my tests when the null pointers are avoided: PASS: gcc.target/powerpc/vsx-mass-1.c (test for excess errors) PASS: gcc.target/powerpc/vsx-mass-1.c scan-assembler bl[\\. ]+atan2d2 FAIL: gcc.target/powerpc/vsx-mass-1.c scan-assembler bl[\\. ]+atan2f4 FAIL: gcc.target/powerpc/vsx-mass-1.c scan-assembler bl[\\. ]+hypotd2 FAIL: gcc.target/powerpc/vsx-mass-1.c scan-assembler bl[\\. ]+hypotf4 PASS: gcc.target/powerpc/vsx-mass-1.c scan-assembler bl[\\. ]+powd2 FAIL: gcc.target/powerpc/vsx-mass-1.c scan-assembler bl[\\. ]+powf4 PASS: gcc.target/powerpc/vsx-mass-1.c scan-assembler bl[\\. ]+acosd2 FAIL: gcc.target/powerpc/vsx-mass-1.c scan-assembler bl[\\. ]+acosf4 FAIL: gcc.target/powerpc/vsx-mass-1.c scan-assembler bl[\\. ]+acoshd2 FAIL: gcc.target/powerpc/vsx-mass-1.c scan-assembler bl[\\. ]+acoshf4 PASS: gcc.target/powerpc/vsx-mass-1.c scan-assembler bl[\\. ]+asind2 FAIL: gcc.target/powerpc/vsx-mass-1.c scan-assembler bl[\\. ]+asinf4 FAIL: gcc.target/powerpc/vsx-mass-1.c scan-assembler bl[\\. ]+asinhd2 FAIL: gcc.target/powerpc/vsx-mass-1.c scan-assembler bl[\\. ]+asinhf4 PASS: gcc.target/powerpc/vsx-mass-1.c scan-assembler bl[\\. ]+atand2 FAIL: gcc.target/powerpc/vsx-mass-1.c scan-assembler bl[\\. ]+atanf4 FAIL: gcc.target/powerpc/vsx-mass-1.c scan-assembler bl[\\. ]+atanhd2 FAIL: gcc.target/powerpc/vsx-mass-1.c scan-assembler bl[\\. ]+atanhf4 FAIL: gcc.target/powerpc/vsx-mass-1.c scan-assembler bl[\\. ]+cbrtd2 FAIL: gcc.target/powerpc/vsx-mass-1.c scan-assembler bl[\\. ]+cbrtf4 PASS: gcc.target/powerpc/vsx-mass-1.c scan-assembler bl[\\. ]+cosd2 FAIL: gcc.target/powerpc/vsx-mass-1.c scan-assembler bl[\\. ]+cosf4 PASS: gcc.target/powerpc/vsx-mass-1.c scan-assembler bl[\\. ]+coshd2 FAIL: gcc.target/powerpc/vsx-mass-1.c scan-assembler bl[\\. ]+coshf4 FAIL: gcc.target/powerpc/vsx-mass-1.c scan-assembler bl[\\. ]+erfd2 FAIL: gcc.target/powerpc/vsx-mass-1.c scan-assembler bl[\\. ]+erff4 FAIL: gcc.target/powerpc/vsx-mass-1.c scan-assembler bl[\\. ]+erfcd2 FAIL: gcc.target/powerpc/vsx-mass-1.c scan-assembler bl[\\. ]+erfcf4 FAIL: gcc.target/powerpc/vsx-mass-1.c scan-assembler bl[\\. ]+exp2d2 FAIL: gcc.target/powerpc/vsx-mass-1.c scan-assembler bl[\\. ]+exp2f4 PASS: gcc.target/powerpc/vsx-mass-1.c scan-assembler bl[\\. ]+expd2 FAIL: gcc.target/powerpc/vsx-mass-1.c scan-assembler bl[\\. ]+expf4 FAIL: gcc.target/powerpc/vsx-mass-1.c scan-assembler bl[\\. ]+expm1d2 FAIL: gcc.target/powerpc/vsx-mass-1.c scan-assembler bl[\\. ]+expm1f4 PASS: gcc.target/powerpc/vsx-mass-1.c scan-assembler bl[\\. ]+lgamma PASS: gcc.target/powerpc/vsx-mass-1.c scan-assembler bl[\\. ]+lgammaf PASS: gcc.target/powerpc/vsx-mass-1.c scan-assembler bl[\\. ]+log10d2 FAIL: gcc.target/powerpc/vsx-mass-1.c scan-assembler bl[\\. ]+log10f4 FAIL: gcc.target/powerpc/vsx-mass-1.c scan-assembler bl[\\. ]+log1pd2 FAIL: gcc.target/powerpc/vsx-mass-1.c scan-assembler bl[\\. ]+log1pf4 FAIL: gcc.target/powerpc/vsx-mass-1.c scan-assembler bl[\\. ]+log2d2 FAIL: gcc.target/powerpc/vsx-mass-1.c scan-assembler bl[\\. ]+log2f4 PASS: gcc.target/powerpc/vsx-mass-1.c scan-assembler bl[\\. ]+logd2 FAIL: gcc.target/powerpc/vsx-mass-1.c scan-assembler bl[\\. ]+logf4 PASS: gcc.target/powerpc/vsx-mass-1.c scan-assembler bl[\\. ]+sind2 FAIL: gcc.target/powerpc/vsx-mass-1.c scan-assembler bl[\\. ]+sinf4 PASS: gcc.target/powerpc/vsx-mass-1.c scan-assembler bl[\\. ]+sinhd2 FAIL: gcc.target/powerpc/vsx-mass-1.c scan-assembler bl[\\. ]+sinhf4 PASS: gcc.target/powerpc/vsx-mass-1.c scan-assembler bl[\\. ]+tand2 FAIL: gcc.target/powerpc/vsx-mass-1.c scan-assembler bl[\\. ]+tanf4 PASS: gcc.target/powerpc/vsx-mass-1.c scan-assembler bl[\\. ]+tanhd2 FAIL: gcc.target/powerpc/vsx-mass-1.c scan-assembler bl[\\. ]+tanhf4 Here's how my compiler is configured: Using built-in specs. COLLECT_GCC=install/bin/powerpc-none-eabi-gcc COLLECT_LTO_WRAPPER=/scratch/janisjo/build6/fsf-powerpc-eabi/install/bin/../libexec/gcc/powerpc-none-eabi/4.8.0/lto-wrapper Target: powerpc-none-eabi Configured with: /scratch/janisjo/build6/fsf-powerpc-eabi/src/gcc-mainline/configure --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=powerpc-none-eabi --enable-threads --disable-libmudflap --disable-libssp --disable-libstdcxx-pch --with-gnu-as --with-gnu-ld --enable-languages=c,c++ --disable-shared --enable-lto --with-newlib --disable-nls --prefix=/opt/codesourcery --with-headers=yes --with-sysroot=/opt/codesourcery/powerpc-none-eabi --with-build-sysroot=/scratch/janisjo/build6/fsf-powerpc-eabi/install/powerpc-none-eabi --with-gmp=$HOSTLIBS/usr --with-mpfr=$HOSTLIBS/usr --with-mpc=$HOSTLIBS/usr --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' --with-isl=$HOSTLIBS/usr --with-cloog=$HOSTLIBS/usr --with-libelf=$HOSTLIBS/usr --disable-libgomp --disable-libitm --enable-poison-system-directories --with-build-time-tools=/scratch/janisjo/build6/fsf-powerpc-eabi/install/powerpc-none-eabi/bin --with-build-time-tools=/scratch/janisjo/build6/fsf-powerpc-eabi/install/powerpc-none-eabi/bin Thread model: single gcc version 4.8.0 20130119 (experimental) [trunk revision 195309] (GCC) As far as I can tell the test has failed for this configuration since it was added.