aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2011-10-18 17:33:12 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2011-10-18 17:33:12 +0200
commit5dac1dae252d793ea9f112f1e1a7b9415c184cc8 (patch)
tree05f6b704bb1887ad24ae7f4de048853336da2ec3 /gcc
parent1b688c0e01dfc54f3e5a77c2e76892ebb4dae43b (diff)
downloadgcc-5dac1dae252d793ea9f112f1e1a7b9415c184cc8.zip
gcc-5dac1dae252d793ea9f112f1e1a7b9415c184cc8.tar.gz
gcc-5dac1dae252d793ea9f112f1e1a7b9415c184cc8.tar.bz2
re PR tree-optimization/50735 (gcc.dg/torture/vector-2.c:52:1: ICE: verify_ssa failed at -O1 and above)
PR tree-optimization/50735 * function.c (gimplify_parameters): Use create_tmp_var instead of create_tmp_reg. If parm is not TREE_ADDRESSABLE and type is complex or vector type, set DECL_GIMPLE_REG_P. From-SVN: r180154
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/function.c5
2 files changed, 11 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index adb9066..337c6a4 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2011-10-18 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/50735
+ * function.c (gimplify_parameters): Use create_tmp_var instead of
+ create_tmp_reg. If parm is not TREE_ADDRESSABLE and type is complex
+ or vector type, set DECL_GIMPLE_REG_P.
+
2011-10-18 Andrew Stubbs <ams@codesourcery.com>
* config.host (arm*-*-linux*): Add driver-arm.o and x-arm.
diff --git a/gcc/function.c b/gcc/function.c
index c3702fb..dc1684a 100644
--- a/gcc/function.c
+++ b/gcc/function.c
@@ -3617,7 +3617,7 @@ gimplify_parameters (void)
&& compare_tree_int (DECL_SIZE_UNIT (parm),
STACK_CHECK_MAX_VAR_SIZE) > 0))
{
- local = create_tmp_reg (type, get_name (parm));
+ local = create_tmp_var (type, get_name (parm));
DECL_IGNORED_P (local) = 0;
/* If PARM was addressable, move that flag over
to the local copy, as its address will be taken,
@@ -3625,6 +3625,9 @@ gimplify_parameters (void)
as we'll query that flag during gimplification. */
if (TREE_ADDRESSABLE (parm))
TREE_ADDRESSABLE (local) = 1;
+ else if (TREE_CODE (type) == COMPLEX_TYPE
+ || TREE_CODE (type) == VECTOR_TYPE)
+ DECL_GIMPLE_REG_P (local) = 1;
}
else
{