In regression test libmullong (actually _mullong.c, which is included by libmullong), there is a volatile iTemp:
The line 723 from _mullong.c
t.l += a
is transformed into iCode
iTemp182 = t.l;
iTemp183 = a;
iTemp184 = iTemp182 + iTemp183;
t.l = iTemp184
iTemp183 is volatile, but I don't see any reason. Such unecessary volatiles can hinder optimization. I don't even see any reason an iTemp should ever be volatile.
Philipp
The reason is that t is a union. SDCC does not know that a change to t.l also modifies t.i or t.bi. To prevent bugs SDCC makes all unions volatile internally.
I see that it makes sense to have t.l volatile due to the shortcomings of union handling in sdcc.
But why iTemp183? iTemp183 won't alias with anything, it could even live in registers.
Philipp
Fixed in revision #9629.
Philipp
close it?