Paste: llvm infinite loop

Author: kssreeram
Mode: text
Date: Sat, 8 Jan 2011 20:59:30
Plain Text |
; ModuleID = 'clay'
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"
target triple = "x86_64-apple-darwin10"

%0 = type { i32, void ()* }
%1 = type { %1* }
%2 = type { i8 }

define i32 @main(i32 %a) {
init:
  %0 = alloca %1
  %1 = alloca %1
  %2 = call i32 @"clay_assign(Chain, Chain)"(%1* %0, %1* %1)
  ret i32 0
}

define internal i32 @"clay_assign(Chain, Chain)"(%1* %c, %1* %d) {
init:
  %0 = alloca %1*
  %1 = alloca %1**
  %2 = alloca %2
  %3 = alloca %1**
  %4 = alloca %2
  %5 = alloca %1*
  %6 = alloca %1*
  %7 = alloca %1**
  %8 = alloca %2
  %9 = alloca %1**
  %10 = alloca %2
  %11 = alloca %1*
  %12 = alloca %2
  br label %code

code:                                             ; preds = %init
  br label %return2

return:                                           ; preds = %return6
  ret i32 0

exception:                                        ; No predecessors!
  ret i32 1

return1:                                          ; preds = %return2
  %13 = load %1*** %1
  %14 = load %1** %13
  store %1* %14, %1** %5
  %15 = load %1** %5
  store %1* %15, %1** %0
  br label %return3

return2:                                          ; preds = %code
  %16 = getelementptr %1* %d, i32 0, i32 0
  store %1** %16, %1*** %3
  %17 = load %1*** %3
  store %1** %17, %1*** %1
  br label %return1

return3:                                          ; preds = %return1
  %18 = load %1** %0
  br label %return5

return4:                                          ; preds = %return5
  %19 = load %1*** %7
  %20 = load %1** %19
  store %1* %20, %1** %11
  %21 = load %1** %11
  store %1* %21, %1** %6
  br label %return6

return5:                                          ; preds = %return3
  %22 = getelementptr %1* %c, i32 0, i32 0
  store %1** %22, %1*** %9
  %23 = load %1*** %9
  store %1** %23, %1*** %7
  br label %return4

return6:                                          ; preds = %return4
  %24 = load %1** %6
  %25 = call i32 @"clay_assign(Chain, Chain)"(%1* %24, %1* %18)
  br label %return
}

New Annotation

Summary:
Author:
Mode:
Body: