aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gdc.dg/torture/pr117002.d
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gdc.dg/torture/pr117002.d')
-rw-r--r--gcc/testsuite/gdc.dg/torture/pr117002.d28
1 files changed, 28 insertions, 0 deletions
diff --git a/gcc/testsuite/gdc.dg/torture/pr117002.d b/gcc/testsuite/gdc.dg/torture/pr117002.d
new file mode 100644
index 0000000..5b8c19e
--- /dev/null
+++ b/gcc/testsuite/gdc.dg/torture/pr117002.d
@@ -0,0 +1,28 @@
+// { dg-do compile }
+// { dg-additional-options "-Warray-bounds" }
+extern(C++) class C117002
+{
+ ubyte[4] not_multiple_of_8;
+}
+
+int pr117002a(void *p)
+{
+ auto init = __traits(initSymbol, C117002);
+ if (init.ptr + init.length <= p)
+ return 1;
+ return 0;
+}
+
+void pr117002b(void *p)
+{
+ auto init = __traits(initSymbol, C117002);
+ p[0 .. init.length] = init[];
+}
+
+void pr117002c()
+{
+ scope var = new C117002;
+ void *p = cast(void*)var;
+ auto init = __traits(initSymbol, C117002);
+ p[0 .. __traits(classInstanceSize, C117002)] = init[];
+}