blob: 4fbf187659a7b792bd69e336ad11f9e3ff165885 [file] [log] [blame]
; RUN: not mlir-translate -import-llvm -emit-expensive-warnings -split-input-file %s 2>&1 -o /dev/null | FileCheck %s
; CHECK: <unknown>
; CHECK-SAME: error: unhandled instruction: indirectbr ptr %dst, [label %bb1, label %bb2]
define i32 @unhandled_instruction(ptr %dst) {
indirectbr ptr %dst, [label %bb1, label %bb2]
bb1:
ret i32 0
bb2:
ret i32 1
}
; // -----
; Check that debug intrinsics with an unsupported argument are dropped.
declare void @llvm.dbg.value(metadata, metadata, metadata)
; CHECK: import-failure.ll
; CHECK-SAME: warning: dropped intrinsic: tail call void @llvm.dbg.value(metadata !DIArgList(i64 %{{.*}}, i64 undef), metadata !3, metadata !DIExpression(DW_OP_LLVM_arg, 0, DW_OP_LLVM_arg, 1, DW_OP_constu, 1, DW_OP_mul, DW_OP_plus, DW_OP_stack_value))
; CHECK: import-failure.ll
; CHECK-SAME: warning: dropped intrinsic: tail call void @llvm.dbg.value(metadata !6, metadata !3, metadata !DIExpression())
define void @unsupported_argument(i64 %arg1) {
tail call void @llvm.dbg.value(metadata !DIArgList(i64 %arg1, i64 undef), metadata !3, metadata !DIExpression(DW_OP_LLVM_arg, 0, DW_OP_LLVM_arg, 1, DW_OP_constu, 1, DW_OP_mul, DW_OP_plus, DW_OP_stack_value)), !dbg !5
tail call void @llvm.dbg.value(metadata !6, metadata !3, metadata !DIExpression()), !dbg !5
ret void
}
!llvm.dbg.cu = !{!1}
!llvm.module.flags = !{!0}
!0 = !{i32 2, !"Debug Info Version", i32 3}
!1 = distinct !DICompileUnit(language: DW_LANG_C, file: !2)
!2 = !DIFile(filename: "import-failure.ll", directory: "/")
!3 = !DILocalVariable(scope: !4, name: "arg1", file: !2, line: 1, arg: 1, align: 64);
!4 = distinct !DISubprogram(name: "intrinsic", scope: !2, file: !2, spFlags: DISPFlagDefinition, unit: !1)
!5 = !DILocation(line: 1, column: 2, scope: !4)
!6 = !{}
; // -----
; CHECK: import-failure.ll
; CHECK-SAME: error: unsupported TBAA node format: !{{.*}} = !{!{{.*}}, i64 1, !"omnipotent char"}
define dso_local void @tbaa(ptr %0) {
store i32 1, ptr %0, align 4, !tbaa !2
ret void
}
!2 = !{!3, !3, i64 0, i64 4}
!3 = !{!4, i64 4, !"int"}
!4 = !{!5, i64 1, !"omnipotent char"}
!5 = !{!"Simple C++ TBAA"}
; // -----
; CHECK: import-failure.ll
; CHECK-SAME: error: has cycle in TBAA graph: ![[ID:.*]] = distinct !{![[ID]], i64 4, !"int"}
define dso_local void @tbaa(ptr %0) {
store i32 1, ptr %0, align 4, !tbaa !2
ret void
}
!2 = !{!3, !3, i64 0, i64 4}
!3 = !{!3, i64 4, !"int"}
; // -----
; CHECK: import-failure.ll
; CHECK-SAME: warning: expected an access group node to be empty and distinct
; CHECK: error: unsupported access group node: !0 = !{}
define void @access_group(ptr %arg1) {
%1 = load i32, ptr %arg1, !llvm.access.group !0
ret void
}
!0 = !{}
; // -----
; CHECK: <unknown>
; CHECK-SAME: warning: expected all loop properties to be either debug locations or metadata nodes
; CHECK: <unknown>
; CHECK-SAME: warning: unhandled metadata: !0 = distinct !{!0, i32 42}
define void @invalid_loop_node(i64 %n, ptr %A) {
entry:
br label %end, !llvm.loop !0
end:
ret void
}
!0 = distinct !{!0, i32 42}
; // -----
; CHECK: <unknown>
; CHECK-SAME: warning: cannot import empty loop property
; CHECK: <unknown>
; CHECK-SAME: warning: unhandled metadata: !0 = distinct !{!0, !1}
define void @invalid_loop_node(i64 %n, ptr %A) {
entry:
br label %end, !llvm.loop !0
end:
ret void
}
!0 = distinct !{!0, !1}
!1 = distinct !{}
; // -----
; CHECK: <unknown>
; CHECK-SAME: warning: cannot import loop property without a name
; CHECK: <unknown>
; CHECK-SAME: warning: unhandled metadata: !0 = distinct !{!0, !1}
define void @invalid_loop_node(i64 %n, ptr %A) {
entry:
br label %end, !llvm.loop !0
end:
ret void
}
!0 = distinct !{!0, !1}
!1 = distinct !{i1 0}
; // -----
; CHECK: <unknown>
; CHECK-SAME: warning: cannot import loop properties with duplicated names llvm.loop.disable_nonforced
; CHECK: <unknown>
; CHECK-SAME: warning: unhandled metadata: !0 = distinct !{!0, !1, !1}
define void @unsupported_loop_annotation(i64 %n, ptr %A) {
entry:
br label %end, !llvm.loop !0
end:
ret void
}
!0 = distinct !{!0, !1, !1}
!1 = !{!"llvm.loop.disable_nonforced"}
; // -----
; CHECK: <unknown>
; CHECK-SAME: warning: expected metadata node llvm.loop.disable_nonforced to hold no value
; CHECK: <unknown>
; CHECK-SAME: warning: unhandled metadata: !0 = distinct !{!0, !1}
define void @unsupported_loop_annotation(i64 %n, ptr %A) {
entry:
br label %end, !llvm.loop !0
end:
ret void
}
!0 = distinct !{!0, !1}
!1 = !{!"llvm.loop.disable_nonforced", i1 0}
; // -----
; CHECK: <unknown>
; CHECK-SAME: warning: expected metadata nodes llvm.loop.unroll.enable and llvm.loop.unroll.disable to be mutually exclusive
; CHECK: <unknown>
; CHECK-SAME: warning: unhandled metadata: !0 = distinct !{!0, !1, !2}
define void @unsupported_loop_annotation(i64 %n, ptr %A) {
entry:
br label %end, !llvm.loop !0
end:
ret void
}
!0 = distinct !{!0, !1, !2}
!1 = !{!"llvm.loop.unroll.enable"}
!2 = !{!"llvm.loop.unroll.disable"}
; // -----
; CHECK: <unknown>
; CHECK-SAME: warning: expected metadata node llvm.loop.vectorize.enable to hold a boolean value
; CHECK: <unknown>
; CHECK-SAME: warning: unhandled metadata: !0 = distinct !{!0, !1}
define void @unsupported_loop_annotation(i64 %n, ptr %A) {
entry:
br label %end, !llvm.loop !0
end:
ret void
}
!0 = distinct !{!0, !1}
!1 = !{!"llvm.loop.vectorize.enable"}
; // -----
; CHECK: <unknown>
; CHECK-SAME: warning: expected metadata node llvm.loop.vectorize.width to hold an i32 value
; CHECK: <unknown>
; CHECK-SAME: warning: unhandled metadata: !0 = distinct !{!0, !1}
define void @unsupported_loop_annotation(i64 %n, ptr %A) {
entry:
br label %end, !llvm.loop !0
end:
ret void
}
!0 = distinct !{!0, !1}
!1 = !{!"llvm.loop.vectorize.width", !0}
; // -----
; CHECK: <unknown>
; CHECK-SAME: warning: expected metadata node llvm.loop.vectorize.followup_all to hold an MDNode
; CHECK: <unknown>
; CHECK-SAME: warning: unhandled metadata: !0 = distinct !{!0, !1}
define void @unsupported_loop_annotation(i64 %n, ptr %A) {
entry:
br label %end, !llvm.loop !0
end:
ret void
}
!0 = distinct !{!0, !1}
!1 = !{!"llvm.loop.vectorize.followup_all", i32 42}
; // -----
; CHECK: <unknown>
; CHECK-SAME: warning: expected metadata node llvm.loop.parallel_accesses to hold one or multiple MDNodes
; CHECK: <unknown>
; CHECK-SAME: warning: unhandled metadata: !0 = distinct !{!0, !1}
define void @unsupported_loop_annotation(i64 %n, ptr %A) {
entry:
br label %end, !llvm.loop !0
end:
ret void
}
!0 = distinct !{!0, !1}
!1 = !{!"llvm.loop.parallel_accesses", i32 42}
; // -----
; CHECK: <unknown>
; CHECK-SAME: warning: unknown loop annotation llvm.loop.typo
; CHECK: <unknown>
; CHECK-SAME: warning: unhandled metadata: !0 = distinct !{!0, !1, !2}
define void @unsupported_loop_annotation(i64 %n, ptr %A) {
entry:
br label %end, !llvm.loop !0
end:
ret void
}
!0 = distinct !{!0, !1, !2}
!1 = !{!"llvm.loop.disable_nonforced"}
!2 = !{!"llvm.loop.typo"}
; // -----
; CHECK: <unknown>
; CHECK-SAME: warning: could not lookup access group
define void @unused_access_group(ptr %arg) {
entry:
%0 = load i32, ptr %arg, !llvm.access.group !0
br label %end, !llvm.loop !1
end:
ret void
}
!0 = distinct !{}
!1 = distinct !{!1, !2}
!2 = !{!"llvm.loop.parallel_accesses", !0, !3}
!3 = distinct !{}
; // -----
; CHECK: <unknown>
; CHECK-SAME: warning: expected function_entry_count to be attached to a function
; CHECK: warning: unhandled metadata: !0 = !{!"function_entry_count", i64 42}
define void @cond_br(i1 %arg) {
entry:
br i1 %arg, label %bb1, label %bb2, !prof !0
bb1:
ret void
bb2:
ret void
}
!0 = !{!"function_entry_count", i64 42}
; // -----
; CHECK: <unknown>
; CHECK-SAME: warning: dropped instruction: call void @llvm.experimental.noalias.scope.decl(metadata !0)
define void @unused_scope() {
call void @llvm.experimental.noalias.scope.decl(metadata !0)
ret void
}
declare void @llvm.experimental.noalias.scope.decl(metadata)
!0 = !{!1}
!1 = !{!1, !2}
!2 = distinct !{!2, !"The domain"}
; // -----
; CHECK: import-failure.ll
; CHECK-SAME: dereferenceable metadata operand must be a non-negative constant integer
define void @deref(i64 %0) {
%2 = inttoptr i64 %0 to ptr, !dereferenceable !0
ret void
}
!0 = !{i64 -4}
; // -----
; CHECK: import-failure.ll
; CHECK-SAME: warning: unhandled data layout token: ni:42
target datalayout = "e-ni:42-i64:64"
; // -----
; CHECK: import-failure.ll
; CHECK-SAME: malformed specification, must be of the form "m:<mangling>"
target datalayout = "e-m-i64:64"
; // -----
; CHECK: <unknown>
; CHECK-SAME: incompatible call and callee types: '!llvm.func<void (i64)>' and '!llvm.func<void (ptr)>'
define void @incompatible_call_and_callee_types() {
call void @callee(i64 0)
ret void
}
declare void @callee(ptr)
; // -----
; CHECK: <unknown>
; CHECK-SAME: incompatible call and callee types: '!llvm.func<void ()>' and '!llvm.func<i32 ()>'
define void @f() personality ptr @__gxx_personality_v0 {
entry:
invoke void @g() to label %bb1 unwind label %bb2
bb1:
ret void
bb2:
%0 = landingpad i32 cleanup
unreachable
}
declare i32 @g()
declare i32 @__gxx_personality_v0(...)
; // -----
@g = private global ptr blockaddress(@fn, %bb1)
define void @fn() {
ret void
; CHECK: unreachable block 'bb1' with address taken
bb1:
ret void
}