[llvm-commits] [llvm-testresults] lab-mini-01__O3-plain__clang_DEV__x86_64 test results

Duncan Sands baldrick at free.fr
Fri May 25 08:47:14 PDT 2012


PS: Before and after bitcode attached.
-------------- next part --------------
; ModuleID = '<stdin>'
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

@.str = private unnamed_addr constant [21 x i8] c"Found duplicate: %d\0A\00", align 1

declare i32 @rand() nounwind

define internal fastcc noalias i32* @createRandomArray() nounwind uwtable {
entry:
  %call = tail call noalias i8* @malloc(i64 2000004) nounwind
  %0 = bitcast i8* %call to i32*
  br label %for.body

for.body:                                         ; preds = %entry, %for.body
  %indvars.iv = phi i64 [ %indvars.iv.next, %for.body ], [ 0, %entry ]
  %arrayidx = getelementptr inbounds i32* %0, i64 %indvars.iv
  %1 = trunc i64 %indvars.iv to i32
  store i32 %1, i32* %arrayidx, align 4, !tbaa !0
  %indvars.iv.next = add i64 %indvars.iv, 1
  %lftr.wideiv = trunc i64 %indvars.iv.next to i32
  %exitcond = icmp eq i32 %lftr.wideiv, 500001
  br i1 %exitcond, label %for.body.lr.ph.i, label %for.body

for.body.lr.ph.i:                                 ; preds = %for.body
  %call.i = tail call i32 @rand() nounwind
  %conv1.i = sitofp i32 %call.i to double
  %div.i = fmul double %conv1.i, 0x3E00000000000000
  %mul.i = fmul double %div.i, 5.000000e+05
  %conv2.i = fptosi double %mul.i to i32
  %cmp.i = icmp eq i32 %conv2.i, 500000
  %sub5.i = sext i1 %cmp.i to i32
  %add4.i = add i32 %conv2.i, 1
  %cond.i = add i32 %add4.i, %sub5.i
  store i32 %cond.i, i32* %0, align 4, !tbaa !0
  br label %for.body.i

for.body.i:                                       ; preds = %for.body.i, %for.body.lr.ph.i
  %storemerge2.i = phi i64 [ 500000, %for.body.lr.ph.i ], [ %dec.i, %for.body.i ]
  %add.i = add i64 %storemerge2.i, 1
  %conv2.i3 = uitofp i64 %add.i to double
  %call.i4 = tail call i32 @rand() nounwind
  %conv3.i = sitofp i32 %call.i4 to double
  %div.i5 = fmul double %conv3.i, 0x3E00000000000000
  %mul.i6 = fmul double %conv2.i3, %div.i5
  %conv4.i = fptosi double %mul.i6 to i32
  %conv5.i = sext i32 %conv4.i to i64
  %cmp7.i = icmp eq i64 %conv5.i, %add.i
  %sub9.i = sext i1 %cmp7.i to i64
  %cond.i7 = add i64 %sub9.i, %conv5.i
  %arrayidx.i = getelementptr inbounds i32* %0, i64 %storemerge2.i
  %2 = load i32* %arrayidx.i, align 4, !tbaa !0
  %arrayidx10.i = getelementptr inbounds i32* %0, i64 %cond.i7
  %3 = load i32* %arrayidx10.i, align 4, !tbaa !0
  store i32 %3, i32* %arrayidx.i, align 4, !tbaa !0
  store i32 %2, i32* %arrayidx10.i, align 4, !tbaa !0
  %dec.i = add i64 %storemerge2.i, -1
  %cmp.i8 = icmp eq i64 %dec.i, 0
  br i1 %cmp.i8, label %shuffle.exit, label %for.body.i

shuffle.exit:                                     ; preds = %for.body.i
  ret i32* %0
}

declare noalias i8* @malloc(i64) nounwind

