about summary refs log tree commit diff stats
path: root/mu.arc.t
diff options
context:
space:
mode:
Diffstat (limited to 'mu.arc.t')
-rw-r--r--mu.arc.t18
1 files changed, 18 insertions, 0 deletions
diff --git a/mu.arc.t b/mu.arc.t
index 1661ca71..ce879c32 100644
--- a/mu.arc.t
+++ b/mu.arc.t
@@ -511,6 +511,24 @@
   (prn "F - 'get' accesses fields of record address"))
 
 (reset)
+(new-trace "get-indirect-repeated")
+(add-code
+  '((def main [
+      ((1 integer) <- copy (34 literal))
+      ((2 integer) <- copy (35 literal))
+      ((3 integer) <- copy (36 literal))
+      ((4 integer-point-pair-address) <- copy (1 literal))  ; unsafe
+      ((5 integer-point-pair-address-address) <- copy (4 literal))  ; unsafe
+      ((6 integer-integer-pair) <- get (5 integer-point-pair-address-address deref deref) (1 offset))
+      ((8 integer) <- get (5 integer-point-pair-address-address deref deref) (0 offset))
+     ])))
+(run 'main)
+(if (or (~is memory*.6 35)
+        (~is memory*.7 36)
+        (~is memory*.8 34))
+  (prn "F - 'get' can deref multiple times"))
+
+(reset)
 (new-trace "get-compound-field")
 (add-code
   '((def main [