diff options
Diffstat (limited to 'gcc/testsuite/g++.dg/init/struct2.C')
-rw-r--r-- | gcc/testsuite/g++.dg/init/struct2.C | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/init/struct2.C b/gcc/testsuite/g++.dg/init/struct2.C new file mode 100644 index 000000000..85aacc6fa --- /dev/null +++ b/gcc/testsuite/g++.dg/init/struct2.C @@ -0,0 +1,22 @@ +/* PR c++/23180. */ +/* Initialize a local structure with an expression that attempts to use + pointer arithmetic to calculate another structure field offset. */ + +void saveLoadEntries(const void *); + +void saveOrLoad() { + struct Track { + char soundName[15]; + }; + struct SaveLoadEntry { + int offs; + int type; + int size; + }; + + SaveLoadEntry trackEntries = { + ((long) (__SIZE_TYPE__) (&((Track *) 42)->soundName[0])) - 42, + 0, 1 + }; + saveLoadEntries(&trackEntries); +} |