define i32 @main() nounwind uwtable {
entry:
  tail call void @srand(i32 1) nounwind
  %call = tail call fastcc i32* @createRandomArray()
  br label %for.body.i.preheader

for.body.i.preheader:                             ; preds = %findDuplicate.exit, %entry
  %storemerge12 = phi i32 [ 0, %entry ], [ %inc, %findDuplicate.exit ]
  br label %for.body.i

for.body.i:                                       ; preds = %for.body.i, %for.body.i.preheader
  %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %for.body.i ], [ 0, %for.body.i.preheader ]
  %xor213.i = phi i32 [ %xor1.i, %for.body.i ], [ 0, %for.body.i.preheader ]
  %indvars.iv.next.i = add i64 %indvars.iv.i, 1
  %arrayidx.i = getelementptr inbounds i32* %call, i64 %indvars.iv.i
  %0 = load i32* %arrayidx.i, align 4, !tbaa !0
  %1 = trunc i64 %indvars.iv.next.i to i32
  %xor.i = xor i32 %0, %xor213.i
  %xor1.i = xor i32 %xor.i, %1
  %exitcond = icmp eq i32 %1, 500001
  br i1 %exitcond, label %findDuplicate.exit, label %for.body.i

findDuplicate.exit:                               ; preds = %for.body.i
  %inc = add nsw i32 %storemerge12, 1
  %exitcond4 = icmp eq i32 %inc, 200
  br i1 %exitcond4, label %for.end, label %for.body.i.preheader

for.end:                                          ; preds = %findDuplicate.exit
  %xor2.i = xor i32 %xor1.i, 500001
  %2 = bitcast i32* %call to i8*
  tail call void @free(i8* %2) nounwind
  %call5 = tail call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([21 x i8]* @.str, i64 0, i64 0), i32 %xor2.i) nounwind
  %call.1 = tail call fastcc i32* @createRandomArray()
  br label %for.body.i.preheader.1

for.body.i.preheader.1:                           ; preds = %findDuplicate.exit.1, %for.end
  %storemerge12.1 = phi i32 [ 0, %for.end ], [ %inc.1, %findDuplicate.exit.1 ]
  br label %for.body.i.1

for.body.i.1:                                     ; preds = %for.body.i.1, %for.body.i.preheader.1
  %indvars.iv.i.1 = phi i64 [ %indvars.iv.next.i.1, %for.body.i.1 ], [ 0, %for.body.i.preheader.1 ]
  %xor213.i.1 = phi i32 [ %xor1.i.1, %for.body.i.1 ], [ 0, %for.body.i.preheader.1 ]
  %indvars.iv.next.i.1 = add i64 %indvars.iv.i.1, 1
  %arrayidx.i.1 = getelementptr inbounds i32* %call.1, i64 %indvars.iv.i.1
  %3 = load i32* %arrayidx.i.1, align 4, !tbaa !0
  %4 = trunc i64 %indvars.iv.next.i.1 to i32
  %xor.i.1 = xor i32 %3, %xor213.i.1
  %xor1.i.1 = xor i32 %xor.i.1, %4
  %exitcond.1 = icmp eq i32 %4, 500001
  br i1 %exitcond.1, label %findDuplicate.exit.1, label %for.body.i.1

findDuplicate.exit.1:                             ; preds = %for.body.i.1
  %inc.1 = add nsw i32 %storemerge12.1, 1
  %exitcond4.1 = icmp eq i32 %inc.1, 200
  br i1 %exitcond4.1, label %for.end.1, label %for.body.i.preheader.1

for.end.1:                                        ; preds = %findDuplicate.exit.1
  %xor2.i.1 = xor i32 %xor1.i.1, 500001
  %5 = bitcast i32* %call.1 to i8*
  tail call void @free(i8* %5) nounwind
  %call5.1 = tail call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([21 x i8]* @.str, i64 0, i64 0), i32 %xor2.i.1) nounwind
  %call.2 = tail call fastcc i32* @createRandomArray()
  br label %for.body.i.preheader.2

for.body.i.preheader.2:                           ; preds = %findDuplicate.exit.2, %for.end.1
  %storemerge12.2 = phi i32 [ 0, %for.end.1 ], [ %inc.2, %findDuplicate.exit.2 ]
  br label %for.body.i.2

