diff options
author | Richard Biener <rguenth@gcc.gnu.org> | 2011-07-20 13:36:30 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2011-07-20 13:36:30 +0000 |
commit | c56db1005607c9d0fb552280c2065ecbe7bb2b23 (patch) | |
tree | 4c128ff41af2ff7489d956b7ab66a144e7334910 | |
parent | dca412a1ddaae99a8672bfbed37fe951f486b6bc (diff) | |
download | gcc-c56db1005607c9d0fb552280c2065ecbe7bb2b23.zip gcc-c56db1005607c9d0fb552280c2065ecbe7bb2b23.tar.gz gcc-c56db1005607c9d0fb552280c2065ecbe7bb2b23.tar.bz2 |
re PR middle-end/18908 (Missed folding opportunities with bools)
2011-07-20 Richard Guenther <rguenther@suse.de>
PR middle-end/18908
* tree.c (integer_all_onesp): Use TYPE_PRECISION, not mode precision.
* tree-ssa-forwprop.c (simplify_bitwise_binary): Remove bogus
ADDR_EXPR folding. Canonicalize X ^ ~0 as ~X.
* gcc.dg/tree-ssa/pr18908.c: New testcase.
* gcc.dg/tree-ssa/bitwise-sink.c: Adjust.
From-SVN: r176510
-rw-r--r-- | gcc/tree.c | 4 |
1 files changed, 1 insertions, 3 deletions
@@ -1759,9 +1759,7 @@ integer_all_onesp (const_tree expr) if (!uns) return 0; - /* Note that using TYPE_PRECISION here is wrong. We care about the - actual bits, not the (arbitrary) range of the type. */ - prec = GET_MODE_BITSIZE (TYPE_MODE (TREE_TYPE (expr))); + prec = TYPE_PRECISION (TREE_TYPE (expr)); if (prec >= HOST_BITS_PER_WIDE_INT) { HOST_WIDE_INT high_value; |