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).