| |
| Posted by Brian Gardner in reply to Walter Bright | PermalinkReply |
|
Brian Gardner
Posted in reply to Walter Bright
| Walter Bright wrote:
> Brian Gardner wrote:
>> Does DMC perform floating-point optimizations with the -o option?
>>
>> For example: y = 2.0l * (1.0l * x + 0.0l);
>> after optimization becomes: y = x + x;
>
> To check what kinds it does, it's pretty easy to write up a sample, compile it, then obj2asm the result.
Well, I'm not familiar with assembler code.
Anyway I set up a test code:
#include <stdio.h>
int main(int argc, char *argv[]){
long double y, x = argc;
y = 1.0l * x + 0.0l;
return printf("%Lg\n", y);
}
With or without -o, instruction faddp is in the asm code generated from obj2asm. So, this means that x + 0.0l is left?
What about for 1.0l * x?
>For the above case, the two statements aren't equivalent.
So, 2.0l * x is not equivalent to x + x? Why?
Thanks,
Brian
|