diff mbox

Fix ICE in sync_resolve_size (PR c++/69797)

Message ID 20160215205604.GF3017@tucnak.redhat.com
State New
Headers show

Commit Message

Jakub Jelinek Feb. 15, 2016, 8:56 p.m. UTC
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.


	Jakub

Comments

Marek Polacek Feb. 15, 2016, 9:13 p.m. UTC | #1
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
diff mbox

Patch

--- 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" } */
+}