P
Peter Donov
The following console application:
---------------------
#include <stdio.h>
void main()
{
unsigned __int64 x=47;
int y=-1;
int test1=(x+y)<0;
x+=y;
//int dummy=3;dummy--;
int test2=x<0;
int test3=x<0;
printf("test1=%d, test2=%d, test3=%d\n", test1, test2,
test3);
int f=0;
}
----------------------
Produces this output:
"test1=1, test2=1, test3=0"
when compiled in "Debug" build configuration.
If you uncomment the commented line you get the
correct results for "test2" and "test3", but
"test1" is still wrong.
In "Release" it produces the correct output:
test1=0, test2=0, test3=0
I've examined the assembler code that is
generated in "Debug" mode and it seems that
there's a "cmp" instruction missing.
Is there a patch addressing this issue?
---------------------
#include <stdio.h>
void main()
{
unsigned __int64 x=47;
int y=-1;
int test1=(x+y)<0;
x+=y;
//int dummy=3;dummy--;
int test2=x<0;
int test3=x<0;
printf("test1=%d, test2=%d, test3=%d\n", test1, test2,
test3);
int f=0;
}
----------------------
Produces this output:
"test1=1, test2=1, test3=0"
when compiled in "Debug" build configuration.
If you uncomment the commented line you get the
correct results for "test2" and "test3", but
"test1" is still wrong.
In "Release" it produces the correct output:
test1=0, test2=0, test3=0
I've examined the assembler code that is
generated in "Debug" mode and it seems that
there's a "cmp" instruction missing.
Is there a patch addressing this issue?