[llvm-bugs] [Bug 50120] New: DSE fails to shorten sizes of memsets
via llvm-bugs
llvm-bugs at lists.llvm.org
Sun Apr 25 20:37:59 PDT 2021
https://bugs.llvm.org/show_bug.cgi?id=50120
Bug ID: 50120
Summary: DSE fails to shorten sizes of memsets
Product: libraries
Version: trunk
Hardware: PC
OS: Linux
Status: NEW
Severity: enhancement
Priority: P
Component: Scalar Optimizations
Assignee: unassignedbugs at nondot.org
Reporter: david.bolvansky at gmail.com
CC: llvm-bugs at lists.llvm.org
https://godbolt.org/z/48TT9dPvP
#include <string.h>
struct pam {
void *p1;
void *p2;
#ifdef LONG
unsigned long size;
#else
unsigned int size;
unsigned int pad;
#endif
};
extern int use(struct pam *param);
unsigned int foo(void) {
struct pam s_pam;
memset(&s_pam, 0, sizeof(struct pam));
s_pam.size = 1;
return use(&s_pam);
}
For LONG case DSE changes 24->16
call void @llvm.memset.p0i8.i64(i8* noundef nonnull align 8
dereferenceable(24) %2, i8 0, i64 16, i1 false), !dbg !24
For INT case - no change - 24->24
call void @llvm.memset.p0i8.i64(i8* noundef nonnull align 8
dereferenceable(24) %2, i8 0, i64 24, i1 false), !dbg !23
INT case:
foo(): # @foo()
sub rsp, 24
xorps xmm0, xmm0
movaps xmmword ptr [rsp], xmm0
mov qword ptr [rsp + 16], 0 // ******
mov dword ptr [rsp + 16], 1 // ******
mov rdi, rsp
call use(pam*)
add rsp, 24
ret
LONG case:
foo(): # @foo()
sub rsp, 24
xorps xmm0, xmm0
movaps xmmword ptr [rsp], xmm0
mov qword ptr [rsp + 16], 1 // ******
mov rdi, rsp
call use(pam*)
add rsp, 24
ret
--
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20210426/7d340984/attachment.html>
More information about the llvm-bugs
mailing list