--- old/make/autoconf/flags-cflags.m4 2019-01-21 18:47:44.201356021 +0100 +++ new/make/autoconf/flags-cflags.m4 2019-01-21 18:47:43.985356588 +0100 @@ -106,11 +106,17 @@ AC_DEFUN([FLAGS_SETUP_DEBUG_SYMBOLS], [ + # By default don't set any specific assembler debug + # info flags for toolchains unless we know they work. + # See JDK-8207057. + ASFLAGS_DEBUG_SYMBOLS="" # Debug symbols if test "x$TOOLCHAIN_TYPE" = xgcc; then CFLAGS_DEBUG_SYMBOLS="-g" + ASFLAGS_DEBUG_SYMBOLS="-g" elif test "x$TOOLCHAIN_TYPE" = xclang; then CFLAGS_DEBUG_SYMBOLS="-g" + ASFLAGS_DEBUG_SYMBOLS="-g" elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then # -g0 enables debug symbols without disabling inlining. CFLAGS_DEBUG_SYMBOLS="-g0 -xs" @@ -121,6 +127,7 @@ fi AC_SUBST(CFLAGS_DEBUG_SYMBOLS) + AC_SUBST(ASFLAGS_DEBUG_SYMBOLS) ]) AC_DEFUN([FLAGS_SETUP_WARNINGS], @@ -366,6 +373,20 @@ FLAGS_SETUP_CFLAGS_CPU_DEP([BUILD], [OPENJDK_BUILD_]) + COMPILER_FP_CONTRACT_OFF_FLAG="-ffp-contract=off" + # Check that the compiler supports -ffp-contract=off flag + # Set FDLIBM_CFLAGS to -ffp-contract=off if it does. Empty + # otherwise. + # These flags are required for GCC-based builds of + # fdlibm with optimization without losing precision. + # Notably, -ffp-contract=off needs to be added for GCC >= 4.6. + if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang; then + FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [${COMPILER_FP_CONTRACT_OFF_FLAG}], + IF_TRUE: [FDLIBM_CFLAGS=${COMPILER_FP_CONTRACT_OFF_FLAG}], + IF_FALSE: [FDLIBM_CFLAGS=""]) + fi + AC_SUBST(FDLIBM_CFLAGS) + # Tests are only ever compiled for TARGET CFLAGS_TESTLIB="$CFLAGS_JDKLIB" CXXFLAGS_TESTLIB="$CXXFLAGS_JDKLIB"