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.