Hi!

Prior to r203634 we were comparing TARGET_64BIT with
ix86_isa_flags & OPTION_MASK_ISA_64BIT, which is the same thing for
TARGET_BI_ARCH, otherwise the former is hardcoded constant.
But with r203634, the condition was changed and is now always false
and so e.g. for 32-bit non-multilib i?86 gcc we don't complain about
lack of -m64 support anymore, instead just ICE later on.

Fixed by making TARGET_64BIT_P that the new condition tests also
constant for !TARGET_BI_ARCH.

Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?

2014-03-21  Jakub Jelinek  <ja...@redhat.com>

        PR target/60610
        * config/i386/i386.h (TARGET_64BIT_P): If not TARGET_BI_ARCH,
        redefine to 1 or 0.
        * config/i386/darwin.h (TARGET_64BIT_P): Redefine to
        TARGET_ISA_64BIT_P(x).

--- gcc/config/i386/i386.h.jj   2014-03-18 10:04:14.000000000 +0100
+++ gcc/config/i386/i386.h      2014-03-21 17:50:22.465016379 +0100
@@ -284,10 +284,13 @@ extern const struct processor_costs ix86
 #else
 #ifndef TARGET_BI_ARCH
 #undef TARGET_64BIT
+#undef TARGET_64BIT_P
 #if TARGET_64BIT_DEFAULT
 #define TARGET_64BIT 1
+#define TARGET_64BIT_P(x) 1
 #else
 #define TARGET_64BIT 0
+#define TARGET_64BIT_P(x) 0
 #endif
 #endif
 #endif
--- gcc/config/i386/darwin.h.jj 2014-01-03 11:41:06.000000000 +0100
+++ gcc/config/i386/darwin.h    2014-03-21 17:51:56.492536202 +0100
@@ -26,7 +26,9 @@ along with GCC; see the file COPYING3.
 #define DARWIN_X86 1
 
 #undef  TARGET_64BIT
+#undef TARGET_64BIT_P
 #define TARGET_64BIT TARGET_ISA_64BIT
+#define        TARGET_64BIT_P(x) TARGET_ISA_64BIT_P(x)
 
 #ifdef IN_LIBGCC2
 #undef TARGET_64BIT

        Jakub

Reply via email to