https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82140
Bug ID: 82140 Summary: "internal compiler error: Illegal instruction" on function exp Product: gcc Version: 4.8.3 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: rocky.wu at emc dot com Target Milestone: --- $ cat b.c #include <stdlib.h> #include <stdio.h> #include <math.h> int main() { double a=4 * exp(-0.5); printf("a=%f\n",a); exit(0); } $ /auto/home/lsbuild/desktop-573285/usr/bin/gcc -Wall -Wextra -fno-strict-aliasing -fwrapv b.c -o a.out -lm b.c: In function ‘main’: b.c:7:3: internal compiler error: Illegal instruction double a=4 * exp(-0.5); ^ 0x7d5d0f crash_signal ../../gcc-4.8.3-20140911/gcc/toplev.c:335 0x2b6b80b0163f ??? /rpmbuild/BUILD/glibc-2.17-c758a686/signal/../sysdeps/unix/sysv/linux/x86_64/sigaction.c:0 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. The bug is not reproducible, so it is likely a hardware or OS problem. $ /auto/home/lsbuild/desktop-573285/usr/bin/gcc -v Using built-in specs. COLLECT_GCC=/auto/home/lsbuild/desktop-573285/usr/bin/gcc COLLECT_LTO_WRAPPER=/auto/toolset_nfs/toolchain/desktop-573285/usr/bin/../libexec/gcc/x86_64-unknown-linux-gnu/4.8.3/lto-wrapper Target: x86_64-unknown-linux-gnu Configured with: ../gcc-4.8.3-20140911/configure --prefix=/auto/home/lsbuild/desktop-573285/usr --libdir=/auto/home/lsbuild/desktop-573285/usr/lib64 --libexecdir=/auto/home/lsbuild/desktop-573285/usr/libexec --with-build-time-tools=/auto/home/lsbuild/desktop-573285/usr/bin --with-as=/auto/home/lsbuild/desktop-573285/usr/bin/as --with-ld=/auto/home/lsbuild/desktop-573285/usr/bin/ld --with-libelf-include=/auto/home/lsbuild/desktop-573285/usr/include --with-libelf-lib=/auto/home/lsbuild/desktop-573285/usr/lib64 --with-native-system-header-dir=/auto/home/lsbuild/desktop-573285/usr/include --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-c99 --enable-long-long --enable-clocale=gnu --enable-languages=c,c++ --enable-multilib --disable-libgcj --disable-libquadmath --disable-libunwind-exceptions --with-system-zlib --with-gmp-lib=/auto/home/lsbuild/desktop-573285/usr/lib64 --with-gmp-include=/auto/home/lsbuild/desktop-573285/usr/include --with-mpfr-lib=/auto/home/lsbuild/desktop-573285/usr/lib64 --with-mpfr-include=/auto/home/lsbuild/desktop-573285/usr/include --with-mpc-lib=/auto/home/lsbuild/desktop-573285/usr/lib64 --with-mpc-include=/auto/home/lsbuild/desktop-573285/usr/include Thread model: posix gcc version 4.8.3 20140911 (Red Hat 4.8.3-9) (GCC) seems only exp function cause this problem, the gcc behavior is normal if no exp() called. $ cat c.c #include <stdlib.h> #include <stdio.h> #include <math.h> int main() { double a=4 * sqrt(2.0); printf("a=%f\n",a); exit(0); } $ /auto/home/lsbuild/desktop-573285/usr/bin/gcc -Wall -Wextra -fno-strict-aliasing -fwrapv c.c -o a.out -lm $ ./a.out a=5.656854