On Tue, Aug 19, 2014 at 07:52:33AM -0700, Richard Henderson wrote:
> On 08/19/2014 07:12 AM, Marek Polacek wrote:
> > On some archs, C[TL]Z_DEFINED_VALUE_AT_ZERO macros return only
> > true/false, so -Wbool-compare would warn.
> 
> Then we should fix them to return 0/1 instead.

Works as well.  So is the following ok once the regtest finishes?

Bootstrapped on x86_64-linux.

2014-08-19  Marek Polacek  <pola...@redhat.com>

        * config/alpha/alpha.h (CLZ_DEFINED_VALUE_AT_ZERO,
        CTZ_DEFINED_VALUE_AT_ZERO): Return 0/1 rather than bool.
        * config/i386/i386.h (CLZ_DEFINED_VALUE_AT_ZERO,
        CTZ_DEFINED_VALUE_AT_ZERO): Return 0/1 rather than bool.

diff --git gcc/config/alpha/alpha.h gcc/config/alpha/alpha.h
index 0ff793f..88816f3 100644
--- gcc/config/alpha/alpha.h
+++ gcc/config/alpha/alpha.h
@@ -912,8 +912,10 @@ do {                                                       
                     \
 #define TRULY_NOOP_TRUNCATION(OUTPREC, INPREC) 1
 
 /* The CIX ctlz and cttz instructions return 64 for zero.  */
-#define CLZ_DEFINED_VALUE_AT_ZERO(MODE, VALUE)  ((VALUE) = 64, TARGET_CIX)
-#define CTZ_DEFINED_VALUE_AT_ZERO(MODE, VALUE)  ((VALUE) = 64, TARGET_CIX)
+#define CLZ_DEFINED_VALUE_AT_ZERO(MODE, VALUE)  ((VALUE) = 64, \
+  TARGET_CIX ? 1 : 0)
+#define CTZ_DEFINED_VALUE_AT_ZERO(MODE, VALUE)  ((VALUE) = 64, \
+  TARGET_CIX ? 1 : 0)
 
 /* Define the value returned by a floating-point comparison instruction.  */
 
diff --git gcc/config/i386/i386.h gcc/config/i386/i386.h
index ec6ed25..2c64162 100644
--- gcc/config/i386/i386.h
+++ gcc/config/i386/i386.h
@@ -2498,9 +2498,9 @@ extern void debug_dispatch_window (int);
 /* The value at zero is only defined for the BMI instructions
    LZCNT and TZCNT, not the BSR/BSF insns in the original isa.  */
 #define CTZ_DEFINED_VALUE_AT_ZERO(MODE, VALUE) \
-       ((VALUE) = GET_MODE_BITSIZE (MODE), TARGET_BMI)
+       ((VALUE) = GET_MODE_BITSIZE (MODE), TARGET_BMI ? 1 : 0)
 #define CLZ_DEFINED_VALUE_AT_ZERO(MODE, VALUE) \
-       ((VALUE) = GET_MODE_BITSIZE (MODE), TARGET_LZCNT)
+       ((VALUE) = GET_MODE_BITSIZE (MODE), TARGET_LZCNT ? 1 : 0)
 
 
 /* Flags returned by ix86_get_callcvt ().  */

        Marek

Reply via email to