1 ; RUN: opt -loop-deletion -disable-output < %s 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