<
8000
react-app
app-name="issues-react"
initial-path="/llvm/llvm-project/issues/139810"
style="display: block; min-height: calc(100vh - 64px);"
data-attempted-ssr="true"
data-ssr="true"
data-lazy="false"
data-alternate="false"
data-data-router-enabled="false"
>
[missed optimization] Missed removing loop of setting zero when dereference pointer (memset) #139810
No one assignedNo typeNo projectsNo milestoneNone yetNo branches or pull requests
Closed as not planned
Closed as not planned
Description
void f0(unsigned char *ptr, unsigned long len){
for(unsigned long i = 0; i < len; ++i){
ptr[i] = 0;
}
}
void f1(unsigned char *ptr, unsigned long len){
for(unsigned long i = 0; i < len; ++i){
while(ptr[i])
ptr[i]--;
}
}
void f2(unsigned char *ptr){
while(ptr[0])
ptr[0]--;
}
When flags are -O3,
f1() compares if ptr[i] is zero before setting it to zero and f0() memset it to zero.
When flags are -O3 and -march=icelake-client, f1() doesn't call memset like f0().