summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Sebor <msebor@redhat.com>2020-02-11 16:53:13 -0700
committerMartin Sebor <msebor@redhat.com>2020-02-11 16:53:13 -0700
commit9a5338e57db1cda13fa788b0e0debbcf99a475d6 (patch)
tree22a43a4dda29b013a39d82899f6b1e0ce227d0f7
parentad21e0072e20b7c8e4d7af5ca78f24cc6ae407d1 (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/ChangeLog5
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-39.c18
-rw-r--r--gcc/tree-ssa-alias.c2
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