1 ; Test that incorrect memprof and callsite metadata fail verification.
2 ; RUN: not llvm-as -disable-output < %s 2>&1 | FileCheck %s
6 %call1 = call noalias dereferenceable_or_null(40) ptr @malloc(i64 noundef 40), !memprof !0
7 %call2 = call noalias dereferenceable_or_null(40) ptr @malloc(i64 noundef 40), !memprof !1
8 %call3 = call noalias dereferenceable_or_null(40) ptr @malloc(i64 noundef 40), !memprof !3
9 %call4 = call noalias dereferenceable_or_null(40) ptr @malloc(i64 noundef 40), !memprof !5
10 %call5 = call noalias dereferenceable_or_null(40) ptr @malloc(i64 noundef 40), !memprof !7, !callsite !9
16 %call = call noundef ptr @test1(), !callsite !10
22 %call = call noundef ptr @test2(), !callsite !11
26 define void @wronginsttype() {
27 %1 = add i32 0, 1, !memprof !0, !callsite !9
31 declare dso_local noalias noundef ptr @malloc(i64 noundef)
33 ; CHECK: !memprof annotations should have at least 1 metadata operand (MemInfoBlock)
36 ; CHECK: !memprof MemInfoBlock first operand should not be null
39 ; CHECK: !memprof MemInfoBlock first operand should be an MDNode
40 !4 = !{i64 0, !"cold"}
42 ; CHECK: Each !memprof MemInfoBlock should have at least 2 operands
45 ; CHECK: call stack metadata should have at least 1 operand
46 ; CHECK: Not all !memprof MemInfoBlock operands 1 to N are MDString
47 !8 = !{!0, !"default", i64 0}
49 ; CHECK: call stack metadata operand should be constant integer
51 !11 = !{i64 789, i64 678}
53 ; Errors from annotating incorrect instruction type in @wronginsttype.
54 ; CHECK: !memprof metadata should only exist on calls
55 ; CHECK: !callsite metadata should only exist on calls