On Tue, May 05, 2020 at 05:05:37PM +0300, Andy Shevchenko wrote:
On Tue, May 5, 2020 at 4:37 PM Pavel Machek pavel@denx.de wrote:
On Tue 2020-05-05 16:19:11, Andy Shevchenko wrote:
On Tue, May 5, 2020 at 3:58 PM Pavel Machek pavel@denx.de wrote:
On Tue 2020-05-05 15:51:16, Andy Shevchenko wrote:
On Tue, May 5, 2020 at 3:37 PM Pavel Machek pavel@denx.de wrote:
Yeah, I pointed that out above. Both && and || permit short execution. But that does not matter, as neither "params->iterations" nor "total_tests >= params->iterations" have side effects.
Where is the runtime difference?
We have to check *both* conditions. If we don't check iterations, we just wait indefinitely until somebody tells us to stop. Everything in the commit message and mentioned there commit IDs which you may check.
No.
Yes. Please, read carefully the commit message (for your convenience I emphasized above). I don't want to spend time on this basics stuff anymore.
I'm a bit confused about this too. Maybe it's too early in the morning, so I wrote this little test program:
#include <stdio.h> #include <stdlib.h>
int main(int argc, char *argv[]) { int a = atoi(argv[1]); int b = atoi(argv[2]);
if (!a && !b) printf("A"); else printf("B");
if (!(a || b)) printf("A"); else printf("B");
printf("\n");
return 0; }
Andy, could you give an example of two values which will print something other than "AA" or "BB"?
Heck, gcc even compiles these two conditions the same way:
if (!a && !b) 11a8: 83 7d f8 00 cmpl $0x0,-0x8(%rbp) 11ac: 75 12 jne 11c0 <main+0x57> 11ae: 83 7d fc 00 cmpl $0x0,-0x4(%rbp) 11b2: 75 0c jne 11c0 <main+0x57> printf("A"); 11b4: bf 41 00 00 00 mov $0x41,%edi 11b9: e8 a2 fe ff ff callq 1060 putchar@plt 11be: eb 0a jmp 11ca <main+0x61> else printf("B"); 11c0: bf 42 00 00 00 mov $0x42,%edi 11c5: e8 96 fe ff ff callq 1060 putchar@plt
if (!(a || b)) 11ca: 83 7d f8 00 cmpl $0x0,-0x8(%rbp) 11ce: 75 12 jne 11e2 <main+0x79> 11d0: 83 7d fc 00 cmpl $0x0,-0x4(%rbp) 11d4: 75 0c jne 11e2 <main+0x79> printf("A"); 11d6: bf 41 00 00 00 mov $0x41,%edi 11db: e8 80 fe ff ff callq 1060 putchar@plt 11e0: eb 0a jmp 11ec <main+0x83> else printf("B"); 11e2: bf 42 00 00 00 mov $0x42,%edi 11e7: e8 74 fe ff ff callq 1060 putchar@plt