mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-28 19:31:58 +00:00
3bd471dee2
override the default cold threshold. When we use command line argument to set the inline threshold, the default cold threshold will not be used. This is in line with how we use OptSizeThreshold. When we want a higher threshold for all functions, we do not have to set both inline threshold and cold threshold. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207245 91177308-0d34-0410-b5e6-96231b3b80d8
201 lines
5.6 KiB
LLVM
201 lines
5.6 KiB
LLVM
; RUN: opt < %s -inline -S -inlinecold-threshold=75 | FileCheck %s
|
|
; Test that functions with attribute Cold are not inlined while the
|
|
; same function without attribute Cold will be inlined.
|
|
|
|
; RUN: opt < %s -inline -S -inline-threshold=600 | FileCheck %s -check-prefix=OVERRIDE
|
|
; The command line argument for inline-threshold should override
|
|
; the default cold threshold, so a cold function with size bigger
|
|
; than the default cold threshold (225) will be inlined.
|
|
|
|
; RUN: opt < %s -inline -S | FileCheck %s -check-prefix=DEFAULT
|
|
; The same cold function will not be inlined with the default behavior.
|
|
|
|
@a = global i32 4
|
|
|
|
; This function should be larger than the cold threshold (75), but smaller
|
|
; than the regular threshold.
|
|
; Function Attrs: nounwind readnone uwtable
|
|
define i32 @simpleFunction(i32 %a) #0 {
|
|
entry:
|
|
%a1 = load volatile i32* @a
|
|
%x1 = add i32 %a1, %a1
|
|
%a2 = load volatile i32* @a
|
|
%x2 = add i32 %x1, %a2
|
|
%a3 = load volatile i32* @a
|
|
%x3 = add i32 %x2, %a3
|
|
%a4 = load volatile i32* @a
|
|
%x4 = add i32 %x3, %a4
|
|
%a5 = load volatile i32* @a
|
|
%x5 = add i32 %x4, %a5
|
|
%a6 = load volatile i32* @a
|
|
%x6 = add i32 %x5, %a6
|
|
%a7 = load volatile i32* @a
|
|
%x7 = add i32 %x6, %a6
|
|
%a8 = load volatile i32* @a
|
|
%x8 = add i32 %x7, %a8
|
|
%a9 = load volatile i32* @a
|
|
%x9 = add i32 %x8, %a9
|
|
%a10 = load volatile i32* @a
|
|
%x10 = add i32 %x9, %a10
|
|
%a11 = load volatile i32* @a
|
|
%x11 = add i32 %x10, %a11
|
|
%a12 = load volatile i32* @a
|
|
%x12 = add i32 %x11, %a12
|
|
%add = add i32 %x12, %a
|
|
ret i32 %add
|
|
}
|
|
|
|
; Function Attrs: nounwind cold readnone uwtable
|
|
define i32 @ColdFunction(i32 %a) #1 {
|
|
; CHECK-LABEL: @ColdFunction
|
|
; CHECK: ret
|
|
; OVERRIDE-LABEL: @ColdFunction
|
|
; OVERRIDE: ret
|
|
; DEFAULT-LABEL: @ColdFunction
|
|
; DEFAULT: ret
|
|
entry:
|
|
%a1 = load volatile i32* @a
|
|
%x1 = add i32 %a1, %a1
|
|
%a2 = load volatile i32* @a
|
|
%x2 = add i32 %x1, %a2
|
|
%a3 = load volatile i32* @a
|
|
%x3 = add i32 %x2, %a3
|
|
%a4 = load volatile i32* @a
|
|
%x4 = add i32 %x3, %a4
|
|
%a5 = load volatile i32* @a
|
|
%x5 = add i32 %x4, %a5
|
|
%a6 = load volatile i32* @a
|
|
%x6 = add i32 %x5, %a6
|
|
%a7 = load volatile i32* @a
|
|
%x7 = add i32 %x6, %a6
|
|
%a8 = load volatile i32* @a
|
|
%x8 = add i32 %x7, %a8
|
|
%a9 = load volatile i32* @a
|
|
%x9 = add i32 %x8, %a9
|
|
%a10 = load volatile i32* @a
|
|
%x10 = add i32 %x9, %a10
|
|
%a11 = load volatile i32* @a
|
|
%x11 = add i32 %x10, %a11
|
|
%a12 = load volatile i32* @a
|
|
%x12 = add i32 %x11, %a12
|
|
%add = add i32 %x12, %a
|
|
ret i32 %add
|
|
}
|
|
|
|
; This function should be larger than the default cold threshold (225).
|
|
define i32 @ColdFunction2(i32 %a) #1 {
|
|
; CHECK-LABEL: @ColdFunction2
|
|
; CHECK: ret
|
|
; OVERRIDE-LABEL: @ColdFunction2
|
|
; OVERRIDE: ret
|
|
; DEFAULT-LABEL: @ColdFunction2
|
|
; DEFAULT: ret
|
|
entry:
|
|
%a1 = load volatile i32* @a
|
|
%x1 = add i32 %a1, %a1
|
|
%a2 = load volatile i32* @a
|
|
%x2 = add i32 %x1, %a2
|
|
%a3 = load volatile i32* @a
|
|
%x3 = add i32 %x2, %a3
|
|
%a4 = load volatile i32* @a
|
|
%x4 = add i32 %x3, %a4
|
|
%a5 = load volatile i32* @a
|
|
%x5 = add i32 %x4, %a5
|
|
%a6 = load volatile i32* @a
|
|
%x6 = add i32 %x5, %a6
|
|
%a7 = load volatile i32* @a
|
|
%x7 = add i32 %x6, %a7
|
|
%a8 = load volatile i32* @a
|
|
%x8 = add i32 %x7, %a8
|
|
%a9 = load volatile i32* @a
|
|
%x9 = add i32 %x8, %a9
|
|
%a10 = load volatile i32* @a
|
|
%x10 = add i32 %x9, %a10
|
|
%a11 = load volatile i32* @a
|
|
%x11 = add i32 %x10, %a11
|
|
%a12 = load volatile i32* @a
|
|
%x12 = add i32 %x11, %a12
|
|
|
|
%a21 = load volatile i32* @a
|
|
%x21 = add i32 %x12, %a21
|
|
%a22 = load volatile i32* @a
|
|
%x22 = add i32 %x21, %a22
|
|
%a23 = load volatile i32* @a
|
|
%x23 = add i32 %x22, %a23
|
|
%a24 = load volatile i32* @a
|
|
%x24 = add i32 %x23, %a24
|
|
%a25 = load volatile i32* @a
|
|
%x25 = add i32 %x24, %a25
|
|
%a26 = load volatile i32* @a
|
|
%x26 = add i32 %x25, %a26
|
|
%a27 = load volatile i32* @a
|
|
%x27 = add i32 %x26, %a27
|
|
%a28 = load volatile i32* @a
|
|
%x28 = add i32 %x27, %a28
|
|
%a29 = load volatile i32* @a
|
|
%x29 = add i32 %x28, %a29
|
|
%a30 = load volatile i32* @a
|
|
%x30 = add i32 %x29, %a30
|
|
%a31 = load volatile i32* @a
|
|
%x31 = add i32 %x30, %a31
|
|
%a32 = load volatile i32* @a
|
|
%x32 = add i32 %x31, %a32
|
|
|
|
%a41 = load volatile i32* @a
|
|
%x41 = add i32 %x32, %a41
|
|
%a42 = load volatile i32* @a
|
|
%x42 = add i32 %x41, %a42
|
|
%a43 = load volatile i32* @a
|
|
%x43 = add i32 %x42, %a43
|
|
%a44 = load volatile i32* @a
|
|
%x44 = add i32 %x43, %a44
|
|
%a45 = load volatile i32* @a
|
|
%x45 = add i32 %x44, %a45
|
|
%a46 = load volatile i32* @a
|
|
%x46 = add i32 %x45, %a46
|
|
%a47 = load volatile i32* @a
|
|
%x47 = add i32 %x46, %a47
|
|
%a48 = load volatile i32* @a
|
|
%x48 = add i32 %x47, %a48
|
|
%a49 = load volatile i32* @a
|
|
%x49 = add i32 %x48, %a49
|
|
%a50 = load volatile i32* @a
|
|
%x50 = add i32 %x49, %a50
|
|
%a51 = load volatile i32* @a
|
|
%x51 = add i32 %x50, %a51
|
|
%a52 = load volatile i32* @a
|
|
%x52 = add i32 %x51, %a52
|
|
|
|
%add = add i32 %x52, %a
|
|
ret i32 %add
|
|
}
|
|
|
|
; Function Attrs: nounwind readnone uwtable
|
|
define i32 @bar(i32 %a) #0 {
|
|
; CHECK-LABEL: @bar
|
|
; CHECK: call i32 @ColdFunction(i32 5)
|
|
; CHECK-NOT: call i32 @simpleFunction(i32 6)
|
|
; CHECK: call i32 @ColdFunction2(i32 5)
|
|
; CHECK: ret
|
|
; OVERRIDE-LABEL: @bar
|
|
; OVERRIDE-NOT: call i32 @ColdFunction(i32 5)
|
|
; OVERRIDE-NOT: call i32 @simpleFunction(i32 6)
|
|
; OVERRIDE-NOT: call i32 @ColdFunction2(i32 5)
|
|
; OVERRIDE: ret
|
|
; DEFAULT-LABEL: @bar
|
|
; DEFAULT-NOT: call i32 @ColdFunction(i32 5)
|
|
; DEFAULT-NOT: call i32 @simpleFunction(i32 6)
|
|
; DEFAULT: call i32 @ColdFunction2(i32 5)
|
|
; DEFAULT: ret
|
|
entry:
|
|
%0 = tail call i32 @ColdFunction(i32 5)
|
|
%1 = tail call i32 @simpleFunction(i32 6)
|
|
%2 = tail call i32 @ColdFunction2(i32 5)
|
|
%3 = add i32 %0, %1
|
|
%add = add i32 %2, %3
|
|
ret i32 %add
|
|
}
|
|
|
|
attributes #0 = { nounwind readnone uwtable }
|
|
attributes #1 = { nounwind cold readnone uwtable }
|