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 cadf9d1370589a829d3609ed5ba100ba78846b9e..25e09df9add4449ba40ae790459a5acd612a8676 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 0a0f401e9c3d91c8dbd782413ece3d895b5b42ab..e2693d847402f7e983f07c180376c515befd0a90 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));