annotate bolt/test/X86/tail-duplication-jt.s @ 252:1f2b6ac9f198 llvm-original

LLVM16-1
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Fri, 18 Aug 2023 09:04:13 +0900
parents c4bab56944e8
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
236
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
1 # This reproduces a bug in tail duplication when aggressiveCodeToDuplicate
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
2 # fails to handle a block with a jump table.
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
3
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
4 # REQUIRES: system-linux
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
5
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
6 # RUN: llvm-mc -filetype=obj -triple x86_64-unknown-unknown \
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
7 # RUN: %s -o %t.o
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
8 # RUN: link_fdata %s %t.o %t.fdata
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
9 # RUN: llvm-strip --strip-unneeded %t.o
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
10 # RUN: %clangxx %cflags -no-pie %t.o -o %t.exe -Wl,-q
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
11 # RUN: llvm-bolt %t.exe -o %t.out --data %t.fdata --relocs \
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
12 # RUN: --tail-duplication=aggressive \
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
13 # RUN: --print-cfg | FileCheck %s
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
14 # CHECK: Jump table {{.*}} for function a at {{.*}} with a total count of 3
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
15 .globl main
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
16 main:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
17 .globl a
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
18 .type a, %function
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
19 a:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
20 .cfi_startproc
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
21 b:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
22 jmp c
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
23 je b
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
24 movl %esi, %edi
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
25 c:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
26 movb 0, %cl
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
27 d:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
28 jmp e
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
29 movq 0, %r14
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
30 f:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
31 je d
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
32 jmp f
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
33 e:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
34 g:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
35 j:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
36 movq %rbp, 0
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
37 h:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
38 cmpl $0x41, 0
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
39 i:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
40 jmp h
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
41 jmp i
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
42 ja o
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
43 movl %edx, 0
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
44 p:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
45 q:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
46 k:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
47 jmpq *JT0(,%rcx,8)
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
48 # FDATA: 1 a #k# 1 a #l# 1 3
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
49 m:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
50 movl 0, %esi
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
51 r:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
52 jmpq *JT1(,%rax,8)
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
53 cmpl 1, %eax
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
54 jmp j
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
55 l:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
56 jmp m
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
57 s:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
58 movl 6, %ebx
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
59 ak:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
60 jmp e
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
61 movl 0, %eax
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
62 am:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
63 jmp p
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
64 jmp q
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
65 o:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
66 jmp g
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
67 n:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
68 xorl %r12d, %r12d
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
69 .cfi_endproc
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
70 .rodata
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
71 JT0:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
72 .quad r
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
73 .quad l
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
74 .quad ak
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
75 JT1:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
76 .quad s
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
77 .quad am
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
78 .quad n