summary refs log tree commit diff
path: root/lisc/lisc.h
diff options
context:
space:
mode:
authorQuentin Carbonneaux <quentin.carbonneaux@yale.edu>2016-03-17 13:41:12 -0400
committerQuentin Carbonneaux <quentin.carbonneaux@yale.edu>2016-03-17 13:41:12 -0400
commit240cfcd5cdda9301457867f9d26edcd0cf272b24 (patch)
tree83cf01d43ad41163c96c34f16f2d24a4e8f9eff9 /lisc/lisc.h
parent2889d44f24d8017f527f6f5aa1163065cc57e994 (diff)
downloadroux-240cfcd5cdda9301457867f9d26edcd0cf272b24.tar.gz
support return of structs
Diffstat (limited to 'lisc/lisc.h')
-rw-r--r--lisc/lisc.h6
1 files changed, 4 insertions, 2 deletions
diff --git a/lisc/lisc.h b/lisc/lisc.h
index 5374bdd..c730b1f 100644
--- a/lisc/lisc.h
+++ b/lisc/lisc.h
@@ -297,6 +297,7 @@ enum Jmp {
 	JRets,
 	JRetd,
 	JRetc,
+#define isret(j) (JRet0 <= j && j <= JRetc)
 	JJmp,
 	JJnz,
 	JXJc,
@@ -419,7 +420,8 @@ struct Fn {
 	int ncon;
 	int nmem;
 	int nblk;
-	int retty;
+	int retty; /* index in typ[], -1 if no aggregate return */
+	Ref retr;
 	Blk **rpo;
 	bits reg;
 	int slot;
@@ -483,7 +485,7 @@ Ins *icpy(Ins *, Ins *, ulong);
 void *vnew(ulong, size_t);
 void vgrow(void *, ulong);
 int phicls(int, Tmp *);
-Ref newtmp(char *, Fn *);
+Ref newtmp(char *, int, Fn *);
 Ref getcon(int64_t, Fn *);
 void addcon(Con *, Con *);
 void dumpts(BSet *, Tmp *, FILE *);