brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.0 KiB · 96fce43 Raw
93 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 52; RUN: opt -S -passes=gvn < %s | FileCheck %s3 4declare void @capture(ptr)5declare void @unknown_call()6 7define i32 @full_capture() {8; CHECK-LABEL: define i32 @full_capture() {9; CHECK-NEXT:    [[A:%.*]] = alloca i32, align 410; CHECK-NEXT:    call void @capture(ptr [[A]])11; CHECK-NEXT:    store i32 1, ptr [[A]], align 412; CHECK-NEXT:    call void @unknown_call()13; CHECK-NEXT:    [[V:%.*]] = load i32, ptr [[A]], align 414; CHECK-NEXT:    ret i32 [[V]]15;16  %a = alloca i3217  call void @capture(ptr %a)18  store i32 1, ptr %a19  call void @unknown_call()20  %v = load i32, ptr %a21  ret i32 %v22}23 24define i32 @address_capture() {25; CHECK-LABEL: define i32 @address_capture() {26; CHECK-NEXT:    [[A:%.*]] = alloca i32, align 427; CHECK-NEXT:    call void @capture(ptr captures(address) [[A]])28; CHECK-NEXT:    store i32 1, ptr [[A]], align 429; CHECK-NEXT:    call void @unknown_call()30; CHECK-NEXT:    ret i32 131;32  %a = alloca i3233  call void @capture(ptr captures(address) %a)34  store i32 1, ptr %a35  call void @unknown_call()36  %v = load i32, ptr %a37  ret i32 %v38}39 40define i32 @read_provenance_capture() {41; CHECK-LABEL: define i32 @read_provenance_capture() {42; CHECK-NEXT:    [[A:%.*]] = alloca i32, align 443; CHECK-NEXT:    call void @capture(ptr captures(address, read_provenance) [[A]])44; CHECK-NEXT:    store i32 1, ptr [[A]], align 445; CHECK-NEXT:    call void @unknown_call()46; CHECK-NEXT:    ret i32 147;48  %a = alloca i3249  call void @capture(ptr captures(address, read_provenance) %a)50  store i32 1, ptr %a51  call void @unknown_call()52  %v = load i32, ptr %a53  ret i32 %v54}55 56define i32 @read_provenance_capture_and_full_capture() {57; CHECK-LABEL: define i32 @read_provenance_capture_and_full_capture() {58; CHECK-NEXT:    [[A:%.*]] = alloca i32, align 459; CHECK-NEXT:    call void @capture(ptr captures(address, read_provenance) [[A]])60; CHECK-NEXT:    call void @capture(ptr [[A]])61; CHECK-NEXT:    store i32 1, ptr [[A]], align 462; CHECK-NEXT:    call void @unknown_call()63; CHECK-NEXT:    [[V:%.*]] = load i32, ptr [[A]], align 464; CHECK-NEXT:    ret i32 [[V]]65;66  %a = alloca i3267  call void @capture(ptr captures(address, read_provenance) %a)68  call void @capture(ptr %a)69  store i32 1, ptr %a70  call void @unknown_call()71  %v = load i32, ptr %a72  ret i32 %v73}74 75define i32 @read_provenance_capture_and_full_capture_commuted() {76; CHECK-LABEL: define i32 @read_provenance_capture_and_full_capture_commuted() {77; CHECK-NEXT:    [[A:%.*]] = alloca i32, align 478; CHECK-NEXT:    call void @capture(ptr [[A]])79; CHECK-NEXT:    call void @capture(ptr captures(address, read_provenance) [[A]])80; CHECK-NEXT:    store i32 1, ptr [[A]], align 481; CHECK-NEXT:    call void @unknown_call()82; CHECK-NEXT:    [[V:%.*]] = load i32, ptr [[A]], align 483; CHECK-NEXT:    ret i32 [[V]]84;85  %a = alloca i3286  call void @capture(ptr %a)87  call void @capture(ptr captures(address, read_provenance) %a)88  store i32 1, ptr %a89  call void @unknown_call()90  %v = load i32, ptr %a91  ret i32 %v92}93