https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116689
Bug ID: 116689 Summary: Some simple scheduling to reduce register presure should be done on the gimple level Product: gcc Version: 15.0 Status: UNCONFIRMED Keywords: missed-optimization Severity: enhancement Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: pinskia at gcc dot gnu.org Target Milestone: --- Take: ``` int h(void); int h1(void); int f(int a, int b, int d) { int c = d > 0 ? d : -d; if (a < 0) { a = h(); } else { a = h1(); } return a + c + d; } ``` Right now with -O2, we don't move (sink?) the assignment of c past the conditional even though it is not used in the conditional and would reduce the life range of c and reduce the register pressure by only have 2 variables across the calls. If we have `a + c` for the return then sinking the assignment of c does not make a difference.