aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2012-10-15 11:22:49 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2012-10-15 11:22:49 +0000
commitf843144b28ada08524d795e248cab60d56a0a25d (patch)
tree9f19ba7e7620c67cc6660c8dc0dfc0e3ce3d28fb /gcc
parent7bd8fc3ba11b48adf06abcc87d74d56104cba1ed (diff)
downloadgcc-f843144b28ada08524d795e248cab60d56a0a25d.zip
gcc-f843144b28ada08524d795e248cab60d56a0a25d.tar.gz
gcc-f843144b28ada08524d795e248cab60d56a0a25d.tar.bz2
re PR tree-optimization/54920 (segfault in tree-ssa-pre.c during Firefox build)
2012-10-15 Richard Guenther <rguenther@suse.de> PR tree-optimization/54920 * tree-ssa-pre.c (create_expression_by_pieces): Properly allocate temporary storage for all NARY elements. * gcc.dg/torture/pr54920.c: New testcase. From-SVN: r192454
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr54920.c13
-rw-r--r--gcc/tree-ssa-pre.c2
4 files changed, 25 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 790c69e..7447694 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2012-10-15 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/54920
+ * tree-ssa-pre.c (create_expression_by_pieces): Properly
+ allocate temporary storage for all NARY elements.
+
2012-10-15 Joern Rennecke <joern.rennecke@embecosm.com>
* web.c (union_match_dups): Properly handle OP_INOUT match_dups.
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 23f8c2e..07a052d 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2012-10-15 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/54920
+ * gcc.dg/torture/pr54920.c: New testcase.
+
2012-10-15 Eric Botcazou <ebotcazou@adacore.com>
* gnat.dg/unchecked_convert9.ad[sb]: New test.
diff --git a/gcc/testsuite/gcc.dg/torture/pr54920.c b/gcc/testsuite/gcc.dg/torture/pr54920.c
new file mode 100644
index 0000000..d1622f7
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr54920.c
@@ -0,0 +1,13 @@
+/* { dg-do compile } */
+
+typedef short __v8hi __attribute__ ((__vector_size__ (16)));
+typedef long long __m128i __attribute__ ((__vector_size__ (16)));
+int a;
+__m128i b;
+
+void
+fn1 ()
+{
+ while (1)
+ b = (__m128i) (__v8hi) { a, 0, 0, 0, 0, 0 };
+}
diff --git a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c
index fe9186c..548c110 100644
--- a/gcc/tree-ssa-pre.c
+++ b/gcc/tree-ssa-pre.c
@@ -2853,7 +2853,7 @@ create_expression_by_pieces (basic_block block, pre_expr expr,
case NARY:
{
vn_nary_op_t nary = PRE_EXPR_NARY (expr);
- tree genop[4];
+ tree *genop = XALLOCAVEC (tree, nary->length);
unsigned i;
for (i = 0; i < nary->length; ++i)
{