brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.1 KiB · df85fa9 Raw
200 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt < %s -passes=dse -S | FileCheck %s3 4target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"5 6 7define void @test4(ptr noalias %P) {8; CHECK-LABEL: @test4(9; CHECK-NEXT:    store i32 0, ptr [[P:%.*]], align 410; CHECK-NEXT:    br i1 true, label [[BB1:%.*]], label [[BB2:%.*]]11; CHECK:       bb1:12; CHECK-NEXT:    br label [[BB3:%.*]]13; CHECK:       bb2:14; CHECK-NEXT:    [[X:%.*]] = load i32, ptr [[P]], align 415; CHECK-NEXT:    br label [[BB3]]16; CHECK:       bb3:17; CHECK-NEXT:    store i32 1, ptr [[P]], align 418; CHECK-NEXT:    ret void19;20  store i32 0, ptr %P21  br i1 true, label %bb1, label %bb222bb1:23  br label %bb324bb2:25  %x = load i32, ptr %P26  br label %bb327bb3:28  store i32 1, ptr %P29  ret void30}31 32define void @test5(ptr noalias %P) {33; CHECK-LABEL: @test5(34; CHECK-NEXT:    br i1 true, label [[BB1:%.*]], label [[BB2:%.*]]35; CHECK:       bb1:36; CHECK-NEXT:    br label [[BB3:%.*]]37; CHECK:       bb2:38; CHECK-NEXT:    br label [[BB3]]39; CHECK:       bb3:40; CHECK-NEXT:    store i32 0, ptr [[P:%.*]], align 441; CHECK-NEXT:    ret void42;43  br i1 true, label %bb1, label %bb244bb1:45  store i32 1, ptr %P46  br label %bb347bb2:48  store i32 1, ptr %P49  br label %bb350bb3:51  store i32 0, ptr %P52  ret void53}54 55define void @test8(ptr %P, ptr %Q) {56; CHECK-LABEL: @test8(57; CHECK-NEXT:    br i1 true, label [[BB1:%.*]], label [[BB2:%.*]]58; CHECK:       bb1:59; CHECK-NEXT:    br label [[BB3:%.*]]60; CHECK:       bb2:61; CHECK-NEXT:    store i32 1, ptr [[Q:%.*]], align 462; CHECK-NEXT:    br label [[BB3]]63; CHECK:       bb3:64; CHECK-NEXT:    store i32 0, ptr [[P:%.*]], align 465; CHECK-NEXT:    ret void66;67  br i1 true, label %bb1, label %bb268bb1:69  store i32 1, ptr %P70  br label %bb371bb2:72  store i32 1, ptr %Q73  br label %bb374bb3:75  store i32 0, ptr %P76  ret void77}78 79define void @test10(ptr noalias %P) {80; CHECK-LABEL: @test10(81; CHECK-NEXT:    store i32 1, ptr [[P:%.*]], align 482; CHECK-NEXT:    br i1 true, label [[BB1:%.*]], label [[BB2:%.*]]83; CHECK:       bb1:84; CHECK-NEXT:    br label [[BB3:%.*]]85; CHECK:       bb2:86; CHECK-NEXT:    br label [[BB3]]87; CHECK:       bb3:88; CHECK-NEXT:    ret void89;90  store i32 0, ptr %P91  br i1 true, label %bb1, label %bb292bb1:93  br label %bb394bb2:95  br label %bb396bb3:97  store i8 1, ptr %P98  ret void99}100 101declare void @hoge()102 103; Check a function with a MemoryPhi with 3 incoming values.104define void @widget(ptr %Ptr, i1 %c1, i1 %c2, i32 %v1, i32 %v2, i32 %v3) {105; CHECK-LABEL: @widget(106; CHECK-NEXT:  bb:107; CHECK-NEXT:    tail call void @hoge()108; CHECK-NEXT:    br i1 [[C1:%.*]], label [[BB3:%.*]], label [[BB1:%.*]]109; CHECK:       bb1:110; CHECK-NEXT:    br i1 [[C2:%.*]], label [[BB2:%.*]], label [[BB3]]111; CHECK:       bb2:112; CHECK-NEXT:    br label [[BB3]]113; CHECK:       bb3:114; CHECK-NEXT:    br label [[BB4:%.*]]115; CHECK:       bb4:116; CHECK-NEXT:    switch i32 [[V1:%.*]], label [[BB8:%.*]] [117; CHECK-NEXT:    i32 0, label [[BB5:%.*]]118; CHECK-NEXT:    i32 1, label [[BB6:%.*]]119; CHECK-NEXT:    i32 2, label [[BB7:%.*]]120; CHECK-NEXT:    ]121; CHECK:       bb5:122; CHECK-NEXT:    store i32 0, ptr [[PTR:%.*]], align 4123; CHECK-NEXT:    br label [[BB8]]124; CHECK:       bb6:125; CHECK-NEXT:    store i32 1, ptr [[PTR]], align 4126; CHECK-NEXT:    br label [[BB8]]127; CHECK:       bb7:128; CHECK-NEXT:    store i32 2, ptr [[PTR]], align 4129; CHECK-NEXT:    br label [[BB8]]130; CHECK:       bb8:131; CHECK-NEXT:    br label [[BB4]]132;133bb:134  tail call void @hoge()135  br i1 %c1, label %bb3, label %bb1136 137bb1:                                              ; preds = %bb138  br i1 %c2, label %bb2, label %bb3139 140bb2:                                              ; preds = %bb1141  store i32 -1, ptr %Ptr, align 4142  br label %bb3143 144bb3:                                              ; preds = %bb2, %bb1, %bb145  br label %bb4146 147bb4:                                              ; preds = %bb8, %bb3148  switch i32 %v1, label %bb8 [149  i32 0, label %bb5150  i32 1, label %bb6151  i32 2, label %bb7152  ]153 154bb5:                                              ; preds = %bb4155  store i32 0, ptr %Ptr, align 4156  br label %bb8157 158bb6:                                              ; preds = %bb4159  store i32 1, ptr %Ptr, align 4160  br label %bb8161 162bb7:                                              ; preds = %bb4163  store i32 2, ptr %Ptr, align 4164  br label %bb8165 166bb8:                                              ; preds = %bb7, %bb6, %bb5, %bb4167  br label %bb4168}169 170 171declare void @fn1_test11()172declare void @fn2_test11()173 174define void @test11(i1 %c, ptr %ptr.1) {175; CHECK-LABEL: @test11(176; CHECK-NEXT:  entry:177; CHECK-NEXT:    br i1 [[C:%.*]], label [[IF_THEN:%.*]], label [[EXIT:%.*]]178; CHECK:       if.then:179; CHECK-NEXT:    tail call void @fn2_test11() #0180; CHECK-NEXT:    br label [[EXIT]]181; CHECK:       exit:182; CHECK-NEXT:    store ptr null, ptr [[PTR_1:%.*]], align 8183; CHECK-NEXT:    tail call void @fn2_test11() #0184; CHECK-NEXT:    ret void185;186entry:187  br i1 %c, label %if.then, label %exit188 189if.then:                                      ; preds = %entry190  tail call void @fn2_test11() #1191  br label %exit192 193exit:194  store ptr null, ptr %ptr.1, align 8195  tail call void @fn2_test11() #1196  ret void197}198 199attributes #1 = { nounwind }200