aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
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);