https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117116

--- Comment #11 from Uroš Bizjak <ubizjak at gmail dot com> ---
(In reply to Uroš Bizjak from comment #9)
> (In reply to Uroš Bizjak from comment #8)
> > +      if (immediate_operand (x, inner_mode))
> 
> if (nonimmediate_operand (x, inner_mode))

Fails bootstrap for x86_32, ICEs in ix86_split_to_parts, at
config/i386/i386-expand.cc:6213, trying to split:

(const_vector:V2SI [
        (const:SI (plus:SI (symbol_ref/i:SI ("_ZTCSd8_So") [flags 0x2]
<var_decl 0x7f3812210cf0 _ZTCSd8_So>)
                (const_int 12 [0xc])))
        (const:SI (plus:SI (symbol_ref:SI
("_ZTVSt9basic_iosIcSt11char_traitsIcEE") [flags 0x40] <var_decl 0x7f381274e360
_ZTVSt9basic_iosIcSt11char_traitsIcEE>)
                (const_int 8 [0x8])))
    ])

The handling of CONST_VECTOR RTX is not adequate in ix86_split_to_parts, as the
code assumes only CONST_INTs as vector elements. However, the above could
easily be split and copied to a register pair.

Reply via email to