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

Iain Buclaw <ibuclaw at gdcproject dot org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
  Attachment #49006|0                           |1
        is obsolete|                            |

--- Comment #5 from Iain Buclaw <ibuclaw at gdcproject dot org> ---
Created attachment 49010
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=49010&action=edit
inline memset v2

Slight tweak to the patch to use indirect_ref instead (as mem_ref wasn't
understood either).

Generated code looks a lot more sensible now.

x86_64 -O1:
  // 0..128 = 0
  MEM[(uint128_t *)&D.4341] = 0;
  // 128..192 = 0
  MEM[(ulong *)&D.4341 + 16B] = 0;
  // 0..32 = 12
  D.4341.payload = 12;
  // 64..128 = 18446744073709551615
  D.4341.hook.var1 = 18446744073709551615;
  // 128..160 = 4294967295
  D.4341.hook.var2 = 4294967295;

x86_64 -O2:
  // 0..64 = 12
  MEM <unsigned long> [(void *)&D.4341] = 12;
  // 64..128 = 18446744073709551615
  MEM <unsigned long> [(void *)&D.4341 + 8B] = 18446744073709551615;
  // 128..192 = 4294967295
  MEM <unsigned long> [(void *)&D.4341 + 16B] = 4294967295;

SPARC64 -O1:
  // 0..128 = 0
  MEM[(uint128_t *)&D.1303] = 0;
  // 128..192 = 0
  MEM[(ulong *)&D.1303 + 16B] = 0;
  // 0..32 = 12
  D.1303.payload = 12;
  // 64..128 = 18446744073709551615
  D.1303.hook.var1 = 18446744073709551615;
  // 128..160 = 4294967295
  D.1303.hook.var2 = 4294967295;

SPARC64 -O2:
  // 0..64 = 12, 64..128 = 18446744073709551615
  MEM <uint128_t> [(void *)&D.1048] = 0xc00000000ffffffffffffffff;
  // 128..192 = 18446744069414584320
  MEM <ulong> [(void *)&D.1048 + 16B] = 18446744069414584320;

Reply via email to