aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-loop-ivopts.c
diff options
context:
space:
mode:
authorBin Cheng <bin.cheng@arm.com>2017-03-02 11:25:11 +0000
committerBin Cheng <amker@gcc.gnu.org>2017-03-02 11:25:11 +0000
commit653a4b32fe72e33bfd4cdd4c25493049524a3805 (patch)
treed30393d7ea34a1cb5755199e3cb75f71ce085221 /gcc/tree-ssa-loop-ivopts.c
parent6d03bdcc8196414a7d14d21629257ea746e82385 (diff)
downloadgcc-653a4b32fe72e33bfd4cdd4c25493049524a3805.zip
gcc-653a4b32fe72e33bfd4cdd4c25493049524a3805.tar.gz
gcc-653a4b32fe72e33bfd4cdd4c25493049524a3805.tar.bz2
re PR tree-optimization/66768 (address space gets lost on literal pointer)
PR tree-optimization/66768 * tree-ssa-loop-ivopts.c (find_interesting_uses_address): Skip addr iv_use if base object can't be determined. gcc/testsuite * gcc.target/i386/pr66768.c: New test. From-SVN: r245837
Diffstat (limited to 'gcc/tree-ssa-loop-ivopts.c')
-rw-r--r--gcc/tree-ssa-loop-ivopts.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/gcc/tree-ssa-loop-ivopts.c b/gcc/tree-ssa-loop-ivopts.c
index c9d16b2..f3ad373 100644
--- a/gcc/tree-ssa-loop-ivopts.c
+++ b/gcc/tree-ssa-loop-ivopts.c
@@ -2324,6 +2324,10 @@ find_interesting_uses_address (struct ivopts_data *data, gimple *stmt,
}
civ = alloc_iv (data, base, step);
+ /* Fail if base object of this memory reference is unknown. */
+ if (civ->base_object == NULL_TREE)
+ goto fail;
+
record_group_use (data, op_p, civ, stmt, USE_ADDRESS);
return;