Commit 66ed8049 authored by sof's avatar sof
Browse files

[project @ 1998-11-16 11:56:09 by sof]

Cleaned up the handling of the default calling conventions for 'foreign' decls
parent 7caedc52
......@@ -11,6 +11,7 @@ module CallConv
, stdCallConv
, cCallConv
, defaultCallConv
, callConvAttribute
, decorateExtName
) where
......@@ -33,6 +34,9 @@ stdCallConv = 0
cCallConv :: CallConv
cCallConv = 1
defaultCallConv :: CallConv
defaultCallConv = cCallConv
\end{code}
Generate the gcc attribute corresponding to the given
......
......@@ -555,8 +555,8 @@ callconv: STDCALL { $$ = CALLCONV_STDCALL; }
| C_CALL { $$ = CALLCONV_CCALL; }
| PASCAL { $$ = CALLCONV_PASCAL; }
| FASTCALL { $$ = CALLCONV_FASTCALL; }
/* If you leave out the specification of a calling convention, you'll get C's. */
| /*empty*/ { $$ = CALLCONV_CCALL; }
/* If you leave out the specification of a calling convention, you'll (probably) get C's. */
| /*empty*/ { $$ = CALLCONV_NONE; }
;
ext_name: STRING { $$ = mkjust(lsing($1)); }
......
......@@ -115,6 +115,7 @@ void checkprec PROTO((tree, qid, BOOLEAN));
*/
/* FFI predefines */
#define CALLCONV_NONE (-1)
#define CALLCONV_STDCALL 0
#define CALLCONV_CCALL 1
#define CALLCONV_PASCAL 2
......
......@@ -962,7 +962,12 @@ wlkExtName (U_just pt)
[mod,nm] -> returnUgn (ExtName nm (Just mod))
rdCallConv :: Int -> UgnM CallConv
rdCallConv x = returnUgn x
rdCallConv x =
-- this tracks the #defines in parser/utils.h
case x of
(-1) -> -- no calling convention specified, use default.
returnUgn defaultCallConv
_ -> returnUgn x
rdForKind :: Int -> Bool -> UgnM ForKind
rdForKind 0 isUnsafe = -- foreign import
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment