143 lines · plain
1; This test is based on one of benchmarks from SPEC2006. It exposes a bug with2; incorrect updating of the dom-tree.3; RUN: opt < %s -passes=loop-vectorize -verify-dom-info4target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"5 6@PL_utf8skip = external constant [0 x i8]7 8; Function Attrs: nounwind ssp uwtable9define void @Perl_pp_quotemeta(i1 %arg) #0 {10 %len = alloca i64, align 811 br i1 %arg, label %2, label %112 13; <label>:1 ; preds = %014 br label %315 16; <label>:2 ; preds = %017 br label %318 19; <label>:3 ; preds = %2, %120 br i1 %arg, label %34, label %421 22; <label>:4 ; preds = %323 br i1 %arg, label %5, label %624 25; <label>:5 ; preds = %426 br label %627 28; <label>:6 ; preds = %5, %429 br i1 %arg, label %7, label %830 31; <label>:7 ; preds = %632 br label %833 34; <label>:8 ; preds = %7, %635 br i1 %arg, label %.preheader, label %936 37.preheader: ; preds = %9, %838 br i1 %arg, label %.loopexit, label %.lr.ph39 40; <label>:9 ; preds = %841 br i1 %arg, label %thread-pre-split.preheader, label %.preheader42 43thread-pre-split.preheader: ; preds = %944 br i1 %arg, label %thread-pre-split._crit_edge, label %.lr.ph2145 46.thread-pre-split.loopexit_crit_edge: ; preds = %1947 %scevgep.sum = xor i64 %umax, -148 %scevgep45 = getelementptr i8, ptr %d.020, i64 %scevgep.sum49 br label %thread-pre-split.loopexit50 51thread-pre-split.loopexit: ; preds = %11, %.thread-pre-split.loopexit_crit_edge52 %d.1.lcssa = phi ptr [ %scevgep45, %.thread-pre-split.loopexit_crit_edge ], [ %d.020, %11 ]53 br i1 false, label %thread-pre-split._crit_edge, label %.lr.ph2154 55.lr.ph21: ; preds = %26, %thread-pre-split.loopexit, %thread-pre-split.preheader56 %d.020 = phi ptr [ zeroinitializer, %26 ], [ %d.1.lcssa, %thread-pre-split.loopexit ], [ zeroinitializer, %thread-pre-split.preheader ]57 %10 = phi i64 [ %28, %26 ], [ zeroinitializer, %thread-pre-split.loopexit ], [ zeroinitializer, %thread-pre-split.preheader ]58 br i1 %arg, label %11, label %2259 60; <label>:11 ; preds = %.lr.ph2161 %12 = getelementptr inbounds [0 x i8], ptr @PL_utf8skip, i64 0, i64 062 %13 = load i8, ptr %12, align 163 %14 = zext i8 %13 to i6464 %15 = icmp ugt i64 %14, %1065 %. = select i1 %15, i64 %10, i64 %1466 br i1 %arg, label %thread-pre-split.loopexit, label %.lr.ph2867 68.lr.ph28: ; preds = %1169 %16 = xor i64 %10, -170 %17 = xor i64 %14, -171 %18 = icmp ugt i64 %16, %1772 %umax = select i1 %18, i64 %16, i64 %1773 br label %1974 75; <label>:19 ; preds = %19, %.lr.ph2876 %ulen.126 = phi i64 [ %., %.lr.ph28 ], [ %20, %19 ]77 %20 = add i64 %ulen.126, -178 %21 = icmp eq i64 %20, 079 br i1 %21, label %.thread-pre-split.loopexit_crit_edge, label %1980 81; <label>:22 ; preds = %.lr.ph2182 br i1 %arg, label %26, label %2383 84; <label>:23 ; preds = %2285 br i1 %arg, label %26, label %2486 87; <label>:24 ; preds = %2388 br i1 %arg, label %26, label %2589 90; <label>:25 ; preds = %2491 br label %2692 93; <label>:26 ; preds = %25, %24, %23, %2294 %27 = load i64, ptr %len, align 895 %28 = add i64 %27, -196 br i1 %arg, label %thread-pre-split._crit_edge, label %.lr.ph2197 98thread-pre-split._crit_edge: ; preds = %26, %thread-pre-split.loopexit, %thread-pre-split.preheader99 br label %.loopexit100 101.lr.ph: ; preds = %33, %.preheader102 br i1 %arg, label %29, label %thread-pre-split5103 104; <label>:29 ; preds = %.lr.ph105 br i1 %arg, label %33, label %30106 107; <label>:30 ; preds = %29108 br i1 %arg, label %33, label %31109 110thread-pre-split5: ; preds = %.lr.ph111 br i1 %arg, label %33, label %31112 113; <label>:31 ; preds = %thread-pre-split5, %30114 br i1 %arg, label %33, label %32115 116; <label>:32 ; preds = %31117 br label %33118 119; <label>:33 ; preds = %32, %31, %thread-pre-split5, %30, %29120 br i1 %arg, label %.loopexit, label %.lr.ph121 122.loopexit: ; preds = %33, %thread-pre-split._crit_edge, %.preheader123 br label %35124 125; <label>:34 ; preds = %3126 br label %35127 128; <label>:35 ; preds = %34, %.loopexit129 br i1 %arg, label %37, label %36130 131; <label>:36 ; preds = %35132 br label %37133 134; <label>:37 ; preds = %36, %35135 ret void136}137 138attributes #0 = { nounwind ssp uwtable "less-precise-fpmad"="false" "frame-pointer"="all" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "use-soft-float"="false" }139 140!llvm.ident = !{!0}141 142!0 = !{!"clang version 3.6.0 "}143