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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
     Ever confirmed|0                           |1
   Last reconfirmed|                            |2025-04-14
             Status|UNCONFIRMED                 |NEW

--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Partition 1: size 24 align 16
        bitint.4        bitint.3

This is definitely wrong but it is correct based on the IR:
  MEM[(unsigned long *)&bitint.4] = 0;
  MEM[(unsigned long *)&bitint.4 + 8B] = 0;
  MEM[(unsigned long *)&bitint.4 + 16B] = 0;
  _100 = MEM[(unsigned long *)&bitint.4];
  MEM[(unsigned long *)&bitint.4] = _100;
  _101 = MEM[(unsigned long *)&bitint.4 + 8B];
  MEM[(unsigned long *)&bitint.4 + 8B] = _101;
  _102 = MEM[(unsigned long *)&bitint.4 + 16B];
  _103 = (<unnamed-signed:1>) _102;
  _104 = (unsigned long) _103;
  MEM[(unsigned long *)&bitint.4 + 16B] = _104;
  _94 = MEM[(unsigned long *)&bitint.4];
  MEM[(unsigned long *)&bitint.2] = _94;
  _95 = MEM[(unsigned long *)&bitint.4 + 8B];
  MEM[(unsigned long *)&bitint.2 + 8B] = _95;
  _96 = MEM[(unsigned long *)&bitint.4 + 16B];
  _97 = (<unnamed-signed:1>) _96;
  _98 = (<unnamed-unsigned:1>) _97;
  _99 = (unsigned long) _98;
  MEM[(unsigned long *)&bitint.2 + 16B] = _99;
  bitint.4 ={v} {CLOBBER(eos)};

So the bug is in bitlowering.

  b_5 = 0;
  b.0_6 = b_5;

b_5 -> bitint.4
b.0_6 -> bitint.4

Reply via email to