This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: What is wrong with Bugzilla? [Was: Re: GCC and Floating-Point]


Haren Visavadia wrote:

test.c:
#include <assert.h>
#include <stdio.h>

volatile float x = 3;

int main()
{
	float a = 1 / x;
	x = a;
	assert(a == x);
	printf("a has value of %g \n",a);
	printf("x has value of %g  \n",x);
	assert((int)a == 0);
	assert((int)x == 0);
	return 0;
}


Compile this gcc {-O0,-O1,-O2,-O3,-Os}


You will notice it will always works  (despite not
using  -ffloat-store) and not cause an assertion
failure at all.

And so? Why would you expect this particular example to give an assertion error. I would not expect an assert error here. In unoptimized mode, you certainly do not expect it, and in optimized mode, I would expect the register tracker to know that a and x are in the same register at the point of assertion (and perhaps even eliminate the comparison entirely).


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]