1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2025-02-01 05:01:59 +01:00

Add a note about a missed FP optimization.

llvm-svn: 123126
This commit is contained in:
Chandler Carruth 2011-01-09 21:00:19 +00:00
parent ec41e691f0
commit 2a30077fed

View File

@ -2249,3 +2249,27 @@ S is only 6 bytes, but each element is 8 byte-aligned. We generate a loop and
a memset.
//===---------------------------------------------------------------------===//
clang -O3 currently compiles this code:
extern const int magic;
double f() { return 0.0 * magic; }
into
@magic = external constant i32
define double @_Z1fv() nounwind readnone {
entry:
%tmp = load i32* @magic, align 4, !tbaa !0
%conv = sitofp i32 %tmp to double
%mul = fmul double %conv, 0.000000e+00
ret double %mul
}
We should be able to fold away this fmul to a constant, there is no 32-bit
integer which after sitofp will generate a NaN, inf, or -0.0. We should fold
this whenever the floating point type has enough exponent bits to represent
the largest integer value as < inf.
//===---------------------------------------------------------------------===//