diff options
author | Adam Nemet <anemet@apple.com> | 2017-03-28 20:11:52 +0000 |
---|---|---|
committer | Adam Nemet <anemet@apple.com> | 2017-03-28 20:11:52 +0000 |
commit | cd847a8f3059d87cc6c5343d2dae7b25aacac322 (patch) | |
tree | f36fad6a6759edb3ee14c09c9defdf0e05be25c4 /llvm/test | |
parent | 16af53a3955e8e8b93ccc1d4674e0e5613835961 (diff) | |
download | bcm5719-llvm-cd847a8f3059d87cc6c5343d2dae7b25aacac322.tar.gz bcm5719-llvm-cd847a8f3059d87cc6c5343d2dae7b25aacac322.zip |
[IR] Add AllowContract to FastMathFlags
-ffp-contract=fast does not currently work with LTO because it's passed as a
TargetOption to the backend rather than in the IR. This adds it to
FastMathFlags.
This is toward fixing PR25721
Differential Revision: https://reviews.llvm.org/D31164
llvm-svn: 298939
Diffstat (limited to 'llvm/test')
-rw-r--r-- | llvm/test/Assembler/fast-math-flags.ll | 12 | ||||
-rw-r--r-- | llvm/test/Bitcode/compatibility.ll | 2 |
2 files changed, 14 insertions, 0 deletions
diff --git a/llvm/test/Assembler/fast-math-flags.ll b/llvm/test/Assembler/fast-math-flags.ll index f0d3ecc761d..4ef3607e1d0 100644 --- a/llvm/test/Assembler/fast-math-flags.ll +++ b/llvm/test/Assembler/fast-math-flags.ll @@ -74,6 +74,18 @@ entry: ret float %e } +; CHECK: @contract( +define float @contract(float %x, float %y) { +entry: +; CHECK: %a = fsub contract float %x, %y + %a = fsub contract float %x, %y +; CHECK: %b = fadd contract float %x, %y + %b = fadd contract float %x, %y +; CHECK: %c = fmul contract float %a, %b + %c = fmul contract float %a, %b + ret float %c +} + ; CHECK: no_nan_inf define float @no_nan_inf(float %x, float %y) { entry: diff --git a/llvm/test/Bitcode/compatibility.ll b/llvm/test/Bitcode/compatibility.ll index f1a883e53ad..b1f52bbe059 100644 --- a/llvm/test/Bitcode/compatibility.ll +++ b/llvm/test/Bitcode/compatibility.ll @@ -760,6 +760,8 @@ define void @fastmathflags(float %op1, float %op2) { ; CHECK: %f.nsz = fadd nsz float %op1, %op2 %f.arcp = fadd arcp float %op1, %op2 ; CHECK: %f.arcp = fadd arcp float %op1, %op2 + %f.contract = fadd contract float %op1, %op2 + ; CHECK: %f.contract = fadd contract float %op1, %op2 %f.fast = fadd fast float %op1, %op2 ; CHECK: %f.fast = fadd fast float %op1, %op2 ret void |