public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c/100260] New: DSE: join stores
@ 2021-04-26 3:38 david.bolvansky at gmail dot com
2021-04-26 9:21 ` [Bug tree-optimization/100260] " rguenth at gcc dot gnu.org
0 siblings, 1 reply; 2+ messages in thread
From: david.bolvansky at gmail dot com @ 2021-04-26 3:38 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100260
Bug ID: 100260
Summary: DSE: join stores
Product: gcc
Version: tree-ssa
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
Assignee: unassigned at gcc dot gnu.org
Reporter: david.bolvansky at gmail dot com
Target Milestone: ---
#include <string.h>
struct pam {
void *p1;
void *p2;
#ifdef LONG
unsigned long size;
#else
unsigned int pad;
unsigned int size;
#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);
}
INT
foo():
sub rsp, 40
pxor xmm0, xmm0
mov rdi, rsp
mov DWORD PTR [rsp+16], 0
mov DWORD PTR [rsp+20], 1
movaps XMMWORD PTR [rsp], xmm0
call use(pam*)
add rsp, 40
ret
LONG
foo():
sub rsp, 40
pxor xmm0, xmm0
mov rdi, rsp
movaps XMMWORD PTR [rsp], xmm0
mov QWORD PTR [rsp+16], 1
call use(pam*)
add rsp, 40
ret
Stores
mov DWORD PTR [rsp+16], 0
mov DWORD PTR [rsp+20], 1
can be replaced with one mov QWORD..
^ permalink raw reply [flat|nested] 2+ messages in thread
* [Bug tree-optimization/100260] DSE: join stores
2021-04-26 3:38 [Bug c/100260] New: DSE: join stores david.bolvansky at gmail dot com
@ 2021-04-26 9:21 ` rguenth at gcc dot gnu.org
0 siblings, 0 replies; 2+ messages in thread
From: rguenth at gcc dot gnu.org @ 2021-04-26 9:21 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100260
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Ever confirmed|0 |1
Status|UNCONFIRMED |NEW
CC| |ebotcazou at gcc dot gnu.org,
| |jakub at gcc dot gnu.org
Last reconfirmed| |2021-04-26
--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
Confirmed. store-merging doesn't seem to consider memset() as candidate to
merge with:
Processing basic block <2>:
Starting active chain number 1 with statement:
s_pam.size = 1;
The base object is:
&s_pam
stmt causes chain termination:
_1 = use (&s_pam);
Terminating chain with 1 stores
unsigned int foo ()
{
struct pam s_pam;
int _1;
unsigned int _6;
<bb 2> [local count: 1073741824]:
memset (&s_pam, 0, 20);
s_pam.size = 1;
_1 = use (&s_pam);
_6 = (unsigned int) _1;
s_pam ={v} {CLOBBER};
return _6;
}
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2021-04-26 9:21 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-04-26 3:38 [Bug c/100260] New: DSE: join stores david.bolvansky at gmail dot com
2021-04-26 9:21 ` [Bug tree-optimization/100260] " rguenth at gcc dot gnu.org
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).