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] | |
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] |