| /* https://issues.dlang.org/show_bug.cgi?id=15399 |
| TEST_OUTPUT: |
| --- |
| fail_compilation/test15399.d(32): Error: field `S1.ptr` cannot modify misaligned pointers in `@safe` code |
| fail_compilation/test15399.d(33): Error: field `S2.ptr` cannot modify misaligned pointers in `@safe` code |
| fail_compilation/test15399.d(34): Error: field `S1.ptr` cannot modify misaligned pointers in `@safe` code |
| fail_compilation/test15399.d(35): Error: field `S2.ptr` cannot modify misaligned pointers in `@safe` code |
| fail_compilation/test15399.d(36): Error: field `S1.ptr` cannot modify misaligned pointers in `@safe` code |
| fail_compilation/test15399.d(37): Error: field `S2.ptr` cannot modify misaligned pointers in `@safe` code |
| fail_compilation/test15399.d(38): Error: field `S1.ptr` cannot modify misaligned pointers in `@safe` code |
| fail_compilation/test15399.d(39): Error: field `S2.ptr` cannot modify misaligned pointers in `@safe` code |
| --- |
| */ |
| |
| struct S1 |
| { |
| char c; |
| align (1) |
| int* ptr; |
| } |
| |
| align (1) |
| struct S2 |
| { |
| int* ptr; |
| } |
| |
| @safe void test(S1* s1, S2* s2) |
| { |
| int* p = s1.ptr; |
| p = s2.ptr; |
| s1.ptr = null; |
| s2.ptr = null; |
| int** pp = &s1.ptr; |
| pp = &s2.ptr; |
| bar(s1.ptr); |
| bar(s2.ptr); |
| sinister(s1.ptr); |
| sinister(s2.ptr); |
| cbar(s1.ptr); |
| cbar(s2.ptr); |
| } |
| |
| @safe void bar(ref int*); |
| @safe void cbar(ref const int*); |
| @safe void sinister(out int*); |