aboutsummaryrefslogtreecommitdiffstats
path: root/ortho/mcode/ortho_code-exprs.ads
diff options
context:
space:
mode:
Diffstat (limited to 'ortho/mcode/ortho_code-exprs.ads')
-rw-r--r--ortho/mcode/ortho_code-exprs.ads13
1 files changed, 11 insertions, 2 deletions
diff --git a/ortho/mcode/ortho_code-exprs.ads b/ortho/mcode/ortho_code-exprs.ads
index 5c7da6199..9bd4596d7 100644
--- a/ortho/mcode/ortho_code-exprs.ads
+++ b/ortho/mcode/ortho_code-exprs.ads
@@ -111,11 +111,14 @@ package Ortho_Code.Exprs is
-- ARG1 is subprogram
-- ARG2 is arguments.
OE_Call,
- -- ARG1 is the subprogram.
- OE_Setup_Frame,
-- ARG1 is intrinsic operation.
OE_Intrinsic,
+ -- Modify the stack pointer value, to align the stack before pushing
+ -- arguments, or to free the stack.
+ -- ARG1 is the signed offset.
+ OE_Stack_Adjust,
+
-- Return ARG1 (if not mode_nil) from current subprogram.
-- ARG1: expression.
OE_Ret,
@@ -326,6 +329,12 @@ package Ortho_Code.Exprs is
function Get_Addrl_Frame (Enode : O_Enode) return O_Enode;
procedure Set_Addrl_Frame (Enode : O_Enode; Frame : O_Enode);
+ -- Return the stack adjustment. For positive values, this is the amount of
+ -- bytes to allocate on the stack before pushing arguments, so that the
+ -- stack pointer stays aligned. For negtive values, this is the amount of
+ -- bytes to release on the stack.
+ function Get_Stack_Adjust (Enode : O_Enode) return Int32;
+
-- Get the subprogram called by ENODE.
function Get_Call_Subprg (Enode : O_Enode) return O_Dnode;