On Wed, Mar 28, 2012 at 10:13 PM, H.J. Lu <hjl.to...@gmail.com> wrote:
> On Wed, Mar 28, 2012 at 12:51 PM, Uros Bizjak <ubiz...@gmail.com> wrote:
>> On Wed, Mar 28, 2012 at 9:33 PM, H.J. Lu <hjl.to...@gmail.com> wrote:
>>
>>> What do we do with TARGET_64BIT and TARGET_64BIT_DEFAULT?  They
>>> are used to indicate 64bit ISA like:
>>>
>>> collect2.c:/* TARGET_64BIT may be defined to use driver specific
>>> functionality. */
>>> collect2.c:#undef TARGET_64BIT
>>> collect2.c:#define TARGET_64BIT TARGET_64BIT_DEFAULT
>>> reg-stack.c:  if ((flag_pic && !TARGET_64BIT)
>>> tlink.c:/* TARGET_64BIT may be defined to use driver specific 
>>> functionality. */
>>> tlink.c:#undef TARGET_64BIT
>>> tlink.c:#define TARGET_64BIT TARGET_64BIT_DEFAULT
>>> xcoffout.c:       if (lno > 0 && (TARGET_64BIT || lno <= (int)USHRT_MAX))   
>>>        \
>>> config/darwin.c:               && TARGET_64BIT
>>> config/darwin.c:           && TARGET_64BIT
>>> config/darwin.c:                : (TARGET_64BIT ? 2
>>> config/darwin.c:      if (TARGET_64BIT && global_options.x_flag_objc_abi < 
>>> 2)
>>> config/darwin.c:      if (!TARGET_64BIT && global_options.x_flag_objc_abi 
>>> >= 2)
>>> config/darwin.c:      && !TARGET_64BIT)
>>> config/darwin.c:  if (!TARGET_64BIT)                            \
>>> config/darwin.c:  if (!TARGET_64BIT                                         
>>>       \
>>> config/darwin.h:                                flag_next_runtime && 
>>> !TARGET_64BIT;     \
>>> config/sol2-bi.h:#define WCHAR_TYPE (TARGET_64BIT ? "int" : "long int")
>>> config/sol2-bi.h:#define WINT_TYPE (TARGET_64BIT ? "int" : "long int")
>>>
>>> Should we keep them? Right now I have
>>>
>>> #define TARGET_64BIT    OPTION_ARCH_X86_64
>>>
>>> and
>>>
>>> #define TARGET_64BIT_DEFAULT (OPTION_MASK_ARCH_X86_64 | OPTION_MASK_ISA_64)
>>>
>>> Should we go with
>>>
>>> OPTION_MASK_ISA_64BIT -> stays the same
>>> OPTION_MASK_ISA_X86_64 -> OPTION_MASK_ABI_64
>>> OPTION_MASK_ISA_X32 ->  OPTION_MASK_ABI_X32
>>
>> Yes, the above is IMO much better. We have to separate ABI and ISA
>> defines in some meaningful way.
>>
>> Uros.
>
> Here is the new patch.  OK for trunk if there are no regressions on
> Linux/ia32 and Linux/x86-64?

@@ -2657,7 +2657,7 @@ ix86_target_string (HOST_WIDE_INT isa, int
flags, const char *arch,
      preceding options while match those first.  */
   static struct ix86_target_opts isa_opts[] =
   {
-    { "-m64",          OPTION_MASK_ISA_64BIT },
+    { "-m64",          OPTION_MASK_ABI_64 },
     { "-mfma4",                OPTION_MASK_ISA_FMA4 },

Please add -mx32 here. Probably also -m32.

 #define TARGET_64BIT   OPTION_ISA_64BIT
-#define TARGET_X32     OPTION_ISA_X32
+#define TARGET_X32     OPTION_ABI_X32
 #define TARGET_MMX     OPTION_ISA_MMX
 #define TARGET_3DNOW   OPTION_ISA_3DNOW
 #define TARGET_3DNOW_A OPTION_ISA_3DNOW_A
@@ -77,7 +77,7 @@ see the files COPYING3 and COPYING.RUNTIME
respectively.  If not, see
 #define TARGET_F16C    OPTION_ISA_F16C
 #define TARGET_RTM      OPTION_ISA_RTM

-#define TARGET_LP64    (TARGET_64BIT && !TARGET_X32)
+#define TARGET_LP64    OPTION_ABI_64

Please group new OPTION_ABI_xxx defines together, after ISA defines.

The patch is OK, but please also get approval from Joseph (options maintainer).

Thanks,
Uros.

Reply via email to