mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-08 06:32:24 +00:00
Add a note about a missed FP optimization.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123126 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
43a566519b
commit
96b1b6c135
@ -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.
|
||||
|
||||
//===---------------------------------------------------------------------===//
|
||||
|
Loading…
x
Reference in New Issue
Block a user