blob: 6eada081eb94275e69337a1bae138f1ff6c24fa5 [file] [edit]
; RUN: split-file %s %t
; RUN: llvm-diff %t/a.ll %t/a.ll
; RUN: not llvm-diff %t/a.ll %t/b.ll 2>&1 | FileCheck %s --implicit-check-not=same
; CHECK-LABEL: in function decl:
; CHECK-NEXT: function attributes differ:
; CHECK-NEXT: < nounwind
; CHECK-NEXT: > noreturn
; CHECK-LABEL: in function function_attrs:
; CHECK-NEXT: function attributes differ:
; CHECK-NEXT: > noinline
; CHECK-LABEL: in function return_attrs:
; CHECK-NEXT: return attributes differ:
; CHECK-NEXT: < noundef
; CHECK-LABEL: in function parameter_attrs:
; CHECK-NEXT: parameter 0 attributes differ:
; CHECK-NEXT: < noundef
; CHECK-NEXT: parameter 1 attributes differ:
; CHECK-NEXT: > noundef
; CHECK-LABEL: in function calling_conv:
; CHECK-NEXT: different calling conventions
; CHECK-LABEL: in function call_attrs:
; CHECK: {{^ *>}} {{.*}}call void @callee(i32 %x){{$}}
; CHECK-NEXT: {{^ *<}} {{.*}}call void @callee(i32 %x) #{{[0-9]+}}
; CHECK-LABEL: in function call_parameter_attrs:
; CHECK: {{^ *>}} {{.*}}call void @callee(i32 %x){{$}}
; CHECK-NEXT: {{^ *<}} {{.*}}call void @callee(i32 noundef %x)
;--- a.ll
declare void @callee(i32)
declare void @decl() nounwind
define void @function_attrs() nounwind {
ret void
}
define noundef i32 @return_attrs(i32 %x) {
ret i32 %x
}
define void @parameter_attrs(i32 noundef %x, i32 %y) {
ret void
}
define void @calling_conv() {
ret void
}
define void @call_attrs(i32 %x) {
call void @callee(i32 %x) nounwind
ret void
}
define void @call_parameter_attrs(i32 %x) {
call void @callee(i32 noundef %x)
ret void
}
define void @same(i32 noundef %x) nounwind {
call void @callee(i32 %x) nounwind
ret void
}
;--- b.ll
declare void @callee(i32)
declare void @decl() noreturn
define void @function_attrs() noinline nounwind {
ret void
}
define i32 @return_attrs(i32 %x) {
ret i32 %x
}
define void @parameter_attrs(i32 %x, i32 noundef %y) {
ret void
}
define fastcc void @calling_conv() {
ret void
}
define void @call_attrs(i32 %x) {
call void @callee(i32 %x)
ret void
}
define void @call_parameter_attrs(i32 %x) {
call void @callee(i32 %x)
ret void
}
define void @same(i32 noundef %x) nounwind {
call void @callee(i32 %x) nounwind
ret void
}