From: Jakub Jelinek Date: Fri, 22 Jun 2018 20:37:40 +0000 (+0200) Subject: backport: re PR target/84827 (ICE in extract_insn, at recog.c:2311) X-Git-Tag: releases/gcc-7.4.0~368 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5d34c11fe040ed413d3a193591730a8be17ae16a;p=thirdparty%2Fgcc.git backport: re PR target/84827 (ICE in extract_insn, at recog.c:2311) Backported from mainline 2018-03-13 Jakub Jelinek PR target/84827 * config/i386/i386.md (round2): For 387 fancy math, disable pattern if -ftrapping-math -fno-fp-int-builtin-inexact. * gcc.target/i386/pr84827.c: New test. From-SVN: r261920 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 105317b17b6e..f8789d266831 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -3,6 +3,10 @@ Backported from mainline 2018-03-13 Jakub Jelinek + PR target/84827 + * config/i386/i386.md (round2): For 387 fancy math, disable + pattern if -ftrapping-math -fno-fp-int-builtin-inexact. + PR target/84786 * config/i386/sse.md (sse2_loadhpd): Use Yv constraint rather than v on the last operand. diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index ed09ee0bdc29..191f3f1b2024 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -15536,7 +15536,8 @@ "(TARGET_USE_FANCY_MATH_387 && (!(SSE_FLOAT_MODE_P (mode) && TARGET_SSE_MATH) || TARGET_MIX_SSE_I387) - && flag_unsafe_math_optimizations) + && flag_unsafe_math_optimizations + && (flag_fp_int_builtin_inexact || !flag_trapping_math)) || (SSE_FLOAT_MODE_P (mode) && TARGET_SSE_MATH && !flag_trapping_math && !flag_rounding_math)" { diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 5dbc86894dc3..b4e4fec70fb4 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -3,6 +3,9 @@ Backported from mainline 2018-03-13 Jakub Jelinek + PR target/84827 + * gcc.target/i386/pr84827.c: New test. + PR target/84786 * gcc.target/i386/avx512f-pr84786-1.c: New test. * gcc.target/i386/avx512f-pr84786-2.c: New test. diff --git a/gcc/testsuite/gcc.target/i386/pr84827.c b/gcc/testsuite/gcc.target/i386/pr84827.c new file mode 100644 index 000000000000..003258c82045 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr84827.c @@ -0,0 +1,21 @@ +/* PR target/84827 */ +/* { dg-do compile } */ +/* { dg-options "-Ofast -fno-fp-int-builtin-inexact -ftrapping-math -fno-associative-math -mfpmath=387" } */ + +double +f1 (double a) +{ + return __builtin_round (a); +} + +float +f2 (float a) +{ + return __builtin_roundf (a); +} + +long double +f3 (long double a) +{ + return __builtin_roundl (a); +}