Index: osprey/common/com/wn_simp.cxx
===================================================================
--- osprey/common/com/wn_simp.cxx	(revision 1240)
+++ osprey/common/com/wn_simp.cxx	(working copy)
@@ -388,10 +388,14 @@
       k0 = WN_kid0(t);
 
       if (WN_operator(t) != OPR_CVTL) {
+          if (WN_operator(t) == OPR_EXTRACT_BITS) {
+              r = WN_SimplifyExp1(op,t);
+          } else {
 # if defined (KEY) && defined (Is_True_On)
-        if (Enable_WN_Simp_Expr_Limit == -1 || (Enable_WN_Simp_Expr_Limit != -1 && cur_idx < Enable_WN_Simp_Expr_Limit))
+            if (Enable_WN_Simp_Expr_Limit == -1 || (Enable_WN_Simp_Expr_Limit != -1 && cur_idx < Enable_WN_Simp_Expr_Limit))
 # endif
-	 r = WN_SimplifyExp1(op, k0);
+        	 r = WN_SimplifyExp1(op, k0);
+          }
       } else {
 # if defined (KEY) && defined (Is_True_On)
         if (Enable_WN_Simp_Expr_Limit == -1 || (Enable_WN_Simp_Expr_Limit != -1 && cur_idx < Enable_WN_Simp_Expr_Limit))
Index: osprey/common/com/wn_simp_code.h
===================================================================
--- osprey/common/com/wn_simp_code.h	(revision 1240)
+++ osprey/common/com/wn_simp_code.h	(working copy)
@@ -1408,7 +1408,35 @@
 /**************************************************************************/
 /**************************************************************************/
 /**************************************************************************/
+/*------------------------------------------------ 
+   Simplifications for EXTRACT_BITS:
+   EXTRACT_BITS(INTCONSTANT,size=1,offset=0)
+-------------------------------------------------*/
+simpnode simp_extract_bits (OPCODE opc, simpnode t, simpnode kx, 
+        BOOL tconst, BOOL kxconst) {
+    if (SIMPNODE_operator(t) != OPR_EXTRACT_BITS)
+        return NULL;
+    OPCODE t_op, k0_op;
+    TYPE_ID ttyp, k0typ;
+    simpnode k0 = SIMPNODE_kid0(t);
 
+    t_op = SIMPNODE_opcode(t);
+    k0_op = SIMPNODE_opcode(k0);
+
+    ttyp = OPCODE_rtype(t_op);
+    k0typ = OPCODE_rtype(k0_op);
+
+    if (SIMPNODE_op_bit_offset(t) == 0 && SIMPNODE_op_bit_size(t) == 1) {
+        if (SIMPNODE_operator(k0) == OPR_INTCONST) {
+            if (SIMPNODE_const_val(k0) == 0 || SIMPNODE_const_val(k0) == 1) {
+                // We want to catch booleans 
+                return k0;
+            }
+        }
+    }
+    return NULL;
+}
+
 /*------------------------------------------------ 
    Simplifications for ABS:
    ABS(ABS(x))     ABS(X)
Index: osprey/common/com/wn_simp_ftable.h
===================================================================
--- osprey/common/com/wn_simp_ftable.h	(revision 1240)
+++ osprey/common/com/wn_simp_ftable.h	(working copy)
@@ -185,7 +185,7 @@
 NULL,   /* OPR_RROTATE */
 NULL,   /* OPR_LDA_LABEL */
 NULL,   /* OPR_GOTO_OUTER_BLOCK */
-NULL,   /* OPR_EXTRACT_BITS */
+simp_extract_bits,   /* OPR_EXTRACT_BITS */
 NULL,   /* OPR_COMPOSE_BITS */
 #endif
 #ifdef TARG_X8664