for.body.i.2:                                     ; preds = %for.body.i.2, %for.body.i.preheader.2
  %indvars.iv.i.2 = phi i64 [ %indvars.iv.next.i.2, %for.body.i.2 ], [ 0, %for.body.i.preheader.2 ]
  %xor213.i.2 = phi i32 [ %xor1.i.2, %for.body.i.2 ], [ 0, %for.body.i.preheader.2 ]
  %indvars.iv.next.i.2 = add i64 %indvars.iv.i.2, 1
  %arrayidx.i.2 = getelementptr inbounds i32* %call.2, i64 %indvars.iv.i.2
  %6 = load i32* %arrayidx.i.2, align 4, !tbaa !0
  %7 = trunc i64 %indvars.iv.next.i.2 to i32
  %xor.i.2 = xor i32 %6, %xor213.i.2
  %xor1.i.2 = xor i32 %xor.i.2, %7
  %exitcond.2 = icmp eq i32 %7, 500001
  br i1 %exitcond.2, label %findDuplicate.exit.2, label %for.body.i.2

findDuplicate.exit.2:                             ; preds = %for.body.i.2
  %inc.2 = add nsw i32 %storemerge12.2, 1
  %exitcond4.2 = icmp eq i32 %inc.2, 200
  br i1 %exitcond4.2, label %for.end.2, label %for.body.i.preheader.2

for.end.2:                                        ; preds = %findDuplicate.exit.2
  %xor2.i.2 = xor i32 %xor1.i.2, 500001
  %8 = bitcast i32* %call.2 to i8*
  tail call void @free(i8* %8) nounwind
  %call5.2 = tail call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([21 x i8]* @.str, i64 0, i64 0), i32 %xor2.i.2) nounwind
  %call.3 = tail call fastcc i32* @createRandomArray()
  br label %for.body.i.preheader.3

for.body.i.preheader.3:                           ; preds = %findDuplicate.exit.3, %for.end.2
  %storemerge12.3 = phi i32 [ 0, %for.end.2 ], [ %inc.3, %findDuplicate.exit.3 ]
  br label %for.body.i.3

for.body.i.3:                                     ; preds = %for.body.i.3, %for.body.i.preheader.3
  %indvars.iv.i.3 = phi i64 [ %indvars.iv.next.i.3, %for.body.i.3 ], [ 0, %for.body.i.preheader.3 ]
  %xor213.i.3 = phi i32 [ %xor1.i.3, %for.body.i.3 ], [ 0, %for.body.i.preheader.3 ]
  %indvars.iv.next.i.3 = add i64 %indvars.iv.i.3, 1
  %arrayidx.i.3 = getelementptr inbounds i32* %call.3, i64 %indvars.iv.i.3
  %9 = load i32* %arrayidx.i.3, align 4, !tbaa !0
  %10 = trunc i64 %indvars.iv.next.i.3 to i32
  %xor.i.3 = xor i32 %9, %xor213.i.3
  %xor1.i.3 = xor i32 %xor.i.3, %10
  %exitcond.3 = icmp eq i32 %10, 500001
  br i1 %exitcond.3, label %findDuplicate.exit.3, label %for.body.i.3

findDuplicate.exit.3:                             ; preds = %for.body.i.3
  %inc.3 = add nsw i32 %storemerge12.3, 1
  %exitcond4.3 = icmp eq i32 %inc.3, 200
  br i1 %exitcond4.3, label %for.end.3, label %for.body.i.preheader.3

for.end.3:                                        ; preds = %findDuplicate.exit.3
  %xor2.i.3 = xor i32 %xor1.i.3, 500001
  %11 = bitcast i32* %call.3 to i8*
  tail call void @free(i8* %11) nounwind
  %call5.3 = tail call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([21 x i8]* @.str, i64 0, i64 0), i32 %xor2.i.3) nounwind
  %call.4 = tail call fastcc i32* @createRandomArray()
  br label %for.body.i.preheader.4

for.body.i.preheader.4:                           ; preds = %findDuplicate.exit.4, %for.end.3
  %storemerge12.4 = phi i32 [ 0, %for.end.3 ], [ %inc.4, %findDuplicate.exit.4 ]
  br label %for.body.i.4

