aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/builtins.c5
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/pr17301-1.c11
4 files changed, 27 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2437467..f7cfba9 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,11 @@
2004-10-10 Joseph S. Myers <jsm@polyomino.org.uk>
+ PR c/17301
+ * builtins.c (expand_builtin_va_start): Check for too few
+ arguments to va_start.
+
+2004-10-10 Joseph S. Myers <jsm@polyomino.org.uk>
+
PR c/17189
* c-decl.c (grokfield): Make diagnostic for bad cases of unnamed
fields a pedwarn. Pedwarn here for unnamed structs/unions if
diff --git a/gcc/builtins.c b/gcc/builtins.c
index 255a47b..b097adf 100644
--- a/gcc/builtins.c
+++ b/gcc/builtins.c
@@ -3861,6 +3861,11 @@ expand_builtin_va_start (tree arglist)
chain = TREE_CHAIN (arglist);
+ if (!chain)
+ {
+ error ("too few arguments to function %<va_start%>");
+ return const0_rtx;
+ }
if (TREE_CHAIN (chain))
error ("too many arguments to function %<va_start%>");
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index dd56e1b..b983c01 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,10 @@
2004-10-10 Joseph S. Myers <jsm@polyomino.org.uk>
+ PR c/17301
+ * gcc.dg/pr17301-1.c: New test.
+
+2004-10-10 Joseph S. Myers <jsm@polyomino.org.uk>
+
PR c/17189
* gcc.dg/anon-struct-5.c: New test.
diff --git a/gcc/testsuite/gcc.dg/pr17301-1.c b/gcc/testsuite/gcc.dg/pr17301-1.c
new file mode 100644
index 0000000..353f429
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr17301-1.c
@@ -0,0 +1,11 @@
+/* Invalid use of __builtin_stdarg_start should not cause an ICE. Bug
+ 17301. */
+/* { dg-do compile } */
+/* { dg-options "" } */
+
+int
+write_format (char *format, ...)
+{
+ __builtin_va_list p;
+ __builtin_stdarg_start (p); /* { dg-error "error: too few arguments to function 'va_start'" } */
+}