brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.3 KiB · 4135c29 Raw
110 lines · plain
1; RUN: opt -S -passes=loop-rotate -verify-memoryssa < %s | FileCheck %s2 3; CHECK-LABEL: @multiedge(4define void @multiedge(i1 %arg, i32 %arg2) {5entry:6  br label %retry7 8retry:                                            ; preds = %sw.epilog, %entry9  br i1 %arg, label %cleanup, label %if.end10 11if.end:                                           ; preds = %retry12  switch i32 %arg2, label %sw.epilog [13    i32 -3, label %cleanup14    i32 -5, label %cleanup15    i32 -16, label %cleanup16    i32 -25, label %cleanup17  ]18 19sw.epilog:                                        ; preds = %if.end20  br label %retry21 22cleanup:                                          ; preds = %if.end, %if.end, %if.end, %if.end, %retry23  ret void24}25 26; CHECK-LABEL: @read_line(27define internal fastcc i32 @read_line(ptr nocapture %f, i1 %arg) unnamed_addr {28entry:29  br label %for.cond30 31for.cond:                                         ; preds = %if.end, %entry32  %call = call ptr @prepbuffer(ptr nonnull undef)33  %call1 = call ptr @fgets(ptr %call, i32 8192, ptr %f)34  br i1 %arg, label %if.then, label %if.end35 36if.then:                                          ; preds = %for.cond37  ret i32 undef38 39if.end:                                           ; preds = %for.cond40  %call4 = call i64 @strlen(ptr %call)41  br label %for.cond42}43 44declare dso_local ptr @prepbuffer(ptr) local_unnamed_addr45declare dso_local ptr @fgets(ptr, i32, ptr nocapture) local_unnamed_addr46declare dso_local i64 @strlen(ptr nocapture) local_unnamed_addr47 48 49; CHECK-LABEL: @loop350define dso_local fastcc void @loop3(i1 %arg) unnamed_addr {51entry:52  br label %for.cond53 54for.cond:                                         ; preds = %for.body, %entry55  br i1 %arg, label %for.body, label %for.end8156 57for.body:                                         ; preds = %for.cond58  %.idx122.val = load i32, ptr undef, align 859  call fastcc void @cont()60  br label %for.cond61 62for.end81:                                        ; preds = %for.cond63  ret void64}65 66; CHECK-LABEL: @loop467define dso_local fastcc void @loop4(i1 %arg) unnamed_addr {68entry:69  br label %while.cond70 71while.cond:                                       ; preds = %while.body, %entry72  br i1 %arg, label %while.end, label %while.body73 74while.body:                                       ; preds = %while.cond75  call fastcc void @cont()76  br label %while.cond77 78while.end:                                        ; preds = %while.cond79  call fastcc void @cont()80  call fastcc void @cont()81  ret void82}83 84; Function Attrs: inlinehint nounwind uwtable85declare dso_local fastcc void @cont() unnamed_addr86 87@glob_array = internal unnamed_addr constant [3 x i32] [i32 1, i32 0, i32 2], align 488; Test against failure in MemorySSAUpdater, when rotate clones instructions as Value.89; CHECK-LABEL: @loop590define dso_local fastcc void @loop5(i1 %arg) unnamed_addr {91entry:92  br label %for.body93 94do.cond:                          ; preds = %for.body95  unreachable96 97for.body:                               ; preds = %if.end, %entry98  %indvar = phi i64 [ %indvar.next, %if.end ], [ 0, %entry ]99  %array = getelementptr inbounds [3 x i32], ptr @glob_array, i64 0, i64 %indvar100  %0 = load i32, ptr %array, align 4101  br i1 %arg, label %do.cond, label %if.end102 103if.end:                                 ; preds = %for.body104  store i32 undef, ptr undef, align 4105  %indvar.next = add nuw nsw i64 %indvar, 1106  br label %for.body107}108 109 110