X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2FnativeGen%2FMachCode.lhs;h=e9fbdf4959c7bd144926582128f4a28e6ccc4e86;hb=5819de0c5d78effa16e4c59987268eadb96b8d1d;hp=ffb603efe2cb77dcc3b657ba6720b2f51708e4ef;hpb=2ae353a8f2af07cbe01d8817e93b28f65332c6fa;p=ghc-hetmet.git diff --git a/ghc/compiler/nativeGen/MachCode.lhs b/ghc/compiler/nativeGen/MachCode.lhs index ffb603e..e9fbdf4 100644 --- a/ghc/compiler/nativeGen/MachCode.lhs +++ b/ghc/compiler/nativeGen/MachCode.lhs @@ -41,6 +41,7 @@ import Stix ( getNatLabelNCG, StixStmt(..), StixExpr(..), NatM, thenNat, returnNat, mapNat, mapAndUnzipNat, mapAccumLNat, getDeltaNat, setDeltaNat, getUniqueNat, + IF_OS_darwin(addImportNat COMMA,) ncgPrimopMoan, ncg_target_is_32bit ) @@ -512,8 +513,8 @@ iselExpr64 (StCall fn cconv kind args) = genCCall fn cconv kind args `thenNat` \ call -> getNewRegNCG IntRep `thenNat` \ r_dst_lo -> let r_dst_hi = getHiVRegFromLo r_dst_lo - mov_lo = MR r_dst_lo r3 - mov_hi = MR r_dst_hi r4 + mov_lo = MR r_dst_lo r4 + mov_hi = MR r_dst_hi r3 in returnNat ( ChildCode64 (call `snocOL` mov_hi `snocOL` mov_lo) @@ -3491,8 +3492,14 @@ genCCall fn cconv kind args `appOL` moveFinalCode in case fn of - Left lbl -> returnNat ( passArguments - `snocOL` BL (ImmLab False (ftext lbl)) usedRegs + Left lbl -> + addImportNat lbl `thenNat` \ _ -> + returnNat (passArguments + `snocOL` BL (ImmLit $ ftext + (FSLIT("L_") + `appendFS` lbl + `appendFS` FSLIT("$stub"))) + usedRegs `appOL` move_sp_up) Right dyn -> getRegister dyn `thenNat` \ dynReg ->