These tests are located in 'X86' subfolders which means that they should be compiled for that target. As they did not have the target specified explicitly, they in fact were compiled for a default target triple. Not all targets support all required features for these tests; for example, if NVPTX is used as a default triple, the tests fail. The patch makes the tests run for 'x86_64', thus they pass regardless of the default target. Differential Revision: https://reviews.llvm.org/D121998
55 lines
2.2 KiB
LLVM
55 lines
2.2 KiB
LLVM
; RUN: llc < %s -mtriple=x86_64 -filetype=obj -o %t
|
|
; RUN: llvm-dwarfdump -v %t | FileCheck %s
|
|
|
|
; Source code to regenerate:
|
|
; __attribute__((objc_root_class))
|
|
; @interface Root
|
|
; - (int)direct_method __attribute__((objc_direct));
|
|
; @end
|
|
;
|
|
; @implementation Root
|
|
; - (int)direct_method __attribute__((objc_direct)) {
|
|
; return 42;
|
|
; }
|
|
; @end
|
|
;
|
|
; clang -O0 -g -gdwarf-5 direct.m -c
|
|
|
|
; CHECK: DW_TAG_subprogram [3]
|
|
; CHECK: DW_AT_APPLE_objc_direct
|
|
; CHECK-SAME: DW_FORM_flag_present
|
|
; CHECK: DW_TAG_formal_parameter [4]
|
|
|
|
; ModuleID = 'direct.bc'
|
|
source_filename = "direct.m"
|
|
|
|
%0 = type opaque
|
|
|
|
define hidden i32 @"\01-[Root direct_method]"(%0* %self, i8* %_cmd) {
|
|
entry:
|
|
%retval = alloca i32, align 4
|
|
%0 = load i32, i32* %retval, align 4
|
|
ret i32 %0
|
|
}
|
|
|
|
!llvm.dbg.cu = !{!0}
|
|
!llvm.module.flags = !{!19, !20}
|
|
!llvm.ident = !{}
|
|
|
|
!0 = distinct !DICompileUnit(language: DW_LANG_ObjC, file: !1, producer: "clang version 10.0.0 (https://github.com/llvm/llvm-project d6b2f33e2b6338d24cf756ba220939aecc81210d)", isOptimized: false, runtimeVersion: 2, emissionKind: FullDebug, enums: !2, retainedTypes: !3, nameTableKind: None)
|
|
!1 = !DIFile(filename: "direct.m", directory: "/", checksumkind: CSK_MD5, checksum: "6b49fad130344b0011fc0eef65949390")
|
|
!2 = !{}
|
|
!3 = !{!4}
|
|
!4 = !DICompositeType(tag: DW_TAG_structure_type, name: "Root", scope: !1, file: !1, line: 2, flags: DIFlagObjcClassComplete, elements: !5, runtimeLang: DW_LANG_ObjC)
|
|
!5 = !{!6}
|
|
!6 = !DISubprogram(name: "-[Root direct_method]", scope: !4, file: !1, line: 7, type: !7, scopeLine: 7, flags: DIFlagPrototyped, spFlags: DISPFlagObjCDirect, retainedNodes: !2)
|
|
!7 = !DISubroutineType(types: !8)
|
|
!8 = !{!9, !10, !11}
|
|
!9 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
|
|
!10 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64, flags: DIFlagArtificial | DIFlagObjectPointer)
|
|
!11 = !DIDerivedType(tag: DW_TAG_typedef, name: "SEL", file: !1, baseType: !12, flags: DIFlagArtificial)
|
|
!12 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !13, size: 64)
|
|
!13 = !DICompositeType(tag: DW_TAG_structure_type, name: "objc_selector", file: !1, flags: DIFlagFwdDecl)
|
|
!19 = !{i32 7, !"Dwarf Version", i32 5}
|
|
!20 = !{i32 2, !"Debug Info Version", i32 3}
|