summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gdc.test/runnable/test17940.d
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gdc.test/runnable/test17940.d')
-rw-r--r--gcc/testsuite/gdc.test/runnable/test17940.d46
1 files changed, 46 insertions, 0 deletions
diff --git a/gcc/testsuite/gdc.test/runnable/test17940.d b/gcc/testsuite/gdc.test/runnable/test17940.d
new file mode 100644
index 00000000000..1ea43dbfacc
--- /dev/null
+++ b/gcc/testsuite/gdc.test/runnable/test17940.d
@@ -0,0 +1,46 @@
+// PERMUTE_ARGS: -O
+
+// https://issues.dlang.org/show_bug.cgi?id=17940
+
+struct Array
+{
+ long length;
+ long ptr;
+}
+
+struct Struct
+{
+ bool b = true;
+}
+
+void fun1(int)
+{
+}
+
+void fun2(Array arr, int, int)
+{
+ assert(!arr.length);
+}
+
+void fn(Struct* str)
+{
+ Array arr;
+ if (!str)
+ {
+ return;
+ }
+ if (str)
+ {
+ fun1(str.b);
+ }
+ if (str.b)
+ {
+ fun2(arr, str.b, 0);
+ }
+}
+
+void main()
+{
+ Struct s;
+ fn(&s);
+}