Message ID | 20160215205604.GF3017@tucnak.redhat.com |
---|---|
State | New |
Headers | show |
On Mon, Feb 15, 2016 at 09:56:04PM +0100, Jakub Jelinek wrote: > Hi! > > In C++, if there are no parameters, params can be non-NULL, but still > empty vector. Fixed by properly testing for empty vector. > > Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk? > > 2016-02-15 Jakub Jelinek <jakub@redhat.com> > > PR c++/69797 > * c-common.c (sync_resolve_size): Diagnose too few arguments > even when params is non-NULL empty vector. > > * c-c++-common/pr69797.c: New test. Ok, thanks. Seems there are no other spots to fix than this one. Marek
--- gcc/c-family/c-common.c.jj 2016-02-08 18:39:17.000000000 +0100 +++ gcc/c-family/c-common.c 2016-02-15 14:56:14.518790242 +0100 @@ -10675,7 +10675,7 @@ sync_resolve_size (tree function, vec<tr tree type; int size; - if (!params) + if (vec_safe_is_empty (params)) { error ("too few arguments to function %qE", function); return 0; --- gcc/testsuite/c-c++-common/pr69797.c.jj 2016-02-15 14:57:31.244745664 +0100 +++ gcc/testsuite/c-c++-common/pr69797.c 2016-02-15 14:57:11.000000000 +0100 @@ -0,0 +1,8 @@ +/* PR c++/69797 */ +/* { dg-do compile } */ + +void +foo () +{ + __atomic_fetch_add (); /* { dg-error "too few arguments to function" } */ +}