brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.1 KiB · 9d86d18 Raw
71 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -passes=instcombine -S < %s | FileCheck %s3 4declare void @bar()5declare void @baz()6 7; Check that !noundef metadata is combined8define ptr @test_phi_combine_load_metadata(i1 %c, ptr dereferenceable(8) %p1, ptr dereferenceable(8) %p2) {9; CHECK-LABEL: @test_phi_combine_load_metadata(10; CHECK-NEXT:    br i1 [[C:%.*]], label [[T:%.*]], label [[F:%.*]]11; CHECK:       t:12; CHECK-NEXT:    call void @bar()13; CHECK-NEXT:    br label [[CONT:%.*]]14; CHECK:       f:15; CHECK-NEXT:    call void @baz()16; CHECK-NEXT:    br label [[CONT]]17; CHECK:       cont:18; CHECK-NEXT:    [[RES_IN:%.*]] = phi ptr [ [[P1:%.*]], [[T]] ], [ [[P2:%.*]], [[F]] ]19; CHECK-NEXT:    [[RES:%.*]] = load ptr, ptr [[RES_IN]], align 8, !noundef !020; CHECK-NEXT:    ret ptr [[RES]]21;22  br i1 %c, label %t, label %f23t:24  call void @bar()25  %v1 = load ptr, ptr %p1, align 8, !noundef !026  br label %cont27 28f:29  call void @baz()30  %v2 = load ptr, ptr %p2, align 8, !noundef !031  br label %cont32 33cont:34  %res = phi ptr [ %v1, %t ], [ %v2, %f ]35  ret ptr %res36}37 38; Check that !noundef metadata is not combined as a result of39; there is a load don't have a noundef metadata.40define ptr @test_phi_combine_load_metadata_negative(i1 %c, ptr dereferenceable(8) %p1, ptr dereferenceable(8) %p2) {41; CHECK-LABEL: @test_phi_combine_load_metadata_negative(42; CHECK-NEXT:    br i1 [[C:%.*]], label [[T:%.*]], label [[F:%.*]]43; CHECK:       t:44; CHECK-NEXT:    call void @bar()45; CHECK-NEXT:    br label [[CONT:%.*]]46; CHECK:       f:47; CHECK-NEXT:    call void @baz()48; CHECK-NEXT:    br label [[CONT]]49; CHECK:       cont:50; CHECK-NEXT:    [[RES_IN:%.*]] = phi ptr [ [[P1:%.*]], [[T]] ], [ [[P2:%.*]], [[F]] ]51; CHECK-NEXT:    [[RES:%.*]] = load ptr, ptr [[RES_IN]], align 852; CHECK-NEXT:    ret ptr [[RES]]53;54  br i1 %c, label %t, label %f55t:56  call void @bar()57  %v1 = load ptr, ptr %p1, align 8, !noundef !058  br label %cont59 60f:61  call void @baz()62  %v2 = load ptr, ptr %p2, align 863  br label %cont64 65cont:66  %res = phi ptr [ %v1, %t ], [ %v2, %f ]67  ret ptr %res68}69 70!0 = !{}71