brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.4 KiB · 6ed447a Raw
82 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -passes=gvn -S %s | FileCheck %s3 4; Test for PR46054. Make sure we correctly invalidate MemoryDependenceAnalysis,5; after removing a nonlocaldef.6 7target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"8 9define void @test_double(ptr %data) {10; CHECK-LABEL: @test_double(11; CHECK-NEXT:  entry:12; CHECK-NEXT:    [[LUC:%.*]] = tail call noalias nonnull ptr @data()13; CHECK-NEXT:    store i64 1, ptr [[LUC]], align 8, !invariant.group !014; CHECK-NEXT:    call void @fn(i64 1)15; CHECK-NEXT:    br i1 true, label [[A:%.*]], label [[ENTRY_B_CRIT_EDGE:%.*]]16; CHECK:       entry.B_crit_edge:17; CHECK-NEXT:    br label [[B:%.*]]18; CHECK:       A:19; CHECK-NEXT:    br label [[B]]20; CHECK:       B:21; CHECK-NEXT:    call void @fn(i64 1)22; CHECK-NEXT:    ret void23;24entry:25  %luc = tail call noalias nonnull ptr @data()26  store i64 1, ptr %luc, !invariant.group !027  %QQ = load i64, ptr %luc, !invariant.group !028  call void @fn(i64 %QQ)29  br i1 true, label %A, label %B30 31A:                                                ; preds = %loop32  br label %B33 34B:                                                ; preds = %A, %loop35  %QQ.1 = load i64, ptr %luc, !invariant.group !036  call void @fn(i64 %QQ.1)37  ret void38}39 40declare void @fn(i64)41 42declare noalias ptr @data()43 44 45define void @test_double_ptr(ptr %data) {46; CHECK-LABEL: @test_double_ptr(47; CHECK-NEXT:  entry:48; CHECK-NEXT:    [[LUC:%.*]] = tail call noalias nonnull ptr @data.ptr()49; CHECK-NEXT:    store ptr null, ptr [[LUC]], align 8, !invariant.group !050; CHECK-NEXT:    call void @fn.ptr(ptr null)51; CHECK-NEXT:    br i1 true, label [[A:%.*]], label [[ENTRY_B_CRIT_EDGE:%.*]]52; CHECK:       entry.B_crit_edge:53; CHECK-NEXT:    br label [[B:%.*]]54; CHECK:       A:55; CHECK-NEXT:    br label [[B]]56; CHECK:       B:57; CHECK-NEXT:    call void @fn.ptr(ptr null)58; CHECK-NEXT:    ret void59;60entry:61  %luc = tail call noalias nonnull ptr @data.ptr()62  store ptr null, ptr %luc, !invariant.group !063  %QQ = load ptr, ptr %luc, !invariant.group !064  call void @fn.ptr(ptr %QQ)65  br i1 true, label %A, label %B66 67A:                                                ; preds = %loop68  br label %B69 70B:                                                ; preds = %A, %loop71  %QQ.1 = load ptr, ptr %luc, !invariant.group !072  call void @fn.ptr(ptr %QQ.1)73  ret void74}75 76 77declare void @fn.ptr(ptr)78 79declare noalias ptr @data.ptr()80 81!0 = distinct !{}82