1 ; RUN: llc %s -combiner-tokenfactor-inline-limit=5 -o - | FileCheck %s
3 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
4 target triple = "x86_64-unknown-linux-gnu"
6 %struct.snork = type { i8 }
7 %struct.wombat = type { [15 x i32] }
10 ; CHECK-NEXT: andq $-32, %rsp
11 ; CHECK-NEXT: subq $66144, %rsp # imm = 0x10260
12 ; CHECK-NEXT: .cfi_offset %rbx, -24
13 ; CHECK-NEXT: movabsq $-868076584853899022, %rax # imm = 0xF3F3F8F201F2F8F2
14 ; CHECK-NEXT: movq %rax, (%rsp)
15 ; CHECK-NEXT: movb $-13, 8263(%rsp)
16 ; CHECK-NEXT: movq %rdi, %rbx
17 ; CHECK-NEXT: callq hoge
18 ; CHECK-NEXT: movq %rbx, %rdi
19 ; CHECK-NEXT: callq hoge
20 ; CHECK-NEXT: callq hoge
21 ; CHECK-NEXT: callq hoge
22 ; CHECK-NEXT: callq eggs
23 ; CHECK-NEXT: callq hoge
24 ; CHECK-NEXT: movq %rbx, %rax
25 ; CHECK-NEXT: leaq -8(%rbp), %rsp
26 ; CHECK-NEXT: popq %rbx
27 ; CHECK-NEXT: popq %rbp
28 ; CHECK-NEXT: .cfi_def_cfa %rsp, 8
30 define void @spam(ptr noalias sret(%struct.snork) %arg, ptr %arg2) {
32 %tmp = alloca i8, i64 66112, align 32
33 %tmp7 = ptrtoint ptr %tmp to i64
34 %tmp914 = inttoptr i64 undef to ptr
35 %tmp915 = inttoptr i64 undef to ptr
36 %tmp916 = inttoptr i64 undef to ptr
37 %tmp917 = inttoptr i64 undef to ptr
38 %tmp918 = inttoptr i64 undef to ptr
39 %tmp921 = inttoptr i64 undef to ptr
40 %tmp2055 = inttoptr i64 %tmp7 to ptr
41 store i64 -868076584853899022, ptr %tmp2055, align 1
42 %tmp2056 = add i64 %tmp7, 8263
43 %tmp2057 = inttoptr i64 %tmp2056 to ptr
44 store i8 -13, ptr %tmp2057, align 1
48 call void @hoge(ptr %arg)
49 call void @hoge(ptr %arg)
50 call void @hoge(ptr %tmp915)
51 call void @hoge(ptr %tmp916)
52 call void @eggs(ptr %tmp918, ptr %tmp914, ptr %tmp917)
53 call void @hoge(ptr %tmp921)
57 declare void @hoge(ptr)
59 declare void @eggs(ptr, ptr, ptr)