summaryrefslogtreecommitdiffstats
path: root/Python/optimizer_analysis.c
diff options
context:
space:
mode:
authormpage <mpage@meta.com>2025-04-01 17:18:42 (GMT)
committerGitHub <noreply@github.com>2025-04-01 17:18:42 (GMT)
commit053c285f6b41f92fbdd1d4ff0c959cceefacd7cd (patch)
treec30af215989dca6fdd8f8ebb74396f29abdca308 /Python/optimizer_analysis.c
parente9556e100452ed5a92fcf0e333ab75b0da29cf5b (diff)
downloadcpython-053c285f6b41f92fbdd1d4ff0c959cceefacd7cd.zip
cpython-053c285f6b41f92fbdd1d4ff0c959cceefacd7cd.tar.gz
cpython-053c285f6b41f92fbdd1d4ff0c959cceefacd7cd.tar.bz2
gh-130704: Strength reduce `LOAD_FAST{_LOAD_FAST}` (#130708)
Optimize `LOAD_FAST` opcodes into faster versions that load borrowed references onto the operand stack when we can prove that the lifetime of the local outlives the lifetime of the temporary that is loaded onto the stack.
Diffstat (limited to 'Python/optimizer_analysis.c')
-rw-r--r--Python/optimizer_analysis.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/Python/optimizer_analysis.c b/Python/optimizer_analysis.c
index 017a2ee..afaf2e0 100644
--- a/Python/optimizer_analysis.c
+++ b/Python/optimizer_analysis.c
@@ -573,6 +573,7 @@ remove_unneeded_uops(_PyUOpInstruction *buffer, int buffer_size)
if (last->opcode == _LOAD_CONST_INLINE ||
last->opcode == _LOAD_CONST_INLINE_BORROW ||
last->opcode == _LOAD_FAST ||
+ last->opcode == _LOAD_FAST_BORROW ||
last->opcode == _COPY
) {
last->opcode = _NOP;