aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2013-03-04 11:08:01 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2013-03-04 11:08:01 +0100
commit30862efc6b9677d313787fa1a8e8e7f6f3bd0c75 (patch)
tree82892f8ef480f69cc864f032228e80a5edc1887a /gcc
parent8930f7239bc47706ec49ccb5d285c31ae451f97c (diff)
downloadgcc-30862efc6b9677d313787fa1a8e8e7f6f3bd0c75.zip
gcc-30862efc6b9677d313787fa1a8e8e7f6f3bd0c75.tar.gz
gcc-30862efc6b9677d313787fa1a8e8e7f6f3bd0c75.tar.bz2
re PR middle-end/56461 (GCC is leaking lots of memory)
PR middle-end/56461 * tree-vect-stmts.c (vectorizable_conversion): Don't call vec_oprnds0.create (1) for modifier == NONE. From-SVN: r196426
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/tree-vect-stmts.c6
2 files changed, 6 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 7e75aba..10ecd95 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,6 +1,10 @@
2013-03-04 Jakub Jelinek <jakub@redhat.com>
PR middle-end/56461
+ * tree-vect-stmts.c (vectorizable_conversion): Don't call
+ vec_oprnds0.create (1) for modifier == NONE.
+
+ PR middle-end/56461
* tree-vect-stmts.c (vectorizable_shift): Don't call create methods
on vec_oprnds0 or vec_oprnds1 before loop, only call it on
vec_oprnds1 right before pushing anything to it for
diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c
index 927aa3d..e5604fa 100644
--- a/gcc/tree-vect-stmts.c
+++ b/gcc/tree-vect-stmts.c
@@ -2616,15 +2616,13 @@ vectorizable_conversion (gimple stmt, gimple_stmt_iterator *gsi,
if (!slp_node)
{
- if (modifier == NONE)
- vec_oprnds0.create (1);
- else if (modifier == WIDEN)
+ if (modifier == WIDEN)
{
vec_oprnds0.create (multi_step_cvt ? vect_pow2(multi_step_cvt) : 1);
if (op_type == binary_op)
vec_oprnds1.create (1);
}
- else
+ else if (modifier == NARROW)
vec_oprnds0.create (
2 * (multi_step_cvt ? vect_pow2 (multi_step_cvt) : 1));
}