https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97397
Bug ID: 97397
Summary: Unnecessary mov instruction
Product: gcc
Version: 11.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: drepper.fsp+rhbz at gmail dot com
Target Milestone: ---
This simple code
const char s[][3] = { "aa", "bb", "cc", "dd", "ee" };
unsigned f(unsigned x)
{
return s[x][1];
}
translates with gcc 10.1 and the current 11.0 trunk version to
0: 89 ff mov %edi,%edi
2: 0f be 84 7f 00 00 00 movsbl 0x0(%rdi,%rdi,2),%eax
9: 00
a: c3 retq
Obviously, the initial mov instruction is completely unnecessary.