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
; RUN: opt %loadPolly -polly-codegen -S < %s | FileCheck %s
;
; This caused an lnt crash at some point, just verify it will run through and
; produce the PHI node in the exit we are looking for.
;
; CHECK-LABEL: polly.merge_new_and_old:
; CHECK-NEXT:    %eps1.addr.0.ph.merge = phi double [ %eps1.addr.0.ph.final_reload, %polly.exiting ], [ %eps1.addr.0.ph, %if.end.47.region_exiting ]
; CHECK-NEXT:      br label %if.end.47
;
; CHECK-LABEL: if.end.47:
; CHECK-NEXT:        %eps1.addr.0 = phi double [ %eps1.addr.0.ph.merge, %polly.merge_new_and_old ]
;
define void @dbisect(double* %c, double* %b, double %eps1, double* %eps2) {
entry:
  br label %entry.split

entry.split:                                      ; preds = %entry
  store double 0.000000e+00, double* %b, align 8
  %arrayidx9 = getelementptr inbounds double, double* %c, i64 0
  %0 = load double, double* %arrayidx9, align 8
  br i1 false, label %for.body.lr.ph, label %for.end

for.body.lr.ph:                                   ; preds = %entry.split
  br label %for.body

for.body:                                         ; preds = %for.inc, %for.body.lr.ph
  br i1 false, label %if.then, label %if.end

if.then:                                          ; preds = %for.body
  br label %if.end

if.end:                                           ; preds = %if.then, %for.body
  br i1 false, label %if.then.36, label %for.inc

if.then.36:                                       ; preds = %if.end
  br label %for.inc

for.inc:                                          ; preds = %if.then.36, %if.end
  br i1 false, label %for.body, label %for.cond.for.end_crit_edge

for.cond.for.end_crit_edge:                       ; preds = %for.inc
  br label %for.end

for.end:                                          ; preds = %for.cond.for.end_crit_edge, %entry.split
  store double undef, double* %eps2, align 8
  %cmp45 = fcmp ugt double %eps1, 0.000000e+00
  br i1 %cmp45, label %if.end.47, label %if.then.46

if.then.46:                                       ; preds = %for.end
  br label %if.end.47

if.end.47:                                        ; preds = %if.then.46, %for.end
  %eps1.addr.0 = phi double [ undef, %if.then.46 ], [ %eps1, %for.end ]
  br i1 undef, label %if.then.55, label %for.cond.58.preheader

for.cond.58.preheader:                            ; preds = %if.end.47
  br i1 undef, label %for.end.68, label %for.body.61.lr.ph

for.body.61.lr.ph:                                ; preds = %for.cond.58.preheader
  br label %for.body.61

if.then.55:                                       ; preds = %if.end.47
  unreachable

for.body.61:                                      ; preds = %for.body.61, %for.body.61.lr.ph
  br i1 undef, label %for.body.61, label %for.cond.58.for.end.68_crit_edge

for.cond.58.for.end.68_crit_edge:                 ; preds = %for.body.61
  br label %for.end.68

for.end.68:                                       ; preds = %for.cond.58.for.end.68_crit_edge, %for.cond.58.preheader
  br i1 undef, label %for.end.137, label %for.cond.73.preheader.lr.ph

for.cond.73.preheader.lr.ph:                      ; preds = %for.end.68
  br label %for.cond.73.preheader

for.cond.73.preheader:                            ; preds = %while.end, %for.cond.73.preheader.lr.ph
  br i1 undef, label %for.end.87.loopexit, label %for.body.76.lr.ph

for.body.76.lr.ph:                                ; preds = %for.cond.73.preheader
  br label %for.body.76

for.body.76:                                      ; preds = %for.inc.85, %for.body.76.lr.ph
  br i1 undef, label %if.then.81, label %for.inc.85

if.then.81:                                       ; preds = %for.body.76
  br label %for.end.87

for.inc.85:                                       ; preds = %for.body.76
  br i1 undef, label %for.body.76, label %for.cond.73.for.end.87.loopexit_crit_edge

for.cond.73.for.end.87.loopexit_crit_edge:        ; preds = %for.inc.85
  br label %for.end.87.loopexit

for.end.87.loopexit:                              ; preds = %for.cond.73.for.end.87.loopexit_crit_edge, %for.cond.73.preheader
  br label %for.end.87

for.end.87:                                       ; preds = %for.end.87.loopexit, %if.then.81
  br i1 undef, label %if.then.92, label %if.end.95

if.then.92:                                       ; preds = %for.end.87
  br label %if.end.95

if.end.95:                                        ; preds = %if.then.92, %for.end.87
  br i1 undef, label %while.body.lr.ph, label %while.end

while.body.lr.ph:                                 ; preds = %if.end.95
  br label %while.body

while.body:                                       ; preds = %if.end.128, %while.body.lr.ph
  br i1 undef, label %if.then.109, label %if.end.128

if.then.109:                                      ; preds = %while.body
  br i1 undef, label %if.then.112, label %if.else

if.then.112:                                      ; preds = %if.then.109
  br label %if.end.128

if.else:                                          ; preds = %if.then.109
  br i1 undef, label %if.then.122, label %if.end.128

if.then.122:                                      ; preds = %if.else
  br label %if.end.128

if.end.128:                                       ; preds = %if.then.122, %if.else, %if.then.112, %while.body
  br i1 undef, label %while.body, label %while.cond.while.end_crit_edge

while.cond.while.end_crit_edge:                   ; preds = %if.end.128
  br label %while.end

while.end:                                        ; preds = %while.cond.while.end_crit_edge, %if.end.95
  br i1 undef, label %for.cond.73.preheader, label %for.cond.69.for.end.137_crit_edge

for.cond.69.for.end.137_crit_edge:                ; preds = %while.end
  br label %for.end.137

for.end.137:                                      ; preds = %for.cond.69.for.end.137_crit_edge, %for.end.68
  ret void
}