The CFG allows us to do layout optimization in the compiler. Furthermore, it allows further branch optimization.
41 lines
982 B
LLVM
41 lines
982 B
LLVM
; BB section test with CFG.
|
|
;
|
|
;; Profile for version 1:
|
|
; RUN: echo 'v1' > %t
|
|
; RUN: echo 'f foo' >> %t
|
|
; RUN: echo 'g 0:10,1:9,2:1 1:8,3:8 2:2,3:2 3:11' >> %t
|
|
; RUN: echo 'c 0 2 3' >> %t
|
|
;
|
|
; RUN: llc < %s -O0 -mtriple=x86_64-pc-linux -function-sections -basic-block-sections=%t | FileCheck %s
|
|
;
|
|
define void @foo(i1 zeroext) nounwind {
|
|
%2 = alloca i8, align 1
|
|
%3 = zext i1 %0 to i8
|
|
store i8 %3, ptr %2, align 1
|
|
%4 = load i8, ptr %2, align 1
|
|
%5 = trunc i8 %4 to i1
|
|
br i1 %5, label %6, label %8
|
|
|
|
6: ; preds = %1
|
|
%7 = call i32 @bar()
|
|
br label %10
|
|
|
|
8: ; preds = %1
|
|
%9 = call i32 @baz()
|
|
br label %10
|
|
|
|
10: ; preds = %8, %6
|
|
ret void
|
|
}
|
|
|
|
declare i32 @bar() #1
|
|
|
|
declare i32 @baz() #1
|
|
|
|
; CHECK: .section .text.foo,"ax",@progbits
|
|
; CHECK: callq baz
|
|
; CHECK: retq
|
|
; CHECK: .section .text.split.foo,"ax",@progbits
|
|
; CHECK: callq bar
|
|
|