From: borutr Date: Sun, 17 Feb 2008 07:25:53 +0000 (+0000) Subject: * src/z80/peeph.def: applied patch X-Git-Url: https://git.gag.com/?a=commitdiff_plain;h=50e0e555b538d1018287ade0845db95d4be8004d;p=fw%2Fsdcc * src/z80/peeph.def: applied patch #1893626: Optimize tail calls on Z80, thanks to Philipp Krause git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@5014 4a8a32a2-be11-0410-ad9d-d568d2c75423 --- diff --git a/ChangeLog b/ChangeLog index 0e8c34e9..4db5e32b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-02-17 Borut Razem + + * src/z80/peeph.def: applied patch + #1893626: Optimize tail calls on Z80, thanks to Philipp Krause + 2008-02-16 Maarten Brock * as/link/mcs51/aslink.dsp: removed SDK define diff --git a/src/z80/peeph.def b/src/z80/peeph.def index c88c3a78..90b1b2b1 100644 --- a/src/z80/peeph.def +++ b/src/z80/peeph.def @@ -702,4 +702,21 @@ replace restart { ; peephole 64 moved addition of constant 0x%3%2 to bc to constant. } +replace restart { + call %1 + ret +} by { + jp %1 + ; peephole 65 replaced call at end of function by jump. +} +// Callee saves ix. +replace restart { + call %1 + pop ix + ret +} by { + pop ix + jp %1 + ; peephole 66 replaced call at end of function by jump moving call beyond pop ix. +}