diff options
author | James Greenhalgh <james.greenhalgh@arm.com> | 2017-12-12 11:27:54 +0000 |
---|---|---|
committer | James Greenhalgh <jgreenhalgh@gcc.gnu.org> | 2017-12-12 11:27:54 +0000 |
commit | c5060cadf030f6517a1552bf0fc263cb03eb96c4 (patch) | |
tree | 1ef03d795f5e00306bb2200aa40cf082fc59bb06 /gcc/errors.c | |
parent | 49e6a6c023d1b91c90d3fbdf16adf20dff246156 (diff) | |
download | gcc-c5060cadf030f6517a1552bf0fc263cb03eb96c4.zip gcc-c5060cadf030f6517a1552bf0fc263cb03eb96c4.tar.gz gcc-c5060cadf030f6517a1552bf0fc263cb03eb96c4.tar.bz2 |
[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.
From-SVN: r255578
Diffstat (limited to 'gcc/errors.c')
0 files changed, 0 insertions, 0 deletions