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