summaryrefslogtreecommitdiff
path: root/bcc/preserve.c
diff options
context:
space:
mode:
authorRobert de Bath <rdebath@poboxes.com>2002-08-11 08:50:48 +0200
committerLubomir Rintel <lkundrak@v3.sk>2013-10-23 23:48:48 +0200
commit26ade8d624457b7164502ed9c190ca3f146bda0c (patch)
tree75a70b6a562bc595c971e170994a8e302a8c7b3b /bcc/preserve.c
parent660429af0232d4afcb3e03fb0437053dd6e16286 (diff)
downloaddev86-26ade8d624457b7164502ed9c190ca3f146bda0c.tar.gz
Import Dev86src-0.16.8.tar.gzv0.16.8
Diffstat (limited to 'bcc/preserve.c')
-rw-r--r--bcc/preserve.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/bcc/preserve.c b/bcc/preserve.c
index c8a8cea..779efc2 100644
--- a/bcc/preserve.c
+++ b/bcc/preserve.c
@@ -6,6 +6,7 @@
#include "gencode.h"
#include "reg.h"
#include "type.h"
+#include "scan.h"
/* change stack ptr without changing condition codes */
@@ -18,11 +19,20 @@ bool_pt absflag;
#ifdef FRAMEPOINTER
if (newsp != framep || (!(bool_t) absflag && switchnow != NULL))
{
+ int off;
outleasp();
if (!(bool_t) absflag && switchnow != NULL)
- outswoffset(newsp);
+ outswoffset(off = newsp);
else
- outoffset(newsp - framep);
+ outoffset(off = newsp - framep);
+#ifndef NO_DEL_PUSH
+ if (optimise && !callersaves && off < 0)
+ {
+ outstr("+");
+ outstr(funcname);
+ outstr(".off");
+ }
+#endif
outindframereg();
outnl();
}