brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.9 KiB · fa2e92a Raw
63 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -S -passes='require<collector-metadata>,function(gc-lowering)' < %s | FileCheck %s3 4declare ptr @llvm_gc_allocate(i32)5declare void @llvm_gc_initialize(i32)6 7declare void @llvm.gcroot(ptr, ptr)8declare void @llvm.gcwrite(ptr, ptr, ptr)9 10define i32 @main() gc "shadow-stack" {11; CHECK-LABEL: define i32 @main() gc "shadow-stack" {12; CHECK-NEXT:  entry:13; CHECK-NEXT:    [[A:%.*]] = alloca ptr, align 814; CHECK-NEXT:    store ptr null, ptr [[A]], align 815; CHECK-NEXT:    [[B:%.*]] = alloca ptr, align 816; CHECK-NEXT:    store ptr null, ptr [[B]], align 817; CHECK-NEXT:    call void @llvm_gc_initialize(i32 1048576)18; CHECK-NEXT:    call void @llvm.gcroot(ptr [[A]], ptr null)19; CHECK-NEXT:    [[APTR:%.*]] = call ptr @llvm_gc_allocate(i32 10)20; CHECK-NEXT:    store ptr [[APTR]], ptr [[A]], align 821; CHECK-NEXT:    call void @llvm.gcroot(ptr [[B]], ptr null)22; CHECK-NEXT:    [[B_UPGRD_1:%.*]] = call ptr @llvm_gc_allocate(i32 8)23; CHECK-NEXT:    store ptr [[B_UPGRD_1]], ptr [[B]], align 824; CHECK-NEXT:    [[B_1:%.*]] = load ptr, ptr [[B]], align 825; CHECK-NEXT:    [[A_1:%.*]] = load ptr, ptr [[A]], align 826; CHECK-NEXT:    store ptr [[A_1]], ptr [[B_1]], align 827; CHECK-NEXT:    ret i32 028;29entry:30  %A = alloca ptr31  %B = alloca ptr32 33  call void @llvm_gc_initialize(i32 1048576)  ; Start with 1MB heap34 35  ;; ptr A;36  call void @llvm.gcroot(ptr %A, ptr null)37 38  ;; A = gcalloc(10);39  %Aptr = call ptr @llvm_gc_allocate(i32 10)40  store ptr %Aptr, ptr %A41 42  ;; ptr B;43  call void @llvm.gcroot(ptr %B, ptr null)44 45  ;; B = gcalloc(4);46  %B.upgrd.1 = call ptr @llvm_gc_allocate(i32 8)47  store ptr %B.upgrd.1, ptr %B48 49  ;; *B = A;50  %B.1 = load ptr, ptr %B51  %A.1 = load ptr, ptr %A52  call void @llvm.gcwrite(ptr %A.1, ptr %B.upgrd.1, ptr %B.1)53 54  ret i32 055}56 57define void @no_gc() {58; CHECK-LABEL: define void @no_gc() {59; CHECK-NEXT:    ret void60;61  ret void62}63