aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2018-06-15 11:08:30 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2018-06-15 11:08:30 +0000
commitfa6852317327d978d4069175952109505204f6ae (patch)
tree6c97bc6f77ae853b122847e76206cd80db421f8e /gcc
parent5b32ec103973c3b8f537c6e50fc8d954f27286de (diff)
downloadgcc-fa6852317327d978d4069175952109505204f6ae.zip
gcc-fa6852317327d978d4069175952109505204f6ae.tar.gz
gcc-fa6852317327d978d4069175952109505204f6ae.tar.bz2
re PR tree-optimization/86159 (g++ ICE at -O1 and above on valid code: incorrect type of vector CONSTRUCTOR elements)
2018-06-15 Richard Biener <rguenther@suse.de> PR middle-end/86159 * tree-cfg.c (gimplify_build3): Do not strip sign conversions, leave useless conversion stripping to force_gimple_operand_gsi. (gimplify_build2): Likewise. (gimplify_build1): Likewise. * g++.dg/pr86159.C: New testcase. From-SVN: r261622
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/pr86159.C10
-rw-r--r--gcc/tree-cfg.c6
4 files changed, 23 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8f95eb5..361c6e3 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,13 @@
2018-06-15 Richard Biener <rguenther@suse.de>
+ PR middle-end/86159
+ * tree-cfg.c (gimplify_build3): Do not strip sign conversions,
+ leave useless conversion stripping to force_gimple_operand_gsi.
+ (gimplify_build2): Likewise.
+ (gimplify_build1): Likewise.
+
+2018-06-15 Richard Biener <rguenther@suse.de>
+
PR middle-end/86076
* tree-cfg.c (move_stmt_op): unshare invariant addresses
before adjusting their block.
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 04278c6..262bb2d 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,10 @@
2018-06-15 Richard Biener <rguenther@suse.de>
+ PR middle-end/86159
+ * g++.dg/pr86159.C: New testcase.
+
+2018-06-15 Richard Biener <rguenther@suse.de>
+
PR middle-end/86076
* gcc.dg/pr86076.c: New testcase.
diff --git a/gcc/testsuite/g++.dg/pr86159.C b/gcc/testsuite/g++.dg/pr86159.C
new file mode 100644
index 0000000..83168f5
--- /dev/null
+++ b/gcc/testsuite/g++.dg/pr86159.C
@@ -0,0 +1,10 @@
+// { dg-do compile }
+// { dg-options "-O -w -Wno-psabi" }
+
+typedef int vec __attribute__((vector_size(32)));
+vec fn1()
+{
+ vec x, zero{};
+ vec one = zero + 1;
+ return x < zero ? one : zero;
+}
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c
index 78d80b0..85e845f 100644
--- a/gcc/tree-cfg.c
+++ b/gcc/tree-cfg.c
@@ -8976,8 +8976,6 @@ gimplify_build3 (gimple_stmt_iterator *gsi, enum tree_code code,
location_t loc = gimple_location (gsi_stmt (*gsi));
ret = fold_build3_loc (loc, code, type, a, b, c);
- STRIP_NOPS (ret);
-
return force_gimple_operand_gsi (gsi, ret, true, NULL, true,
GSI_SAME_STMT);
}
@@ -8992,8 +8990,6 @@ gimplify_build2 (gimple_stmt_iterator *gsi, enum tree_code code,
tree ret;
ret = fold_build2_loc (gimple_location (gsi_stmt (*gsi)), code, type, a, b);
- STRIP_NOPS (ret);
-
return force_gimple_operand_gsi (gsi, ret, true, NULL, true,
GSI_SAME_STMT);
}
@@ -9008,8 +9004,6 @@ gimplify_build1 (gimple_stmt_iterator *gsi, enum tree_code code, tree type,
tree ret;
ret = fold_build1_loc (gimple_location (gsi_stmt (*gsi)), code, type, a);
- STRIP_NOPS (ret);
-
return force_gimple_operand_gsi (gsi, ret, true, NULL, true,
GSI_SAME_STMT);
}