Marginal improvement for generated code in execExprInterp.c.

Tom Lane <tgl@sss.pgh.pa.us>

Commit: 136ab7c5a5f54fecea7c28c8550c19123245acf0
Author: Tom Lane <tgl@sss.pgh.pa.us>
Date: 2017-09-29T15:32:05Z
Releases: 11.0
Marginal improvement for generated code in execExprInterp.c.

Avoid the coding pattern "*op->resvalue = f();", as some compilers think
that requires them to evaluate "op->resvalue" before the function call.
Unless there are lots of free registers, this can lead to a useless
register spill and reload across the call.

I changed all the cases like this in ExecInterpExpr(), but didn't bother
in the out-of-line opcode eval subroutines, since those are presumably
not as performance-critical.

Discussion: https://postgr.es/m/2508.1506630094@sss.pgh.pa.us

Files

PathChange+/−
src/backend/executor/execExprInterp.c modified +42 −17

Discussion