(root)/
gcc-13.2.0/
gcc/
testsuite/
g++.dg/
torture/
pr103266.C
// { dg-do run }
/* { dg-additional-options "-std=c++14" } */
    typedef unsigned int u32;
    typedef unsigned char u8;

    static u32 pu8to32(const u8 * p8) __attribute__((noinline));
    static u32 pu8to32(const u8 * p8) {
      u32 v;
    
      __builtin_memcpy(&v, __builtin_assume_aligned(p8, 1), sizeof(u32));
    
      return v;
    }
    
    int main(void) {
      // dse1 throws this store away
      u8 d[sizeof(u32)] = {
          0x07, 0x00, 0x00, 0x07,
      };
    
      if (pu8to32(d) != 0x07000007)
        __builtin_trap();
    }