diff options
author | Jakub Jelinek <jakub@redhat.com> | 2019-03-05 17:22:16 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2019-03-05 17:22:16 +0100 |
commit | 9616781de2cfd1ab1d0e0c5fa238b12988c39945 (patch) | |
tree | 5c1be61f84bfbd21d79a9d30172b187d7a4d1e71 /gcc | |
parent | cff1a1225d8750df872cada03b7957e4f1a6df98 (diff) | |
download | gcc-9616781de2cfd1ab1d0e0c5fa238b12988c39945.zip gcc-9616781de2cfd1ab1d0e0c5fa238b12988c39945.tar.gz gcc-9616781de2cfd1ab1d0e0c5fa238b12988c39945.tar.bz2 |
re PR middle-end/89590 (ICE in maybe_emit_free_warning)
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.
From-SVN: r269392
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/builtins.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr89590.c | 11 |
4 files changed, 25 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b85b54c..c02e488 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,4 +1,10 @@ 2019-03-05 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/89590 + * builtins.c (maybe_emit_free_warning): Punt if free doesn't have + exactly one argument. + +2019-03-05 Jakub Jelinek <jakub@redhat.com> Richard Sandiford <richard.sandiford@arm.com> PR tree-optimization/89570 diff --git a/gcc/builtins.c b/gcc/builtins.c index c19ca30..d216d6f 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 7c57390..98289eb 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2019-03-05 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/89590 + * gcc.dg/pr89590.c: New test. + 2019-03-05 Wilco Dijkstra <wdijkstr@arm.com> PR target/89222 diff --git a/gcc/testsuite/gcc.dg/pr89590.c b/gcc/testsuite/gcc.dg/pr89590.c new file mode 100644 index 0000000..441b0f9 --- /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) (); +} |