diff options
author | law <law@138bc75d-0d04-0410-961f-82ee72b054a4> | 2015-05-04 17:21:56 +0000 |
---|---|---|
committer | law <law@138bc75d-0d04-0410-961f-82ee72b054a4> | 2015-05-04 17:21:56 +0000 |
commit | c8c9ffdbecc7e19880c05674ccd85826e7d464de (patch) | |
tree | 5fec3524fe94c084995893d0a77504b8dfcb5c01 /gcc/gimple-match-head.c | |
parent | 62b41575ba649075b90686b4abc4df23ff64f00f (diff) | |
download | gcc-c8c9ffdbecc7e19880c05674ccd85826e7d464de.tar.gz |
* match.pd (bit_and (plus/minus (convert @0) (convert @1) mask): New
simplifier to narrow arithmetic.
* generic-match-head.c: (types_match, single_use): New functions.
* gimple-match-head.c: (types_match, single_use): New functions.
* gcc.dg/tree-ssa/shorten-1.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@222771 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/gimple-match-head.c')
-rw-r--r-- | gcc/gimple-match-head.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/gcc/gimple-match-head.c b/gcc/gimple-match-head.c index c7b2f957bac..dc13218b2bf 100644 --- a/gcc/gimple-match-head.c +++ b/gcc/gimple-match-head.c @@ -861,3 +861,21 @@ do_valueize (tree (*valueize)(tree), tree op) return op; } +/* Routine to determine if the types T1 and T2 are effectively + the same for GIMPLE. */ + +inline bool +types_match (tree t1, tree t2) +{ + return types_compatible_p (t1, t2); +} + +/* Return if T has a single use. For GIMPLE, we also allow any + non-SSA_NAME (ie constants) and zero uses to cope with uses + that aren't linked up yet. */ + +inline bool +single_use (tree t) +{ + return TREE_CODE (t) != SSA_NAME || has_zero_uses (t) || has_single_use (t); +} |