https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81953
Bug ID: 81953 Summary: Code sinking results in increased use of callee saved registers Product: gcc Version: 8.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: pthaugen at gcc dot gnu.org CC: dje.gcc at gmail dot com, wschmidt at gcc dot gnu.org Target Milestone: --- Host: powerpc64le-unknown-linux-gnu Target: powerpc64le-unknown-linux-gnu Build: powerpc64le-unknown-linux-gnu void bar(); int j; void foo(int a, int b, int c, int d, int e, int f) { int l; l = a + b + c + d +e + f; if (a != 5) { bar(); j = l; } } The whole expression "l = a + b + c..." is moved past the call to bar(), which means we now need to use 6 callee-saved regs to hold the parm values across the call.