brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.3 KiB · 610a254 Raw
81 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -passes=newgvn -S < %s | FileCheck %s3 4; Make sure the created ssa copies are cleaned up. See PR38804.5 6; CHECK-NOT: ssa_copy7 8@b = external dso_local local_unnamed_addr global i32, align 49@a = external dso_local local_unnamed_addr global i8, align 110@f = external dso_local local_unnamed_addr global i16, align 211 12define void @g(i1 %arg, i1 %arg2, i1 %arg3) {13; CHECK-LABEL: @g(14; CHECK-NEXT:  entry:15; CHECK-NEXT:    br i1 [[ARG:%.*]], label [[FOR_COND1THREAD_PRE_SPLIT:%.*]], label [[FOR_COND_PREHEADER:%.*]]16; CHECK:       for.cond.preheader:17; CHECK-NEXT:    unreachable18; CHECK:       for.cond1thread-pre-split:19; CHECK-NEXT:    br label [[FOR_END4_SPLIT:%.*]]20; CHECK:       for.end4.split:21; CHECK-NEXT:    br i1 [[ARG2:%.*]], label [[FOR_COND6_PREHEADER:%.*]], label [[IF_END11:%.*]]22; CHECK:       for.cond6.preheader:23; CHECK-NEXT:    br i1 [[ARG3:%.*]], label [[FOR_COND6_PREHEADER3:%.*]], label [[IF_END11_LOOPEXIT:%.*]]24; CHECK:       for.cond6.preheader3:25; CHECK-NEXT:    br label [[IF_END11_LOOPEXIT]]26; CHECK:       if.end11.loopexit:27; CHECK-NEXT:    [[STOREMERGE_LCSSA:%.*]] = phi i32 [ 0, [[FOR_COND6_PREHEADER]] ], [ 1, [[FOR_COND6_PREHEADER3]] ]28; CHECK-NEXT:    store i32 [[STOREMERGE_LCSSA]], ptr @b, align 429; CHECK-NEXT:    br label [[IF_END11]]30; CHECK:       if.end11:31; CHECK-NEXT:    [[TMP0:%.*]] = load i32, ptr @b, align 432; CHECK-NEXT:    [[TMP1:%.*]] = load i8, ptr @a, align 133; CHECK-NEXT:    [[CONV:%.*]] = sext i8 [[TMP1]] to i3234; CHECK-NEXT:    [[CMP12:%.*]] = icmp eq i32 [[TMP0]], [[CONV]]35; CHECK-NEXT:    br i1 [[CMP12]], label [[IF_THEN14:%.*]], label [[IF_END16:%.*]]36; CHECK:       if.then14:37; CHECK-NEXT:    [[CONV15:%.*]] = trunc i32 [[TMP0]] to i1638; CHECK-NEXT:    store i16 [[CONV15]], ptr @f, align 239; CHECK-NEXT:    unreachable40; CHECK:       if.end16:41; CHECK-NEXT:    ret void42;43entry:44  br i1 %arg, label %for.cond1thread-pre-split, label %for.cond.preheader45 46for.cond.preheader:                               ; preds = %entry47  unreachable48 49for.cond1thread-pre-split:                        ; preds = %entry50  br label %for.end4.split51 52for.end4.split:                                   ; preds = %for.cond1thread-pre-split53  br i1 %arg2, label %for.cond6.preheader, label %if.end1154 55for.cond6.preheader:                              ; preds = %for.end4.split56  br i1 %arg3, label %for.cond6.preheader3, label %if.end11.loopexit57 58for.cond6.preheader3:                             ; preds = %for.cond6.preheader59  br label %if.end11.loopexit60 61if.end11.loopexit:                                ; preds = %for.cond6.preheader3, %for.cond6.preheader62  %storemerge.lcssa = phi i32 [ 0, %for.cond6.preheader ], [ 1, %for.cond6.preheader3 ]63  store i32 %storemerge.lcssa, ptr @b, align 464  br label %if.end1165 66if.end11:                                         ; preds = %if.end11.loopexit, %for.end4.split67  %0 = load i32, ptr @b, align 468  %1 = load i8, ptr @a, align 169  %conv = sext i8 %1 to i3270  %cmp12 = icmp eq i32 %0, %conv71  br i1 %cmp12, label %if.then14, label %if.end1672 73if.then14:                                        ; preds = %if.end1174  %conv15 = trunc i32 %0 to i1675  store i16 %conv15, ptr @f, align 276  unreachable77 78if.end16:                                         ; preds = %if.end1179  ret void80}81