[llvm] [BasicBlockSections] Allow mixing of -basic-block-sections with MFS. (PR #117076)
Snehasish Kumar via llvm-commits
llvm-commits at lists.llvm.org
Fri Nov 22 11:51:38 PST 2024
================
@@ -610,6 +620,63 @@ cold_asm_target:
ret void
}
+define void @foo21(i1 zeroext %0) {
+;; Check that a function with basic-block-sections profile (but no pgo profile)
+;; is properly split when the profile is used along with mfs.
+; MFS-BBSECTIONS: .section .text.hot.foo21
+; MFS-NOBBSECTIONS-NOT: .section .text.hot.foo21
+; MFS-BBSECTIONS-LABEL: foo21:
+; MFS-NOBBSECTIONS-NOT: foo21.cold:
+; MFS-BBSECTIONS: .section .text.split.foo21
+; MFS-BBSECTIONS: foo21.cold
+ %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
+}
+
+define void @foo22(i1 zeroext %0) nounwind !prof !14 !section_prefix !15 {
+;; Check that when a function has both basic-block-section and pgo profiles
+;; only the basic-block-section profile is used for splitting.
+
+;; Check that we create two hot sections with -basic-block-sections.
+; MFS-BBSECTIONS: .section .text.hot.foo22
+; MFS-BBSECTIONS-LABEL: foo22:
+; MFS-BBSECTIONS: callq bar
+; MFS-BBSECTIONS: .section .text.hot.foo22
+; MFS-BBSECTIONS-NEXT: foo22.__part.1:
+; MFS-BBSECTIONS: callq baz
+; MFS-BBSECTIONS-NOT: .section .text.split.foo22
+ br i1 %0, label %2, label %4, !prof !17
+
+2: ; preds = %1
+ %3 = call i32 @bar()
+ br label %6
+
+4: ; preds = %1
+ %5 = call i32 @baz()
+ br label %6
+
+6: ; preds = %4, %2
+ %7 = tail call i32 @qux()
+ ret void
+}
+
+
----------------
snehasish wrote:
Unnecessary new lines?
https://github.com/llvm/llvm-project/pull/117076
More information about the llvm-commits
mailing list