From: SourceForge.net <no...@so...> - 2007-04-19 21:21:18
|
Feature Requests item #1703943, was opened at 2007-04-19 23:21 Message generated for change (Tracker Item Submitted) made by Item Submitter You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=350599&aid=1703943&group_id=599 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None Status: Open Priority: 5 Private: No Submitted By: Philipp Krause (spth) Assigned to: Nobody/Anonymous (nobody) Summary: fewer push/pop when saving registers Initial Comment: Registers in use have to be saved before function calls. Example of sdcc generated stuff: x written here. push x preparing arguments and calling function. pop x push x preparing arguments and calling function. pop x bc read here. the middle pop/push pair is unecessary. This is a common problem with loops. Often the loop counter is tored in register c, there are lots of functions called and and the end of the fuction body register c is used again. For n functions called there's (n-1) unecessary push/pop pairs. Philipp ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=350599&aid=1703943&group_id=599 |
From: SourceForge.net <no...@so...> - 2007-04-19 21:30:25
|
Feature Requests item #1703943, was opened at 2007-04-19 23:21 Message generated for change (Comment added) made by spth You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=350599&aid=1703943&group_id=599 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None Status: Open Priority: 5 Private: No Submitted By: Philipp Krause (spth) Assigned to: Nobody/Anonymous (nobody) Summary: fewer push/pop when saving registers Initial Comment: Registers in use have to be saved before function calls. Example of sdcc generated stuff: x written here. push x preparing arguments and calling function. pop x push x preparing arguments and calling function. pop x bc read here. the middle pop/push pair is unecessary. This is a common problem with loops. Often the loop counter is tored in register c, there are lots of functions called and and the end of the fuction body register c is used again. For n functions called there's (n-1) unecessary push/pop pairs. Philipp ---------------------------------------------------------------------- >Comment By: Philipp Krause (spth) Date: 2007-04-19 23:30 Message: Logged In: YES user_id=564030 Originator: YES There is a deadMove() in SDCCpeeph.c which should allow the peephole optimizer to remove these pop/push pairs. It needs support from the port though and it seems this is implemented for mcs51 only. To clarify: This is a feature request to get deadMove implemented for the Z80. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=350599&aid=1703943&group_id=599 |
From: SourceForge.net <no...@so...> - 2008-03-20 22:29:43
|
Feature Requests item #1703943, was opened at 2007-04-19 23:21 Message generated for change (Settings changed) made by spth You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=350599&aid=1703943&group_id=599 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None Status: Open Priority: 5 Private: No Submitted By: Philipp Krause (spth) >Assigned to: Philipp Krause (spth) Summary: fewer push/pop when saving registers Initial Comment: Registers in use have to be saved before function calls. Example of sdcc generated stuff: x written here. push x preparing arguments and calling function. pop x push x preparing arguments and calling function. pop x bc read here. the middle pop/push pair is unecessary. This is a common problem with loops. Often the loop counter is tored in register c, there are lots of functions called and and the end of the fuction body register c is used again. For n functions called there's (n-1) unecessary push/pop pairs. Philipp ---------------------------------------------------------------------- Comment By: Philipp Krause (spth) Date: 2007-04-19 23:30 Message: Logged In: YES user_id=564030 Originator: YES There is a deadMove() in SDCCpeeph.c which should allow the peephole optimizer to remove these pop/push pairs. It needs support from the port though and it seems this is implemented for mcs51 only. To clarify: This is a feature request to get deadMove implemented for the Z80. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=350599&aid=1703943&group_id=599 |
From: SourceForge.net <no...@so...> - 2008-07-12 12:14:02
|
Feature Requests item #1703943, was opened at 2007-04-19 23:21 Message generated for change (Comment added) made by spth You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=350599&aid=1703943&group_id=599 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None Status: Open Priority: 5 Private: No Submitted By: Philipp Krause (spth) Assigned to: Philipp Krause (spth) Summary: fewer push/pop when saving registers Initial Comment: Registers in use have to be saved before function calls. Example of sdcc generated stuff: x written here. push x preparing arguments and calling function. pop x push x preparing arguments and calling function. pop x bc read here. the middle pop/push pair is unecessary. This is a common problem with loops. Often the loop counter is tored in register c, there are lots of functions called and and the end of the fuction body register c is used again. For n functions called there's (n-1) unecessary push/pop pairs. Philipp ---------------------------------------------------------------------- >Comment By: Philipp Krause (spth) Date: 2008-07-12 14:14 Message: Logged In: YES user_id=564030 Originator: YES This (pop/push removal) is implemented by peephole 0zc in revision #5198. However the peephole is commented out; it can be enabled once bug #1947081 has been fixed. Implementing deaMove() is unnecessary since a more powerful version has been implemented in RFE #1880202. ---------------------------------------------------------------------- Comment By: Philipp Krause (spth) Date: 2007-04-19 23:30 Message: Logged In: YES user_id=564030 Originator: YES There is a deadMove() in SDCCpeeph.c which should allow the peephole optimizer to remove these pop/push pairs. It needs support from the port though and it seems this is implemented for mcs51 only. To clarify: This is a feature request to get deadMove implemented for the Z80. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=350599&aid=1703943&group_id=599 |
From: SourceForge.net <no...@so...> - 2009-07-28 22:05:18
|
Feature Requests item #1703943, was opened at 2007-04-19 23:21 Message generated for change (Comment added) made by fullmetalcoder You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=350599&aid=1703943&group_id=599 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None Status: Open Priority: 5 Private: No Submitted By: Philipp Krause (spth) Assigned to: Philipp Krause (spth) Summary: fewer push/pop when saving registers Initial Comment: Registers in use have to be saved before function calls. Example of sdcc generated stuff: x written here. push x preparing arguments and calling function. pop x push x preparing arguments and calling function. pop x bc read here. the middle pop/push pair is unecessary. This is a common problem with loops. Often the loop counter is tored in register c, there are lots of functions called and and the end of the fuction body register c is used again. For n functions called there's (n-1) unecessary push/pop pairs. Philipp ---------------------------------------------------------------------- Comment By: FullMetalCoder (fullmetalcoder) Date: 2009-07-29 00:05 Message: The SVN trunk still generate assembly code with unnecessary push/pop. I tried enabling the peephole entry, despite the related bug (which apparently disappeared) but it did not change anything... Are there extra steps required to turn on peephole optimizations? ---------------------------------------------------------------------- Comment By: Philipp Krause (spth) Date: 2008-07-12 14:14 Message: Logged In: YES user_id=564030 Originator: YES This (pop/push removal) is implemented by peephole 0zc in revision #5198. However the peephole is commented out; it can be enabled once bug #1947081 has been fixed. Implementing deaMove() is unnecessary since a more powerful version has been implemented in RFE #1880202. ---------------------------------------------------------------------- Comment By: Philipp Krause (spth) Date: 2007-04-19 23:30 Message: Logged In: YES user_id=564030 Originator: YES There is a deadMove() in SDCCpeeph.c which should allow the peephole optimizer to remove these pop/push pairs. It needs support from the port though and it seems this is implemented for mcs51 only. To clarify: This is a feature request to get deadMove implemented for the Z80. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=350599&aid=1703943&group_id=599 |
From: SourceForge.net <no...@so...> - 2009-07-29 10:52:59
|
Feature Requests item #1703943, was opened at 2007-04-19 23:21 Message generated for change (Comment added) made by fullmetalcoder You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=350599&aid=1703943&group_id=599 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None Status: Open Priority: 5 Private: No Submitted By: Philipp Krause (spth) Assigned to: Philipp Krause (spth) Summary: fewer push/pop when saving registers Initial Comment: Registers in use have to be saved before function calls. Example of sdcc generated stuff: x written here. push x preparing arguments and calling function. pop x push x preparing arguments and calling function. pop x bc read here. the middle pop/push pair is unecessary. This is a common problem with loops. Often the loop counter is tored in register c, there are lots of functions called and and the end of the fuction body register c is used again. For n functions called there's (n-1) unecessary push/pop pairs. Philipp ---------------------------------------------------------------------- Comment By: FullMetalCoder (fullmetalcoder) Date: 2009-07-29 12:52 Message: Ok, after fixing bug #1947081 (see my proposed fix there) I re-enabled peephole 0zc and it works like a charm. ---------------------------------------------------------------------- Comment By: FullMetalCoder (fullmetalcoder) Date: 2009-07-29 00:05 Message: The SVN trunk still generate assembly code with unnecessary push/pop. I tried enabling the peephole entry, despite the related bug (which apparently disappeared) but it did not change anything... Are there extra steps required to turn on peephole optimizations? ---------------------------------------------------------------------- Comment By: Philipp Krause (spth) Date: 2008-07-12 14:14 Message: Logged In: YES user_id=564030 Originator: YES This (pop/push removal) is implemented by peephole 0zc in revision #5198. However the peephole is commented out; it can be enabled once bug #1947081 has been fixed. Implementing deaMove() is unnecessary since a more powerful version has been implemented in RFE #1880202. ---------------------------------------------------------------------- Comment By: Philipp Krause (spth) Date: 2007-04-19 23:30 Message: Logged In: YES user_id=564030 Originator: YES There is a deadMove() in SDCCpeeph.c which should allow the peephole optimizer to remove these pop/push pairs. It needs support from the port though and it seems this is implemented for mcs51 only. To clarify: This is a feature request to get deadMove implemented for the Z80. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=350599&aid=1703943&group_id=599 |
From: SourceForge.net <no...@so...> - 2009-08-05 22:03:06
|
Feature Requests item #1703943, was opened at 2007-04-19 23:21 Message generated for change (Comment added) made by spth You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=350599&aid=1703943&group_id=599 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. >Category: z80 port Group: None >Status: Closed Priority: 5 Private: No Submitted By: Philipp Krause (spth) Assigned to: Philipp Krause (spth) Summary: fewer push/pop when saving registers Initial Comment: Registers in use have to be saved before function calls. Example of sdcc generated stuff: x written here. push x preparing arguments and calling function. pop x push x preparing arguments and calling function. pop x bc read here. the middle pop/push pair is unecessary. This is a common problem with loops. Often the loop counter is tored in register c, there are lots of functions called and and the end of the fuction body register c is used again. For n functions called there's (n-1) unecessary push/pop pairs. Philipp ---------------------------------------------------------------------- >Comment By: Philipp Krause (spth) Date: 2009-08-06 00:03 Message: Implemented in rev #5486. ---------------------------------------------------------------------- Comment By: FullMetalCoder (fullmetalcoder) Date: 2009-07-29 12:52 Message: Ok, after fixing bug #1947081 (see my proposed fix there) I re-enabled peephole 0zc and it works like a charm. ---------------------------------------------------------------------- Comment By: FullMetalCoder (fullmetalcoder) Date: 2009-07-29 00:05 Message: The SVN trunk still generate assembly code with unnecessary push/pop. I tried enabling the peephole entry, despite the related bug (which apparently disappeared) but it did not change anything... Are there extra steps required to turn on peephole optimizations? ---------------------------------------------------------------------- Comment By: Philipp Krause (spth) Date: 2008-07-12 14:14 Message: Logged In: YES user_id=564030 Originator: YES This (pop/push removal) is implemented by peephole 0zc in revision #5198. However the peephole is commented out; it can be enabled once bug #1947081 has been fixed. Implementing deaMove() is unnecessary since a more powerful version has been implemented in RFE #1880202. ---------------------------------------------------------------------- Comment By: Philipp Krause (spth) Date: 2007-04-19 23:30 Message: Logged In: YES user_id=564030 Originator: YES There is a deadMove() in SDCCpeeph.c which should allow the peephole optimizer to remove these pop/push pairs. It needs support from the port though and it seems this is implemented for mcs51 only. To clarify: This is a feature request to get deadMove implemented for the Z80. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=350599&aid=1703943&group_id=599 |