aboutsummaryrefslogtreecommitdiff
path: root/src/comp/lib
diff options
context:
space:
mode:
Diffstat (limited to 'src/comp/lib')
-rw-r--r--src/comp/lib/llvm.rs10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/comp/lib/llvm.rs b/src/comp/lib/llvm.rs
index f0cb65a2..220af154 100644
--- a/src/comp/lib/llvm.rs
+++ b/src/comp/lib/llvm.rs
@@ -1006,8 +1006,14 @@ obj builder(BuilderRef B) {
/* Miscellaneous instructions */
- fn Phi(TypeRef Ty) -> ValueRef {
- ret llvm.LLVMBuildPhi(B, Ty, _str.buf(""));
+ fn Phi(TypeRef Ty, vec[ValueRef] vals, vec[BasicBlockRef] bbs) -> ValueRef {
+ auto phi = llvm.LLVMBuildPhi(B, Ty, _str.buf(""));
+ check (_vec.len[ValueRef](vals) == _vec.len[BasicBlockRef](bbs));
+ llvm.LLVMAddIncoming(phi,
+ _vec.buf[ValueRef](vals),
+ _vec.buf[BasicBlockRef](bbs),
+ _vec.len[ValueRef](vals));
+ ret phi;
}
fn Call(ValueRef Fn, vec[ValueRef] Args) -> ValueRef {