1; RUN: not llvm-as < %s -o /dev/null 2>&1 | FileCheck %s 2 3declare ptr @foo() 4 5define void @f1() { 6entry: 7 call ptr @foo(), !align !{i64 2} 8 ret void 9} 10; CHECK: align applies only to load instructions 11; CHECK-NEXT: call ptr @foo() 12 13define i8 @f2(ptr %x) { 14entry: 15 %y = load i8, ptr %x, !align !{i64 2} 16 ret i8 %y 17} 18; CHECK: align applies only to pointer types 19; CHECK-NEXT: load i8, ptr %x 20 21define ptr @f3(ptr %x) { 22entry: 23 %y = load ptr, ptr %x, !align !{} 24 ret ptr %y 25} 26; CHECK: align takes one operand 27; CHECK-NEXT: load ptr, ptr %x 28 29define ptr @f4(ptr %x) { 30entry: 31 %y = load ptr, ptr %x, !align !{!"str"} 32 ret ptr %y 33} 34; CHECK: align metadata value must be an i64! 35; CHECK-NEXT: load ptr, ptr %x 36 37define ptr @f5(ptr %x) { 38entry: 39 %y = load ptr, ptr %x, !align !{i32 2} 40 ret ptr %y 41} 42; CHECK: align metadata value must be an i64! 43; CHECK-NEXT: load ptr, ptr %x 44 45define ptr @f6(ptr %x) { 46entry: 47 %y = load ptr, ptr %x, !align !{i64 3} 48 ret ptr %y 49} 50; CHECK: align metadata value must be a power of 2! 51; CHECK-NEXT: load ptr, ptr %x 52 53define ptr @f7(ptr %x) { 54entry: 55 %y = load ptr, ptr %x, !align !{i64 8589934592} 56 ret ptr %y 57} 58; CHECK: alignment is larger that implementation defined limit 59; CHECK-NEXT: load ptr, ptr %x 60