aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorWilliam Schmidt <wschmidt@gcc.gnu.org>2017-03-23 13:13:44 +0000
committerWilliam Schmidt <wschmidt@gcc.gnu.org>2017-03-23 13:13:44 +0000
commit2e6315ef8c8a0f607fe86c7b7cf7d89549caa1e9 (patch)
tree45ce6980dee49758352b663866ffdb54957f7720 /gcc
parent16e9eaa62786ece30c36748a29a0d9d0ca62f345 (diff)
downloadgcc-2e6315ef8c8a0f607fe86c7b7cf7d89549caa1e9.zip
gcc-2e6315ef8c8a0f607fe86c7b7cf7d89549caa1e9.tar.gz
gcc-2e6315ef8c8a0f607fe86c7b7cf7d89549caa1e9.tar.bz2
re PR tree-optimization/79908 (ICE in gimplify_expr (gimplify.c:12155) gimplification failed)
[gcc] 2017-03-23 Bill Schmidt <wschmidt@linux.vnet.ibm.com> Richard Biener <rguenth@suse.com> PR tree-optimization/79908 PR tree-optimization/80136 * tree-stdarg.c (expand_ifn_va_arg_1): For a VA_ARG whose LHS has been cast away, gimplify_and_add suffices. [gcc/testsuite] 2017-03-23 Bill Schmidt <wschmidt@linux.vnet.ibm.com> Richard Biener <rguenther@suse.de> PR tree-optimization/79908 PR tree-optimization/80136 * gcc.dg/torture/pr79908.c: New file. From-SVN: r246418
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/testsuite/ChangeLog9
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr79908.c12
-rw-r--r--gcc/tree-stdarg.c2
4 files changed, 29 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 7135acc..091d78a 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2017-03-23 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
+ Richard Biener <rguenth@suse.com>
+
+ PR tree-optimization/79908
+ PR tree-optimization/80136
+ * tree-stdarg.c (expand_ifn_va_arg_1): For a VA_ARG whose LHS has
+ been cast away, gimplify_and_add suffices.
+
2017-03-23 Markus Trippelsdorf <markus@trippelsdorf.de>
* tree-vrp.c (identify_jump_threads): Delete avail_exprs.
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 555671f..257c5ce 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,6 +1,13 @@
+2017-03-23 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
+ Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/79908
+ PR tree-optimization/80136
+ * gcc.dg/torture/pr79908.c: New file.
+
2017-03-22 Nicolas Koenig <koenigni@student.ethz.ch>
- PR fortran/39239
+ PR fortran/39239
* gfortran.dg/equiv_constraint_bind_c.f90: New test.
2017-03-22 Jakub Jelinek <jakub@redhat.com>
diff --git a/gcc/testsuite/gcc.dg/torture/pr79908.c b/gcc/testsuite/gcc.dg/torture/pr79908.c
index e69de29..e2d6920 100644
--- a/gcc/testsuite/gcc.dg/torture/pr79908.c
+++ b/gcc/testsuite/gcc.dg/torture/pr79908.c
@@ -0,0 +1,12 @@
+/* { dg-do compile } */
+
+/* Used to fail in the stdarg pass before fix for PR79908. */
+
+typedef __builtin_va_list __gnuc_va_list;
+typedef __gnuc_va_list va_list;
+
+void testva (int n, ...)
+{
+ va_list ap;
+ _Complex int i = __builtin_va_arg (ap, _Complex int);
+}
diff --git a/gcc/tree-stdarg.c b/gcc/tree-stdarg.c
index 8972822..923b315 100644
--- a/gcc/tree-stdarg.c
+++ b/gcc/tree-stdarg.c
@@ -1058,7 +1058,7 @@ expand_ifn_va_arg_1 (function *fun)
gimplify_assign (lhs, expr, &pre);
}
else
- gimplify_expr (&expr, &pre, &post, is_gimple_lvalue, fb_lvalue);
+ gimplify_and_add (expr, &pre);
input_location = saved_location;
pop_gimplify_context (NULL);