1*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple i386-unknown-freebsd10.0 -march=x86 --relocation-model=pic %s -o - 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker; PR16979 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Workertarget datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S128" 6*9880d681SAndroid Build Coastguard Workertarget triple = "i386-unknown-freebsd10.0" 7*9880d681SAndroid Build Coastguard Worker 8*9880d681SAndroid Build Coastguard Worker@state = internal unnamed_addr global i32 0, align 4 9*9880d681SAndroid Build Coastguard Worker 10*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind sspreq 11*9880d681SAndroid Build Coastguard Workerdefine void @set_state(i32 %s) #0 { 12*9880d681SAndroid Build Coastguard Workerentry: 13*9880d681SAndroid Build Coastguard Worker store i32 %s, i32* @state, align 4 14*9880d681SAndroid Build Coastguard Worker ret void 15*9880d681SAndroid Build Coastguard Worker} 16*9880d681SAndroid Build Coastguard Worker 17*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind sspreq 18*9880d681SAndroid Build Coastguard Workerdefine void @zero_char(i8* nocapture %p) #0 { 19*9880d681SAndroid Build Coastguard Workerentry: 20*9880d681SAndroid Build Coastguard Worker store i8 0, i8* %p, align 1 21*9880d681SAndroid Build Coastguard Worker tail call void @g(i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) #2 22*9880d681SAndroid Build Coastguard Worker ret void 23*9880d681SAndroid Build Coastguard Worker} 24*9880d681SAndroid Build Coastguard Worker 25*9880d681SAndroid Build Coastguard Workerdeclare void @g(i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) #1 26*9880d681SAndroid Build Coastguard Worker 27*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind sspreq 28*9880d681SAndroid Build Coastguard Workerdefine void @do_something(i32 %i) #0 { 29*9880d681SAndroid Build Coastguard Workerentry: 30*9880d681SAndroid Build Coastguard Worker %data = alloca [8 x i8], align 1 31*9880d681SAndroid Build Coastguard Worker %0 = load i32, i32* @state, align 4 32*9880d681SAndroid Build Coastguard Worker %cmp = icmp eq i32 %0, 0 33*9880d681SAndroid Build Coastguard Worker br i1 %cmp, label %if.then, label %if.else 34*9880d681SAndroid Build Coastguard Worker 35*9880d681SAndroid Build Coastguard Workerif.then: ; preds = %entry 36*9880d681SAndroid Build Coastguard Worker tail call fastcc void @send_int(i32 0) 37*9880d681SAndroid Build Coastguard Worker br label %if.end 38*9880d681SAndroid Build Coastguard Worker 39*9880d681SAndroid Build Coastguard Workerif.else: ; preds = %entry 40*9880d681SAndroid Build Coastguard Worker tail call fastcc void @send_int(i32 %i) 41*9880d681SAndroid Build Coastguard Worker %arrayidx = getelementptr inbounds [8 x i8], [8 x i8]* %data, i32 0, i32 0 42*9880d681SAndroid Build Coastguard Worker call void @zero_char(i8* %arrayidx) 43*9880d681SAndroid Build Coastguard Worker br label %if.end 44*9880d681SAndroid Build Coastguard Worker 45*9880d681SAndroid Build Coastguard Workerif.end: ; preds = %if.else, %if.then 46*9880d681SAndroid Build Coastguard Worker ret void 47*9880d681SAndroid Build Coastguard Worker} 48*9880d681SAndroid Build Coastguard Worker 49*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind sspreq 50*9880d681SAndroid Build Coastguard Workerdefine internal fastcc void @send_int(i32 %p) #0 { 51*9880d681SAndroid Build Coastguard Workerentry: 52*9880d681SAndroid Build Coastguard Worker tail call void @f(i32 %p) #2 53*9880d681SAndroid Build Coastguard Worker tail call void @g(i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) #2 54*9880d681SAndroid Build Coastguard Worker ret void 55*9880d681SAndroid Build Coastguard Worker} 56*9880d681SAndroid Build Coastguard Worker 57*9880d681SAndroid Build Coastguard Workerdeclare void @f(i32) #1 58*9880d681SAndroid Build Coastguard Worker 59*9880d681SAndroid Build Coastguard Workerattributes #0 = { nounwind sspreq "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } 60*9880d681SAndroid Build Coastguard Workerattributes #1 = { "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } 61*9880d681SAndroid Build Coastguard Workerattributes #2 = { nounwind } 62