Bootstrap broken in libobjc/sendmsg.c

H.J. Lu hjl.tools@gmail.com
Fri Sep 6 15:39:00 GMT 2013


On Fri, Sep 6, 2013 at 7:40 AM, Jan Hubicka <hubicka@ucw.cz> wrote:
>> On Fri, Sep 06, 2013 at 02:38:01PM +0200, Jan Hubicka wrote:
>> > > > .. looks like this is target/58269, which therefore affects
>> > > > x86_64-linux too.
>> > >
>> > > Now this reproduces to me, too.  apppy_args expansion is trying to preserve AVX
>> > > register in V8SF mode when AVX is disabled.  This leads to move expander to not
>> > > allow moving it and we end up infinitely recursing trying to expand the move.
>> > > I am not sure what change triggered it.  I am looking into fix.
>> >
>> > I am testing the following.  Obviously AVX mode is not OK for SSE reg
>> > when AVX is disabled.  Other code paths allowing AVX modes seems to be propertly
>> > guarded.
>>
>> Sounds like http://gcc.gnu.org/ml/gcc-bugs/2013-09/msg00308.html
>> Please look at PR58139 and PR58269, various patches have been posted or
>> attached for that.
>>
>> BTW, I wonder why this spot doesn't contain also
>> (TARGET_AVX512F && VALID_AVX512F_REG_MODE (mode))
>
> I have tested and comitted the patch now.  Hj, can you please look into the
> (TARGET_AVX512F && VALID_AVX512F_REG_MODE (mode)) issue?  It seems like obvious
> omission but I can not test the patch.

There are

      if (TARGET_AVX512F
          && (mode == XImode
              || VALID_AVX512F_REG_MODE (mode)
              || VALID_AVX512F_SCALAR_MODE (mode)))
        return true;

> Honza
>>
>> > --- config/i386/i386.c      (revision 202322)
>> > +++ config/i386/i386.c      (working copy)
>> > @@ -34466,7 +34471,7 @@ ix86_hard_regno_mode_ok (int regno, enum
>> >
>> >        /* OImode move is available only when AVX is enabled.  */
>> >        return ((TARGET_AVX && mode == OImode)
>> > -         || VALID_AVX256_REG_MODE (mode)
>> > +         || (TARGET_AVX && VALID_AVX256_REG_MODE (mode))
>> >           || VALID_SSE_REG_MODE (mode)
>> >           || VALID_SSE2_REG_MODE (mode)
>> >           || VALID_MMX_REG_MODE (mode)
>>

Or we can do

      return ((TARGET_AVX && VALID_AVX256_REG_OR_OI_MODE (mode))
              || VALID_SSE_REG_MODE (mode)
              || VALID_SSE2_REG_MODE (mode)
              || VALID_MMX_REG_MODE (mode)
              || VALID_MMX_REG_MODE_3DNOW (mode));

-- 
H.J.



More information about the Gcc mailing list