for.body.i.4:                                     ; preds = %for.body.i.4, %for.body.i.preheader.4
  %indvars.iv.i.4 = phi i64 [ %indvars.iv.next.i.4, %for.body.i.4 ], [ 0, %for.body.i.preheader.4 ]
  %xor213.i.4 = phi i32 [ %xor1.i.4, %for.body.i.4 ], [ 0, %for.body.i.preheader.4 ]
  %indvars.iv.next.i.4 = add i64 %indvars.iv.i.4, 1
  %arrayidx.i.4 = getelementptr inbounds i32* %call.4, i64 %indvars.iv.i.4
  %12 = load i32* %arrayidx.i.4, align 4, !tbaa !0
  %13 = trunc i64 %indvars.iv.next.i.4 to i32
  %xor.i.4 = xor i32 %12, %xor213.i.4
  %xor1.i.4 = xor i32 %xor.i.4, %13
  %exitcond.4 = icmp eq i32 %13, 500001
  br i1 %exitcond.4, label %findDuplicate.exit.4, label %for.body.i.4

findDuplicate.exit.4:                             ; preds = %for.body.i.4
  %inc.4 = add nsw i32 %storemerge12.4, 1
  %exitcond4.4 = icmp eq i32 %inc.4, 200
  br i1 %exitcond4.4, label %for.end.4, label %for.body.i.preheader.4

for.end.4:                                        ; preds = %findDuplicate.exit.4
  %xor2.i.4 = xor i32 %xor1.i.4, 500001
  %14 = bitcast i32* %call.4 to i8*
  tail call void @free(i8* %14) nounwind
  %call5.4 = tail call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([21 x i8]* @.str, i64 0, i64 0), i32 %xor2.i.4) nounwind
  ret i32 0
}

declare void @srand(i32) nounwind

declare void @free(i8* nocapture) nounwind

declare i32 @printf(i8* nocapture, ...) nounwind

!0 = metadata !{metadata !"int", metadata !1}
!1 = metadata !{metadata !"omnipotent char", metadata !2}
!2 = metadata !{metadata !"Simple C/C++ TBAA"}
-------------- next part --------------
; ModuleID = '<stdin>'
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

@.str = private unnamed_addr constant [21 x i8] c"Found duplicate: %d\0A\00", align 1

declare i32 @rand() nounwind

define internal fastcc noalias i32* @createRandomArray() nounwind uwtable {
entry:
  %call = tail call noalias i8* @malloc(i64 2000004) nounwind
  %0 = bitcast i8* %call to i32*
  br label %for.body

for.body:                                         ; preds = %entry, %for.body
  %indvars.iv = phi i64 [ %indvars.iv.next, %for.body ], [ 0, %entry ]
  %arrayidx = getelementptr inbounds i32* %0, i64 %indvars.iv
  %1 = trunc i64 %indvars.iv to i32
  store i32 %1, i32* %arrayidx, align 4, !tbaa !0
  %indvars.iv.next = add i64 %indvars.iv, 1
  %lftr.wideiv = trunc i64 %indvars.iv.next to i32
  %exitcond = icmp eq i32 %lftr.wideiv, 500001
  br i1 %exitcond, label %for.body.lr.ph.i, label %for.body

for.body.lr.ph.i:                                 ; preds = %for.body
  %call.i = tail call i32 @rand() nounwind
  %conv1.i = sitofp i32 %call.i to double
  %div.i = fmul double %conv1.i, 0x3E00000000000000
  %mul.i = fmul double %div.i, 5.000000e+05
  %conv2.i = fptosi double %mul.i to i32
  %cmp.i = icmp eq i32 %conv2.i, 500000
  %sub5.i = sext i1 %cmp.i to i32
  %add4.i = add nsw i32 %conv2.i, 1
  %cond.i = add nsw i32 %add4.i, %sub5.i
  store i32 %cond.i, i32* %0, align 4, !tbaa !0
  br label %for.body.i

for.body.i:                                       ; preds = %for.body.i, %for.body.lr.ph.i
  %storemerge2.i = phi i64 [ 500000, %for.body.lr.ph.i ], [ %dec.i, %for.body.i ]
  %add.i = add i64 %storemerge2.i, 1
  %conv2.i3 = uitofp i64 %add.i to double
  %call.i4 = tail call i32 @rand() nounwind
  %conv3.i = sitofp i32 %call.i4 to double
  %div.i5 = fmul double %conv3.i, 0x3E00000000000000
  %mul.i6 = fmul double %conv2.i3, %div.i5
  %conv4.i = fptosi double %mul.i6 to i32
  %conv5.i = sext i32 %conv4.i to i64
  %cmp7.i = icmp eq i64 %conv5.i, %add.i
  %sub9.i = sext i1 %cmp7.i to i64
  %cond.i7 = add i64 %sub9.i, %conv5.i
  %arrayidx.i = getelementptr inbounds i32* %0, i64 %storemerge2.i
  %2 = load i32* %arrayidx.i, align 4, !tbaa !0
  %arrayidx10.i = getelementptr inbounds i32* %0, i64 %cond.i7
  %3 = load i32* %arrayidx10.i, align 4, !tbaa !0
  store i32 %3, i32* %arrayidx.i, align 4, !tbaa !0
  store i32 %2, i32* %arrayidx10.i, align 4, !tbaa !0
  %dec.i = add i64 %storemerge2.i, -1
  %cmp.i8 = icmp eq i64 %dec.i, 0
  br i1 %cmp.i8, label %shuffle.exit, label %for.body.i

shuffle.exit:                                     ; preds = %for.body.i
  ret i32* %0
}

