xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/2011-06-12-FastAllocSpill.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; REQUIRES: asserts
2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -O0 -disable-fp-elim -relocation-model=pic -stats 2>&1 | FileCheck %s
3*9880d681SAndroid Build Coastguard Worker;
4*9880d681SAndroid Build Coastguard Worker; This test should not cause any spilling with RAFast.
5*9880d681SAndroid Build Coastguard Worker;
6*9880d681SAndroid Build Coastguard Worker; CHECK: Number of copies coalesced
7*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: Number of stores added
8*9880d681SAndroid Build Coastguard Worker;
9*9880d681SAndroid Build Coastguard Workertarget datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
10*9880d681SAndroid Build Coastguard Workertarget triple = "x86_64-apple-darwin10.0.0"
11*9880d681SAndroid Build Coastguard Worker
12*9880d681SAndroid Build Coastguard Worker%0 = type { i64, i64, i8*, i8* }
13*9880d681SAndroid Build Coastguard Worker%1 = type opaque
14*9880d681SAndroid Build Coastguard Worker%2 = type opaque
15*9880d681SAndroid Build Coastguard Worker%3 = type <{ i8*, i32, i32, void (%4*)*, i8*, i64 }>
16*9880d681SAndroid Build Coastguard Worker%4 = type { i8**, i32, i32, i8**, %5*, i64 }
17*9880d681SAndroid Build Coastguard Worker%5 = type { i64, i64 }
18*9880d681SAndroid Build Coastguard Worker%6 = type { i8*, i32, i32, i8*, %5* }
19*9880d681SAndroid Build Coastguard Worker
20*9880d681SAndroid Build Coastguard Worker@0 = external hidden constant %0
21*9880d681SAndroid Build Coastguard Worker
22*9880d681SAndroid Build Coastguard Workerdefine hidden void @f() ssp {
23*9880d681SAndroid Build Coastguard Workerbb:
24*9880d681SAndroid Build Coastguard Worker  %tmp5 = alloca i64, align 8
25*9880d681SAndroid Build Coastguard Worker  %tmp6 = alloca void ()*, align 8
26*9880d681SAndroid Build Coastguard Worker  %tmp7 = alloca %3, align 8
27*9880d681SAndroid Build Coastguard Worker  store i64 0, i64* %tmp5, align 8
28*9880d681SAndroid Build Coastguard Worker  br label %bb8
29*9880d681SAndroid Build Coastguard Worker
30*9880d681SAndroid Build Coastguard Workerbb8:                                              ; preds = %bb23, %bb
31*9880d681SAndroid Build Coastguard Worker  %tmp15 = getelementptr inbounds %3, %3* %tmp7, i32 0, i32 4
32*9880d681SAndroid Build Coastguard Worker  store i8* bitcast (%0* @0 to i8*), i8** %tmp15
33*9880d681SAndroid Build Coastguard Worker  %tmp16 = bitcast %3* %tmp7 to void ()*
34*9880d681SAndroid Build Coastguard Worker  store void ()* %tmp16, void ()** %tmp6, align 8
35*9880d681SAndroid Build Coastguard Worker  %tmp17 = load void ()*, void ()** %tmp6, align 8
36*9880d681SAndroid Build Coastguard Worker  %tmp18 = bitcast void ()* %tmp17 to %6*
37*9880d681SAndroid Build Coastguard Worker  %tmp19 = getelementptr inbounds %6, %6* %tmp18, i32 0, i32 3
38*9880d681SAndroid Build Coastguard Worker  %tmp20 = bitcast %6* %tmp18 to i8*
39*9880d681SAndroid Build Coastguard Worker  %tmp21 = load i8*, i8** %tmp19
40*9880d681SAndroid Build Coastguard Worker  %tmp22 = bitcast i8* %tmp21 to void (i8*)*
41*9880d681SAndroid Build Coastguard Worker  call void %tmp22(i8* %tmp20)
42*9880d681SAndroid Build Coastguard Worker  br label %bb23
43*9880d681SAndroid Build Coastguard Worker
44*9880d681SAndroid Build Coastguard Workerbb23:                                             ; preds = %bb8
45*9880d681SAndroid Build Coastguard Worker  %tmp24 = load i64, i64* %tmp5, align 8
46*9880d681SAndroid Build Coastguard Worker  %tmp25 = add i64 %tmp24, 1
47*9880d681SAndroid Build Coastguard Worker  store i64 %tmp25, i64* %tmp5, align 8
48*9880d681SAndroid Build Coastguard Worker  %tmp26 = icmp ult i64 %tmp25, 10
49*9880d681SAndroid Build Coastguard Worker  br i1 %tmp26, label %bb8, label %bb27
50*9880d681SAndroid Build Coastguard Worker
51*9880d681SAndroid Build Coastguard Workerbb27:                                             ; preds = %bb23
52*9880d681SAndroid Build Coastguard Worker  ret void
53*9880d681SAndroid Build Coastguard Worker}
54