|
6 | 6 | ; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -split-machine-functions -mfs-psi-cutoff=0 -mfs-count-threshold=2000 | FileCheck %s --dump-input=always -check-prefixes=MFS-OPTS1,MFS-OPTS1-X86
|
7 | 7 | ; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -split-machine-functions -mfs-psi-cutoff=950000 | FileCheck %s -check-prefixes=MFS-OPTS2,MFS-OPTS2-X86
|
8 | 8 | ; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -split-machine-functions -mfs-split-ehcode | FileCheck %s -check-prefixes=MFS-EH-SPLIT,MFS-EH-SPLIT-X86
|
| 9 | +; RUN: llc < %s -mtriple=x86_64 -split-machine-functions -O0 -mfs-psi-cutoff=0 -mfs-count-threshold=10000 | FileCheck %s -check-prefixes=MFS-O0,MFS-O0-X86 |
9 | 10 |
|
10 | 11 | ; RUN: llc < %s -mtriple=aarch64-unknown-linux-gnu -enable-split-machine-functions -mfs-allow-unsupported-triple | FileCheck %s -check-prefixes=MFS-DEFAULTS,MFS-DEFAULTS-AARCH64
|
11 | 12 | ; RUN: llc < %s -mtriple=aarch64-unknown-linux-gnu -enable-split-machine-functions -mfs-allow-unsupported-triple -mfs-psi-cutoff=0 -mfs-count-threshold=2000 | FileCheck %s --dump-input=always -check-prefixes=MFS-OPTS1,MFS-OPTS1-AARCH64
|
12 | 13 | ; RUN: llc < %s -mtriple=aarch64-unknown-linux-gnu -enable-split-machine-functions -mfs-allow-unsupported-triple -mfs-psi-cutoff=950000 | FileCheck %s -check-prefixes=MFS-OPTS2,MFS-OPTS2-AARCH64
|
13 | 14 | ; RUN: llc < %s -mtriple=aarch64-unknown-linux-gnu -enable-split-machine-functions -mfs-allow-unsupported-triple -mfs-split-ehcode | FileCheck %s -check-prefixes=MFS-EH-SPLIT,MFS-EH-SPLIT-AARCH64
|
| 15 | +; RUN: llc < %s -mtriple=aarch64 -enable-split-machine-functions -O0 -mfs-allow-unsupported-triple -mfs-psi-cutoff=0 -mfs-count-threshold=10000 | FileCheck %s --dump-input=always -check-prefixes=MFS-O0,MFS-O0-AARCH64 |
14 | 16 |
|
15 | 17 | ; COM: Machine function splitting with AFDO profiles
|
16 | 18 | ; RUN: sed 's/InstrProf/SampleProfile/g' %s > %t.ll
|
@@ -462,6 +464,29 @@ define void @foo15(i1 zeroext %0, i1 zeroext %1) nounwind !prof !27 {
|
462 | 464 | ret void
|
463 | 465 | }
|
464 | 466 |
|
| 467 | +define void @foo16(i1 zeroext %0) nounwind !prof !14 !section_prefix !15 { |
| 468 | +;; Check that an unconditional branch is only appended to a block |
| 469 | +;; if it would fall through to the wrong block otherwise. |
| 470 | +; MFS-O0-LABEL: foo16 |
| 471 | +; MFS-O0-X86: jmp |
| 472 | +; MFS-O0-X86-NOT: jmp |
| 473 | +; MFS-O0-AARCH64: br |
| 474 | +; MFS-O0-AARCH64: br |
| 475 | +; MFS-O0-AARCH64-NOT: br |
| 476 | +; MFS-O0: .section .text.split.foo16 |
| 477 | +; MFS-O0-NEXT: foo16.cold |
| 478 | + %2 = call i32 @baz() |
| 479 | + br i1 false, label %3, label %5, !prof !25 |
| 480 | + |
| 481 | +3: ; preds = %1 |
| 482 | + %4 = call i32 @bar() |
| 483 | + unreachable |
| 484 | + |
| 485 | +5: ; preds = %1 |
| 486 | + %6 = tail call i32 @qux() |
| 487 | + ret void |
| 488 | +} |
| 489 | + |
465 | 490 | declare i32 @bar()
|
466 | 491 | declare i32 @baz()
|
467 | 492 | declare i32 @bam()
|
|
0 commit comments