reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced
    1
    2
    3
    4
    5
    6
    7
    8
    9
   10
   11
   12
   13
   14
   15
   16
   17
   18
   19
   20
   21
   22
   23
   24
   25
   26
   27
   28
   29
   30
   31
   32
   33
   34
   35
   36
   37
   38
   39
   40
   41
   42
   43
   44
   45
   46
   47
   48
   49
   50
   51
   52
   53
   54
   55
   56
   57
   58
   59
   60
   61
   62
   63
   64
   65
   66
   67
   68
   69
   70
   71
   72
   73
   74
   75
   76
   77
   78
   79
   80
   81
   82
   83
   84
   85
   86
   87
   88
   89
   90
   91
   92
   93
   94
   95
   96
   97
   98
   99
  100
  101
  102
  103
  104
  105
  106
  107
  108
  109
  110
  111
  112
  113
  114
  115
  116
  117
  118
  119
  120
  121
  122
  123
  124
  125
  126
  127
  128
  129
  130
  131
  132
  133
  134
  135
  136
  137
  138
  139
  140
  141
  142
  143
  144
  145
  146
  147
  148
; RUN: llc < %s -mtriple=armv7-apple-darwin -O3 -mcpu=arm1136jf-s
; PR7421

%struct.CONTENTBOX = type { i32, i32, i32, i32, i32 }
%struct.FILE = type { i8* }
%struct.tilebox = type { %struct.tilebox*, double, double, double, double, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
%struct.UNCOMBOX = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
%struct.cellbox = type { i8*, i32, i32, i32, [9 x i32], i32, i32, i32, i32, i32, i32, i32, double, double, double, double, double, i32, i32, %struct.CONTENTBOX*, %struct.UNCOMBOX*, [8 x %struct.tilebox*] }
%struct.termbox = type { %struct.termbox*, i32, i32, i32, i32, i32 }

@.str2708 = external constant [14 x i8], align 4  ; <[14 x i8]*> [#uses=1]

define void @TW_oldinput(%struct.FILE* nocapture %fp) nounwind {
entry:
  %xcenter = alloca i32, align 4                  ; <i32*> [#uses=2]
  %0 = call i32 (%struct.FILE*, i8*, ...) @fscanf(%struct.FILE* %fp, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str2708, i32 0, i32 0), i32* undef, i32* undef, i32* %xcenter, i32* null) nounwind ; <i32> [#uses=1]
  %1 = icmp eq i32 %0, 4                          ; <i1> [#uses=1]
  br i1 %1, label %bb, label %return

bb:                                               ; preds = %bb445, %entry
  %2 = load %struct.cellbox*, %struct.cellbox** undef, align 4      ; <%struct.cellbox*> [#uses=2]
  %3 = getelementptr inbounds %struct.cellbox, %struct.cellbox* %2, i32 0, i32 3 ; <i32*> [#uses=1]
  store i32 undef, i32* %3, align 4
  %4 = load i32, i32* undef, align 4                   ; <i32> [#uses=3]
  %5 = icmp eq i32 undef, 1                       ; <i1> [#uses=1]
  br i1 %5, label %bb10, label %bb445

bb10:                                             ; preds = %bb
  br i1 undef, label %bb11, label %bb445

bb11:                                             ; preds = %bb10
  %6 = load %struct.tilebox*, %struct.tilebox** undef, align 4      ; <%struct.tilebox*> [#uses=3]
  %7 = load %struct.termbox*, %struct.termbox** null, align 4       ; <%struct.termbox*> [#uses=1]
  %8 = getelementptr inbounds %struct.tilebox, %struct.tilebox* %6, i32 0, i32 13 ; <i32*> [#uses=1]
  %9 = load i32, i32* %8, align 4                      ; <i32> [#uses=3]
  %10 = getelementptr inbounds %struct.tilebox, %struct.tilebox* %6, i32 0, i32 15 ; <i32*> [#uses=1]
  %11 = load i32, i32* %10, align 4                    ; <i32> [#uses=1]
  br i1 false, label %bb12, label %bb13

bb12:                                             ; preds = %bb11
  unreachable

bb13:                                             ; preds = %bb11
  %iftmp.40.0.neg = sdiv i32 0, -2                ; <i32> [#uses=2]
  %12 = sub nsw i32 0, %9                         ; <i32> [#uses=1]
  %13 = sitofp i32 %12 to double                  ; <double> [#uses=1]
  %14 = fdiv double %13, 0.000000e+00             ; <double> [#uses=1]
  %15 = fptosi double %14 to i32                  ; <i32> [#uses=1]
  %iftmp.41.0.in = add i32 0, %15                 ; <i32> [#uses=1]
  %iftmp.41.0.neg = sdiv i32 %iftmp.41.0.in, -2   ; <i32> [#uses=3]
  br i1 undef, label %bb43.loopexit, label %bb21

bb21:                                             ; preds = %bb13
  %16 = fptosi double undef to i32                ; <i32> [#uses=1]
  %17 = fsub double undef, 0.000000e+00           ; <double> [#uses=1]
  %not.460 = fcmp oge double %17, 5.000000e-01    ; <i1> [#uses=1]
  %18 = zext i1 %not.460 to i32                   ; <i32> [#uses=1]
  %iftmp.42.0 = add i32 %16, %iftmp.41.0.neg      ; <i32> [#uses=1]
  %19 = add i32 %iftmp.42.0, %18                  ; <i32> [#uses=1]
  store i32 %19, i32* undef, align 4
  %20 = sub nsw i32 0, %9                         ; <i32> [#uses=1]
  %21 = sitofp i32 %20 to double                  ; <double> [#uses=1]
  %22 = fdiv double %21, 0.000000e+00             ; <double> [#uses=2]
  %23 = fptosi double %22 to i32                  ; <i32> [#uses=1]
  %24 = fsub double %22, undef                    ; <double> [#uses=1]
  %not.461 = fcmp oge double %24, 5.000000e-01    ; <i1> [#uses=1]
  %25 = zext i1 %not.461 to i32                   ; <i32> [#uses=1]
  %iftmp.43.0 = add i32 %23, %iftmp.41.0.neg      ; <i32> [#uses=1]
  %26 = add i32 %iftmp.43.0, %25                  ; <i32> [#uses=1]
  %27 = getelementptr inbounds %struct.tilebox, %struct.tilebox* %6, i32 0, i32 10 ; <i32*> [#uses=1]
  store i32 %26, i32* %27, align 4
  %28 = fptosi double undef to i32                ; <i32> [#uses=1]
  %iftmp.45.0 = add i32 %28, %iftmp.40.0.neg      ; <i32> [#uses=1]
  %29 = add i32 %iftmp.45.0, 0                    ; <i32> [#uses=1]
  store i32 %29, i32* undef, align 4
  br label %bb43.loopexit

bb36:                                             ; preds = %bb43.loopexit, %bb36
  %termptr.0478 = phi %struct.termbox* [ %42, %bb36 ], [ %7, %bb43.loopexit ] ; <%struct.termbox*> [#uses=1]
  %30 = load i32, i32* undef, align 4                  ; <i32> [#uses=1]
  %31 = sub nsw i32 %30, %9                       ; <i32> [#uses=1]
  %32 = sitofp i32 %31 to double                  ; <double> [#uses=1]
  %33 = fdiv double %32, 0.000000e+00             ; <double> [#uses=1]
  %34 = fptosi double %33 to i32                  ; <i32> [#uses=1]
  %iftmp.46.0 = add i32 %34, %iftmp.41.0.neg      ; <i32> [#uses=1]
  %35 = add i32 %iftmp.46.0, 0                    ; <i32> [#uses=1]
  store i32 %35, i32* undef, align 4
  %36 = sub nsw i32 0, %11                        ; <i32> [#uses=1]
  %37 = sitofp i32 %36 to double                  ; <double> [#uses=1]
  %38 = fmul double %37, 0.000000e+00             ; <double> [#uses=1]
  %39 = fptosi double %38 to i32                  ; <i32> [#uses=1]
  %iftmp.47.0 = add i32 %39, %iftmp.40.0.neg      ; <i32> [#uses=1]
  %40 = add i32 %iftmp.47.0, 0                    ; <i32> [#uses=1]
  store i32 %40, i32* undef, align 4
  %41 = getelementptr inbounds %struct.termbox, %struct.termbox* %termptr.0478, i32 0, i32 0 ; <%struct.termbox**> [#uses=1]
  %42 = load %struct.termbox*, %struct.termbox** %41, align 4       ; <%struct.termbox*> [#uses=2]
  %43 = icmp eq %struct.termbox* %42, null        ; <i1> [#uses=1]
  br i1 %43, label %bb52.loopexit, label %bb36

bb43.loopexit:                                    ; preds = %bb21, %bb13
  br i1 undef, label %bb52.loopexit, label %bb36

bb52.loopexit:                                    ; preds = %bb43.loopexit, %bb36
  %44 = icmp eq i32 %4, 0                         ; <i1> [#uses=1]
  br i1 %44, label %bb.nph485, label %bb54

bb54:                                             ; preds = %bb52.loopexit
  switch i32 %4, label %bb62 [
    i32 2, label %bb56
    i32 3, label %bb57
  ]

bb56:                                             ; preds = %bb54
  br label %bb62

bb57:                                             ; preds = %bb54
  br label %bb62

bb62:                                             ; preds = %bb57, %bb56, %bb54
  unreachable

bb.nph485:                                        ; preds = %bb52.loopexit
  br label %bb248

bb248:                                            ; preds = %bb322, %bb.nph485
  %45 = icmp eq i32 undef, %4                     ; <i1> [#uses=1]
  br i1 %45, label %bb322, label %bb249

bb249:                                            ; preds = %bb248
  %46 = getelementptr inbounds %struct.cellbox, %struct.cellbox* %2, i32 0, i32 21, i32 undef ; <%struct.tilebox**> [#uses=1]
  %47 = load %struct.tilebox*, %struct.tilebox** %46, align 4       ; <%struct.tilebox*> [#uses=1]
  %48 = getelementptr inbounds %struct.tilebox, %struct.tilebox* %47, i32 0, i32 11 ; <i32*> [#uses=1]
  store i32 undef, i32* %48, align 4
  unreachable

bb322:                                            ; preds = %bb248
  br i1 undef, label %bb248, label %bb445

bb445:                                            ; preds = %bb322, %bb10, %bb
  %49 = call i32 (%struct.FILE*, i8*, ...) @fscanf(%struct.FILE* %fp, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str2708, i32 0, i32 0), i32* undef, i32* undef, i32* %xcenter, i32* null) nounwind ; <i32> [#uses=1]
  %50 = icmp eq i32 %49, 4                        ; <i1> [#uses=1]
  br i1 %50, label %bb, label %return

return:                                           ; preds = %bb445, %entry
  ret void
}

declare i32 @fscanf(%struct.FILE* nocapture, i8* nocapture, ...) nounwind