// { 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(); | |
} |