diff options
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/builtins.c | 5 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr17301-1.c | 11 |
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'" } */ +} |