This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
On Wed, 14 Oct 2015, Richard Biener wrote:
+/* Fold (a * (1 << b)) into (a << b) */ +(simplify + (mult:c @0 (convert? (lshift integer_onep@1 @2))) + (if (! FLOAT_TYPE_P (type) + && tree_nop_conversion_p (type, TREE_TYPE (@2))) + (lshift @0 (convert @2)))) You don't need/want to convert @2 (fold-const doesn't convert, does it?), and you don't need to check for tree_nop_conversion_p.I think for long x and x * (long)(1u << b) you need to do because the result for b == 33 would be different.
- that check should be with TREE_TYPE (@1) - 1u << 33 is undefined, isn't it?x * (int)(1ul << b), which for b=33 should yield 0, would give the undefined x << b so some check does seem needed indeed.
-- Marc Glisse
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |