diff options
author | liuhongt <hongtao.liu@intel.com> | 2023-06-26 09:50:25 +0800 |
---|---|---|
committer | liuhongt <hongtao.liu@intel.com> | 2023-06-27 14:13:08 +0800 |
commit | 0b811120b0eb75d6ec01e3d09df9f94f29d7300c (patch) | |
tree | 633ba2345ead6a2851d3ddf0a99e2468e135e125 /gcc/value-range.cc | |
parent | a90f558bbb87c0b5d2b1e07d55bd585b2285cf3d (diff) | |
download | gcc-0b811120b0eb75d6ec01e3d09df9f94f29d7300c.zip gcc-0b811120b0eb75d6ec01e3d09df9f94f29d7300c.tar.gz gcc-0b811120b0eb75d6ec01e3d09df9f94f29d7300c.tar.bz2 |
Make option mvzeroupper independent of optimization level.
pass_insert_vzeroupper is under condition
TARGET_AVX && TARGET_VZEROUPPER
&& flag_expensive_optimizations && !optimize_size
But the document of mvzeroupper doesn't mention the insertion
required -O2 and above, it may confuse users when they explicitly
use -Os -mvzeroupper.
------------
mvzeroupper
Target Mask(VZEROUPPER) Save
Generate vzeroupper instruction before a transfer of control flow out of
the function.
------------
The patch moves flag_expensive_optimizations && !optimize_size to
ix86_option_override_internal. It makes -mvzeroupper independent of
optimization level, but still keeps the behavior of architecture
tuning(emit_vzeroupper) unchanged.
gcc/ChangeLog:
* config/i386/i386-features.cc (pass_insert_vzeroupper:gate):
Move flag_expensive_optimizations && !optimize_size to ..
* config/i386/i386-options.cc (ix86_option_override_internal):
.. this, it makes -mvzeroupper independent of optimization
level, but still keeps the behavior of architecture
tuning(emit_vzeroupper) unchanged.
gcc/testsuite/ChangeLog:
* gcc.target/i386/avx-vzeroupper-29.c: New testcase.
Diffstat (limited to 'gcc/value-range.cc')
0 files changed, 0 insertions, 0 deletions