Sorry Kevin, I have had no time for my hobby lately. But I am glad to see
that you are working on the OW. It would mean I can restart my
weather-project (where it all began :).
Now that we have I2C, LCD and soon OW (Kevin... ;?) and soon RTC (Johan...
;I'm almost finished!) and soon SMC (Eric... ;?) support, we really get TINI
The problem you mention seems serious, but I am sure you will find a
----- Original Message -----
From: "Kevin Vigor" <kevin@...>
Sent: Wednesday, October 18, 2000 9:14 PM
Subject: [sdcc-devel] Commit: disable packregsForOneuse for ds390 port
> I have (reluctantly) disabled the packRegsForOneuse optimization in
> The problem is that this routine allocates DPTR as the registers for
> a symbol in certain conditions, after making sure that DPTR isn't
> already in use.
> The problem is that this is done before other register allocations,
> so no spills have happened yet. If a symbol is spilled, it will
> require the use of DPTR to access it, since spills take place to
> XDATA space for the 390 port.
> So packRegsForOneuse can choose to assign DPTR because it is not in
> use, but then a later spill makes it so that DPTR actually is in use.
> This is bad, and resulted in seriously broken generated code.
> I have tried pretty hard to figure out a good way to handle this, but
> I haven't got a general solution yet. So I have just turned off the
> In case anybody wants to have a crack at a proper fix, a small sample
> which demonstrates the problem is attached: compile with sdcc -mds390
> --model-flat24 --stack-10bit -c test5.c.