Does any one else have problems with the higher levels of optimisation available to C51? With common block subroutines switched on, sometimes, just sometimes, C51 will generate completely wrong code. I have noticed that the problems are often associated with pointers that are automatic variables and where there is a variable of the same name in another function. Common block subroutines have a dramatic affect on code size, but I don't use this level of optimisation because it just does not seem to be reliable.
"please describe bug fixes in detail in your version release notes." I've been moaning about the lack of information in the so-called "release notes" for ages! I think all the "release notes" for all the 6.xx versions were identical apart from the value of the "xx"!!! (yes, I even did a text compare once!) Things have improved recently, but there's still a way to go; eg proper documentation of bugs/issues fixed, and known issues remaining.
We can confirm that your problem is most likely fixed in the current version. Take a look to http://www.keil.com/update/_c51/c51v703a.htm which are the release notes of the current revision. In the first item under V7.02 we refer to the fact that we have corrected some problems with linker code packing.