Using 'stdcall' when it is not supported is only a warning now (#3336)
authorSimon Marlow <marlowsd@gmail.com>
Fri, 24 Sep 2010 15:24:45 +0000 (15:24 +0000)
committerSimon Marlow <marlowsd@gmail.com>
Fri, 24 Sep 2010 15:24:45 +0000 (15:24 +0000)
compiler/ghci/LibFFI.hsc
compiler/typecheck/TcForeign.lhs

index 9dd2a24..86714ef 100644 (file)
@@ -53,7 +53,8 @@ convToABI CCallConv   = fFI_DEFAULT_ABI
 #ifdef mingw32_HOST_OS
 convToABI StdCallConv = fFI_STDCALL
 #endif
-convToABI _ = panic "convToABI: convention not supported"
+-- unknown conventions are mapped to the default, (#3336)
+convToABI _           = fFI_DEFAULT_ABI
 
 -- c.f. DsForeign.primTyDescChar
 primRepToFFIType :: PrimRep -> Ptr C_ffi_type
index d42b372..73fd449 100644 (file)
@@ -310,7 +310,8 @@ checkCConv CCallConv  = return ()
 #if i386_TARGET_ARCH
 checkCConv StdCallConv = return ()
 #else
-checkCConv StdCallConv = addErrTc (text "calling convention not supported on this platform: stdcall")
+-- This is a warning, not an error. see #3336
+checkCConv StdCallConv = addWarnTc (text "the 'stdcall' calling convention is unsupported on this platform,"$$ text "treating as ccall")
 #endif
 checkCConv PrimCallConv = addErrTc (text "The `prim' calling convention can only be used with `foreign import'")
 checkCConv CmmCallConv = panic "checkCConv CmmCallConv"