diff options
author | Manolis Tsamis <manolis.tsamis@vrull.eu> | 2023-08-29 11:47:39 +0200 |
---|---|---|
committer | Philipp Tomsich <philipp.tomsich@vrull.eu> | 2024-08-12 14:57:22 +0200 |
commit | b219cbeda72d23b7ad6ff12cd159784b7ef00667 (patch) | |
tree | d4df405d34ee4d44a9cae1833ab4ac021a3e8775 /libgo/PATENTS | |
parent | 72c9b5f438f22cca493b4e2a8a2a31ff61bf1477 (diff) | |
download | gcc-b219cbeda72d23b7ad6ff12cd159784b7ef00667.zip gcc-b219cbeda72d23b7ad6ff12cd159784b7ef00667.tar.gz gcc-b219cbeda72d23b7ad6ff12cd159784b7ef00667.tar.bz2 |
ifcvt: Handle multiple rewired regs and refactor noce_convert_multiple_sets
The existing implementation of need_cmov_or_rewire and
noce_convert_multiple_sets_1 assumes that sets are either REG or SUBREG.
This commit enchances them so they can handle/rewire arbitrary set statements.
To do that a new helper struct noce_multiple_sets_info is introduced which is
used by noce_convert_multiple_sets and its helper functions. This results in
cleaner function signatures, improved efficientcy (a number of vecs and hash
set/map are replaced with a single vec of struct) and simplicity.
gcc/ChangeLog:
* ifcvt.cc (need_cmov_or_rewire): Renamed init_noce_multiple_sets_info.
(init_noce_multiple_sets_info): Initialize noce_multiple_sets_info.
(noce_convert_multiple_sets_1): Use noce_multiple_sets_info and handle
rewiring of multiple registers.
(noce_convert_multiple_sets): Updated to use noce_multiple_sets_info.
* ifcvt.h (struct noce_multiple_sets_info): Introduce new struct
noce_multiple_sets_info to store info for noce_convert_multiple_sets.
gcc/testsuite/ChangeLog:
* gcc.target/aarch64/ifcvt_multiple_sets_rewire.c: New test.
Diffstat (limited to 'libgo/PATENTS')
0 files changed, 0 insertions, 0 deletions