Turn on 64bit and check models for x32.
authorH.J. Lu <hongjiu.lu@intel.com>
Sun, 10 Jul 2011 19:25:28 +0000 (19:25 +0000)
committerH.J. Lu <hjl@gcc.gnu.org>
Sun, 10 Jul 2011 19:25:28 +0000 (12:25 -0700)
2011-07-10  H.J. Lu  <hongjiu.lu@intel.com>

* config/i386/i386.c (ix86_option_override_internal): Turn on
OPTION_MASK_ISA_64BIT for TARGET_X32.  Only allow small and
small PIC models for TARGET_X32.

From-SVN: r176127

gcc/ChangeLog
gcc/config/i386/i386.c

index e654d17323be13b00678ff4792ca4e98bea78d51..bbec3f0ae23d7b8126270bc7b87e9896dec4251a 100644 (file)
@@ -1,3 +1,9 @@
+2011-07-10  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * config/i386/i386.c (ix86_option_override_internal): Turn on
+       OPTION_MASK_ISA_64BIT for TARGET_X32.  Only allow small and
+       small PIC models for TARGET_X32.
+
 2011-07-10  Hans-Peter Nilsson  <hp@axis.com>
 
        PR target/49684
index 04cb07d5740f795763f3588d32670bd1900e65b4..f3fd0dba30b3e2ccba3a34f34c0c9aa71269de6e 100644 (file)
@@ -2973,6 +2973,9 @@ ix86_option_override_internal (bool main_args_p)
   SUBSUBTARGET_OVERRIDE_OPTIONS;
 #endif
 
+  if (TARGET_X32)
+    ix86_isa_flags |= OPTION_MASK_ISA_64BIT;
+
   /* -fPIC is the default for x86_64.  */
   if (TARGET_MACHO && TARGET_64BIT)
     flag_pic = 2;
@@ -3064,6 +3067,9 @@ ix86_option_override_internal (bool main_args_p)
          if (!TARGET_64BIT)
            error ("code model %qs not supported in the %s bit mode",
                   "medium", "32");
+         else if (TARGET_X32)
+           error ("code model %qs not supported in x32 mode",
+                  "medium");
          break;
 
        case CM_LARGE:
@@ -3073,6 +3079,9 @@ ix86_option_override_internal (bool main_args_p)
          if (!TARGET_64BIT)
            error ("code model %qs not supported in the %s bit mode",
                   "large", "32");
+         else if (TARGET_X32)
+           error ("code model %qs not supported in x32 mode",
+                  "medium");
          break;
 
        case CM_32: