about summary refs log tree commit diff
path: root/src/comp
diff options
context:
space:
mode:
authorNiko Matsakis <niko@alum.mit.edu>2011-11-16 12:15:54 -0800
committerNiko Matsakis <niko@alum.mit.edu>2011-11-16 15:27:09 -0800
commit834b6879ea89135d60b3903755589e14f816449a (patch)
treec68a3618324aa5730e49d6389bccfa30b7c9ec06 /src/comp
parent938b23e228f4fd313973190f8f78163476cc4a3f (diff)
temp workaround for failure to pass ulonglong successfully
Diffstat (limited to 'src/comp')
-rw-r--r--src/comp/lib/llvm.rs2
-rw-r--r--src/comp/middle/trans_common.rs4
2 files changed, 4 insertions, 2 deletions
diff --git a/src/comp/lib/llvm.rs b/src/comp/lib/llvm.rs
index 68ba8624268..7010bc82f01 100644
--- a/src/comp/lib/llvm.rs
+++ b/src/comp/lib/llvm.rs
@@ -865,7 +865,7 @@ native mod llvm {
     fn LLVMRustParseBitcode(MemBuf: MemoryBufferRef) -> ModuleRef;
 
     /** FiXME: Hacky adaptor for lack of ULongLong in FFI: */
-    fn LLVMRustConstSmallInt(IntTy: TypeRef, N: uint, SignExtend: Bool) ->
+    fn LLVMRustConstInt(IntTy: TypeRef, N_hi: uint, N_lo: uint, SignExtend: Bool) ->
        ValueRef;
 
     fn LLVMRustAddPrintModulePass(PM: PassManagerRef, M: ModuleRef,
diff --git a/src/comp/middle/trans_common.rs b/src/comp/middle/trans_common.rs
index 276a7460f8c..4b2791f66c8 100644
--- a/src/comp/middle/trans_common.rs
+++ b/src/comp/middle/trans_common.rs
@@ -725,7 +725,9 @@ fn T_opaque_chan_ptr() -> TypeRef { ret T_ptr(T_i8()); }
 fn C_null(t: TypeRef) -> ValueRef { ret llvm::LLVMConstNull(t); }
 
 fn C_integral(t: TypeRef, u: u64, sign_extend: Bool) -> ValueRef {
-    ret llvm::LLVMConstInt(t, u, sign_extend);
+    let u_hi = (u >> 32u64) as uint;
+    let u_lo = u as uint;
+    ret llvm::LLVMRustConstInt(t, u_hi, u_lo, sign_extend);
 }
 
 fn C_float(cx: @crate_ctxt, s: str) -> ValueRef {