brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.7 KiB · 999a424 Raw
64 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --function-signature2; RUN: opt < %s -passes='require<globals-aa>,gvn' -S | FileCheck %s3 4; Ensure we do not hoist the load over the call.5 6@G1 = internal global i32 17@G2 = internal global i32 18 9define i32 @direct_intrinsic(i1 %c) {10; CHECK-LABEL: define {{[^@]+}}@direct_intrinsic11; CHECK-SAME: (i1 [[C:%.*]]) {12; CHECK-NEXT:    br i1 [[C]], label [[INIT:%.*]], label [[CHECK:%.*]]13; CHECK:       init:14; CHECK-NEXT:    store i32 0, ptr @G1, align 415; CHECK-NEXT:    br label [[CHECK]]16; CHECK:       check:17; CHECK-NEXT:    call void @llvm.unknown()18; CHECK-NEXT:    [[V:%.*]] = load i32, ptr @G1, align 419; CHECK-NEXT:    ret i32 [[V]]20;21  br i1 %c, label %init, label %check22init:23  store i32 0, ptr @G124  br label %check25check:26  call void @llvm.unknown()27  %v = load i32, ptr @G128  ret i32 %v29}30 31define i32 @indirect_intrinsic(i1 %c) {32; CHECK-LABEL: define {{[^@]+}}@indirect_intrinsic33; CHECK-SAME: (i1 [[C:%.*]]) {34; CHECK-NEXT:    br i1 [[C]], label [[INIT:%.*]], label [[CHECK:%.*]]35; CHECK:       init:36; CHECK-NEXT:    store i32 0, ptr @G2, align 437; CHECK-NEXT:    br label [[CHECK]]38; CHECK:       check:39; CHECK-NEXT:    call void @intrinsic_caller()40; CHECK-NEXT:    [[V:%.*]] = load i32, ptr @G2, align 441; CHECK-NEXT:    ret i32 [[V]]42;43  br i1 %c, label %init, label %check44init:45  store i32 0, ptr @G246  br label %check47check:48  call void @intrinsic_caller()49  %v = load i32, ptr @G250  ret i32 %v51}52 53define fastcc void @intrinsic_caller() {54; CHECK-LABEL: define {{[^@]+}}@intrinsic_caller() {55; CHECK-NEXT:    call void @llvm.unknown()56; CHECK-NEXT:    ret void57;58  call void @llvm.unknown()59  ret void60}61 62declare void @llvm.unknown()63 64