On March 5, 2019 4:18:13 PM GMT+01:00, Jakub Jelinek <ja...@redhat.com> wrote: >Hi! > >When adding this warning years ago, I forgot to verify number of >arguments. > >Fixed thusly, bootstrapped/regtested on powerpc64{,le}-linux, ok for >trunk?
OK. Richard. >2019-03-05 Jakub Jelinek <ja...@redhat.com> > > PR middle-end/89590 > * builtins.c (maybe_emit_free_warning): Punt if free doesn't have > exactly one argument. > > * gcc.dg/pr89590.c: New test. > >--- gcc/builtins.c.jj 2019-02-21 22:20:24.834100192 +0100 >+++ gcc/builtins.c 2019-03-05 10:53:26.301255523 +0100 >@@ -10604,6 +10604,9 @@ maybe_emit_sprintf_chk_warning (tree exp > static void > maybe_emit_free_warning (tree exp) > { >+ if (call_expr_nargs (exp) != 1) >+ return; >+ > tree arg = CALL_EXPR_ARG (exp, 0); > > STRIP_NOPS (arg); >--- gcc/testsuite/gcc.dg/pr89590.c.jj 2019-03-05 10:55:44.597980407 >+0100 >+++ gcc/testsuite/gcc.dg/pr89590.c 2019-03-05 10:55:16.194447677 +0100 >@@ -0,0 +1,11 @@ >+/* PR middle-end/89590 */ >+/* { dg-do compile } */ >+/* { dg-options "-O2 -Wall -w" } */ >+ >+void free (void *); >+ >+void >+foo (void) >+{ >+ ((void (*)()) free) (); >+} > > Jakub