declare noalias i8* @malloc(i64) nounwind

define i32 @main() nounwind uwtable {
entry:
  tail call void @srand(i32 1) nounwind
  %call = tail call fastcc i32* @createRandomArray()
  br label %for.body.i.preheader

for.body.i.preheader:                             ; preds = %findDuplicate.exit, %entry
  %storemerge12 = phi i32 [ 0, %entry ], [ %inc, %findDuplicate.exit ]
  br label %for.body.i

for.body.i:                                       ; preds = %for.body.i, %for.body.i.preheader
  %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %for.body.i ], [ 0, %for.body.i.preheader ]
  %xor213.i = phi i32 [ %xor1.i, %for.body.i ], [ 0, %for.body.i.preheader ]
  %indvars.iv.next.i = add i64 %indvars.iv.i, 1
  %arrayidx.i = getelementptr inbounds i32* %call, i64 %indvars.iv.i
  %0 = load i32* %arrayidx.i, align 4, !tbaa !0
  %1 = trunc i64 %indvars.iv.next.i to i32
  %xor.i = xor i32 %1, %xor213.i
  %xor1.i = xor i32 %xor.i, %0
  %exitcond = icmp eq i32 %1, 500001
  br i1 %exitcond, label %findDuplicate.exit, label %for.body.i

findDuplicate.exit:                               ; preds = %for.body.i
  %inc = add nsw i32 %storemerge12, 1
  %exitcond4 = icmp eq i32 %inc, 200
  br i1 %exitcond4, label %for.end, label %for.body.i.preheader

for.end:                                          ; preds = %findDuplicate.exit
  %xor2.i = xor i32 %xor1.i, 500001
  %2 = bitcast i32* %call to i8*
  tail call void @free(i8* %2) nounwind
  %call5 = tail call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([21 x i8]* @.str, i64 0, i64 0), i32 %xor2.i) nounwind
  %call.1 = tail call fastcc i32* @createRandomArray()
  br label %for.body.i.preheader.1

for.body.i.preheader.1:                           ; preds = %findDuplicate.exit.1, %for.end
  %storemerge12.1 = phi i32 [ 0, %for.end ], [ %inc.1, %findDuplicate.exit.1 ]
  br label %for.body.i.1

