On Wed, Jul 27, 2011 at 10:00 AM, Uros Bizjak <ubiz...@gmail.com> wrote:
> On Wed, Jul 27, 2011 at 6:42 PM, H.J. Lu <hjl.to...@gmail.com> wrote:
>
>>>> As you may see pta_flags enum in i386.c is almost full. So there is a
>>>> risk of overflow in quite near future. Comment in source code advises
>>>> "widen struct pta flags" which is now defined as unsigned. But it
>>>> looks not optimal.
>>>>
>>>> What will be the most proper solution for this problem?
>>>
>>> Why is widening pta_flags "not optimal?"
>>>
>>> It's hard for me to believe that we still care about bootstrapping a
>>> i386-*-* compiler with a compiler which doesn't support any 64-bit type.
>>> So I don't see any problem with setting need_64bit_hwint=yes in
>>> config.gcc for i386-*-*, changing pta_flags to be unsigned
>>> HOST_WIDE_INT, and letting pta_flags go up to (unsigned HOST_WIDE_INT) 1
>>> << 63.
>>>
>>> If anybody doesn't like that idea, we can simply add a flags2 field and
>>> a pta_flags2 enum with PTA2_xxx constants.
>>>
>>
>> Hi,
>>
>> We are also running out of bits in ix86_isa_flags.  This patch uses
>> int64 on both ix86_isa_flags and PTA.  I added a new option to opt:
>>
>> ; Maximum number of mask bits in a variable.
>> MaxMaskBits
>> ix86_isa_flags = 64
>>
>> It mark ix86_isa_flags as 64bit.  Any comments?
>
> We should just introduce ix86_isa_flags2.  We shouldn't stop at 128 flags. ;)
>

It is used to control which insns are are available. See
OPTION_MASK_ISA_XXX_SET and OPTION_MASK_ISA_XXX_UNSET
in common/config/i386/i386-common.c.  Adding ix86_isa_flags2
makes it very complicated:

1. We need to turn on a set of ISAs for -mXXX.
2. We need to turn off a set of ISAs for -mno-XXX.
3. We need to check 2 fields in def_builtin to see if an insn is
available.

As a side benefit,  need_64bit_hwint=yes will resolve
many 32bit code generation differences on ia32 and x86-64 hosts.
We can close a bunch of bugs, like

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43226



-- 
H.J.

Reply via email to