From: Nathan C. <co...@cs...> - 2005-07-18 17:51:09
|
Upon using some randomly generated C to test my CIL extensions, I believe there might be an unsoundness in the constant folder. My understanding of shifts is that both the left shift and the right shift are undefined if their right operand is greater than the bit width of the left operand. Also, I believe that even though shifting a negative number right is normally sign extended, the official behavior is not defined (could have 0s or 1s pushed on). I am still using CIL 1.3.2, but this does not appear to have been addressed in 1.3.3 according to the change log. I have two questions: First, am I correct in my understanding of these shift corner cases? Second, if this is a problem, do I need to write the fix myself or do you have it somewhere? Nathan |