Signed-off-by: Edward Z. Yang <ezyang@mit.edu>
module CmmCallConv (
ParamLocation(..),
module CmmCallConv (
ParamLocation(..),
assignArgumentsPos
) where
assignArgumentsPos
) where
-- Calculate the 'GlobalReg' or stack locations for function call
-- parameters as used by the Cmm calling convention.
-- Calculate the 'GlobalReg' or stack locations for function call
-- parameters as used by the Cmm calling convention.
= RegisterParam GlobalReg
= RegisterParam GlobalReg
-instance (Outputable a) => Outputable (ParamLocation a) where
+instance Outputable ParamLocation where
ppr (RegisterParam g) = ppr g
ppr (StackParam p) = ppr p
ppr (RegisterParam g) = ppr g
ppr (StackParam p) = ppr p
-type ArgumentFormat a b = [(a, ParamLocation b)]
-
-- | JD: For the new stack story, I want arguments passed on the stack to manifest as
-- positive offsets in a CallArea, not negative offsets from the stack pointer.
-- Also, I want byte offsets, not word offsets.
-- | JD: For the new stack story, I want arguments passed on the stack to manifest as
-- positive offsets in a CallArea, not negative offsets from the stack pointer.
-- Also, I want byte offsets, not word offsets.
-assignArgumentsPos :: (Outputable a) => Convention -> (a -> CmmType) -> [a] ->
- ArgumentFormat a ByteOff
+assignArgumentsPos :: Convention -> (a -> CmmType) -> [a] ->
+ [(a, ParamLocation)]
-- Given a list of arguments, and a function that tells their types,
-- return a list showing where each argument is passed
assignArgumentsPos conv arg_ty reps = assignments
-- Given a list of arguments, and a function that tells their types,
-- return a list showing where each argument is passed
assignArgumentsPos conv arg_ty reps = assignments
else ([], 0)
Old -> ([], updfr_off)
else ([], 0)
Old -> ([], updfr_off)
- args :: [(CmmExpr, ParamLocation ByteOff)] -- The argument and where to put it
+ args :: [(CmmExpr, ParamLocation)] -- The argument and where to put it
args = assignArgumentsPos conv cmmExprType actuals
args' = foldl adjust setRA args
args = assignArgumentsPos conv cmmExprType actuals
args' = foldl adjust setRA args
More notes (June 11)\r
~~~~~~~~~~~~~~~~~~~~\r
More notes (June 11)\r
~~~~~~~~~~~~~~~~~~~~\r
-* Bake in ByteOff to ParamLocation and ArgumentFormat\r
- CmmActuals -> [CmmActual] similary CmmFormals\r
+* CmmActuals -> [CmmActual] similary CmmFormals\r
\r
* Possible refactoring: Nuke AGraph in favour of \r
mkIfThenElse :: Expr -> Graph -> Graph -> FCode Graph\r
\r
* Possible refactoring: Nuke AGraph in favour of \r
mkIfThenElse :: Expr -> Graph -> Graph -> FCode Graph\r