brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.3 KiB · df8ade6 Raw
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