forked from OSchip/llvm-project
'optnone' should not disable DAG combiner.
Reverts the code change from r221168 and the relevant test. It was a mistake to disable the combiner, and based on the ultimate definition of 'optnone' we shouldn't have considered the test case as failing in the first place. llvm-svn: 233153
This commit is contained in:
parent
4dbd88f3b4
commit
284f0451cf
|
@ -1183,11 +1183,6 @@ void DAGCombiner::Run(CombineLevel AtLevel) {
|
|||
LegalOperations = Level >= AfterLegalizeVectorOps;
|
||||
LegalTypes = Level >= AfterLegalizeTypes;
|
||||
|
||||
// Early exit if this basic block is in an optnone function.
|
||||
if (DAG.getMachineFunction().getFunction()->hasFnAttribute(
|
||||
Attribute::OptimizeNone))
|
||||
return;
|
||||
|
||||
// Add all the dag nodes to the worklist.
|
||||
for (SelectionDAG::allnodes_iterator I = DAG.allnodes_begin(),
|
||||
E = DAG.allnodes_end(); I != E; ++I)
|
||||
|
|
|
@ -1,35 +0,0 @@
|
|||
; 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" }
|
Loading…
Reference in New Issue