From: uz Date: Mon, 14 Sep 2009 19:54:50 +0000 (+0000) Subject: Fixed another problem with OptJumpTarget1, that was mostly prevented from X-Git-Tag: V2.13.0rc1~86 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=d451248437560e88eb893f9e1c4fbab61b125350;p=cc65 Fixed another problem with OptJumpTarget1, that was mostly prevented from being triggered by other optimizations, which removed or changed the trigger code. git-svn-id: svn://svn.cc65.org/cc65/trunk@4170 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- diff --git a/src/cc65/coptind.c b/src/cc65/coptind.c index 32537b92a..edbb32e76 100644 --- a/src/cc65/coptind.c +++ b/src/cc65/coptind.c @@ -580,6 +580,13 @@ unsigned OptJumpTarget1 (CodeSeg* S) goto NextEntry; } + /* The entry preceeding the branch target may not be the branch + * insn. + */ + if (T1 == E2) { + goto NextEntry; + } + /* Get the entry preceeding the jump */ E1 = CS_GetEntry (S, I); @@ -594,6 +601,7 @@ unsigned OptJumpTarget1 (CodeSeg* S) * not already have one. */ TL1 = CS_GenLabel (S, T1); + printf ("Generated label %s\n", TL1->Name); /* Change the jump target to point to this new label */ CS_MoveLabelRef (S, E2, TL1);