diff options
| author | Charles.Forsyth <devnull@localhost> | 2008-02-01 18:46:35 +0000 |
|---|---|---|
| committer | Charles.Forsyth <devnull@localhost> | 2008-02-01 18:46:35 +0000 |
| commit | 04f9470ee130b6877edcaa202c0a143c9a48fced (patch) | |
| tree | 2917c267fefe64b1cf3efcc6a6281115d46e2d8e /appl/cmd | |
| parent | acf16bbe632adbae6f2caf3210136c47ecee6a62 (diff) | |
20080201-1852
Diffstat (limited to 'appl/cmd')
| -rw-r--r-- | appl/cmd/limbo/com.b | 8 | ||||
| -rw-r--r-- | appl/cmd/limbo/gen.b | 2 |
2 files changed, 6 insertions, 4 deletions
diff --git a/appl/cmd/limbo/com.b b/appl/cmd/limbo/com.b index c14cd923..320d209c 100644 --- a/appl/cmd/limbo/com.b +++ b/appl/cmd/limbo/com.b @@ -388,10 +388,14 @@ fncom(decl: ref Decl) scom(n.left); } pushblock(); - in := genrawop(src, IRET, nil, nil, nil); + valued := decl.ty.tof != tnone; + if(valued) + in := genrawop(src, IRAISE, nil, nil, nil); + else + in = genrawop(src, IRET, nil, nil, nil); popblock(); reach(decl.pc); - if(in.reach != byte 0 && decl.ty.tof != tnone) + if(valued && in.reach != byte 0) error(src.start, "no return at end of function " + dotconv(decl)); # decl.endpc = lastinst; if(labdep != 0) diff --git a/appl/cmd/limbo/gen.b b/appl/cmd/limbo/gen.b index 10988f48..ab4bb6af 100644 --- a/appl/cmd/limbo/gen.b +++ b/appl/cmd/limbo/gen.b @@ -562,8 +562,6 @@ foldbranch(in: ref Inst) next := in.next; *in = *b; in.next = next; - if(b.op == IRET) - b.reach = byte 1; # might be default return (TO DO) continue; } foldbranch(in.branch); |
