diff options
| author | Graydon Hoare <[email protected]> | 2011-04-19 16:52:59 -0700 |
|---|---|---|
| committer | Graydon Hoare <[email protected]> | 2011-04-19 16:53:12 -0700 |
| commit | d1b9ddc8d49744a4e7e478e775d02d071dbd78a4 (patch) | |
| tree | 770ede20366096233245c4e348f86bbfab27d780 /src | |
| parent | rustc: Cache the results of type_of() (diff) | |
| download | rust-d1b9ddc8d49744a4e7e478e775d02d071dbd78a4.tar.xz rust-d1b9ddc8d49744a4e7e478e775d02d071dbd78a4.zip | |
Add testcase for bootstrap blocker and fix for each result type to nil.
Diffstat (limited to 'src')
| -rw-r--r-- | src/comp/middle/trans.rs | 7 | ||||
| -rw-r--r-- | src/test/run-pass/alt-phi.rs | 22 |
2 files changed, 26 insertions, 3 deletions
diff --git a/src/comp/middle/trans.rs b/src/comp/middle/trans.rs index d3ccd909..468173b7 100644 --- a/src/comp/middle/trans.rs +++ b/src/comp/middle/trans.rs @@ -3583,12 +3583,12 @@ fn trans_for_each(@block_ctxt cx, bcx.build.Store(lllvar, lllvarptr); fcx.llupvars.insert(decl_id, lllvarptr); - auto res = trans_block(bcx, body); + auto r = trans_block(bcx, body); // Tie up the llallocas -> lltop edge. new_builder(fcx.llallocas).Br(lltop); - res.bcx.build.RetVoid(); + r.bcx.build.RetVoid(); // Step 3: Call iter passing [lliterbody, llenv], plus other args. @@ -3611,10 +3611,11 @@ fn trans_for_each(@block_ctxt cx, cx.build.Store(llenvblobptr, env_cell); // log "lliterbody: " + val_str(cx.fcx.lcx.ccx.tn, lliterbody); - ret trans_call(cx, f, + r = trans_call(cx, f, some[ValueRef](cx.build.Load(pair)), args, ann); + ret res(r.bcx, C_nil()); } } fail; diff --git a/src/test/run-pass/alt-phi.rs b/src/test/run-pass/alt-phi.rs new file mode 100644 index 00000000..607a434a --- /dev/null +++ b/src/test/run-pass/alt-phi.rs @@ -0,0 +1,22 @@ +tag thing { a; b; c; } + +iter foo() -> int { + put 10; +} + +fn main() { + auto x = true; + alt (a) { + case (a) { + x = true; + for each (int i in foo()) { + } + } + case (b) { + x = false; + } + case (c) { + x = false; + } + } +} |