brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.7 KiB · 2f167bd Raw
129 lines · plain
1; RUN: not llvm-as < %s -o /dev/null 2>&1 | FileCheck %s2 3declare ptr @foo()4 5define void @f1() {6entry:7  call ptr @foo(), !dereferenceable !{i64 2}8  ret void9}10; CHECK: dereferenceable, dereferenceable_or_null apply only to load and inttoptr instructions, use attributes for calls or invokes11; CHECK-NEXT: call ptr @foo()12 13define void @f2() {14entry:15  call ptr @foo(), !dereferenceable_or_null !{i64 2}16  ret void17}18; CHECK: dereferenceable, dereferenceable_or_null apply only to load and inttoptr instructions, use attributes for calls or invokes19; CHECK-NEXT: call ptr @foo()20 21define i8 @f3(ptr %x) {22entry:23  %y = load i8, ptr %x, !dereferenceable !{i64 2}24  ret i8 %y25}26; CHECK: dereferenceable, dereferenceable_or_null apply only to pointer types27; CHECK-NEXT: load i8, ptr %x28 29define i8 @f4(ptr %x) {30entry:31  %y = load i8, ptr %x, !dereferenceable_or_null !{i64 2}32  ret i8 %y33}34; CHECK: dereferenceable, dereferenceable_or_null apply only to pointer types35; CHECK-NEXT: load i8, ptr %x36 37define ptr @f5(ptr %x) {38entry:39  %y = load ptr, ptr %x, !dereferenceable !{}40  ret ptr %y41}42; CHECK: dereferenceable, dereferenceable_or_null take one operand43; CHECK-NEXT: load ptr, ptr %x44 45 46define ptr @f6(ptr %x) {47entry:48  %y = load ptr, ptr %x, !dereferenceable_or_null !{}49  ret ptr %y50}51; CHECK: dereferenceable, dereferenceable_or_null take one operand52; CHECK-NEXT: load ptr, ptr %x53 54define ptr @f7(ptr %x) {55entry:56  %y = load ptr, ptr %x, !dereferenceable !{!"str"}57  ret ptr %y58}59; CHECK: dereferenceable, dereferenceable_or_null metadata value must be an i64!60; CHECK-NEXT: load ptr, ptr %x61 62 63define ptr @f8(ptr %x) {64entry:65  %y = load ptr, ptr %x, !dereferenceable_or_null !{!"str"}66  ret ptr %y67}68; CHECK: dereferenceable, dereferenceable_or_null metadata value must be an i64!69; CHECK-NEXT: load ptr, ptr %x70 71define ptr @f9(ptr %x) {72entry:73  %y = load ptr, ptr %x, !dereferenceable !{i32 2}74  ret ptr %y75}76; CHECK: dereferenceable, dereferenceable_or_null metadata value must be an i64!77; CHECK-NEXT: load ptr, ptr %x78 79 80define ptr @f10(ptr %x) {81entry:82  %y = load ptr, ptr %x, !dereferenceable_or_null !{i32 2}83  ret ptr %y84}85; CHECK: dereferenceable, dereferenceable_or_null metadata value must be an i64!86; CHECK-NEXT: load ptr, ptr %x87 88define ptr @f_11(i8 %val) {89  %ptr = inttoptr i8 %val to ptr, !dereferenceable !{i32 2}90  ret ptr %ptr91}92; CHECK: dereferenceable, dereferenceable_or_null metadata value must be an i64!93; CHECK-NEXT: %ptr = inttoptr i8 %val to ptr, !dereferenceable !394 95define ptr @f_12(i8 %val) {96  %ptr = inttoptr i8 %val to ptr, !dereferenceable_or_null !{i32 2}97  ret ptr %ptr98}99; CHECK: dereferenceable, dereferenceable_or_null metadata value must be an i64!100; CHECK-NEXT: %ptr = inttoptr i8 %val to ptr, !dereferenceable_or_null !3101 102define ptr @f_13(i8 %val) {103  %ptr = inttoptr i8 %val to ptr, !dereferenceable !{}104  ret ptr %ptr105}106; CHECK: dereferenceable, dereferenceable_or_null take one operand107; CHECK-NEXT: %ptr = inttoptr i8 %val to ptr, !dereferenceable !1108 109define ptr @f_14(i8 %val) {110  %ptr = inttoptr i8 %val to ptr, !dereferenceable_or_null !{}111  ret ptr %ptr112}113; CHECK: dereferenceable, dereferenceable_or_null take one operand114; CHECK-NEXT: %ptr = inttoptr i8 %val to ptr, !dereferenceable_or_null !1115 116define ptr @f_15(i8 %val) {117  %ptr = inttoptr i8 %val to ptr, !dereferenceable !{!"str"}118  ret ptr %ptr119}120; CHECK: dereferenceable, dereferenceable_or_null metadata value must be an i64!121; CHECK-NEXT: %ptr = inttoptr i8 %val to ptr, !dereferenceable !2122 123define ptr @f_16(i8 %val) {124  %ptr = inttoptr i8 %val to ptr, !dereferenceable_or_null !{!"str"}125  ret ptr %ptr126}127; CHECK: dereferenceable, dereferenceable_or_null metadata value must be an i64!128; CHECK-NEXT: %ptr = inttoptr i8 %val to ptr, !dereferenceable_or_null !2129