diff options
author | Martin Sebor <msebor@redhat.com> | 2020-02-11 16:53:13 -0700 |
---|---|---|
committer | Martin Sebor <msebor@redhat.com> | 2020-02-11 16:53:13 -0700 |
commit | 9a5338e57db1cda13fa788b0e0debbcf99a475d6 (patch) | |
tree | 22a43a4dda29b013a39d82899f6b1e0ce227d0f7 | |
parent | ad21e0072e20b7c8e4d7af5ca78f24cc6ae407d1 (diff) |
PR tree-optimization/93683 - ICE on calloc with unused return value in ao_ref_init_from_ptr_and_size
gcc/testsuite/ChangeLog:
PR tree-optimization/93683
* gcc.dg/tree-ssa/ssa-dse-39.c: New test.
gcc/ChangeLog:
PR tree-optimization/93683
* tree-ssa-alias.c (stmt_kills_ref_p): Avoid using LHS when not set.
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-39.c | 18 | ||||
-rw-r--r-- | gcc/tree-ssa-alias.c | 2 |
4 files changed, 30 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a124ed5de35..2f6dbdc13ba 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2020-02-11 Martin Sebor <msebor@redhat.com> + + PR tree-optimization/93683 + * tree-ssa-alias.c (stmt_kills_ref_p): Avoid using LHS when not set. + 2020-02-11 Michael Meissner <meissner@linux.ibm.com> * config/rs6000/predicates.md (cint34_operand): Rename the diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 8120020e315..d2a005b4af6 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2020-02-11 Martin Sebor <msebor@redhat.com> + + PR tree-optimization/93683 + * gcc.dg/tree-ssa/ssa-dse-39.c: New test. + 2020-02-11 Will Schmidt <will_schmidt@vnet.ibm.com> * lib/target-supports.exp (check_effective_target_ppc_ieee128_ok): New. diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-39.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-39.c new file mode 100644 index 00000000000..bd663f1a14c --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-39.c @@ -0,0 +1,18 @@ +/* PR tree-optimization/93683 - ICE on calloc with unused return value + in ao_ref_init_from_ptr_and_size + { dg-do compile } + { dg-options "-O2 -Wall -Wno-unused-result -fdump-tree-cddce1" } */ + +void f0 (int *a) +{ + *a = 0; + __builtin_calloc (1, 1); +} + +void f1 (int *a, unsigned n) +{ + *a = n; + __builtin_calloc (n, n); +} + +/* { dg-final { scan-tree-dump-not "calloc" "cddce1" } } */ diff --git a/gcc/tree-ssa-alias.c b/gcc/tree-ssa-alias.c index c7e6679f990..fd781050668 100644 --- a/gcc/tree-ssa-alias.c +++ b/gcc/tree-ssa-alias.c @@ -3265,6 +3265,8 @@ stmt_kills_ref_p (gimple *stmt, ao_ref *ref) return false; dest = gimple_call_lhs (stmt); + if (!dest) + return false; len = fold_build2 (MULT_EXPR, TREE_TYPE (arg0), arg0, arg1); } else |