r255578 - in /trunk/gcc: ChangeLog combine.c

jgreenhalgh@gcc.gnu.org jgreenhalgh@gcc.gnu.org
Tue Dec 12 11:27:00 GMT 2017


Author: jgreenhalgh
Date: Tue Dec 12 11:27:54 2017
New Revision: 255578

URL: https://gcc.gnu.org/viewcvs?rev=255578&root=gcc&view=rev
Log:
[Patch combine] Don't create vector mode ZERO_EXTEND from subregs

The code in simplify set to handle transforming the paradoxical subreg
expression:

  (set FOO (subreg:M (mem:N BAR) 0))

in to:

  (set FOO (zero_extend:M (mem:N BAR)))

Does not consider the case where M is a vector mode, allowing it to
construct (for example):

  (zero_extend:V4SI (mem:SI))

For one, this has the wrong semantics - but fortunately we fail long
before then in expand_compound_operation.

We need to explicitly reject vector modes from this transformation.

gcc/

	* combine.c (simplify_set): Do not transform subregs to zero_extends
	if the destination mode is a vector mode.



Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/combine.c



More information about the Gcc-cvs mailing list