39 lines
1.3 KiB
LLVM
39 lines
1.3 KiB
LLVM
; Test MD_prof "VP" validation
|
|
|
|
; RUN: split-file %s %t
|
|
; RUN: opt -passes=verify %t/valid.ll --disable-output
|
|
; RUN: not opt -passes=verify %t/invalid-kind.ll --disable-output 2>&1 | FileCheck %s --check-prefix=INVALID-KIND
|
|
; RUN: not opt -passes=verify %t/invalid-count.ll --disable-output 2>&1 | FileCheck %s --check-prefix=INVALID-COUNT
|
|
; RUN: not opt -passes=verify %t/invalid-place.ll --disable-output 2>&1 | FileCheck %s --check-prefix=INVALID-PLACE
|
|
|
|
;--- valid.ll
|
|
define void @test(ptr %0) {
|
|
call void %0(), !prof !0
|
|
ret void
|
|
}
|
|
!0 = !{!"VP", i32 0, i32 20, i64 1234, i64 10, i64 5678, i64 5}
|
|
|
|
;--- invalid-kind.ll
|
|
define void @test(ptr %0) {
|
|
call void %0(), !prof !0
|
|
ret void
|
|
}
|
|
!0 = !{!"VP", i32 3, i32 20, i64 1234, i64 10, i64 5678, i64 5}
|
|
; INVALID-KIND: Invalid VP !prof kind
|
|
|
|
;--- invalid-count.ll
|
|
define void @test(ptr %0) {
|
|
call void %0(), !prof !0
|
|
ret void
|
|
}
|
|
!0 = !{!"VP", i32 1, i64 1234, i64 10, i64 5678, i64 5}
|
|
; INVALID-COUNT: VP !prof should have an even number of arguments after 'VP'
|
|
|
|
;--- invalid-place.ll
|
|
define i32 @test(i32 %0) {
|
|
%r = add i32 %0, 1, !prof !0
|
|
ret i32 %r
|
|
}
|
|
!0 = !{!"VP", i32 1, i32 20, i64 1234, i64 10, i64 5678, i64 5}
|
|
; INVALID-PLACE: VP !prof indirect call or memop size expected to be applied to CallBase instructions only
|