aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gdc.dg/torture
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gdc.dg/torture')
-rw-r--r--gcc/testsuite/gdc.dg/torture/imports/pr109023.d3
-rw-r--r--gcc/testsuite/gdc.dg/torture/pr109023.d6
-rw-r--r--gcc/testsuite/gdc.dg/torture/pr117002.d28
3 files changed, 37 insertions, 0 deletions
diff --git a/gcc/testsuite/gdc.dg/torture/imports/pr109023.d b/gcc/testsuite/gdc.dg/torture/imports/pr109023.d
new file mode 100644
index 0000000..e85e0ed
--- /dev/null
+++ b/gcc/testsuite/gdc.dg/torture/imports/pr109023.d
@@ -0,0 +1,3 @@
+module imports.pr109023;
+
+void f109023() { }
diff --git a/gcc/testsuite/gdc.dg/torture/pr109023.d b/gcc/testsuite/gdc.dg/torture/pr109023.d
new file mode 100644
index 0000000..3060446
--- /dev/null
+++ b/gcc/testsuite/gdc.dg/torture/pr109023.d
@@ -0,0 +1,6 @@
+// { dg-do "compile" }
+// { dg-additional-options "-I[srcdir] -finclude-imports" }
+// { dg-additional-files "imports/pr109023.d" }
+// { dg-final { scan-assembler "_D7imports8pr1090237f109023FZv" } }
+module pr109023;
+import imports.pr109023;
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[];
+}