Tim Prince wrote:
Roberto Bagnara wrote:
#include <fenv.h>
#include <cstdio>
int main() {
float x = 2;
float y = 3;
feclearexcept(FE_INEXACT);
x = x / y;
printf("%d %.1000g\n", fetestexcept(FE_INEXACT) != 0, x);
}
Is this a way of testing whether the division is performed at compile
time? Do you call it a bug if constant propagation occurs when you don't
take action to prevent it?
Hi Tim,
I am not sure I understand your message. However, before mailing I did
check that constant propagation is not an issue by checking the generated
assembly:
ldq $27,feclearexcept($29) !literal!2
jsr $26,($27),0 !lituse_jsr!2
ldah $29,0($26) !gpdisp!3
lda $29,0($29) !gpdisp!3
lds $f11,20($15)
lds $f10,16($15)
divs/sui $f11,$f10,$f12
trapb
cpys $f12,$f12,$f10
sts $f10,20($15)
ldah $16,32($31)
ldq $27,fetestexcept($29) !literal!4
jsr $26,($27),0 !lituse_jsr!4
Note that I am not compiling with optimizations and that the
divs/sui opcode is generated.
All the best,
Roberto
--
Prof. Roberto Bagnara
Computer Science Group
Department of Mathematics, University of Parma, Italy
http://www.cs.unipr.it/~bagnara/
mailto:[EMAIL PROTECTED]