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

Drea Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
            Summary|[16/17 Regression] wrong    |[13/14/15/16/17 Regression]
                   |code due to ce1 combining 2 |wrong code due to ce1
                   |loads of different          |combining 2 loads of
                   |incompatible aliasing sets  |different incompatible
                   |                            |aliasing sets
     Ever confirmed|0                           |1
      Known to fail|                            |7.1.0
   Target Milestone|---                         |13.5
      Known to work|                            |6.1.0
   Last reconfirmed|                            |2026-06-09

--- Comment #2 from Drea Pinski <pinskia at gcc dot gnu.org> ---
`-O2 -fno-tree-pre -fno-code-hoisting` I can reproduce it even in GCC 15.
Looks like it was working in GCC 6 though but the aliasing set was wrong even
then (after ce1 in GCC 6):
```
(insn 12 11 15 3 (set (reg/v:DI 87 [ c ])
        (mem:DI (reg/v/f:DI 90 [ cc ]) [1 MEM[(long int *)cc_6(D)]+0 S8 A64]))
/app/example.cpp:6 85 {*movdi_internal}
     (expr_list:REG_DEAD (reg/v/f:DI 90 [ cc ])
        (nil)))
(code_label 15 12 16 4 2 "" [1 uses])
(note 16 15 17 4 [bb 4] NOTE_INSN_BASIC_BLOCK)
(insn 17 16 18 4 (set (reg/v:DI 87 [ c ])
        (mem:DI (reg/v/f:DI 90 [ cc ]) [2 MEM[(long long int *)cc_6(D)]+0 S8
A64])) /app/example.cpp:8 85 {*movdi_internal}
     (expr_list:REG_DEAD (reg/v/f:DI 90 [ cc ])
        (nil)))
(code_label 18 17 19 5 3 "" [0 uses])
(note 19 18 20 5 [bb 5] NOTE_INSN_BASIC_BLOCK)
(insn 20 19 25 5 (set (mem:DI (reg/v/f:DI 91 [ d ]) [1 *d_3(D)+0 S8 A64])
        (const_int 1 [0x1])) /app/example.cpp:9 85 {*movdi_internal}
     (expr_list:REG_DEAD (reg/v/f:DI 91 [ d ])
        (nil)))
```

Reply via email to