From 50e0e555b538d1018287ade0845db95d4be8004d Mon Sep 17 00:00:00 2001 From: borutr Date: Sun, 17 Feb 2008 07:25:53 +0000 Subject: [PATCH] * 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 --- ChangeLog | 5 +++++ src/z80/peeph.def | 17 +++++++++++++++++ 2 files changed, 22 insertions(+) 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. +} -- 2.30.2