expr.c (highest_pow2_factor): New case.
authorEric Botcazou <ebotcazou@adacore.com>
Fri, 23 May 2008 16:38:27 +0000 (16:38 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Fri, 23 May 2008 16:38:27 +0000 (16:38 +0000)
* expr.c (highest_pow2_factor) <BIT_AND_EXPR>: New case.

From-SVN: r135820

gcc/ChangeLog
gcc/expr.c

index cadf9d1..25e09df 100644 (file)
@@ -1,3 +1,7 @@
+2008-05-23  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * expr.c (highest_pow2_factor) <BIT_AND_EXPR>: New case.
+
 2008-05-23  Steven Munroe  <sjmunroe@us.ibm.com>
 
        * config/rs6000/darwin-ldouble.c (fmsub): Eliminate the full
index 0a0f401..e2693d8 100644 (file)
@@ -6599,6 +6599,13 @@ highest_pow2_factor (const_tree exp)
        }
       break;
 
+    case BIT_AND_EXPR:
+      /* The highest power of two of a bit-and expression is the maximum of
+        that of its operands.  We typically get here for a complex LHS and
+        a constant negative power of two on the RHS to force an explicit
+        alignment, so don't bother looking at the LHS.  */
+      return highest_pow2_factor (TREE_OPERAND (exp, 1));
+
     CASE_CONVERT:
     case SAVE_EXPR:
       return highest_pow2_factor (TREE_OPERAND (exp, 0));