|  | ; RUN: opt -loop-deletion -disable-output < %s | 
|  |  | 
|  | 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" | 
|  |  | 
|  | %0 = type { %"class.llvm::SmallVectorImpl", [1 x %"union.llvm::SmallVectorBase::U"] } | 
|  | %"class.clang::SourceLocation" = type { i32 } | 
|  | %"class.clang::driver::Arg" = type { %"class.clang::driver::Option"*, %"class.clang::driver::Arg"*, i32, i8, %0 } | 
|  | %"class.clang::driver::Option" = type { i32 (...)**, i32, %"class.clang::SourceLocation", i8*, %"class.clang::driver::OptionGroup"*, %"class.clang::driver::Option"*, i8 } | 
|  | %"class.clang::driver::OptionGroup" = type { %"class.clang::driver::Option" } | 
|  | %"class.llvm::SmallVectorBase" = type { i8*, i8*, i8*, %"union.llvm::SmallVectorBase::U" } | 
|  | %"class.llvm::SmallVectorImpl" = type { %"class.llvm::SmallVectorTemplateBase" } | 
|  | %"class.llvm::SmallVectorTemplateBase" = type { %"class.llvm::SmallVectorTemplateCommon" } | 
|  | %"class.llvm::SmallVectorTemplateCommon" = type { %"class.llvm::SmallVectorBase" } | 
|  | %"union.llvm::SmallVectorBase::U" = type { x86_fp80 } | 
|  |  | 
|  | define void @_ZNK5clang6driver7ArgList20AddAllArgsTranslatedERN4llvm11SmallVectorIPKcLj16EEENS0_12OptSpecifierES5_b(i1 zeroext %Joined) nounwind align 2 { | 
|  | entry: | 
|  | br i1 undef, label %entry.split.us, label %entry.entry.split_crit_edge | 
|  |  | 
|  | entry.entry.split_crit_edge:                      ; preds = %entry | 
|  | br label %entry.split | 
|  |  | 
|  | entry.split.us:                                   ; preds = %entry | 
|  | br label %for.cond.i14.us | 
|  |  | 
|  | for.cond.i14.us:                                  ; preds = %for.inc.i38.us, %entry.split.us | 
|  | br i1 true, label %for.cond.i50.us-lcssa.us, label %if.end.i23.us | 
|  |  | 
|  | for.inc.i38.us:                                   ; preds = %if.end.i23.us | 
|  | br label %for.cond.i14.us | 
|  |  | 
|  | if.end.i23.us:                                    ; preds = %for.cond.i14.us | 
|  | br i1 true, label %for.cond.i50.us-lcssa.us, label %for.inc.i38.us | 
|  |  | 
|  | for.cond.i50.us-lcssa.us:                         ; preds = %if.end.i23.us, %for.cond.i14.us | 
|  | br label %for.cond.i50 | 
|  |  | 
|  | entry.split:                                      ; preds = %entry.entry.split_crit_edge | 
|  | br label %for.cond.i14 | 
|  |  | 
|  | for.cond.i14:                                     ; preds = %for.inc.i38, %entry.split | 
|  | br i1 undef, label %for.cond.i50.us-lcssa, label %if.end.i23 | 
|  |  | 
|  | if.end.i23:                                       ; preds = %for.cond.i14 | 
|  | br i1 undef, label %for.cond.i50.us-lcssa, label %for.inc.i38 | 
|  |  | 
|  | for.inc.i38:                                      ; preds = %if.end.i23 | 
|  | br label %for.cond.i14 | 
|  |  | 
|  | for.cond.i50.us-lcssa:                            ; preds = %if.end.i23, %for.cond.i14 | 
|  | br label %for.cond.i50 | 
|  |  | 
|  | for.cond.i50:                                     ; preds = %for.cond.i50.us-lcssa, %for.cond.i50.us-lcssa.us | 
|  | br label %for.cond | 
|  |  | 
|  | for.cond.loopexit.us-lcssa:                       ; preds = %if.end.i, %for.cond.i | 
|  | br label %for.cond.loopexit | 
|  |  | 
|  | for.cond.loopexit:                                ; preds = %for.cond.loopexit.us-lcssa.us, %for.cond.loopexit.us-lcssa | 
|  | br label %for.cond | 
|  |  | 
|  | for.cond:                                         ; preds = %for.cond.loopexit, %for.cond.i50 | 
|  | br i1 undef, label %for.end, label %for.body | 
|  |  | 
|  | for.body:                                         ; preds = %for.cond | 
|  | br i1 %Joined, label %if.then, label %if.else | 
|  |  | 
|  | if.then:                                          ; preds = %for.body | 
|  | br i1 undef, label %cond.false.i.i, label %_ZN4llvm9StringRefC1EPKc.exit | 
|  |  | 
|  | cond.false.i.i:                                   ; preds = %if.then | 
|  | unreachable | 
|  |  | 
|  | _ZN4llvm9StringRefC1EPKc.exit:                    ; preds = %if.then | 
|  | br i1 undef, label %_ZNK5clang6driver3Arg8getValueERKNS0_7ArgListEj.exit, label %cond.false.i.i91 | 
|  |  | 
|  | cond.false.i.i91:                                 ; preds = %_ZN4llvm9StringRefC1EPKc.exit | 
|  | unreachable | 
|  |  | 
|  | _ZNK5clang6driver3Arg8getValueERKNS0_7ArgListEj.exit: ; preds = %_ZN4llvm9StringRefC1EPKc.exit | 
|  | br i1 undef, label %cond.false.i.i.i, label %if.end13.i.i.i.i | 
|  |  | 
|  | if.end13.i.i.i.i:                                 ; preds = %_ZNK5clang6driver3Arg8getValueERKNS0_7ArgListEj.exit | 
|  | br i1 undef, label %land.lhs.true16.i.i.i.i, label %if.end19.i.i.i.i | 
|  |  | 
|  | land.lhs.true16.i.i.i.i:                          ; preds = %if.end13.i.i.i.i | 
|  | br i1 undef, label %cond.false.i.i.i, label %_ZNK4llvm5Twine8isBinaryEv.exit8.i.i.i.i | 
|  |  | 
|  | _ZNK4llvm5Twine8isBinaryEv.exit8.i.i.i.i:         ; preds = %land.lhs.true16.i.i.i.i | 
|  | br i1 undef, label %cond.false.i.i.i, label %if.end19.i.i.i.i | 
|  |  | 
|  | if.end19.i.i.i.i:                                 ; preds = %_ZNK4llvm5Twine8isBinaryEv.exit8.i.i.i.i, %if.end13.i.i.i.i | 
|  | br i1 undef, label %land.lhs.true22.i.i.i.i, label %_ZN4llvmplERKNS_9StringRefEPKc.exit | 
|  |  | 
|  | land.lhs.true22.i.i.i.i:                          ; preds = %if.end19.i.i.i.i | 
|  | br i1 undef, label %cond.false.i.i.i, label %_ZNK4llvm5Twine8isBinaryEv.exit.i.i.i.i | 
|  |  | 
|  | _ZNK4llvm5Twine8isBinaryEv.exit.i.i.i.i:          ; preds = %land.lhs.true22.i.i.i.i | 
|  | br i1 undef, label %cond.false.i.i.i, label %_ZN4llvmplERKNS_9StringRefEPKc.exit | 
|  |  | 
|  | 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 | 
|  | unreachable | 
|  |  | 
|  | _ZN4llvmplERKNS_9StringRefEPKc.exit:              ; preds = %_ZNK4llvm5Twine8isBinaryEv.exit.i.i.i.i, %if.end19.i.i.i.i | 
|  | br i1 undef, label %Retry.i, label %if.end.i99 | 
|  |  | 
|  | Retry.i:                                          ; preds = %if.end.i99, %_ZN4llvmplERKNS_9StringRefEPKc.exit | 
|  | br i1 undef, label %_ZN4llvm15SmallVectorImplIPKcE9push_backERKS2_.exit, label %new.notnull.i | 
|  |  | 
|  | new.notnull.i:                                    ; preds = %Retry.i | 
|  | br label %_ZN4llvm15SmallVectorImplIPKcE9push_backERKS2_.exit | 
|  |  | 
|  | if.end.i99:                                       ; preds = %_ZN4llvmplERKNS_9StringRefEPKc.exit | 
|  | br label %Retry.i | 
|  |  | 
|  | _ZN4llvm15SmallVectorImplIPKcE9push_backERKS2_.exit: ; preds = %new.notnull.i, %Retry.i | 
|  | br label %for.cond.i.preheader | 
|  |  | 
|  | if.else:                                          ; preds = %for.body | 
|  | br i1 undef, label %Retry.i108, label %if.end.i113 | 
|  |  | 
|  | Retry.i108:                                       ; preds = %if.end.i113, %if.else | 
|  | br i1 undef, label %_ZN4llvm15SmallVectorImplIPKcE9push_backERKS2_.exit114, label %new.notnull.i110 | 
|  |  | 
|  | new.notnull.i110:                                 ; preds = %Retry.i108 | 
|  | br label %_ZN4llvm15SmallVectorImplIPKcE9push_backERKS2_.exit114 | 
|  |  | 
|  | if.end.i113:                                      ; preds = %if.else | 
|  | br label %Retry.i108 | 
|  |  | 
|  | _ZN4llvm15SmallVectorImplIPKcE9push_backERKS2_.exit114: ; preds = %new.notnull.i110, %Retry.i108 | 
|  | br i1 undef, label %_ZNK5clang6driver3Arg8getValueERKNS0_7ArgListEj.exit125, label %cond.false.i.i123 | 
|  |  | 
|  | cond.false.i.i123:                                ; preds = %_ZN4llvm15SmallVectorImplIPKcE9push_backERKS2_.exit114 | 
|  | unreachable | 
|  |  | 
|  | _ZNK5clang6driver3Arg8getValueERKNS0_7ArgListEj.exit125: ; preds = %_ZN4llvm15SmallVectorImplIPKcE9push_backERKS2_.exit114 | 
|  | br i1 undef, label %Retry.i134, label %if.end.i139 | 
|  |  | 
|  | Retry.i134:                                       ; preds = %if.end.i139, %_ZNK5clang6driver3Arg8getValueERKNS0_7ArgListEj.exit125 | 
|  | br i1 undef, label %_ZN4llvm15SmallVectorImplIPKcE9push_backERKS2_.exit140, label %new.notnull.i136 | 
|  |  | 
|  | new.notnull.i136:                                 ; preds = %Retry.i134 | 
|  | br label %_ZN4llvm15SmallVectorImplIPKcE9push_backERKS2_.exit140 | 
|  |  | 
|  | if.end.i139:                                      ; preds = %_ZNK5clang6driver3Arg8getValueERKNS0_7ArgListEj.exit125 | 
|  | br label %Retry.i134 | 
|  |  | 
|  | _ZN4llvm15SmallVectorImplIPKcE9push_backERKS2_.exit140: ; preds = %new.notnull.i136, %Retry.i134 | 
|  | br label %for.cond.i.preheader | 
|  |  | 
|  | for.cond.i.preheader:                             ; preds = %_ZN4llvm15SmallVectorImplIPKcE9push_backERKS2_.exit140, %_ZN4llvm15SmallVectorImplIPKcE9push_backERKS2_.exit | 
|  | br i1 undef, label %for.cond.i.preheader.split.us, label %for.cond.i.preheader.for.cond.i.preheader.split_crit_edge | 
|  |  | 
|  | for.cond.i.preheader.for.cond.i.preheader.split_crit_edge: ; preds = %for.cond.i.preheader | 
|  | br label %for.cond.i.preheader.split | 
|  |  | 
|  | for.cond.i.preheader.split.us:                    ; preds = %for.cond.i.preheader | 
|  | br label %for.cond.i.us | 
|  |  | 
|  | for.cond.i.us:                                    ; preds = %if.end.i.us, %for.cond.i.preheader.split.us | 
|  | br i1 true, label %for.cond.loopexit.us-lcssa.us, label %if.end.i.us | 
|  |  | 
|  | if.end.i.us:                                      ; preds = %for.cond.i.us | 
|  | br i1 true, label %for.cond.loopexit.us-lcssa.us, label %for.cond.i.us | 
|  |  | 
|  | for.cond.loopexit.us-lcssa.us:                    ; preds = %if.end.i.us, %for.cond.i.us | 
|  | %tmp178218.us.lcssa = phi %"class.clang::driver::Arg"** [ undef, %if.end.i.us ], [ undef, %for.cond.i.us ] | 
|  | br label %for.cond.loopexit | 
|  |  | 
|  | for.cond.i.preheader.split:                       ; preds = %for.cond.i.preheader.for.cond.i.preheader.split_crit_edge | 
|  | br label %for.cond.i | 
|  |  | 
|  | for.cond.i:                                       ; preds = %if.end.i, %for.cond.i.preheader.split | 
|  | br i1 undef, label %for.cond.loopexit.us-lcssa, label %if.end.i | 
|  |  | 
|  | if.end.i:                                         ; preds = %for.cond.i | 
|  | br i1 undef, label %for.cond.loopexit.us-lcssa, label %for.cond.i | 
|  |  | 
|  | for.end:                                          ; preds = %for.cond | 
|  | ret void | 
|  | } |