https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113395

            Bug ID: 113395
           Summary: RTL expansion drops MEM_EXPR
           Product: gcc
           Version: 14.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: middle-end
          Assignee: unassigned at gcc dot gnu.org
          Reporter: rguenth at gcc dot gnu.org
  Target Milestone: ---

struct S {
  signed m : 7;
  signed e : 2;
} g;

void
k()
{
  g.e ^= 1;
}

expands as

(insn 8 7 0 (parallel [
            (set (mem/j/c:HI (reg/f:DI 100) [0 +0 S2 A32])
                (xor:HI (mem/j/c:HI (reg/f:DI 100) [0 +0 S2 A32])
                    (reg:HI 101)))
            (clobber (reg:CC 17 flags))
        ]) "t.c":9:7 -1
     (nil))

similar g.e = 1;

(insn 9 8 10 (set (reg:HI 102)
        (mem/j/c:HI (reg/f:DI 101) [0 +0 S2 A32])) "t.c":9:7 -1
     (nil))
...
(insn 12 11 0 (set (mem/j/c:HI (reg/f:DI 101) [0 +0 S2 A32])
        (reg:HI 104)) "t.c":9:7 -1
     (nil))

Reply via email to