brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.1 KiB · 6d9bdc4 Raw
65 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --check-globals all --version 52; RUN: opt -p globalopt -S %s | FileCheck %s3 4@llvm.global_ctors = appending global [3 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @ctor, ptr null }, { i32, ptr, ptr } { i32 65535, ptr @ctor_nocfi, ptr null }, { i32, ptr, ptr } { i32 65535, ptr @ctor_dso_local_equivalent, ptr null }]5 6@foo = internal global ptr null7 8declare void @user(ptr)9 10;.11; CHECK: @llvm.global_ctors = appending global [3 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @ctor, ptr null }, { i32, ptr, ptr } { i32 65535, ptr @ctor_nocfi, ptr null }, { i32, ptr, ptr } { i32 65535, ptr @ctor_dso_local_equivalent, ptr null }]12; CHECK: @foo = internal global ptr null13;.14define void @ctor() {15; CHECK-LABEL: define void @ctor() {16; CHECK-NEXT:  [[ENTRY:.*:]]17; CHECK-NEXT:    [[DST:%.*]] = alloca ptr, align 818; CHECK-NEXT:    store ptr ptrauth (ptr @foo, i32 0), ptr [[DST]], align 819; CHECK-NEXT:    call void @user(ptr [[DST]])20; CHECK-NEXT:    ret void21;22entry:23  %dst = alloca ptr, align 824  store ptr ptrauth (ptr @foo, i32 0), ptr %dst, align 825  call void @user(ptr %dst)26  ret void27}28 29define void @ctor_nocfi() {30; CHECK-LABEL: define void @ctor_nocfi() {31; CHECK-NEXT:  [[ENTRY:.*:]]32; CHECK-NEXT:    [[DST:%.*]] = alloca ptr, align 833; CHECK-NEXT:    store ptr no_cfi @foo, ptr [[DST]], align 834; CHECK-NEXT:    call void @user(ptr [[DST]])35; CHECK-NEXT:    ret void36;37entry:38  %dst = alloca ptr, align 839  store ptr no_cfi @foo, ptr %dst, align 840  call void @user(ptr %dst)41  ret void42}43 44define void @fn() {45; CHECK-LABEL: define void @fn() {46; CHECK-NEXT:    ret void47;48  ret void49}50 51define void @ctor_dso_local_equivalent() {52; CHECK-LABEL: define void @ctor_dso_local_equivalent() {53; CHECK-NEXT:  [[ENTRY:.*:]]54; CHECK-NEXT:    [[DST:%.*]] = alloca ptr, align 855; CHECK-NEXT:    store ptr dso_local_equivalent @fn, ptr [[DST]], align 856; CHECK-NEXT:    call void @user(ptr [[DST]])57; CHECK-NEXT:    ret void58;59entry:60  %dst = alloca ptr, align 861  store ptr dso_local_equivalent @fn, ptr %dst, align 862  call void @user(ptr %dst)63  ret void64}65