https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102008
--- Comment #2 from luoxhu at gcc dot gnu.org ---
Confirmed if move the sink2 pass before phiopt4 could restore the previous
instructons for this case:
test:
.LFB0:
.cfi_startproc
cmp w0, 1
ldp w0, w1, [x1]
csel w0, w1, w0, ne
ret
.cfi_endproc
diff --git a/gcc/passes.def b/gcc/passes.def
index 945d2bc797c..83b8310f1ee 100644
--- a/gcc/passes.def
+++ b/gcc/passes.def
@@ -345,10 +345,10 @@ along with GCC; see the file COPYING3. If not see
/* After late CD DCE we rewrite no longer addressed locals into SSA
form if possible. */
NEXT_PASS (pass_forwprop);
+ NEXT_PASS (pass_sink_code);
NEXT_PASS (pass_phiopt, false /* early_p */);
NEXT_PASS (pass_fold_builtins);
NEXT_PASS (pass_optimize_widening_mul);
- NEXT_PASS (pass_sink_code);
NEXT_PASS (pass_store_merging);
NEXT_PASS (pass_tail_calls);
ls *sink*
pr102008.c.139t.sink1 pr102008.c.199t.sink2
ls *phiopt*
pr102008.c.042t.phiopt1 pr102008.c.119t.phiopt2 pr102008.c.131t.phiopt3
pr102008.c.200t.phiopt4