summaryrefslogtreecommitdiffstats
path: root/tests/cpu-program
diff options
context:
space:
mode:
Diffstat (limited to 'tests/cpu-program')
-rw-r--r--tests/cpu-program/pointer-deref.slang33
-rw-r--r--tests/cpu-program/pointer-deref.slang.expected6
2 files changed, 39 insertions, 0 deletions
diff --git a/tests/cpu-program/pointer-deref.slang b/tests/cpu-program/pointer-deref.slang
new file mode 100644
index 000000000..34c6ba97f
--- /dev/null
+++ b/tests/cpu-program/pointer-deref.slang
@@ -0,0 +1,33 @@
+//TEST:EXECUTABLE:
+__target_intrinsic(cpp, "printf(\"%s\\n\", ($0).getBuffer())")
+void writeln(String text);
+
+struct SubRecord
+{
+ int field2;
+ float field3;
+}
+
+struct Record
+{
+ int field;
+ SubRecord sub;
+}
+
+public __extern_cpp int main()
+{
+ Record rec;
+ Record *pRec = &rec;
+ pRec.field = 1;
+ pRec.sub.field2 = 2;
+ pRec.sub.field3 = 3.0f;
+ if (rec.field == 1 && rec.sub.field2 == 2 && pRec.sub.field3 == 3.0f)
+ {
+ writeln("success");
+ }
+ else
+ {
+ writeln("fail");
+ }
+ return 0;
+} \ No newline at end of file
diff --git a/tests/cpu-program/pointer-deref.slang.expected b/tests/cpu-program/pointer-deref.slang.expected
new file mode 100644
index 000000000..0eb55acbf
--- /dev/null
+++ b/tests/cpu-program/pointer-deref.slang.expected
@@ -0,0 +1,6 @@
+result code = 0
+standard error = {
+}
+standard output = {
+success
+}