From: Johan K. <joh...@id...> - 2000-09-13 09:44:25
|
In one of my ds390 examples I noticed (and used a work around, don't know why it workes if I look at it now) a serious bug, where sdcc keeps an external variable in ar3, and uses it from register even after an external function call (that indeed did change this variable). Making it volatile DOES solve the problem, but also implies that, to be sure, all external variables should be declared volatile and thus makes the optimizer obsolete. We don't want that, do we? I tried to find the cause of this problem, but the internals of the compiler are still to complex for me right now. I'd rather spend my time to library and example support. Attached is the stripped-down ds1621.c and it's ds1621.asm from my i2c390 example. The tag "SERIOUS BUG" in ds1621.c indicates the problem. A fast fixed would be highly appreciated :) Johan |