When compilers surprise you
xania.org·3d·
Discuss: Hacker News
🏃Escape Analysis
Preview
Report Post

Written by me, proof-read by an LLM. Details at end.

Every now and then a compiler will surprise me with a really smart trick. When I first saw this optimisation I could hardly believe it. I was looking at loop optimisation, and wrote something like this simple function that sums all the numbers up to a given value:

So far so decent: GCC has done some preliminary checks, then fallen into a loop that efficiently sums numbers using lea (we’ve seen this before). But taking a closer look at the loop we see something unusual:

.L3:
lea edx, [rdx+1+rax*2]        ; result = result + 1 + x*2
add eax, 2                    ; x += 2
cmp edi, eax                  ; x != value
jne .L3                       ; keep looping

The compiler …

Similar Posts

Loading similar posts...