From: jakub Date: Tue, 5 Mar 2019 16:22:16 +0000 (+0000) Subject: PR middle-end/89590 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=06229fe5bcb0facf6ce40eff15228f8166a9de1d;p=thirdparty%2Fgcc.git 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@269392 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b85b54cb096b..c02e488d90c4 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2019-03-05 Jakub Jelinek + + PR middle-end/89590 + * builtins.c (maybe_emit_free_warning): Punt if free doesn't have + exactly one argument. + 2019-03-05 Jakub Jelinek Richard Sandiford diff --git a/gcc/builtins.c b/gcc/builtins.c index c19ca308b1bd..d216d6fb8817 100644 --- a/gcc/builtins.c +++ b/gcc/builtins.c @@ -10604,6 +10604,9 @@ maybe_emit_sprintf_chk_warning (tree exp, enum built_in_function fcode) 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); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 7c57390f83bd..98289eb174cb 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2019-03-05 Jakub Jelinek + + PR middle-end/89590 + * gcc.dg/pr89590.c: New test. + 2019-03-05 Wilco Dijkstra PR target/89222 diff --git a/gcc/testsuite/gcc.dg/pr89590.c b/gcc/testsuite/gcc.dg/pr89590.c new file mode 100644 index 000000000000..441b0f9c47e6 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr89590.c @@ -0,0 +1,11 @@ +/* PR middle-end/89590 */ +/* { dg-do compile } */ +/* { dg-options "-O2 -Wall -w" } */ + +void free (void *); + +void +foo (void) +{ + ((void (*)()) free) (); +}