From c69c9b36a97fddbde2112a5f8d50a4aabe13a19a Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Sun, 10 Oct 2004 02:10:53 +0100 Subject: [PATCH] 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 --- gcc/ChangeLog | 6 ++++++ gcc/builtins.c | 5 +++++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/pr17301-1.c | 11 +++++++++++ 4 files changed, 27 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/pr17301-1.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2437467375f..f7cfba9ef21 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 255a47ba19c..b097adf70b8 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 dd56e1b3e62..b983c01ffd5 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 00000000000..353f429910f --- /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'" } */ +} -- 2.30.2