diff options
Diffstat (limited to 'meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0006-Backport-from-mainline.patch')
-rw-r--r-- | meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0006-Backport-from-mainline.patch | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0006-Backport-from-mainline.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0006-Backport-from-mainline.patch new file mode 100644 index 000000000..1b5e86f24 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0006-Backport-from-mainline.patch @@ -0,0 +1,58 @@ +From b6ed53c51ca6090f3f422e6223e8dc3b150f0393 Mon Sep 17 00:00:00 2001 +From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Sat, 26 Mar 2011 09:24:06 +0000 +Subject: [PATCH 006/200] Backport from mainline + 2011-03-24 Jakub Jelinek <jakub@redhat.com> + + PR debug/48204 + * simplify-rtx.c (simplify_const_unary_operation): Call + real_convert when changing mode class with FLOAT_EXTEND. + + * gcc.dg/dfp/pr48204.c: New test. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171549 138bc75d-0d04-0410-961f-82ee72b054a4 + +index ce4eab4..ed6ae2b 100644 +--- a/gcc/simplify-rtx.c ++++ b/gcc/simplify-rtx.c +@@ -1526,7 +1526,8 @@ simplify_const_unary_operation (enum rtx_code code, enum machine_mode mode, + } + + else if (GET_CODE (op) == CONST_DOUBLE +- && SCALAR_FLOAT_MODE_P (mode)) ++ && SCALAR_FLOAT_MODE_P (mode) ++ && SCALAR_FLOAT_MODE_P (GET_MODE (op))) + { + REAL_VALUE_TYPE d, t; + REAL_VALUE_FROM_CONST_DOUBLE (d, op); +@@ -1549,7 +1550,10 @@ simplify_const_unary_operation (enum rtx_code code, enum machine_mode mode, + d = real_value_truncate (mode, d); + break; + case FLOAT_EXTEND: +- /* All this does is change the mode. */ ++ /* All this does is change the mode, unless changing ++ mode class. */ ++ if (GET_MODE_CLASS (mode) != GET_MODE_CLASS (GET_MODE (op))) ++ real_convert (&d, mode, &d); + break; + case FIX: + real_arithmetic (&d, FIX_TRUNC_EXPR, &d, NULL); +new file mode 100644 +index 0000000..7b42158 +--- /dev/null ++++ b/gcc/testsuite/gcc.dg/dfp/pr48204.c +@@ -0,0 +1,10 @@ ++/* PR debug/48204 */ ++/* { dg-do compile } */ ++/* { dg-options "-O -fno-tree-ccp -fno-tree-dominator-opts -fno-tree-fre -g" } */ ++ ++void ++foo (void) ++{ ++ float cf = 3.0f; ++ _Decimal64 d64 = cf; ++} +-- +1.7.0.4 + |