------- Comment #3 from 0xe2 dot 0x9a dot 0x9b at gmail dot com 2010-02-16 11:23 ------- (In reply to comment #2) > > If I were to modify the test case like this: > > int i = ab.b; > b2 = i + i; > > I would be ALSO triggering undefined behavior. But the modified test-case > would > succeed at any optimization level.
Whoops. This obviously is one of my bad days: the modified test-case would fail at -O2 as well. Anyway, the test-case was extracted from a much larger piece of code which works OK if I compile it with -O2 but generates a segmentation fault when compiled with -O3, because the optimization is deeper and allows the compiler to evaluate the conditional expression at compile-time. Let me return to the original issue: the inconsistency between the behavior at -Oi vs -O(i+1). Are you going to fix it, or not? > I don't think you understand what I am demanding here: I demand the compiler > to > have CONSISTENT BEHAVIOR in cases which are not defined by the standard. The > modified code does clearly the SAME thing as the code in the test-case, only > the intermediate conversion to the integer is now more explicit. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43089