1; RUN: llc -mtriple i386-unknown-freebsd10.0 --relocation-model=pic %s -o - 2 3; PR16979 4 5target 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" 6target triple = "i386-unknown-freebsd10.0" 7 8@state = internal unnamed_addr global i32 0, align 4 9 10; Function Attrs: nounwind sspreq 11define void @set_state(i32 %s) #0 { 12entry: 13 store i32 %s, ptr @state, align 4 14 ret void 15} 16 17; Function Attrs: nounwind sspreq 18define void @zero_char(ptr nocapture %p) #0 { 19entry: 20 store i8 0, ptr %p, align 1 21 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 ret void 23} 24 25declare 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 27; Function Attrs: nounwind sspreq 28define void @do_something(i32 %i) #0 { 29entry: 30 %data = alloca [8 x i8], align 1 31 %0 = load i32, ptr @state, align 4 32 %cmp = icmp eq i32 %0, 0 33 br i1 %cmp, label %if.then, label %if.else 34 35if.then: ; preds = %entry 36 tail call fastcc void @send_int(i32 0) 37 br label %if.end 38 39if.else: ; preds = %entry 40 tail call fastcc void @send_int(i32 %i) 41 call void @zero_char(ptr %data) 42 br label %if.end 43 44if.end: ; preds = %if.else, %if.then 45 ret void 46} 47 48; Function Attrs: nounwind sspreq 49define internal fastcc void @send_int(i32 %p) #0 { 50entry: 51 tail call void @f(i32 %p) #2 52 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 53 ret void 54} 55 56declare void @f(i32) #1 57 58attributes #0 = { nounwind sspreq "less-precise-fpmad"="false" "frame-pointer"="all" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } 59attributes #1 = { "less-precise-fpmad"="false" "frame-pointer"="all" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } 60attributes #2 = { nounwind } 61