From: SourceForge.net <no...@so...> - 2004-10-18 11:03:30
|
Bugs item #1049137, was opened at 2004-10-18 13:03 Message generated for change (Tracker Item Submitted) made by Item Submitter You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=1049137&group_id=599 Category: z80 port Group: None Status: Open Resolution: None Priority: 5 Submitted By: Thomas Tensi (ttensi) Assigned to: Nobody/Anonymous (nobody) Summary: Possible Register Allocation Problem Initial Comment: There is a problem which seems to be similar to problem 855165 ("Code generator selects incorrect registers"). The scenario is a routine which prints out a parameter value (Background_setViewport, swp), does some checks without changing anything and does a call to some function (Background_fillViewport fvp), which prints its first two parameters. Since the parameters received by swp are the ones passed to fvp the expected result is: swp((0,0)) fvp((0,0)) The included code snippet prints out the correct values when the macro PROVOKE_ERROR is undefined. To see the error the macro PROVOKE_ERROR must be defined within the program. Then a call to some (empty!) function is included just before the problematic call to fvp. The result for this constellation is swp((0,0)) fvp((0,255)) Hence the inclusion of some routine without functionality changes the parameters of some later call. By the way: casting the first two parameters in the call to Background__fillViewport to 16 bits and leaving in the call to Background__updateVP also solves the problem! This is in the GBZ80 port which I know is unsupported. Nevertheless since the port is mostly identical to the Z80 port (especially with respect to the register allocation strategy), I think there is a fundamental problem in the Z80 port that the register allocation strategy is faulty. Thanks for your support. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=1049137&group_id=599 |