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