You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
3.1 KiB
62 lines
3.1 KiB
; RUN: llc -mtriple i386-unknown-freebsd10.0 --relocation-model=pic %s -o -
|
|
|
|
; PR16979
|
|
|
|
target 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"
|
|
target triple = "i386-unknown-freebsd10.0"
|
|
|
|
@state = internal unnamed_addr global i32 0, align 4
|
|
|
|
; Function Attrs: nounwind sspreq
|
|
define void @set_state(i32 %s) #0 {
|
|
entry:
|
|
store i32 %s, i32* @state, align 4
|
|
ret void
|
|
}
|
|
|
|
; Function Attrs: nounwind sspreq
|
|
define void @zero_char(i8* nocapture %p) #0 {
|
|
entry:
|
|
store i8 0, i8* %p, align 1
|
|
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
|
|
ret void
|
|
}
|
|
|
|
declare 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
|
|
|
|
; Function Attrs: nounwind sspreq
|
|
define void @do_something(i32 %i) #0 {
|
|
entry:
|
|
%data = alloca [8 x i8], align 1
|
|
%0 = load i32, i32* @state, align 4
|
|
%cmp = icmp eq i32 %0, 0
|
|
br i1 %cmp, label %if.then, label %if.else
|
|
|
|
if.then: ; preds = %entry
|
|
tail call fastcc void @send_int(i32 0)
|
|
br label %if.end
|
|
|
|
if.else: ; preds = %entry
|
|
tail call fastcc void @send_int(i32 %i)
|
|
%arrayidx = getelementptr inbounds [8 x i8], [8 x i8]* %data, i32 0, i32 0
|
|
call void @zero_char(i8* %arrayidx)
|
|
br label %if.end
|
|
|
|
if.end: ; preds = %if.else, %if.then
|
|
ret void
|
|
}
|
|
|
|
; Function Attrs: nounwind sspreq
|
|
define internal fastcc void @send_int(i32 %p) #0 {
|
|
entry:
|
|
tail call void @f(i32 %p) #2
|
|
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
|
|
ret void
|
|
}
|
|
|
|
declare void @f(i32) #1
|
|
|
|
attributes #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" }
|
|
attributes #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" }
|
|
attributes #2 = { nounwind }
|