e135a77ea3c349216c66038ee2ce28e131932383
[oota-llvm.git] / test / ExecutionEngine / 2007-12-11-APIntExFuncCall.ll
1 ; RUN: llvm-as < %s -o - | lli -force-interpreter
2 ; PR1629
3
4 ; ModuleID = '<stdin>'
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"
6 target triple = "i686-pc-linux-gnu"
7         %struct.X = type { i32 }
8 @_ZGVZ4mainE1a = internal global i64 0, align 8         ; <i64*> [#uses=3]
9 @_ZZ4mainE1a = internal global %struct.X zeroinitializer                ; <%struct.X*> [#uses=1]
10
11 define i32 @main() nounwind  {
12 entry:
13         %"alloca point" = bitcast i32 0 to i32          ; <i32> [#uses=0]
14         %tmp2 = call double @sin( double 1.999000e+00 ) nounwind readonly               ; <double> [#uses=1]
15         %tmp3 = call double @cos( double 1.990000e+00 ) nounwind readonly               ; <double> [#uses=1]
16         %tmp4 = add double %tmp2, %tmp3         ; <double> [#uses=1]
17         %tmp5 = load i8* bitcast (i64* @_ZGVZ4mainE1a to i8*), align 1          ; <i8> [#uses=1]
18         %tmp6 = icmp eq i8 %tmp5, 0             ; <i1> [#uses=1]
19         %tmp67 = zext i1 %tmp6 to i8            ; <i8> [#uses=1]
20         %toBool = icmp ne i8 %tmp67, 0          ; <i1> [#uses=1]
21         br i1 %toBool, label %cond_true, label %cond_next14
22
23 cond_true:              ; preds = %entry
24         %tmp8 = call i32 @__cxa_guard_acquire( i64* @_ZGVZ4mainE1a ) nounwind           ; <i32> [#uses=1]
25         %tmp9 = icmp ne i32 %tmp8, 0            ; <i1> [#uses=1]
26         %tmp910 = zext i1 %tmp9 to i8           ; <i8> [#uses=1]
27         %toBool12 = icmp ne i8 %tmp910, 0               ; <i1> [#uses=1]
28         br i1 %toBool12, label %cond_true13, label %cond_next14
29
30 cond_true13:            ; preds = %cond_true
31         call void @_ZN1XC1Ei( %struct.X* @_ZZ4mainE1a, i32 0 ) nounwind 
32         call void @__cxa_guard_release( i64* @_ZGVZ4mainE1a ) nounwind 
33         br label %cond_next14
34
35 cond_next14:            ; preds = %cond_true13, %cond_true, %entry
36         %tmp1516 = fptosi double %tmp4 to i32           ; <i32> [#uses=1]
37         ret i32 %tmp1516
38 }
39
40 define linkonce void @_ZN1XC1Ei(%struct.X* %this, i32 %val) nounwind  {
41 entry:
42         %"alloca point" = bitcast i32 0 to i32          ; <i32> [#uses=0]
43         %tmp1 = getelementptr %struct.X* %this, i32 0, i32 0            ; <i32*> [#uses=1]
44         store i32 %val, i32* %tmp1, align 4
45         ret void
46 }
47
48 declare double @sin(double) nounwind readonly 
49
50 declare double @cos(double) nounwind readonly 
51
52 declare i32 @__cxa_guard_acquire(i64*) nounwind 
53
54 declare void @__cxa_guard_release(i64*) nounwind