From: Joseph Myers Date: Sun, 10 Oct 2004 01:10:53 +0000 (+0100) Subject: re PR c/17301 (ICE on wrong usage of __builtin_stdarg_start) X-Git-Tag: releases/gcc-4.0.0~4161 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c69c9b36a97fddbde2112a5f8d50a4aabe13a19a;p=thirdparty%2Fgcc.git re PR c/17301 (ICE on wrong usage of __builtin_stdarg_start) 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2437467375f1..f7cfba9ef21d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2004-10-10 Joseph S. Myers + + PR c/17301 + * builtins.c (expand_builtin_va_start): Check for too few + arguments to va_start. + 2004-10-10 Joseph S. Myers PR c/17189 diff --git a/gcc/builtins.c b/gcc/builtins.c index 255a47ba19ca..b097adf70b8b 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 %"); + return const0_rtx; + } if (TREE_CHAIN (chain)) error ("too many arguments to function %"); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index dd56e1b3e62b..b983c01ffd5f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2004-10-10 Joseph S. Myers + + PR c/17301 + * gcc.dg/pr17301-1.c: New test. + 2004-10-10 Joseph S. Myers 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 index 000000000000..353f429910fe --- /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'" } */ +}