summaryrefslogtreecommitdiff
path: root/gcc/match.pd
diff options
context:
space:
mode:
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2016-04-29 08:36:49 +0000
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2016-04-29 08:36:49 +0000
commit73447cc5d17178b0a756be48133e55fdc7574c13 (patch)
tree1858d6d18d0408f87683330cd1b7664179f40c81 /gcc/match.pd
parentfb13bff45b1ea57e8128d38fcd0ba37a30a17f26 (diff)
downloadgcc-73447cc5d17178b0a756be48133e55fdc7574c13.tar.gz
2016-04-29 Richard Biener <rguenther@suse.de>
PR tree-optimization/13962 PR tree-optimization/65686 * tree-ssa-alias.h (ptrs_compare_unequal): Declare. * tree-ssa-alias.c (ptrs_compare_unequal): New function using PTA to compare pointers. * match.pd: Add pattern for pointer equality compare simplification using ptrs_compare_unequal. * gcc.dg/uninit-pr65686.c: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235622 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/match.pd')
-rw-r--r--gcc/match.pd8
1 files changed, 8 insertions, 0 deletions
diff --git a/gcc/match.pd b/gcc/match.pd
index 0e63328c43c..608afa3e25e 100644
--- a/gcc/match.pd
+++ b/gcc/match.pd
@@ -2400,6 +2400,14 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
(if (cmp == NE_EXPR)
{ constant_boolean_node (true, type); })))))))))
+/* Simplify pointer equality compares using PTA. */
+(for neeq (ne eq)
+ (simplify
+ (neeq @0 @1)
+ (if (POINTER_TYPE_P (TREE_TYPE (@0))
+ && ptrs_compare_unequal (@0, @1))
+ { neeq == EQ_EXPR ? boolean_false_node : boolean_true_node; })))
+
/* Non-equality compare simplifications from fold_binary */
(for cmp (lt gt le ge)
/* Comparisons with the highest or lowest possible integer of