summaryrefslogtreecommitdiff
path: root/testsuite/tests/cps/cps012.cmm
diff options
context:
space:
mode:
Diffstat (limited to 'testsuite/tests/cps/cps012.cmm')
-rw-r--r--testsuite/tests/cps/cps012.cmm23
1 files changed, 23 insertions, 0 deletions
diff --git a/testsuite/tests/cps/cps012.cmm b/testsuite/tests/cps/cps012.cmm
new file mode 100644
index 0000000000..6d828dca27
--- /dev/null
+++ b/testsuite/tests/cps/cps012.cmm
@@ -0,0 +1,23 @@
+// A real world example from the RTS
+// Should be checked later to see if it is right
+
+stg_ap_0_fast ("ptr" bits32 fun, "ptr" bits32 arg) {
+ bits32 _c8;
+ c6: goto c7;
+ c7: _c8 = bits32[x]; // TODO: allow I32 or print bits32
+ switch [0 .. 71] (bits16[_c8 - 4]) {
+ case 0,1,2,3,4,5,6,7,8 : { goto c9; }
+ case 9,10,11,12,13,14,15 : { goto ca; }
+ case 16,17,18,19,20,21,22,23 : { goto c9; }
+ case 24 : {goto ca;}
+ case 25 : {goto c9;}
+ case 26 : {goto ca;}
+ case 27 : {goto c9;}
+ case 28,29,30,31,32 : {goto cb;}
+ case 33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71 : {goto c9;}
+ }
+ c9: jump _c8 ();
+ cb: R1 = bits32[fun + 4 + 0];
+ goto c7;
+ ca: jump (bits32[arg + 0 * 4]) ();
+}