diff options
author | Jeff Law <jlaw@ventanamicro.com> | 2024-07-06 06:35:54 -0600 |
---|---|---|
committer | Jeff Law <jlaw@ventanamicro.com> | 2024-07-06 06:39:32 -0600 |
commit | cb9badea8be5396afe90f4c497e9f333cce1cb3f (patch) | |
tree | 0910369fa4e763ac0a8ad3db73ff6144f1fca699 /gcc/cp/module.cc | |
parent | 96559be74bfa355507472fc020c95c14587c227f (diff) | |
download | gcc-cb9badea8be5396afe90f4c497e9f333cce1cb3f.zip gcc-cb9badea8be5396afe90f4c497e9f333cce1cb3f.tar.gz gcc-cb9badea8be5396afe90f4c497e9f333cce1cb3f.tar.bz2 |
[committed] Fix various sh define_insn_and_split predicates
The sh4-linux-gnu port has failed to bootstrap since the introduction of late
combine due to failures to split certain insns.
This is caused by incorrect predicates in various define_insn_and_split
patterns. Essentially the insn's predicate is something like "TARGET_SH1".
The split predicate is "&& can_create_pseudos_p ()". So these patterns will
match post-reload, but be un-splittable. So at assembly output time, we get
the failure as the output template is "#".
This patch fixes the most obvious & egregious cases by bringing the split
condition into the insn's predicate and leaving "&& 1" as the split condition.
That's enough to get sh4-linux-gnu bootstrapping again and I'm hoping it does
the same for sh4eb-linux-gnu.
Pushing to the trunk.
gcc/
* config/sh/sh.md (adddi3): Only allow matching when we can
still create new pseudos.
(subdi3, *rotcl, *rotcr, *rotcr_neg_t, negdi2): Likewise.
(abs<mode>2, negabs<mode>2, negdi_cond): Likewise.
(*swapbisi2_and_shl8, *swapbhisi2, *movsi_index_disp_load): Likewise.
(*movhi_index_disp_load, *mov<mode>index_disp_store): Likewise.
(*mov_t_msb_neg, *negt_msb, clipu_one): Likewise.
Diffstat (limited to 'gcc/cp/module.cc')
0 files changed, 0 insertions, 0 deletions