Re: [PATCH] Careful with BIT_NOT_EXPR folding (PR middle-end/56917)

2014-12-04 Thread Richard Biener
On December 4, 2014 7:37:32 PM CET, Marek Polacek wrote: >On Thu, Dec 04, 2014 at 05:34:35PM +0100, Richard Biener wrote: >> On December 4, 2014 4:45:25 PM CET, Marek Polacek > wrote: >> >The PR shows a case in which fold introduces undefined behavior in a >> >valid program, because what it does h

Re: [PATCH] Careful with BIT_NOT_EXPR folding (PR middle-end/56917)

2014-12-04 Thread Marek Polacek
On Thu, Dec 04, 2014 at 05:34:35PM +0100, Richard Biener wrote: > On December 4, 2014 4:45:25 PM CET, Marek Polacek wrote: > >The PR shows a case in which fold introduces undefined behavior in a > >valid program, because what it does here is > >-(long int) (ul + ULONG_MAX) - 1 -> > >~(long int) (u

Re: [PATCH] Careful with BIT_NOT_EXPR folding (PR middle-end/56917)

2014-12-04 Thread Richard Biener
On December 4, 2014 4:45:25 PM CET, Marek Polacek wrote: >The PR shows a case in which fold introduces undefined behavior in a >valid program, because what it does here is >-(long int) (ul + ULONG_MAX) - 1 -> >~(long int) (ul + ULONG_MAX) -> >-(long int) ul >But the latter transformation is wrong

[PATCH] Careful with BIT_NOT_EXPR folding (PR middle-end/56917)

2014-12-04 Thread Marek Polacek
The PR shows a case in which fold introduces undefined behavior in a valid program, because what it does here is -(long int) (ul + ULONG_MAX) - 1 -> ~(long int) (ul + ULONG_MAX) -> -(long int) ul But the latter transformation is wrong if ul is unsigned long and equals LONG_MAX + 1UL, because that i