Am Montag, dem 18.09.2023 um 22:15 +0200 schrieb Paul Floyd via Gcc: > > On 18-09-23 21:09, Martin Uecker wrote: > > > I do not understand why memcheck cares about the potential trap when > > deciding to do the backwards transformation that combines the two > > comparisons? Can't you just remove this condition? I assume it > > is meant as a filter to only transform cases which really come > > from an '&&' condition in the source, but as this example show, this > > is too strict. Or am I missing something? > > My understanding is that this is a generic transformation of > > if (a && b) [which might have been transposed from if (b && a)] > > into > > if (a & b) [with appropriate extension to the right size]. > > That means both get evaluated and we can't take that risk that one of > them traps.
Is the problem that valgrind transforms the code before it then emulates it and the problem is that during emulation the code could trap? Martin