about summary refs log tree commit diff
path: root/src/comp/lib
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2011-07-18 13:14:33 -0700
committerBrian Anderson <banderson@mozilla.com>2011-07-18 13:56:15 -0700
commitc40d6265ce2ae093b3bb9e15177f60b375a158fa (patch)
tree6e189545311d1b6e2c46a3aa0cd4b623327dfd44 /src/comp/lib
parent682875929efe558b42318d6ae8b2ef8dc625e94a (diff)
downloadrust-c40d6265ce2ae093b3bb9e15177f60b375a158fa.tar.gz
rust-c40d6265ce2ae093b3bb9e15177f60b375a158fa.zip
Support x86 stdcall convention
This allows rust to call the Win32 API
Diffstat (limited to 'src/comp/lib')
-rw-r--r--src/comp/lib/llvm.rs9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/comp/lib/llvm.rs b/src/comp/lib/llvm.rs
index 2f0abed3d27..bb7dd4f2621 100644
--- a/src/comp/lib/llvm.rs
+++ b/src/comp/lib/llvm.rs
@@ -1314,6 +1314,15 @@ obj builder(BuilderRef B, @mutable bool terminated) {
         ret v;
     }
 
+    fn CallWithConv(ValueRef Fn, &ValueRef[] Args,
+                    uint Conv) -> ValueRef {
+        assert !(*terminated);
+        auto v = llvm::LLVMBuildCall(B, Fn, ivec::to_ptr(Args),
+                                     ivec::len(Args), str::buf(""));
+        llvm::LLVMSetInstructionCallConv(v, Conv);
+        ret v;
+    }
+
     fn Select(ValueRef If, ValueRef Then, ValueRef Else) -> ValueRef {
         assert (!*terminated);
         ret llvm::LLVMBuildSelect(B, If, Then, Else, str::buf(""));