aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2010-08-31 18:13:14 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2010-08-31 18:13:14 +0200
commit0f643366ab9164e19a2efce88f141b04c0002f48 (patch)
tree679c907b020350973259817d11d2a8a42532420a /gcc
parent0835010695397044457e3b3db174c0b33c546a94 (diff)
downloadgcc-0f643366ab9164e19a2efce88f141b04c0002f48.zip
gcc-0f643366ab9164e19a2efce88f141b04c0002f48.tar.gz
gcc-0f643366ab9164e19a2efce88f141b04c0002f48.tar.bz2
re PR middle-end/45461 (ICE: verify_gimple failed: INDIRECT_REF in gimple IL with -fshort-enums and va_arg)
PR middle-end/45461 * builtins.c (dummy_object): Return a MEM_REF instead of INDIRECT_REF. * gcc.dg/pr45461.c: New test. From-SVN: r163678
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/builtins.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/pr45461.c18
4 files changed, 29 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 388de77..a7d6b1c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2010-08-31 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/45461
+ * builtins.c (dummy_object): Return a MEM_REF instead of INDIRECT_REF.
+
2010-08-31 Nathan Froyd <froydnj@codesourcery.com>
* config/fr30/fr30.c (fr30_move_double): Delete `dregno' and extra
diff --git a/gcc/builtins.c b/gcc/builtins.c
index ff1141f..4b540d8 100644
--- a/gcc/builtins.c
+++ b/gcc/builtins.c
@@ -4741,7 +4741,7 @@ static tree
dummy_object (tree type)
{
tree t = build_int_cst (build_pointer_type (type), 0);
- return build1 (INDIRECT_REF, type, t);
+ return build2 (MEM_REF, type, t, t);
}
/* Gimplify __builtin_va_arg, aka VA_ARG_EXPR, which is not really a
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 286eb57..9f39d48 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2010-08-31 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/45461
+ * gcc.dg/pr45461.c: New test.
+
2010-08-31 Richard Guenther <rguenther@suse.de>
PR testsuite/45455
diff --git a/gcc/testsuite/gcc.dg/pr45461.c b/gcc/testsuite/gcc.dg/pr45461.c
new file mode 100644
index 0000000..7968f733
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr45461.c
@@ -0,0 +1,18 @@
+/* PR middle-end/45461 */
+/* { dg-do compile } */
+
+#include <stdarg.h>
+
+int
+foo (int i, ...)
+{
+ short e;
+ va_list ap;
+ va_start (ap, i);
+ e = va_arg (ap, short); /* { dg-warning "is promoted" } */
+ va_end (ap);
+ return e;
+}
+
+/* { dg-message "note: \\(so you should pass" "" {target *-*-* } 12 } */
+/* { dg-message "note: if this code" "" {target *-*-* } 12 } */