From: SourceForge.net <no...@so...> - 2011-09-30 13:24:45
|
Bugs item #3405655, was opened at 2011-09-07 17:37 Message generated for change (Comment added) made by spth You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=3405655&group_id=599 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None Status: Open Resolution: None Priority: 4 Private: No Submitted By: Philipp Klaus Krause (spth) Assigned to: Nobody/Anonymous (nobody) Summary: volatile iTemp Initial Comment: 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 ---------------------------------------------------------------------- >Comment By: Philipp Klaus Krause (spth) Date: 2011-09-30 15:24 Message: 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 ---------------------------------------------------------------------- Comment By: Maarten Brock (maartenbrock) Date: 2011-09-30 14:53 Message: 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. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=3405655&group_id=599 |