aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2014-09-22 12:49:16 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2014-09-22 12:49:16 +0000
commit931002b26597b93aff99d78043b1e838a59861ce (patch)
treeacdd7e883c4ced4c323d5ab78864125f759c3e79
parent1a849e50d72a16045c089dae9773abb972faed12 (diff)
downloadgcc-931002b26597b93aff99d78043b1e838a59861ce.zip
gcc-931002b26597b93aff99d78043b1e838a59861ce.tar.gz
gcc-931002b26597b93aff99d78043b1e838a59861ce.tar.bz2
gimplify.c (gimplify_init_constructor): Do not leave non-GIMPLE vector constructors around.
2014-09-22 Richard Biener <rguenther@suse.de> * gimplify.c (gimplify_init_constructor): Do not leave non-GIMPLE vector constructors around. * tree-cfg.c (verify_gimple_assign_single): Verify that CONSTRUCTORs have gimple elements. From-SVN: r215461
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/gimplify.c6
-rw-r--r--gcc/tree-cfg.c12
3 files changed, 19 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 02101ee..ac79f4f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2014-09-22 Richard Biener <rguenther@suse.de>
+
+ * gimplify.c (gimplify_init_constructor): Do not leave
+ non-GIMPLE vector constructors around.
+ * tree-cfg.c (verify_gimple_assign_single): Verify that
+ CONSTRUCTORs have gimple elements.
+
2014-09-22 Jakub Jelinek <jakub@redhat.com>
PR debug/63328
diff --git a/gcc/gimplify.c b/gcc/gimplify.c
index 0ebc24c..5933dd2 100644
--- a/gcc/gimplify.c
+++ b/gcc/gimplify.c
@@ -4021,12 +4021,6 @@ gimplify_init_constructor (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p,
break;
}
- /* Don't reduce an initializer constant even if we can't
- make a VECTOR_CST. It won't do anything for us, and it'll
- prevent us from representing it as a single constant. */
- if (initializer_constant_valid_p (ctor, type))
- break;
-
TREE_CONSTANT (ctor) = 0;
}
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c
index e89d76a..e88842a 100644
--- a/gcc/tree-cfg.c
+++ b/gcc/tree-cfg.c
@@ -4207,8 +4207,20 @@ verify_gimple_assign_single (gimple stmt)
debug_generic_stmt (rhs1);
return true;
}
+ if (!is_gimple_val (elt_v))
+ {
+ error ("vector CONSTRUCTOR element is not a GIMPLE value");
+ debug_generic_stmt (rhs1);
+ return true;
+ }
}
}
+ else if (CONSTRUCTOR_NELTS (rhs1) != 0)
+ {
+ error ("non-vector CONSTRUCTOR with elements");
+ debug_generic_stmt (rhs1);
+ return true;
+ }
return res;
case OBJ_TYPE_REF:
case ASSERT_EXPR: