+2013-09-09 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/58364
+ * tree-ssa-reassoc.c (init_range_entry): For BIT_NOT_EXPR on
+ BOOLEAN_TYPE, only invert in_p and continue with arg0 if
+ the current range can't be an unconditional true or false.
+
2013-09-09 James Greenhalgh <james.greenhalgh@arm.com>
* config/aarch64/arm_neon.h (vrsqrte_f64): Fix parameter type.
+2013-09-09 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/58364
+ * gcc.c-torture/execute/pr58364.c: New test.
+
2013-09-09 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/43452
switch (code)
{
case BIT_NOT_EXPR:
- if (TREE_CODE (TREE_TYPE (exp)) == BOOLEAN_TYPE)
+ if (TREE_CODE (TREE_TYPE (exp)) == BOOLEAN_TYPE
+ /* Ensure the range is either +[-,0], +[0,0],
+ -[-,0], -[0,0] or +[1,-], +[1,1], -[1,-] or
+ -[1,1]. If it is e.g. +[-,-] or -[-,-]
+ or similar expression of unconditional true or
+ false, it should not be negated. */
+ && ((high && integer_zerop (high))
+ || (low && integer_onep (low))))
{
in_p = !in_p;
exp = arg0;