for.body.i.1:                                     ; preds = %for.body.i.1, %for.body.i.preheader.1
  %indvars.iv.i.1 = phi i64 [ %indvars.iv.next.i.1, %for.body.i.1 ], [ 0, %for.body.i.preheader.1 ]
  %xor213.i.1 = phi i32 [ %xor1.i.1, %for.body.i.1 ], [ 0, %for.body.i.preheader.1 ]
  %indvars.iv.next.i.1 = add i64 %indvars.iv.i.1, 1
  %arrayidx.i.1 = getelementptr inbounds i32* %call.1, i64 %indvars.iv.i.1
  %3 = load i32* %arrayidx.i.1, align 4, !tbaa !0
  %4 = trunc i64 %indvars.iv.next.i.1 to i32
  %xor.i.1 = xor i32 %4, %xor213.i.1
  %xor1.i.1 = xor i32 %xor.i.1, %3
  %exitcond.1 = icmp eq i32 %4, 500001
  br i1 %exitcond.1, label %findDuplicate.exit.1, label %for.body.i.1

findDuplicate.exit.1:                             ; preds = %for.body.i.1
  %inc.1 = add nsw i32 %storemerge12.1, 1
  %exitcond4.1 = icmp eq i32 %inc.1, 200
  br i1 %exitcond4.1, label %for.end.1, label %for.body.i.preheader.1

for.end.1:                                        ; preds = %findDuplicate.exit.1
  %xor2.i.1 = xor i32 %xor1.i.1, 500001
  %5 = bitcast i32* %call.1 to i8*
  tail call void @free(i8* %5) nounwind
  %call5.1 = tail call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([21 x i8]* @.str, i64 0, i64 0), i32 %xor2.i.1) nounwind
  %call.2 = tail call fastcc i32* @createRandomArray()
  br label %for.body.i.preheader.2

for.body.i.preheader.2:                           ; preds = %findDuplicate.exit.2, %for.end.1
  %storemerge12.2 = phi i32 [ 0, %for.end.1 ], [ %inc.2, %findDuplicate.exit.2 ]
  br label %for.body.i.2

for.body.i.2:                                     ; preds = %for.body.i.2, %for.body.i.preheader.2
  %indvars.iv.i.2 = phi i64 [ %indvars.iv.next.i.2, %for.body.i.2 ], [ 0, %for.body.i.preheader.2 ]
  %xor213.i.2 = phi i32 [ %xor1.i.2, %for.body.i.2 ], [ 0, %for.body.i.preheader.2 ]
  %indvars.iv.next.i.2 = add i64 %indvars.iv.i.2, 1
  %arrayidx.i.2 = getelementptr inbounds i32* %call.2, i64 %indvars.iv.i.2
  %6 = load i32* %arrayidx.i.2, align 4, !tbaa !0
  %7 = trunc i64 %indvars.iv.next.i.2 to i32
  %xor.i.2 = xor i32 %7, %xor213.i.2
  %xor1.i.2 = xor i32 %xor.i.2, %6
  %exitcond.2 = icmp eq i32 %7, 500001
  br i1 %exitcond.2, label %findDuplicate.exit.2, label %for.body.i.2

findDuplicate.exit.2:                             ; preds = %for.body.i.2
  %inc.2 = add nsw i32 %storemerge12.2, 1
  %exitcond4.2 = icmp eq i32 %inc.2, 200
  br i1 %exitcond4.2, label %for.end.2, label %for.body.i.preheader.2

for.end.2:                                        ; preds = %findDuplicate.exit.2
  %xor2.i.2 = xor i32 %xor1.i.2, 500001
  %8 = bitcast i32* %call.2 to i8*
  tail call void @free(i8* %8) nounwind
  %call5.2 = tail call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([21 x i8]* @.str, i64 0, i64 0), i32 %xor2.i.2) nounwind
  %call.3 = tail call fastcc i32* @createRandomArray()
  br label %for.body.i.preheader.3

for.body.i.preheader.3:                           ; preds = %findDuplicate.exit.3, %for.end.2
  %storemerge12.3 = phi i32 [ 0, %for.end.2 ], [ %inc.3, %findDuplicate.exit.3 ]
  br label %for.body.i.3

