97 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --function-signature2; RUN: llvm-as < %s | llvm-dis | FileCheck %s3; RUN: opt < %s -S | FileCheck %s4; RUN: verify-uselistorder < %s5 6%ty = type ptr7 8; CHECK: @g = external global i169@g = external global i1610 11; CHECK: @llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 1, ptr null, ptr null }]12@llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 1, ptr null, ptr null }]13 14; CHECK: @ga = alias i18, ptr @g215@g2 = global i18 016@ga = alias i18, ptr @g217 18; CHECK: @ga2 = alias i19, ptr @g219@ga2 = alias i19, ptr @g220 21; CHECK: @gi = ifunc i20 (), ptr @resolver22@gi = ifunc i20 (), ptr @resolver23 24 25define ptr @resolver() {26 %load = load i32, ptr @g.fwd27 %ptr = inttoptr i32 %load to ptr28 ret ptr %ptr29}30 31define void @f(ptr %p) {32; CHECK-LABEL: define {{[^@]+}}@f33; CHECK-SAME: (ptr [[P:%.*]]) {34; CHECK-NEXT: [[A:%.*]] = alloca i17, align 435; CHECK-NEXT: call void @fn.fwd(i32 0)36; CHECK-NEXT: store i32 0, ptr @g.fwd, align 437; CHECK-NEXT: ret void38;39 %a = alloca i1740 call void @fn.fwd(i32 0)41 store i32 0, ptr @g.fwd42 ret void43}44 45@g.fwd = global i32 046declare void @fn.fwd(i32)47 48define void @f2(ptr %p) {49; CHECK-LABEL: define {{[^@]+}}@f250; CHECK-SAME: (ptr [[P:%.*]]) {51; CHECK-NEXT: unreachable52;53 unreachable54}55 56define void @f3(ptr addrspace(2) %p) {57; CHECK-LABEL: define {{[^@]+}}@f358; CHECK-SAME: (ptr addrspace(2) [[P:%.*]]) {59; CHECK-NEXT: unreachable60;61 unreachable62}63 64define void @f4(ptr %p) {65; CHECK-LABEL: define {{[^@]+}}@f466; CHECK-SAME: (ptr [[P:%.*]]) {67; CHECK-NEXT: unreachable68;69 unreachable70}71 72define void @remangle_intrinsic() {73; CHECK-LABEL: define {{[^@]+}}@remangle_intrinsic() {74; CHECK-NEXT: [[A:%.*]] = alloca ptr, align 875; CHECK-NEXT: [[TMP1:%.*]] = call ptr @llvm.stacksave.p0()76; CHECK-NEXT: call void @llvm.stackprotector(ptr null, ptr [[A]])77; CHECK-NEXT: [[TMP2:%.*]] = call <2 x i64> @llvm.masked.expandload.v2i64(ptr null, <2 x i1> zeroinitializer, <2 x i64> zeroinitializer)78; CHECK-NEXT: ret void79;80 %a = alloca ptr81 call ptr @llvm.stacksave()82 call void @llvm.stackprotector(ptr null, ptr %a)83 call <2 x i64> @llvm.masked.expandload.v2i64(ptr null, <2 x i1> zeroinitializer, <2 x i64> zeroinitializer)84 ret void85}86 87define ptr @constexpr_gep() {88; CHECK-LABEL: define {{[^@]+}}@constexpr_gep() {89; CHECK-NEXT: ret ptr getelementptr (i32, ptr getelementptr (i8, ptr null, i64 4), i64 1)90;91 ret ptr getelementptr(i32, ptr getelementptr (i8, ptr null, i64 4), i64 1)92}93 94declare ptr @llvm.stacksave()95declare void @llvm.stackprotector(ptr, ptr)96declare <2 x i64> @llvm.masked.expandload.v2i64(ptr, <2 x i1>, <2 x i64>)97