mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-26 22:42:46 +02:00
2b27bd26b6
call DAGCombiner. But we ran into a case (on Windows) where the calling convention causes argument lowering to bail out of fast-isel, and we end up in CodeGenAndEmitDAG() which does run DAGCombiner. So, we need to make DAGCombiner check for 'optnone' after all. Commit includes the test that found this, plus another one that got missed in the original optnone work. llvm-svn: 221168
36 lines
766 B
LLVM
36 lines
766 B
LLVM
; RUN: llc < %s -mcpu=corei7 -march=x86-64 -mattr=+sse2 | FileCheck %s
|
|
; Verify that floating-point operations inside 'optnone' functions
|
|
; are not optimized even if unsafe-fp-math is set.
|
|
|
|
define float @foo(float %x) #0 {
|
|
entry:
|
|
%add = fadd fast float %x, %x
|
|
%add1 = fadd fast float %add, %x
|
|
ret float %add1
|
|
}
|
|
|
|
; CHECK-LABEL: @foo
|
|
; CHECK-NOT: add
|
|
; CHECK: mul
|
|
; CHECK-NOT: add
|
|
; CHECK: ret
|
|
|
|
define float @fooWithOptnone(float %x) #1 {
|
|
entry:
|
|
%add = fadd fast float %x, %x
|
|
%add1 = fadd fast float %add, %x
|
|
ret float %add1
|
|
}
|
|
|
|
; CHECK-LABEL: @fooWithOptnone
|
|
; CHECK-NOT: mul
|
|
; CHECK: add
|
|
; CHECK-NOT: mul
|
|
; CHECK: add
|
|
; CHECK-NOT: mul
|
|
; CHECK: ret
|
|
|
|
|
|
attributes #0 = { "unsafe-fp-math"="true" }
|
|
attributes #1 = { noinline optnone "unsafe-fp-math"="true" }
|