Home | History | Annotate | Download | only in X86
      1 ; RUN: llc -mtriple i386-unknown-freebsd10.0 -march=x86 --relocation-model=pic %s -o -
      2 
      3 ; PR16979
      4 
      5 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"
      6 target triple = "i386-unknown-freebsd10.0"
      7 
      8 @state = internal unnamed_addr global i32 0, align 4
      9 
     10 ; Function Attrs: nounwind sspreq
     11 define void @set_state(i32 %s) #0 {
     12 entry:
     13   store i32 %s, i32* @state, align 4
     14   ret void
     15 }
     16 
     17 ; Function Attrs: nounwind sspreq
     18 define void @zero_char(i8* nocapture %p) #0 {
     19 entry:
     20   store i8 0, i8* %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 
     25 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
     26 
     27 ; Function Attrs: nounwind sspreq
     28 define void @do_something(i32 %i) #0 {
     29 entry:
     30   %data = alloca [8 x i8], align 1
     31   %0 = load i32, i32* @state, align 4
     32   %cmp = icmp eq i32 %0, 0
     33   br i1 %cmp, label %if.then, label %if.else
     34 
     35 if.then:                                          ; preds = %entry
     36   tail call fastcc void @send_int(i32 0)
     37   br label %if.end
     38 
     39 if.else:                                          ; preds = %entry
     40   tail call fastcc void @send_int(i32 %i)
     41   %arrayidx = getelementptr inbounds [8 x i8], [8 x i8]* %data, i32 0, i32 0
     42   call void @zero_char(i8* %arrayidx)
     43   br label %if.end
     44 
     45 if.end:                                           ; preds = %if.else, %if.then
     46   ret void
     47 }
     48 
     49 ; Function Attrs: nounwind sspreq
     50 define internal fastcc void @send_int(i32 %p) #0 {
     51 entry:
     52   tail call void @f(i32 %p) #2
     53   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   ret void
     55 }
     56 
     57 declare void @f(i32) #1
     58 
     59 attributes #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 attributes #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 attributes #2 = { nounwind }
     62