; Test that incorrect memprof and callsite metadata fail verification.
; RUN: not llvm-as -disable-output < %s 2>&1 | FileCheck %s

define ptr @test1() {
entry:
  %call1 = call noalias dereferenceable_or_null(40) ptr @malloc(i64 noundef 40), !memprof !0
  %call2 = call noalias dereferenceable_or_null(40) ptr @malloc(i64 noundef 40), !memprof !1
  %call3 = call noalias dereferenceable_or_null(40) ptr @malloc(i64 noundef 40), !memprof !3
  %call4 = call noalias dereferenceable_or_null(40) ptr @malloc(i64 noundef 40), !memprof !5
  %call5 = call noalias dereferenceable_or_null(40) ptr @malloc(i64 noundef 40), !memprof !7, !callsite !9
  ret ptr %call5
}

define ptr @test2() {
entry:
  %call = call noundef ptr @test1(), !callsite !10
  ret ptr %call
}

define ptr @test3() {
entry:
  %call = call noundef ptr @test2(), !callsite !11
  ret ptr %call
}

define void @wronginsttype() {
  %1 = add i32 0, 1, !memprof !0, !callsite !9
  ret void
}

declare dso_local noalias noundef ptr @malloc(i64 noundef)

; CHECK: !memprof annotations should have at least 1 metadata operand (MemInfoBlock)
!0 = !{}
!1 = !{!2}
; CHECK: !memprof MemInfoBlock first operand should not be null
!2 = !{null, !"cold"}
!3 = !{!4}
; CHECK: !memprof MemInfoBlock first operand should be an MDNode
!4 = !{i64 0, !"cold"}
!5 = !{!6}
; CHECK: Each !memprof MemInfoBlock should have at least 2 operands
!6 = !{i64 0}
!7 = !{!8}
; CHECK: call stack metadata should have at least 1 operand
; CHECK: Not all !memprof MemInfoBlock operands 1 to N are MDString
!8 = !{!0, !"default", i64 0}
!9 = !{i64 123}
; CHECK: call stack metadata operand should be constant integer
!10 = !{!"wrongtype"}
!11 = !{i64 789, i64 678}

; Errors from annotating incorrect instruction type in @wronginsttype.
; CHECK: !memprof metadata should only exist on calls
; CHECK: !callsite metadata should only exist on calls
