[llvm-shlib] Fix the version naming style of libLLVM for Windows (#85710)
[llvm-project.git] / bolt / test / X86 / fallthrough-to-noop.test
blob2055ca603043ab42c2f6c63c8a30152eb7347bb0
1 # Check that profile data for the fall-through jump is not ignored when there is
2 # a conditional jump followed by a no-op.
4 RUN: llvm-mc -filetype=obj -triple x86_64-unknown-unknown \
5 RUN:   %S/Inputs/ft_to_noop.s -o %t.o
6 RUN: link_fdata %S/Inputs/ft_to_noop.s %t.o %t.fdata --nmtool llvm-nm
7 RUN: llvm-strip --strip-unneeded %t.o
8 RUN: %clang %cflags %t.o -o %t.exe -Wl,-q
9 RUN: llvm-bolt %t.exe -o %t --data %t.fdata \
10 RUN:   --print-cfg --sequential-disassembly 2>&1 | FileCheck %s
12 CHECK:      Binary Function "foo" after building cfg
13 CHECK:        Exec Count  : 20
14 CHECK:        Profile Acc : 100.0%
16 # This block is terminated with a conditional jump to .Ltmp0 followed by a
17 # no-op. The profile data contains a count for the fall-through (3) which
18 # is different from what would be inferred (2). However the destination
19 # offset of this fall-through jump in the profile data points to the no-op
20 # following the jump and not the start of the fall-through block .LFT0.
21 CHECK:      Entry Point
22 CHECK-NEXT:   Exec Count : 20
23 CHECK:        Successors: .Ltmp[[#BB1:]] (mispreds: 0, count: 18), .LFT[[#BB2:]] (mispreds: 0, count: 3)
25 CHECK:      .LFT[[#BB2]]
26 CHECK-NEXT:   Exec Count : 3
27 CHECK:        Successors: .Ltmp[[#]] (mispreds: 0, count: 0)
29 CHECK:      .Ltmp[[#BB1]]
30 CHECK-NEXT:   Exec Count : 18