brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.4 KiB · 61eb7a5 Raw
142 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2;; Ensure we don't change after value numbering by accidentally deleting the wrong expression.3; RUN: opt -passes=newgvn -S %s | FileCheck %s4define void @fn1(i1 %arg) local_unnamed_addr {5; CHECK-LABEL: @fn1(6; CHECK-NEXT:  entry:7; CHECK-NEXT:    br label [[FOR_COND_PREHEADER:%.*]]8; CHECK:       while.cond:9; CHECK-NEXT:    br label [[FOR_COND_PREHEADER]]10; CHECK:       for.cond.preheader:11; CHECK-NEXT:    [[H_031:%.*]] = phi i32 [ 5, [[ENTRY:%.*]] ], [ [[H_127:%.*]], [[WHILE_COND:%.*]] ]12; CHECK-NEXT:    br label [[FOR_BODY:%.*]]13; CHECK:       for.body:14; CHECK-NEXT:    [[H_128:%.*]] = phi i32 [ [[H_031]], [[FOR_COND_PREHEADER]] ], [ [[H_2:%.*]], [[FOR_INC:%.*]] ]15; CHECK-NEXT:    br label [[IF_THEN:%.*]]16; CHECK:       if.then:17; CHECK-NEXT:    br i1 false, label [[L_LOOPEXIT:%.*]], label [[IF_END:%.*]]18; CHECK:       if.end:19; CHECK-NEXT:    br i1 [[ARG:%.*]], label [[FOR_INC]], label [[IF_END9:%.*]]20; CHECK:       if.end9:21; CHECK-NEXT:    br label [[FOR_INC]]22; CHECK:       for.inc:23; CHECK-NEXT:    [[H_2]] = phi i32 [ [[H_128]], [[IF_END]] ], [ 0, [[IF_END9]] ]24; CHECK-NEXT:    br i1 [[ARG]], label [[WHILE_COND10_LOOPEXIT:%.*]], label [[FOR_BODY]]25; CHECK:       while.cond10.loopexit:26; CHECK-NEXT:    br label [[WHILE_COND10:%.*]]27; CHECK:       while.cond10:28; CHECK-NEXT:    [[H_127]] = phi i32 [ [[H_126:%.*]], [[IF_END18:%.*]] ], [ [[H_125:%.*]], [[L:%.*]] ], [ [[H_2]], [[WHILE_COND10_LOOPEXIT]] ]29; CHECK-NEXT:    br i1 [[ARG]], label [[WHILE_COND]], label [[WHILE_BODY12:%.*]]30; CHECK:       while.body12:31; CHECK-NEXT:    br i1 false, label [[IF_END18]], label [[L]]32; CHECK:       L.loopexit:33; CHECK-NEXT:    store i8 poison, ptr null, align 134; CHECK-NEXT:    br label [[L]]35; CHECK:       L:36; CHECK-NEXT:    [[H_125]] = phi i32 [ [[H_127]], [[WHILE_BODY12]] ], [ poison, [[L_LOOPEXIT]] ]37; CHECK-NEXT:    br i1 [[ARG]], label [[WHILE_COND10]], label [[IF_END18]]38; CHECK:       if.end18:39; CHECK-NEXT:    [[H_126]] = phi i32 [ [[H_125]], [[L]] ], [ poison, [[WHILE_BODY12]] ]40; CHECK-NEXT:    br label [[WHILE_COND10]]41;42entry:43  br label %for.cond.preheader44 45while.cond:                                       ; preds = %while.cond1046  br label %for.cond.preheader47 48for.cond.preheader:                               ; preds = %while.cond, %entry49  %h.031 = phi i32 [ 5, %entry ], [ %h.127, %while.cond ]50  br label %for.body51 52for.body:                                         ; preds = %for.inc, %for.cond.preheader53  %h.128 = phi i32 [ %h.031, %for.cond.preheader ], [ %h.2, %for.inc ]54  br label %if.then55 56if.then:                                          ; preds = %for.body57  br i1 false, label %L.loopexit, label %if.end58 59if.end:                                           ; preds = %if.then60  br i1 %arg, label %for.inc, label %if.end961 62if.end9:                                          ; preds = %if.end63  br label %for.inc64 65for.inc:                                          ; preds = %if.end9, %if.end66  %h.2 = phi i32 [ %h.128, %if.end ], [ 0, %if.end9 ]67  br i1 %arg, label %while.cond10.loopexit, label %for.body68 69while.cond10.loopexit:                            ; preds = %for.inc70  %h.2.lcssa = phi i32 [ %h.2, %for.inc ]71  br label %while.cond1072 73while.cond10:                                     ; preds = %if.end18, %L, %while.cond10.loopexit74  %h.127 = phi i32 [ %h.126, %if.end18 ], [ %h.125, %L ], [ %h.2.lcssa, %while.cond10.loopexit ]75  br i1 %arg, label %while.cond, label %while.body1276 77while.body12:                                     ; preds = %while.cond1078  br i1 %arg, label %if.end18, label %L79 80L.loopexit:                                       ; preds = %if.then81  br label %L82 83L:                                                ; preds = %L.loopexit, %while.body1284  %h.125 = phi i32 [ %h.127, %while.body12 ], [ undef, %L.loopexit ]85  br i1 %arg, label %while.cond10, label %if.end1886 87if.end18:                                         ; preds = %L, %while.body1288  %h.126 = phi i32 [ %h.125, %L ], [ %h.127, %while.body12 ]89  br label %while.cond1090}91 92define void @hoge() local_unnamed_addr {93; CHECK-LABEL: @hoge(94; CHECK-NEXT:  bb:95; CHECK-NEXT:    br label [[BB1:%.*]]96; CHECK:       bb1:97; CHECK-NEXT:    [[TMP:%.*]] = phi i64 [ 0, [[BB:%.*]] ], [ [[TMP2:%.*]], [[BB1]] ]98; CHECK-NEXT:    [[TMP2]] = add nuw nsw i64 [[TMP]], 199; CHECK-NEXT:    br label [[BB1]]100;101bb:102  br label %bb1103 104bb1:                                              ; preds = %bb1, %bb105  %tmp = phi i64 [ 0, %bb ], [ %tmp2, %bb1 ]106  %tmp2 = add nuw nsw i64 %tmp, 1107  br label %bb1108}109 110define void @a(i1 %arg) {111; CHECK-LABEL: @a(112; CHECK-NEXT:  b:113; CHECK-NEXT:    store ptr null, ptr null, align 8114; CHECK-NEXT:    br label [[D:%.*]]115; CHECK:       d:116; CHECK-NEXT:    [[I:%.*]] = phi ptr [ null, [[B:%.*]] ], [ [[E:%.*]], [[F:%.*]] ]117; CHECK-NEXT:    br i1 [[ARG:%.*]], label [[F]], label [[G:%.*]]118; CHECK:       g:119; CHECK-NEXT:    store ptr [[I]], ptr null, align 8120; CHECK-NEXT:    unreachable121; CHECK:       f:122; CHECK-NEXT:    [[E]] = getelementptr i8, ptr [[I]], i64 1123; CHECK-NEXT:    br label [[D]]124;125b:126  store ptr null, ptr null127  br label %d128 129d:                                                ; preds = %f, %b130  %i = phi ptr [ null, %b ], [ %e, %f ]131  br i1 %arg, label %f, label %g132 133g:                                                ; preds = %d134  %h = phi ptr [ %i, %d ]135  store ptr %h, ptr null136  unreachable137 138f:                                                ; preds = %d139  %e = getelementptr i8, ptr %i, i64 1140  br label %d141}142