diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 0ec4ecdaa824e8d881b4bea562fb394b2a3fabef..30823d933de3cb8e2596922b4a60dda8c6c21e5d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2012-03-31  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR bootstrap/52784
+	* config/i386/i386.c (ix86_option_override_internal): Don't
+	check TARGET_64BIT if TARGET_64BIT_DEFAULT is false.
+
 2012-03-31  Eric Botcazou  <ebotcazou@adacore.com>
 
 	* tree-cfg.c (call_can_make_abnormal_goto): New predicate.
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 8cb5a0d56f5cb1d1c1d8a1c2f4a380743caffab2..d58dafc157d5a91d4d15534cde87464127687ad6 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -3118,8 +3118,8 @@ ix86_option_override_internal (bool main_args_p)
 #endif
 
   /* Turn off both OPTION_MASK_ABI_64 and OPTION_MASK_ABI_X32 if
-     TARGET_64BIT is false.  */
-  if (!TARGET_64BIT)
+     TARGET_64BIT_DEFAULT is true and TARGET_64BIT is false.  */
+  if (TARGET_64BIT_DEFAULT && !TARGET_64BIT)
     ix86_isa_flags &= ~(OPTION_MASK_ABI_64 | OPTION_MASK_ABI_X32);
 #ifdef TARGET_BI_ARCH
   else