On Jun 3, 2011, at 12:50 AM, Chandler Carruth wrote: > This patch should catch more integer shift left undefined behavior according > to C and C++ standard semantics. Specifically it should catch the case where > a signed integer type when shifted is no longer representable in the result > type. > > There are some general cleanups that can be made to the existing undefined > behavior check here given the this change, but I just wanted to add > functionality here. Let me know if I should just commit freely when adding > these types of checks (provided proper testing and certainty that the > behavior is in fact undefined). Also any guidance on other languages or specs > I should be checking prior to enabling such checks (Currently looking at C99, > C++98, C++03, and C++0x) would be welcome. > > Finally, the testcase is a bit lame. I'd really like to test this by creating > sources that exhibit the undefined behavior being checked, compile and run > them verifying crash and non-crash inputs. Is that do-able in the current > test harness? Seems unlikely, but if folks have ideas I'm all ears.
Hi Chandler, Does this trap on: int x = 1; x = x << 31; While this is technically a signed overflow, I believe that we define it as valid. -Chris _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
