]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR c/17301 (ICE on wrong usage of __builtin_stdarg_start)
authorJoseph Myers <jsm@polyomino.org.uk>
Sun, 10 Oct 2004 01:10:53 +0000 (02:10 +0100)
committerJoseph Myers <jsm28@gcc.gnu.org>
Sun, 10 Oct 2004 01:10:53 +0000 (02:10 +0100)
PR c/17301
* builtins.c (expand_builtin_va_start): Check for too few
arguments to va_start.

testsuite:
* gcc.dg/pr17301-1.c: New test.

From-SVN: r88835

gcc/ChangeLog
gcc/builtins.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pr17301-1.c [new file with mode: 0644]

index 2437467375f171438a05e6ffcaff047ad36d0b68..f7cfba9ef21df51026b4b05c30cd5be45c69fdbb 100644 (file)
@@ -1,3 +1,9 @@
+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
index 255a47ba19ca63d163d15824ef6e4af80540d989..b097adf70b8b23570bcbf3d79bafae8d1ee0e241 100644 (file)
@@ -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%>");
 
index dd56e1b3e62bc40a806cd732725079e457292666..b983c01ffd5f16f1234d9d835a4ada10da8d79fb 100644 (file)
@@ -1,3 +1,8 @@
+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
diff --git a/gcc/testsuite/gcc.dg/pr17301-1.c b/gcc/testsuite/gcc.dg/pr17301-1.c
new file mode 100644 (file)
index 0000000..353f429
--- /dev/null
@@ -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'" } */
+}