X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Fcmm%2FCmmParse.y;h=3842e65051b3785bfd9d3b178ec3c0564e70953b;hb=b3ccd6d5a4366dc8089fd9c49f5edf43077de009;hp=38c30b24f520e77f60793279bb6277395d80db6f;hpb=f2cc8b5bc34519a65581dc40b7bfebac97bffd73;p=ghc-hetmet.git diff --git a/compiler/cmm/CmmParse.y b/compiler/cmm/CmmParse.y index 38c30b2..3842e65 100644 --- a/compiler/cmm/CmmParse.y +++ b/compiler/cmm/CmmParse.y @@ -767,15 +767,17 @@ foreignCall -> ExtFCode CmmExpr -> [ExtFCode (CmmExpr,MachHint)] -> Maybe [GlobalReg] -> P ExtCode -foreignCall "C" results_code expr_code args_code vols - = return $ do - results <- sequence results_code - expr <- expr_code - args <- sequence args_code - code (emitForeignCall' PlayRisky results - (CmmForeignCall expr CCallConv) args vols) -foreignCall conv _ _ _ _ - = fail ("unknown calling convention: " ++ conv) +foreignCall conv_string results_code expr_code args_code vols + = do convention <- case conv_string of + "C" -> return CCallConv + "C--" -> return CmmCallConv + _ -> fail ("unknown calling convention: " ++ conv_string) + return $ do + results <- sequence results_code + expr <- expr_code + args <- sequence args_code + code (emitForeignCall' PlayRisky results + (CmmForeignCall expr convention) args vols) where primCall :: [ExtFCode (CmmReg,MachHint)]