for.body.i.3:                                     ; preds = %for.body.i.3, %for.body.i.preheader.3
  %indvars.iv.i.3 = phi i64 [ %indvars.iv.next.i.3, %for.body.i.3 ], [ 0, %for.body.i.preheader.3 ]
  %xor213.i.3 = phi i32 [ %xor1.i.3, %for.body.i.3 ], [ 0, %for.body.i.preheader.3 ]
  %indvars.iv.next.i.3 = add i64 %indvars.iv.i.3, 1
  %arrayidx.i.3 = getelementptr inbounds i32* %call.3, i64 %indvars.iv.i.3
  %9 = load i32* %arrayidx.i.3, align 4, !tbaa !0
  %10 = trunc i64 %indvars.iv.next.i.3 to i32
  %xor.i.3 = xor i32 %10, %xor213.i.3
  %xor1.i.3 = xor i32 %xor.i.3, %9
  %exitcond.3 = icmp eq i32 %10, 500001
  br i1 %exitcond.3, label %findDuplicate.exit.3, label %for.body.i.3

findDuplicate.exit.3:                             ; preds = %for.body.i.3
  %inc.3 = add nsw i32 %storemerge12.3, 1
  %exitcond4.3 = icmp eq i32 %inc.3, 200
  br i1 %exitcond4.3, label %for.end.3, label %for.body.i.preheader.3

for.end.3:                                        ; preds = %findDuplicate.exit.3
  %xor2.i.3 = xor i32 %xor1.i.3, 500001
  %11 = bitcast i32* %call.3 to i8*
  tail call void @free(i8* %11) nounwind
  %call5.3 = tail call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([21 x i8]* @.str, i64 0, i64 0), i32 %xor2.i.3) nounwind
  %call.4 = tail call fastcc i32* @createRandomArray()
  br label %for.body.i.preheader.4

for.body.i.preheader.4:                           ; preds = %findDuplicate.exit.4, %for.end.3
  %storemerge12.4 = phi i32 [ 0, %for.end.3 ], [ %inc.4, %findDuplicate.exit.4 ]
  br label %for.body.i.4

for.body.i.4:                                     ; preds = %for.body.i.4, %for.body.i.preheader.4
  %indvars.iv.i.4 = phi i64 [ %indvars.iv.next.i.4, %for.body.i.4 ], [ 0, %for.body.i.preheader.4 ]
  %xor213.i.4 = phi i32 [ %xor1.i.4, %for.body.i.4 ], [ 0, %for.body.i.preheader.4 ]
  %indvars.iv.next.i.4 = add i64 %indvars.iv.i.4, 1
  %arrayidx.i.4 = getelementptr inbounds i32* %call.4, i64 %indvars.iv.i.4
  %12 = load i32* %arrayidx.i.4, align 4, !tbaa !0
  %13 = trunc i64 %indvars.iv.next.i.4 to i32
  %xor.i.4 = xor i32 %13, %xor213.i.4
  %xor1.i.4 = xor i32 %xor.i.4, %12
  %exitcond.4 = icmp eq i32 %13, 500001
  br i1 %exitcond.4, label %findDuplicate.exit.4, label %for.body.i.4

findDuplicate.exit.4:                             ; preds = %for.body.i.4
  %inc.4 = add nsw i32 %storemerge12.4, 1
  %exitcond4.4 = icmp eq i32 %inc.4, 200
  br i1 %exitcond4.4, label %for.end.4, label %for.body.i.preheader.4

for.end.4:                                        ; preds = %findDuplicate.exit.4
  %xor2.i.4 = xor i32 %xor1.i.4, 500001
  %14 = bitcast i32* %call.4 to i8*
  tail call void @free(i8* %14) nounwind
  %call5.4 = tail call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([21 x i8]* @.str, i64 0, i64 0), i32 %xor2.i.4) nounwind
  ret i32 0
}

declare void @srand(i32) nounwind

declare void @free(i8* nocapture) nounwind

declare i32 @printf(i8* nocapture, ...) nounwind

!0 = metadata !{metadata !"int", metadata !1}
!1 = metadata !{metadata !"omnipotent char", metadata !2}
!2 = metadata !{metadata !"Simple C/C++ TBAA"}


More information about the llvm-commits mailing list