aboutsummaryrefslogtreecommitdiff
path: root/libcpp
diff options
context:
space:
mode:
authorliuhongt <hongtao.liu@intel.com>2024-03-13 10:40:01 +0800
committerliuhongt <hongtao.liu@intel.com>2024-03-14 15:55:15 +0800
commit618e34d56cc38e9c3ae95a413228068e53ed76bb (patch)
tree10cf6fe3177b50bb81a50c6890b76ed0f8908e78 /libcpp
parent746b71e26bd43366297f3e9f2f7d5f782c30622e (diff)
downloadgcc-618e34d56cc38e9c3ae95a413228068e53ed76bb.zip
gcc-618e34d56cc38e9c3ae95a413228068e53ed76bb.tar.gz
gcc-618e34d56cc38e9c3ae95a413228068e53ed76bb.tar.bz2
i386[stv]: Handle REG_EH_REGION note
When we split (insn 37 36 38 10 (set (reg:DI 104 [ _18 ]) (mem:DI (reg/f:SI 98 [ CallNative_nclosure.0_1 ]) [6 MEM[(struct SQRefCounted *)CallNative_nclosure.0_1]._uiRef+0 S8 A32])) "test.C":22:42 84 {*movdi_internal} (expr_list:REG_EH_REGION (const_int -11 [0xfffffffffffffff5]) into (insn 104 36 37 10 (set (subreg:V2DI (reg:DI 124) 0) (vec_concat:V2DI (mem:DI (reg/f:SI 98 [ CallNative_nclosure.0_1 ]) [6 MEM[(struct SQRefCounted *)CallNative_nclosure.0_1]._uiRef+0 S8 A32]) (const_int 0 [0]))) "test.C":22:42 -1 (nil))) (insn 37 104 105 10 (set (subreg:V2DI (reg:DI 104 [ _18 ]) 0) (subreg:V2DI (reg:DI 124) 0)) "test.C":22:42 2024 {movv2di_internal} (expr_list:REG_EH_REGION (const_int -11 [0xfffffffffffffff5]) (nil))) we must copy the REG_EH_REGION note to the first insn and split the block after the newly added insn. The REG_EH_REGION on the second insn will be removed later since it no longer traps. gcc/ChangeLog: * config/i386/i386-features.cc (general_scalar_chain::convert_op): Handle REG_EH_REGION note. (convert_scalars_to_vector): Ditto. * config/i386/i386-features.h (class scalar_chain): New memeber control_flow_insns. gcc/testsuite/ChangeLog: * g++.target/i386/pr111822.C: New test.
Diffstat (limited to 'libcpp')
0 files changed, 0 insertions, 0 deletions