strub: enable conditional support
[official-gcc.git] / gcc / testsuite / g++.dg / torture / pr70526.C
blob37a3e5f5a495fb1cc501b6bf120645e2d246940d
1 // { dg-do run }
3 typedef unsigned uint32_t;
5 template<typename T>
6 struct AlignedStorage2
8   char mBytes[sizeof(T)];
10   const T* addr() const { return reinterpret_cast<const T*>(mBytes); }
11   T* addr() { return reinterpret_cast<T*>(mBytes); }
14 struct Register {
15     uint32_t reg_;
18 class TypedOrValueRegister
20   AlignedStorage2<Register> typed;
21   __attribute__((noinline)) Register& dataTyped() { return *typed.addr(); }
22 public:
23   TypedOrValueRegister(Register reg)
24     {
25       dataTyped() = reg;
26     }
27   Register typedReg() const { return *typed.addr(); }
30 int main() {
31     Register reg = { 10u };
32     if (TypedOrValueRegister(reg).typedReg().reg_ != 10)
33       __builtin_abort();
34     return 0;