From a5b7984db0d7650e4aa86a0dbc168285704a46d9 Mon Sep 17 00:00:00 2001 From: epetrich Date: Tue, 4 May 2004 19:10:40 +0000 Subject: [PATCH] * src/hc08/gen.c (genJumpTab, emitcode, genhc08code): fixed stack error and inappropriate peephole optimization in jump tables git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@3303 4a8a32a2-be11-0410-ad9d-d568d2c75423 --- ChangeLog | 5 +++++ src/hc08/gen.c | 6 +++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 1045f2b0..1520e311 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-05-04 Erik Petrich + + * src/hc08/gen.c (genJumpTab, emitcode, genhc08code): fixed stack error + and inappropriate peephole optimization in jump tables + 2004-04-30 Jesus Calvino-Fraga * as/hc08/m08pst.c, diff --git a/src/hc08/gen.c b/src/hc08/gen.c index 1cf7271c..68f5ec34 100644 --- a/src/hc08/gen.c +++ b/src/hc08/gen.c @@ -68,6 +68,7 @@ static struct int stackPushes; short regsinuse; set *sendSet; + iCode *current_iCode; } _G; @@ -168,6 +169,7 @@ emitcode (char *inst, char *fmt,...) (lineHead = newLineNode (lb))); lineCurr->isInline = _G.inLine; lineCurr->isDebug = _G.debugLine; + lineCurr->ic = _G.current_iCode; //printf("%s\n", lb); va_end (ap); @@ -7210,6 +7212,7 @@ genJumpTab (iCode * ic) emitcode ("add","1,s"); transferRegReg (hc08_reg_a, hc08_reg_x, TRUE); loadRegFromConst (hc08_reg_h, zero); + pullReg (hc08_reg_a); jtab = newiTempLabel (NULL); emitcode ("jmp", "%05d$,x", jtab->key + 100); @@ -7597,7 +7600,8 @@ genhc08Code (iCode * lic) for (ic = lic; ic; ic = ic->next) { - + _G.current_iCode = ic; + if (ic->lineno && cln != ic->lineno) { if (options.debug) -- 2.30.2