brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.8 KiB · dcaaacb Raw
115 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -passes=early-cse -earlycse-debug-hash -S < %s | FileCheck %s3; RUN: opt -passes='early-cse<memssa>' -S < %s | FileCheck %s4 5declare void @use(i1)6declare void @use.ptr(i32, ptr) memory(read)7 8define void @test1(float %x, float %y) {9; CHECK-LABEL: @test1(10; CHECK-NEXT:    [[CMP1:%.*]] = fcmp oeq float [[Y:%.*]], [[X:%.*]]11; CHECK-NEXT:    call void @use(i1 [[CMP1]])12; CHECK-NEXT:    call void @use(i1 [[CMP1]])13; CHECK-NEXT:    ret void14;15  %cmp1 = fcmp nnan oeq float %y, %x16  %cmp2 = fcmp oeq float %x, %y17  call void @use(i1 %cmp1)18  call void @use(i1 %cmp2)19  ret void20}21 22declare void @use.i8(ptr)23 24define void @test_inbounds_program_ub_if_first_gep_poison(ptr %ptr, i64 %n) {25; CHECK-LABEL: @test_inbounds_program_ub_if_first_gep_poison(26; CHECK-NEXT:    [[ADD_PTR_1:%.*]] = getelementptr inbounds i8, ptr [[PTR:%.*]], i64 [[N:%.*]]27; CHECK-NEXT:    call void @use.i8(ptr noundef [[ADD_PTR_1]])28; CHECK-NEXT:    call void @use.i8(ptr [[ADD_PTR_1]])29; CHECK-NEXT:    ret void30;31  %add.ptr.1 = getelementptr inbounds i8, ptr %ptr, i64 %n32  call void @use.i8(ptr noundef %add.ptr.1)33  %add.ptr.2 = getelementptr i8, ptr %ptr, i64 %n34  call void @use.i8(ptr %add.ptr.2)35  ret void36}37 38define void @test_inbounds_program_not_ub_if_first_gep_poison(ptr %ptr, i64 %n) {39; CHECK-LABEL: @test_inbounds_program_not_ub_if_first_gep_poison(40; CHECK-NEXT:    [[ADD_PTR_1:%.*]] = getelementptr i8, ptr [[PTR:%.*]], i64 [[N:%.*]]41; CHECK-NEXT:    call void @use.i8(ptr [[ADD_PTR_1]])42; CHECK-NEXT:    call void @use.i8(ptr [[ADD_PTR_1]])43; CHECK-NEXT:    ret void44;45  %add.ptr.1 = getelementptr inbounds i8, ptr %ptr, i64 %n46  call void @use.i8(ptr %add.ptr.1)47  %add.ptr.2 = getelementptr i8, ptr %ptr, i64 %n48  call void @use.i8(ptr %add.ptr.2)49  ret void50}51 52define void @load_both_nonnull(ptr %p) {53; CHECK-LABEL: @load_both_nonnull(54; CHECK-NEXT:    [[V1:%.*]] = load ptr, ptr [[P:%.*]], align 8, !nonnull [[META0:![0-9]+]]55; CHECK-NEXT:    call void @use.ptr(i32 0, ptr [[V1]])56; CHECK-NEXT:    call void @use.ptr(i32 1, ptr [[V1]])57; CHECK-NEXT:    ret void58;59  %v1 = load ptr, ptr %p, !nonnull !{}60  call void @use.ptr(i32 0, ptr %v1)61  %v2 = load ptr, ptr %p, !nonnull !{}62  call void @use.ptr(i32 1, ptr %v2)63  ret void64}65 66define void @load_first_nonnull(ptr %p) {67; CHECK-LABEL: @load_first_nonnull(68; CHECK-NEXT:    [[V1:%.*]] = load ptr, ptr [[P:%.*]], align 869; CHECK-NEXT:    call void @use.ptr(i32 0, ptr [[V1]])70; CHECK-NEXT:    call void @use.ptr(i32 1, ptr [[V1]])71; CHECK-NEXT:    ret void72;73  %v1 = load ptr, ptr %p, !nonnull !{}74  call void @use.ptr(i32 0, ptr %v1)75  %v2 = load ptr, ptr %p76  call void @use.ptr(i32 1, ptr %v2)77  ret void78}79 80define void @load_first_nonnull_noundef(ptr %p) {81; CHECK-LABEL: @load_first_nonnull_noundef(82; CHECK-NEXT:    [[V1:%.*]] = load ptr, ptr [[P:%.*]], align 8, !nonnull [[META0]], !noundef [[META0]]83; CHECK-NEXT:    call void @use.ptr(i32 0, ptr [[V1]])84; CHECK-NEXT:    call void @use.ptr(i32 1, ptr [[V1]])85; CHECK-NEXT:    ret void86;87  %v1 = load ptr, ptr %p, !nonnull !{}, !noundef !{}88  call void @use.ptr(i32 0, ptr %v1)89  %v2 = load ptr, ptr %p90  call void @use.ptr(i32 1, ptr %v2)91  ret void92}93 94define ptr @store_to_load_forward(ptr %p, ptr %p2) {95; CHECK-LABEL: @store_to_load_forward(96; CHECK-NEXT:    [[P3:%.*]] = load ptr, ptr [[P:%.*]], align 8, !nonnull [[META0]]97; CHECK-NEXT:    store ptr [[P3]], ptr [[P2:%.*]], align 898; CHECK-NEXT:    ret ptr [[P3]]99;100  %p3 = load ptr, ptr %p, !nonnull !{}101  store ptr %p3, ptr %p2102  %res = load ptr, ptr %p2103  ret ptr %res104}105 106define i32 @load_undef_noundef(ptr %p) {107; CHECK-LABEL: @load_undef_noundef(108; CHECK-NEXT:    store i32 undef, ptr [[P:%.*]], align 4109; CHECK-NEXT:    ret i32 undef110;111  store i32 undef, ptr %p112  %v = load i32, ptr %p, !noundef !{}113  ret i32 %v114}115