re PR c++/23180 (Segfault on const initializer with bogus pointer arithmetics)
authorJosh Conner <jconner@apple.com>
Fri, 9 Sep 2005 01:39:36 +0000 (01:39 +0000)
committerJosh Conner <jconner@gcc.gnu.org>
Fri, 9 Sep 2005 01:39:36 +0000 (01:39 +0000)
        PR c++/23180
        * g++.dg/init/pr23180-1.C: New test.
        * g++.dg/init/pr23180-2.C: New test.

From-SVN: r104070

gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/init/pr23180-1.C [new file with mode: 0644]
gcc/testsuite/g++.dg/init/pr23180-2.C [new file with mode: 0644]

index a9753daa32f2baec23aa3cb2d0dfd7373633a07d..ed9e1b8a6e3dc18057fbb62f0c384ff311dde959 100644 (file)
@@ -1,3 +1,9 @@
+2005-09-08  Josh Conner  <jconner@apple.com>
+
+       PR c++/23180
+       * g++.dg/init/pr23180-1.C: New test.
+       * g++.dg/init/pr23180-2.C: New test.
+
 2005-09-09  Paul Thomas  <pault@gcc.gnu.org>
 
        PR fortran/18878
diff --git a/gcc/testsuite/g++.dg/init/pr23180-1.C b/gcc/testsuite/g++.dg/init/pr23180-1.C
new file mode 100644 (file)
index 0000000..65865dd
--- /dev/null
@@ -0,0 +1,17 @@
+void saveLoadEntries(const void *);
+void saveOrLoad() {
+    struct Track {
+        char soundName[15];
+    };
+    struct SaveLoadEntry {
+        int offs;
+        int type;
+        int size;
+    };    
+
+    SaveLoadEntry trackEntries = {
+       ((long) (&((Track *) 42)->soundName[0])) - 42,
+        0, 1
+    };
+    saveLoadEntries(&trackEntries);
+}
diff --git a/gcc/testsuite/g++.dg/init/pr23180-2.C b/gcc/testsuite/g++.dg/init/pr23180-2.C
new file mode 100644 (file)
index 0000000..a166df5
--- /dev/null
@@ -0,0 +1,11 @@
+struct Track {
+  char soundName[15];
+};
+
+struct SaveLoadEntry {
+  int offs;
+  int type;
+  int size;
+};    
+
+int foobar = ((long) (& ((Track *) 42)->soundName[0])) - 42;