Home | History | Annotate | Download | only in LoopDeletion
      1 ; RUN: opt %s -loop-deletion -disable-output
      2 
      3 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"
      4 
      5 %0 = type { %"class.llvm::SmallVectorImpl", [1 x %"union.llvm::SmallVectorBase::U"] }
      6 %"class.clang::SourceLocation" = type { i32 }
      7 %"class.clang::driver::Arg" = type { %"class.clang::driver::Option"*, %"class.clang::driver::Arg"*, i32, i8, %0 }
      8 %"class.clang::driver::Option" = type { i32 (...)**, i32, %"class.clang::SourceLocation", i8*, %"class.clang::driver::OptionGroup"*, %"class.clang::driver::Option"*, i8 }
      9 %"class.clang::driver::OptionGroup" = type { %"class.clang::driver::Option" }
     10 %"class.llvm::SmallVectorBase" = type { i8*, i8*, i8*, %"union.llvm::SmallVectorBase::U" }
     11 %"class.llvm::SmallVectorImpl" = type { %"class.llvm::SmallVectorTemplateBase" }
     12 %"class.llvm::SmallVectorTemplateBase" = type { %"class.llvm::SmallVectorTemplateCommon" }
     13 %"class.llvm::SmallVectorTemplateCommon" = type { %"class.llvm::SmallVectorBase" }
     14 %"union.llvm::SmallVectorBase::U" = type { x86_fp80 }
     15 
     16 define void @_ZNK5clang6driver7ArgList20AddAllArgsTranslatedERN4llvm11SmallVectorIPKcLj16EEENS0_12OptSpecifierES5_b(i1 zeroext %Joined) nounwind align 2 {
     17 entry:
     18   br i1 undef, label %entry.split.us, label %entry.entry.split_crit_edge
     19 
     20 entry.entry.split_crit_edge:                      ; preds = %entry
     21   br label %entry.split
     22 
     23 entry.split.us:                                   ; preds = %entry
     24   br label %for.cond.i14.us
     25 
     26 for.cond.i14.us:                                  ; preds = %for.inc.i38.us, %entry.split.us
     27   br i1 true, label %for.cond.i50.us-lcssa.us, label %if.end.i23.us
     28 
     29 for.inc.i38.us:                                   ; preds = %if.end.i23.us
     30   br label %for.cond.i14.us
     31 
     32 if.end.i23.us:                                    ; preds = %for.cond.i14.us
     33   br i1 true, label %for.cond.i50.us-lcssa.us, label %for.inc.i38.us
     34 
     35 for.cond.i50.us-lcssa.us:                         ; preds = %if.end.i23.us, %for.cond.i14.us
     36   br label %for.cond.i50
     37 
     38 entry.split:                                      ; preds = %entry.entry.split_crit_edge
     39   br label %for.cond.i14
     40 
     41 for.cond.i14:                                     ; preds = %for.inc.i38, %entry.split
     42   br i1 undef, label %for.cond.i50.us-lcssa, label %if.end.i23
     43 
     44 if.end.i23:                                       ; preds = %for.cond.i14
     45   br i1 undef, label %for.cond.i50.us-lcssa, label %for.inc.i38
     46 
     47 for.inc.i38:                                      ; preds = %if.end.i23
     48   br label %for.cond.i14
     49 
     50 for.cond.i50.us-lcssa:                            ; preds = %if.end.i23, %for.cond.i14
     51   br label %for.cond.i50
     52 
     53 for.cond.i50:                                     ; preds = %for.cond.i50.us-lcssa, %for.cond.i50.us-lcssa.us
     54   br label %for.cond
     55 
     56 for.cond.loopexit.us-lcssa:                       ; preds = %if.end.i, %for.cond.i
     57   br label %for.cond.loopexit
     58 
     59 for.cond.loopexit:                                ; preds = %for.cond.loopexit.us-lcssa.us, %for.cond.loopexit.us-lcssa
     60   br label %for.cond
     61 
     62 for.cond:                                         ; preds = %for.cond.loopexit, %for.cond.i50
     63   br i1 undef, label %for.end, label %for.body
     64 
     65 for.body:                                         ; preds = %for.cond
     66   br i1 %Joined, label %if.then, label %if.else
     67 
     68 if.then:                                          ; preds = %for.body
     69   br i1 undef, label %cond.false.i.i, label %_ZN4llvm9StringRefC1EPKc.exit
     70 
     71 cond.false.i.i:                                   ; preds = %if.then
     72   unreachable
     73 
     74 _ZN4llvm9StringRefC1EPKc.exit:                    ; preds = %if.then
     75   br i1 undef, label %_ZNK5clang6driver3Arg8getValueERKNS0_7ArgListEj.exit, label %cond.false.i.i91
     76 
     77 cond.false.i.i91:                                 ; preds = %_ZN4llvm9StringRefC1EPKc.exit
     78   unreachable
     79 
     80 _ZNK5clang6driver3Arg8getValueERKNS0_7ArgListEj.exit: ; preds = %_ZN4llvm9StringRefC1EPKc.exit
     81   br i1 undef, label %cond.false.i.i.i, label %if.end13.i.i.i.i
     82 
     83 if.end13.i.i.i.i:                                 ; preds = %_ZNK5clang6driver3Arg8getValueERKNS0_7ArgListEj.exit
     84   br i1 undef, label %land.lhs.true16.i.i.i.i, label %if.end19.i.i.i.i
     85 
     86 land.lhs.true16.i.i.i.i:                          ; preds = %if.end13.i.i.i.i
     87   br i1 undef, label %cond.false.i.i.i, label %_ZNK4llvm5Twine8isBinaryEv.exit8.i.i.i.i
     88 
     89 _ZNK4llvm5Twine8isBinaryEv.exit8.i.i.i.i:         ; preds = %land.lhs.true16.i.i.i.i
     90   br i1 undef, label %cond.false.i.i.i, label %if.end19.i.i.i.i
     91 
     92 if.end19.i.i.i.i:                                 ; preds = %_ZNK4llvm5Twine8isBinaryEv.exit8.i.i.i.i, %if.end13.i.i.i.i
     93   br i1 undef, label %land.lhs.true22.i.i.i.i, label %_ZN4llvmplERKNS_9StringRefEPKc.exit
     94 
     95 land.lhs.true22.i.i.i.i:                          ; preds = %if.end19.i.i.i.i
     96   br i1 undef, label %cond.false.i.i.i, label %_ZNK4llvm5Twine8isBinaryEv.exit.i.i.i.i
     97 
     98 _ZNK4llvm5Twine8isBinaryEv.exit.i.i.i.i:          ; preds = %land.lhs.true22.i.i.i.i
     99   br i1 undef, label %cond.false.i.i.i, label %_ZN4llvmplERKNS_9StringRefEPKc.exit
    100 
    101 cond.false.i.i.i:                                 ; preds = %_ZNK4llvm5Twine8isBinaryEv.exit.i.i.i.i, %land.lhs.true22.i.i.i.i, %_ZNK4llvm5Twine8isBinaryEv.exit8.i.i.i.i, %land.lhs.true16.i.i.i.i, %_ZNK5clang6driver3Arg8getValueERKNS0_7ArgListEj.exit
    102   unreachable
    103 
    104 _ZN4llvmplERKNS_9StringRefEPKc.exit:              ; preds = %_ZNK4llvm5Twine8isBinaryEv.exit.i.i.i.i, %if.end19.i.i.i.i
    105   br i1 undef, label %Retry.i, label %if.end.i99
    106 
    107 Retry.i:                                          ; preds = %if.end.i99, %_ZN4llvmplERKNS_9StringRefEPKc.exit
    108   br i1 undef, label %_ZN4llvm15SmallVectorImplIPKcE9push_backERKS2_.exit, label %new.notnull.i
    109 
    110 new.notnull.i:                                    ; preds = %Retry.i
    111   br label %_ZN4llvm15SmallVectorImplIPKcE9push_backERKS2_.exit
    112 
    113 if.end.i99:                                       ; preds = %_ZN4llvmplERKNS_9StringRefEPKc.exit
    114   br label %Retry.i
    115 
    116 _ZN4llvm15SmallVectorImplIPKcE9push_backERKS2_.exit: ; preds = %new.notnull.i, %Retry.i
    117   br label %for.cond.i.preheader
    118 
    119 if.else:                                          ; preds = %for.body
    120   br i1 undef, label %Retry.i108, label %if.end.i113
    121 
    122 Retry.i108:                                       ; preds = %if.end.i113, %if.else
    123   br i1 undef, label %_ZN4llvm15SmallVectorImplIPKcE9push_backERKS2_.exit114, label %new.notnull.i110
    124 
    125 new.notnull.i110:                                 ; preds = %Retry.i108
    126   br label %_ZN4llvm15SmallVectorImplIPKcE9push_backERKS2_.exit114
    127 
    128 if.end.i113:                                      ; preds = %if.else
    129   br label %Retry.i108
    130 
    131 _ZN4llvm15SmallVectorImplIPKcE9push_backERKS2_.exit114: ; preds = %new.notnull.i110, %Retry.i108
    132   br i1 undef, label %_ZNK5clang6driver3Arg8getValueERKNS0_7ArgListEj.exit125, label %cond.false.i.i123
    133 
    134 cond.false.i.i123:                                ; preds = %_ZN4llvm15SmallVectorImplIPKcE9push_backERKS2_.exit114
    135   unreachable
    136 
    137 _ZNK5clang6driver3Arg8getValueERKNS0_7ArgListEj.exit125: ; preds = %_ZN4llvm15SmallVectorImplIPKcE9push_backERKS2_.exit114
    138   br i1 undef, label %Retry.i134, label %if.end.i139
    139 
    140 Retry.i134:                                       ; preds = %if.end.i139, %_ZNK5clang6driver3Arg8getValueERKNS0_7ArgListEj.exit125
    141   br i1 undef, label %_ZN4llvm15SmallVectorImplIPKcE9push_backERKS2_.exit140, label %new.notnull.i136
    142 
    143 new.notnull.i136:                                 ; preds = %Retry.i134
    144   br label %_ZN4llvm15SmallVectorImplIPKcE9push_backERKS2_.exit140
    145 
    146 if.end.i139:                                      ; preds = %_ZNK5clang6driver3Arg8getValueERKNS0_7ArgListEj.exit125
    147   br label %Retry.i134
    148 
    149 _ZN4llvm15SmallVectorImplIPKcE9push_backERKS2_.exit140: ; preds = %new.notnull.i136, %Retry.i134
    150   br label %for.cond.i.preheader
    151 
    152 for.cond.i.preheader:                             ; preds = %_ZN4llvm15SmallVectorImplIPKcE9push_backERKS2_.exit140, %_ZN4llvm15SmallVectorImplIPKcE9push_backERKS2_.exit
    153   br i1 undef, label %for.cond.i.preheader.split.us, label %for.cond.i.preheader.for.cond.i.preheader.split_crit_edge
    154 
    155 for.cond.i.preheader.for.cond.i.preheader.split_crit_edge: ; preds = %for.cond.i.preheader
    156   br label %for.cond.i.preheader.split
    157 
    158 for.cond.i.preheader.split.us:                    ; preds = %for.cond.i.preheader
    159   br label %for.cond.i.us
    160 
    161 for.cond.i.us:                                    ; preds = %if.end.i.us, %for.cond.i.preheader.split.us
    162   br i1 true, label %for.cond.loopexit.us-lcssa.us, label %if.end.i.us
    163 
    164 if.end.i.us:                                      ; preds = %for.cond.i.us
    165   br i1 true, label %for.cond.loopexit.us-lcssa.us, label %for.cond.i.us
    166 
    167 for.cond.loopexit.us-lcssa.us:                    ; preds = %if.end.i.us, %for.cond.i.us
    168   %tmp178218.us.lcssa = phi %"class.clang::driver::Arg"** [ undef, %if.end.i.us ], [ undef, %for.cond.i.us ]
    169   br label %for.cond.loopexit
    170 
    171 for.cond.i.preheader.split:                       ; preds = %for.cond.i.preheader.for.cond.i.preheader.split_crit_edge
    172   br label %for.cond.i
    173 
    174 for.cond.i:                                       ; preds = %if.end.i, %for.cond.i.preheader.split
    175   br i1 undef, label %for.cond.loopexit.us-lcssa, label %if.end.i
    176 
    177 if.end.i:                                         ; preds = %for.cond.i
    178   br i1 undef, label %for.cond.loopexit.us-lcssa, label %for.cond.i
    179 
    180 for.end:                                          ; preds = %for.cond
    181   ret void
    182 }
    183