60 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(), !align !{i64 2}8 ret void9}10; CHECK: align applies only to load instructions11; CHECK-NEXT: call ptr @foo()12 13define i8 @f2(ptr %x) {14entry:15 %y = load i8, ptr %x, !align !{i64 2}16 ret i8 %y17}18; CHECK: align applies only to pointer types19; CHECK-NEXT: load i8, ptr %x20 21define ptr @f3(ptr %x) {22entry:23 %y = load ptr, ptr %x, !align !{}24 ret ptr %y25}26; CHECK: align takes one operand27; CHECK-NEXT: load ptr, ptr %x28 29define ptr @f4(ptr %x) {30entry:31 %y = load ptr, ptr %x, !align !{!"str"}32 ret ptr %y33}34; CHECK: align metadata value must be an i64!35; CHECK-NEXT: load ptr, ptr %x36 37define ptr @f5(ptr %x) {38entry:39 %y = load ptr, ptr %x, !align !{i32 2}40 ret ptr %y41}42; CHECK: align metadata value must be an i64!43; CHECK-NEXT: load ptr, ptr %x44 45define ptr @f6(ptr %x) {46entry:47 %y = load ptr, ptr %x, !align !{i64 3}48 ret ptr %y49}50; CHECK: align metadata value must be a power of 2!51; CHECK-NEXT: load ptr, ptr %x52 53define ptr @f7(ptr %x) {54entry:55 %y = load ptr, ptr %x, !align !{i64 8589934592}56 ret ptr %y57}58; CHECK: alignment is larger that implementation defined limit59; CHECK-NEXT: load ptr, ptr %x60