This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: rs6000.md/altivec.md problem in setting of vector registers


>>>>> Dorit Naishlos writes:

Dorit> Thanks, this indeed looks like the right direction, and it seems to support
Dorit> the original suspicion that there is a problem with the "insvsi" pattern of
Dorit> the insns that are used to initialize the va pseudo:

	I think the problems with register allocation are a byproduct of
the earlier decision by GCC to use a bitfield to initialize the value.

	Because the initializer is an argument to the function, GCC
chooses the CONSTRUCTOR path to materialize it.  The comment in
expand_expr_real() expresses it as well as anything:

        FIXME: Avoid trying to fill vector constructors piece-meal.
        Output them with output_constant_def below unless we're sure
        they're zeros.  This should go away when vector initializers
        are treated like VECTOR_CST instead of arrays.

GCC commits to an poor instruction selection choice and it's downhill from
there.  It probably would be better to fix vector initialization, or at
least improve the current hack, instead of trying to change register
allocator behavior.

David


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]