|
23 | 23 | # STARTUP-FUNC-ORDER: Ordered 3 sections using balanced partitioning |
24 | 24 | # STARTUP-FUNC-ORDER: Total area under the page fault curve: 3. |
25 | 25 |
|
26 | | -# RUN: ld.lld -o - a.o --symbol-ordering-file a.txt --irpgo-profile=a.profdata --bp-startup-sort=function | llvm-nm --numeric-sort --format=just-symbols - | FileCheck %s --check-prefix=ORDERFILE |
27 | | -# RUN: ld.lld -o - a.o --symbol-ordering-file a.txt --bp-compression-sort=both | llvm-nm --numeric-sort --format=just-symbols - | FileCheck %s --check-prefix=ORDERFILE |
28 | | - |
29 | | -## Rodata |
30 | | -# ORDERFILE: s2 |
31 | | -# ORDERFILE-NEXT: s1 |
32 | | -# ORDERFILE-NEXT: s3 |
33 | | - |
34 | | -## Functions |
35 | | -# ORDERFILE-NEXT: A |
36 | | -# ORDERFILE-NEXT: F |
37 | | -# ORDERFILE-NEXT: E |
38 | | -# ORDERFILE-NEXT: D |
39 | | -# ORDERFILE-DAG: B |
40 | | -# ORDERFILE-DAG: C |
41 | | -# ORDERFILE-NEXT: _start |
42 | | - |
43 | | -## Data |
44 | | -# ORDERFILE-NEXT: r3 |
45 | | -# ORDERFILE-NEXT: r2 |
46 | | -# ORDERFILE-NEXT: r1 |
47 | | -# ORDERFILE-NEXT: r4 |
48 | | - |
49 | | -# RUN: ld.lld a.o --verbose-bp-section-orderer --bp-compression-sort=function 2>&1 | FileCheck %s --check-prefix=BP-COMPRESSION-FUNC |
50 | | -# RUN: ld.lld a.o --verbose-bp-section-orderer --bp-compression-sort=data 2>&1 | FileCheck %s --check-prefix=BP-COMPRESSION-DATA |
51 | | -# RUN: ld.lld a.o --verbose-bp-section-orderer --bp-compression-sort=both 2>&1 | FileCheck %s --check-prefix=BP-COMPRESSION-BOTH |
52 | | -# RUN: ld.lld a.o --verbose-bp-section-orderer --bp-compression-sort=both --irpgo-profile=a.profdata --bp-startup-sort=function 2>&1 | FileCheck %s --check-prefix=BP-COMPRESSION-BOTH |
| 26 | +# RUN: ld.lld -o out.s a.o --irpgo-profile=a.profdata --bp-startup-sort=function |
| 27 | +# RUN: llvm-nm -jn out.s | tr '\n' , | FileCheck %s --check-prefix=STARTUP |
| 28 | +# STARTUP: s5,s4,s3,s2,s1,A,B,C,F,E,D,_start,d4,d3,d2,d1, |
| 29 | + |
| 30 | +# RUN: ld.lld -o out.os a.o --irpgo-profile=a.profdata --bp-startup-sort=function --symbol-ordering-file a.txt |
| 31 | +# RUN: llvm-nm -jn out.os | tr '\n' , | FileCheck %s --check-prefix=ORDER-STARTUP |
| 32 | +# ORDER-STARTUP: s2,s1,s5,s4,s3,A,F,E,D,B,C,_start,d4,d3,d2,d1, |
| 33 | + |
| 34 | +# RUN: ld.lld -o out.cf a.o --verbose-bp-section-orderer --bp-compression-sort=function 2>&1 | FileCheck %s --check-prefix=BP-COMPRESSION-FUNC |
| 35 | +# RUN: llvm-nm -jn out.cf | tr '\n' , | FileCheck %s --check-prefix=CFUNC |
| 36 | +# CFUNC: s5,s4,s3,s2,s1,F,C,E,D,B,A,_start,d4,d3,d2,d1, |
| 37 | + |
| 38 | +# RUN: ld.lld -o out.cd a.o --verbose-bp-section-orderer --bp-compression-sort=data 2>&1 | FileCheck %s --check-prefix=BP-COMPRESSION-DATA |
| 39 | +# RUN: llvm-nm -jn out.cd | tr '\n' , | FileCheck %s --check-prefix=CDATA |
| 40 | +# CDATA: s4,s2,s1,s5,s3,F,C,E,D,B,A,_start,d4,d1,d3,d2, |
| 41 | + |
| 42 | +# RUN: ld.lld -o out.cb a.o --verbose-bp-section-orderer --bp-compression-sort=both 2>&1 | FileCheck %s --check-prefix=BP-COMPRESSION-BOTH |
| 43 | +# RUN: llvm-nm -jn out.cb | tr '\n' , | FileCheck %s --check-prefix=CDATA |
| 44 | + |
| 45 | +# RUN: ld.lld -o out.cbs a.o --verbose-bp-section-orderer --bp-compression-sort=both --irpgo-profile=a.profdata --bp-startup-sort=function 2>&1 | FileCheck %s --check-prefix=BP-COMPRESSION-BOTH |
| 46 | +# RUN: llvm-nm -jn out.cbs | tr '\n' , | FileCheck %s --check-prefix=CBOTH-STARTUP |
| 47 | +# CBOTH-STARTUP: s4,s2,s1,s5,s3,A,B,C,F,E,D,_start,d4,d1,d3,d2, |
53 | 48 |
|
54 | 49 | # BP-COMPRESSION-FUNC: Ordered 7 sections using balanced partitioning |
55 | | -# BP-COMPRESSION-DATA: Ordered 7 sections using balanced partitioning |
56 | | -# BP-COMPRESSION-BOTH: Ordered 14 sections using balanced partitioning |
| 50 | +# BP-COMPRESSION-DATA: Ordered 9 sections using balanced partitioning |
| 51 | +# BP-COMPRESSION-BOTH: Ordered 16 sections using balanced partitioning |
57 | 52 |
|
58 | 53 | #--- a.proftext |
59 | 54 | :ir |
|
109 | 104 | r2 |
110 | 105 |
|
111 | 106 | #--- a.c |
112 | | -const char s1[] = "hello world"; |
113 | | -const char s2[] = "i am a string"; |
114 | | -const char s3[] = "this is s3"; |
115 | | -const char *r1 = s1; |
116 | | -const char **r2 = &r1; |
117 | | -const char ***r3 = &r2; |
118 | | -const char *r4 = s2; |
| 107 | +const char s5[] = "engineering"; |
| 108 | +const char s4[] = "computer program"; |
| 109 | +const char s3[] = "hardware engineer"; |
| 110 | +const char s2[] = "computer software"; |
| 111 | +const char s1[] = "hello world program"; |
| 112 | +int d4[] = {1,2,3,4,5,6}; |
| 113 | +int d3[] = {5,6,7,8}; |
| 114 | +int d2[] = {7,8,9,10}; |
| 115 | +int d1[] = {3,4,5,6}; |
119 | 116 |
|
120 | 117 | int C(int a); |
121 | 118 | int B(int a); |
@@ -250,65 +247,89 @@ _start: // @_start |
250 | 247 | .Lfunc_end6: |
251 | 248 | .size _start, .Lfunc_end6-_start |
252 | 249 | // -- End function |
253 | | - .type s1,@object // @s1 |
254 | | - .section .rodata.s1,"a",@progbits |
255 | | - .globl s1 |
256 | | -s1: |
257 | | - .asciz "hello world" |
258 | | - .size s1, 12 |
| 250 | + .type s5,@object // @s5 |
| 251 | + .section .rodata.s5,"a",@progbits |
| 252 | + .globl s5 |
| 253 | +s5: |
| 254 | + .asciz "engineering" |
| 255 | + .size s5, 12 |
259 | 256 |
|
260 | | - .type s2,@object // @s2 |
261 | | - .section .rodata.s2,"a",@progbits |
262 | | - .globl s2 |
263 | | -s2: |
264 | | - .asciz "i am a string" |
265 | | - .size s2, 14 |
| 257 | + .type s4,@object // @s4 |
| 258 | + .section .rodata.s4,"a",@progbits |
| 259 | + .globl s4 |
| 260 | +s4: |
| 261 | + .asciz "computer program" |
| 262 | + .size s4, 17 |
266 | 263 |
|
267 | 264 | .type s3,@object // @s3 |
268 | 265 | .section .rodata.s3,"a",@progbits |
269 | 266 | .globl s3 |
270 | 267 | s3: |
271 | | - .asciz "this is s3" |
272 | | - .size s3, 11 |
273 | | - |
274 | | - .type r1,@object // @r1 |
275 | | - .section .data.r1,"aw",@progbits |
276 | | - .globl r1 |
277 | | - .p2align 3, 0x0 |
278 | | -r1: |
279 | | - .xword s1 |
280 | | - .size r1, 8 |
281 | | - |
282 | | - .type r2,@object // @r2 |
283 | | - .section .data.r2,"aw",@progbits |
284 | | - .globl r2 |
285 | | - .p2align 3, 0x0 |
286 | | -r2: |
287 | | - .xword r1 |
288 | | - .size r2, 8 |
289 | | - |
290 | | - .type r3,@object // @r3 |
291 | | - .section .data.r3,"aw",@progbits |
292 | | - .globl r3 |
293 | | - .p2align 3, 0x0 |
294 | | -r3: |
295 | | - .xword r2 |
296 | | - .size r3, 8 |
297 | | - |
298 | | - .type r4,@object // @r4 |
299 | | - .section .data.r4,"aw",@progbits |
300 | | - .globl r4 |
301 | | - .p2align 3, 0x0 |
302 | | -r4: |
303 | | - .xword s2 |
304 | | - .size r4, 8 |
| 268 | + .asciz "hardware engineer" |
| 269 | + .size s3, 18 |
| 270 | + |
| 271 | + .type s2,@object // @s2 |
| 272 | + .section .rodata.s2,"a",@progbits |
| 273 | + .globl s2 |
| 274 | +s2: |
| 275 | + .asciz "computer software" |
| 276 | + .size s2, 18 |
| 277 | + |
| 278 | + .type s1,@object // @s1 |
| 279 | + .section .rodata.s1,"a",@progbits |
| 280 | + .globl s1 |
| 281 | +s1: |
| 282 | + .asciz "hello world program" |
| 283 | + .size s1, 20 |
| 284 | + |
| 285 | + .type d4,@object // @d4 |
| 286 | + .section .data.d4,"aw",@progbits |
| 287 | + .globl d4 |
| 288 | + .p2align 2, 0x0 |
| 289 | +d4: |
| 290 | + .word 1 // 0x1 |
| 291 | + .word 2 // 0x2 |
| 292 | + .word 3 // 0x3 |
| 293 | + .word 4 // 0x4 |
| 294 | + .word 5 // 0x5 |
| 295 | + .word 6 // 0x6 |
| 296 | + .size d4, 24 |
| 297 | + |
| 298 | + .type d3,@object // @d3 |
| 299 | + .section .data.d3,"aw",@progbits |
| 300 | + .globl d3 |
| 301 | + .p2align 2, 0x0 |
| 302 | +d3: |
| 303 | + .word 5 // 0x5 |
| 304 | + .word 6 // 0x6 |
| 305 | + .word 7 // 0x7 |
| 306 | + .word 8 // 0x8 |
| 307 | + .size d3, 16 |
| 308 | + |
| 309 | + .type d2,@object // @d2 |
| 310 | + .section .data.d2,"aw",@progbits |
| 311 | + .globl d2 |
| 312 | + .p2align 2, 0x0 |
| 313 | +d2: |
| 314 | + .word 7 // 0x7 |
| 315 | + .word 8 // 0x8 |
| 316 | + .word 9 // 0x9 |
| 317 | + .word 10 // 0xa |
| 318 | + .size d2, 16 |
| 319 | + |
| 320 | + .type d1,@object // @d1 |
| 321 | + .section .data.d1,"aw",@progbits |
| 322 | + .globl d1 |
| 323 | + .p2align 2, 0x0 |
| 324 | +d1: |
| 325 | + .word 3 // 0x3 |
| 326 | + .word 4 // 0x4 |
| 327 | + .word 5 // 0x5 |
| 328 | + .word 6 // 0x6 |
| 329 | + .size d1, 16 |
305 | 330 |
|
306 | 331 | .section ".note.GNU-stack","",@progbits |
307 | 332 | .addrsig |
308 | 333 | .addrsig_sym C |
309 | 334 | .addrsig_sym B |
310 | 335 | .addrsig_sym A |
311 | | - .addrsig_sym s1 |
312 | | - .addrsig_sym s2 |
313 | | - .addrsig_sym r1 |
314 | | - .addrsig_sym r2 |
|
0 commit comments