From: SourceForge.net <no...@so...> - 2007-02-15 11:37:38
|
Feature Requests item #482179, was opened at 2001-11-15 18:34 Message generated for change (Comment added) made by frief You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=350599&aid=482179&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: Geoffrey Yerem (yerem) Assigned to: Nobody/Anonymous (nobody) Summary: Optimization: Track State of ACC & DPTR Initial Comment: Hi, Here's another opportunity for optimization. In the following code, the compiler doesn't recognize that the accumulator (used to store the constant '1') isn't changing. The same is true for the DPTR in the second example. Geoffrey xdata volatile char a, b, c, d; void f2( void ) { a = 1; // Accumulator doesn't change. b = 1; c = 1; d = 1; } void f3( void ) { a = 1; // DPTR doesn't change. a = 2; a = 3; a = 4; } ---------------------------------------------------------------------- >Comment By: Frieder Ferlemann (frief) Date: 2007-02-15 12:37 Message: Logged In: YES user_id=589052 Originator: NO Optimization of f2() is addressed by SDCC 2.6.4 #4634. Registers R0..R7 and the accumulator are tracked. No tracking of DPTR (and symbols) yet. So while f3() is three byte shorter there still are multiple "mov dptr,#_a" generated for f3(). Set environment variable SDCC_RTRACK to enable this optimization. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=350599&aid=482179&group_id=599 |