From: SourceForge.net <no...@so...> - 2003-11-21 19:53:49
|
Bugs item #845089, was opened at 2003-11-19 13:36 Message generated for change (Comment added) made by kflittner You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=845089&group_id=599 Category: Live range problems Group: None Status: Open Resolution: None Priority: 5 Submitted By: Nobody/Anonymous (nobody) >Assigned to: Klaus Flittner (kflittner) Summary: error in produced assembly code Initial Comment: reply to omer.enbar [at] ceibo [dot] com (ceibo.com) hello, command line: sdcc.exe err_sample.c --model-large -Lc:\sdcc\lib\large version SDCC : mcs51/gbz80/z80/avr/ds390/pic14/pic16/TININative/xa51 /ds400/hc08 2.3.6 (N ov 3 2003) (MINGW32) the incorrect output: a = 5; b = 6; swap(&a, &b); should be: a=6; b=5; but gets a=6; b=6; I tracked down the error in the assembly code, if needed. also, the bug only occurs when the function is reentrant. I also tried to remove any optimizations (--noinduction, - -no..., etc...) but it still doesn't work. ---------------------------------------------------------------------- >Comment By: Klaus Flittner (kflittner) Date: 2003-11-21 20:53 Message: Logged In: YES user_id=879538 Yes, this seems to be the problem. The best solution IMO would be, to do the LR computation after the register packing and only the really needed parts before. If there are no objections i will do this. ---------------------------------------------------------------------- Comment By: Erik Petrich (epetrich) Date: 2003-11-19 19:55 Message: Logged In: YES user_id=635249 Looks like packRegsForAssign is substituting iTemp3 for iTemp1, but not transfering the clash between iTemp1 & iTemp6 to iTemp3? ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=845089&group_id=599 |