These should use O2 with the optsize or minsize attributes instead. This enforces that there is no divergence between pipeline-level Os/Oz and function-level Os/Oz at an architectural level. For the purpose of testing IR that does not have optsize/minsize itself, it's possible to use `-force-attribute=optsize` etc.
28 lines
747 B
LLVM
28 lines
747 B
LLVM
; Test that -inline-threshold overrides thresholds derived from opt levels.
|
|
; RUN: opt < %s -O2 -inline-threshold=500 -S | FileCheck %s
|
|
; RUN: opt < %s -O3 -inline-threshold=500 -S | FileCheck %s
|
|
|
|
@a = global i32 4
|
|
|
|
define i32 @simpleFunction(i32 %a) #0 {
|
|
entry:
|
|
%a1 = load volatile i32, ptr @a
|
|
%x1 = add i32 %a1, %a
|
|
ret i32 %x1
|
|
}
|
|
|
|
; Function Attrs: nounwind readnone uwtable
|
|
define i32 @bar(i32 %a) #0 {
|
|
; CHECK-LABEL: @bar
|
|
; CHECK: load volatile
|
|
; CHECK-NEXT: add i32
|
|
; CHECK-NEXT: call i32 @simpleFunction
|
|
; CHECK: ret
|
|
entry:
|
|
%i = tail call i32 @simpleFunction(i32 6) "function-inline-cost"="749"
|
|
%j = tail call i32 @simpleFunction(i32 %i) "function-inline-cost"="750"
|
|
ret i32 %j
|
|
}
|
|
|
|
attributes #0 = { nounwind readnone uwtable }
|