// Test for std::byte aliasing properties.
// { dg-do compile { target c++17 } }
// { dg-options "-O3" }

#include <cstddef>

using byte = std::byte;

enum class notbyte: unsigned char {} *np;

int main()
{
  int x;

  /* Stores through byte* can alias int, so the compiler can't optimize
     "x != 0".  */
  byte *p = (byte*)&x;
  x = 42;
  for (int i = 0; i < 4; ++i)
    p[i] = byte(0);
  if (x != 0)
    __builtin_abort();

  /* Stores through notbyte* mustn't alias int, so at -O3 the compiler should
     optimize "x != 42" to false.  */
  notbyte *np = (notbyte*)&x; 
  x = 42;
  for (int i = 0; i < 4; ++i)
    np[i] = notbyte(0);
  if (x != 42)
    __builtin_abort();
}
