https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102798
--- Comment #1 from H.J. Lu <hjl.tools at gmail dot com> --- Source has __attribute__((__noipa__)) void BUF_reverse (unsigned char *out, const unsigned char *in, size_t size) { size_t i; if (in) { out += size - 1; for (i = 0; i < size; i++) *out-- = *in++; } else We generate BUF_reverse: .LFB0: .cfi_startproc movq %rdi, %r8 movq %rsi, %rcx movq %rdx, %rax testq %rdx, %rdx <<< RDX has size, not in. je .L28