diff --git a/gcc/config/aarch64/aarch64-ldp-fusion.cc b/gcc/config/aarch64/aarch64-ldp-fusion.cc index 703cfb1228c..6834560c5fb 100644 --- a/gcc/config/aarch64/aarch64-ldp-fusion.cc +++ b/gcc/config/aarch64/aarch64-ldp-fusion.cc @@ -2216,11 +2216,11 @@ ldp_bb_info::try_fuse_pair (bool load_p, unsigned access_size, ignore[j] = &XEXP (cand_mems[j], 0); insn_info *h = first_hazard_after (insns[0], ignore[0]); - if (h && *h <= *insns[1]) + if (h && *h < *insns[1]) cand.hazards[0] = h; h = latest_hazard_before (insns[1], ignore[1]); - if (h && *h >= *insns[0]) + if (h && *h > *insns[0]) cand.hazards[1] = h; if (!cand.viable ()) diff --git a/gcc/testsuite/gcc.target/aarch64/pr113356.C b/gcc/testsuite/gcc.target/aarch64/pr113356.C new file mode 100644 index 00000000000..0de17a54a53 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/pr113356.C @@ -0,0 +1,8 @@ +// { dg-do compile } +// { dg-options "-Os -fnon-call-exceptions -mearly-ldp-fusion -fno-lifetime-dse -fno-forward-propagate" } +struct Class1 { + virtual ~Class1() {} + unsigned Field1; +}; +struct Class4 : virtual Class1 {}; +int main() { Class4 var1; }