On Thu, 21 Dec 2006, Ian Lance Taylor wrote: > > Another question for the GCC experts: would it fix the bug > > if we replaced "j *= 2" with "j <<= 1" in this sample code? > > Well, mainline VRP isn't clever enough to understand that case. But > it doesn't make the code any more defined. A left shift of a signed > value to a value which can not be represented in the signed type is > also undefined (C99 6.5.7).
As noted, it's only undefined in C99 not C90 and we document that this undefinedness isn't used at present; and non-front-end code can't use flag_isoc99 since it isn't available in non-C-family front ends. -- Joseph S. Myers [EMAIL PROTECTED]