You've already forked linux-packaging-mono
Imported Upstream version 6.0.0.172
Former-commit-id: f3cc9b82f3e5bd8f0fd3ebc098f789556b44e9cd
This commit is contained in:
parent
8016999e4d
commit
64ac736ec5
127
external/llvm/test/tools/dsymutil/X86/odr-fwd-declaration.cpp
vendored
Normal file
127
external/llvm/test/tools/dsymutil/X86/odr-fwd-declaration.cpp
vendored
Normal file
@ -0,0 +1,127 @@
|
||||
/* Compile with:
|
||||
for FILE in `seq 3`; do
|
||||
clang -g -c X86/odr-fwd-declaration.cpp -DFILE$FILE -o Inputs/odr-fwd-declaration/$FILE.o
|
||||
done
|
||||
*/
|
||||
|
||||
// RUN: llvm-dsymutil -f -oso-prepend-path=%p/../Inputs/odr-fwd-declaration -y %p/dummy-debug-map.map -o - | llvm-dwarfdump -v -debug-info - | FileCheck %s
|
||||
|
||||
#ifdef FILE1
|
||||
# 1 "Header.h" 1
|
||||
typedef struct S *Sptr;
|
||||
typedef Sptr *Sptrptr;
|
||||
# 3 "Source1.cpp" 2
|
||||
void foo() {
|
||||
Sptrptr ptr1 = 0;
|
||||
}
|
||||
|
||||
// First we confirm that the typedefs reference the forward declaration of the
|
||||
// struct S.
|
||||
//
|
||||
// CHECK: TAG_variable
|
||||
// CHECK-NOT: {{DW_TAG|NULL}}
|
||||
// CHECK: AT_name{{.*}} "ptr1"
|
||||
// CHECK-NOT: {{DW_TAG|NULL}}
|
||||
// CHECK: AT_type{{.*}}0x{{0*}}[[TYPEDEF1:[a-f0-9]*]]
|
||||
//
|
||||
// CHECK: [[TYPEDEF1]]:{{.*}}TAG_typedef
|
||||
// CHECK-NOT: {{DW_TAG|NULL}}
|
||||
// CHECK: AT_type{{.*}}0x{{0*}}[[PTR1:[a-f0-9]*]]
|
||||
// CHECK-NOT: {{DW_TAG|NULL}}
|
||||
// CHECK: AT_name{{.*}} "Sptrptr"
|
||||
//
|
||||
// CHECK: [[PTR1]]:{{.*}}TAG_pointer_type
|
||||
// CHECK-NOT: {{DW_TAG|NULL}}
|
||||
// CHECK: AT_type{{.*}}0x{{0*}}[[TYPEDEF2:[a-f0-9]*]]
|
||||
//
|
||||
// CHECK: [[TYPEDEF2]]:{{.*}}TAG_typedef
|
||||
// CHECK-NOT: {{DW_TAG|NULL}}
|
||||
// CHECK: AT_type{{.*}}0x{{0*}}[[PTR2:[a-f0-9]*]]
|
||||
// CHECK-NOT: {{DW_TAG|NULL}}
|
||||
// CHECK: AT_name{{.*}} "Sptr"
|
||||
//
|
||||
// CHECK: [[PTR2]]:{{.*}}TAG_pointer_type
|
||||
// CHECK-NOT: {{DW_TAG|NULL}}
|
||||
// CHECK: AT_type{{.*}}0x{{0*}}[[FWDSTRUCT:[a-f0-9]*]]
|
||||
//
|
||||
// CHECK: [[FWDSTRUCT]]:{{.*}}TAG_structure_type
|
||||
// CHECK-NOT: {{DW_TAG|NULL}}
|
||||
// CHECK: AT_name{{.*}} "S"
|
||||
// CHECK-NOT: {{DW_TAG|NULL}}
|
||||
// CHECK: AT_declaration
|
||||
// CHECK-NOT AT_byte_size
|
||||
|
||||
#elif defined(FILE2)
|
||||
# 1 "Header.h" 1
|
||||
typedef struct S *Sptr;
|
||||
typedef Sptr *Sptrptr;
|
||||
# 3 "Source2.cpp" 2
|
||||
struct S {
|
||||
int field;
|
||||
};
|
||||
void bar() {
|
||||
Sptrptr ptr2 = 0;
|
||||
}
|
||||
|
||||
// Next we confirm that the typedefs reference the definition rather than the
|
||||
// previous declaration of S.
|
||||
//
|
||||
// CHECK: TAG_variable
|
||||
// CHECK-NOT: {{DW_TAG|NULL}}
|
||||
// CHECK: AT_name{{.*}} "ptr2"
|
||||
// CHECK-NOT: {{DW_TAG|NULL}}
|
||||
// CHECK: AT_type{{.*}}0x{{0*}}[[TYPEDEF3:[a-f0-9]*]]
|
||||
//
|
||||
// CHECK: [[TYPEDEF3]]:{{.*}}TAG_typedef
|
||||
// CHECK-NOT: {{DW_TAG|NULL}}
|
||||
// CHECK: AT_type{{.*}}0x{{0*}}[[PTR3:[a-f0-9]*]]
|
||||
// CHECK-NOT: {{DW_TAG|NULL}}
|
||||
// CHECK: AT_name{{.*}} "Sptrptr"
|
||||
//
|
||||
// CHECK: [[PTR3]]:{{.*}}TAG_pointer_type
|
||||
// CHECK-NOT: {{DW_TAG|NULL}}
|
||||
// CHECK: AT_type{{.*}}0x{{0*}}[[TYPEDEF4:[a-f0-9]*]]
|
||||
//
|
||||
// CHECK: [[TYPEDEF4]]:{{.*}}TAG_typedef
|
||||
// CHECK-NOT: {{DW_TAG|NULL}}
|
||||
// CHECK: AT_type{{.*}}0x{{0*}}[[PTR4:[a-f0-9]*]]
|
||||
// CHECK-NOT: {{DW_TAG|NULL}}
|
||||
// CHECK: AT_name{{.*}} "Sptr"
|
||||
//
|
||||
// CHECK: [[PTR4]]:{{.*}}TAG_pointer_type
|
||||
// CHECK-NOT: {{DW_TAG|NULL}}
|
||||
// CHECK: AT_type{{.*}}0x{{0*}}[[STRUCT:[a-f0-9]*]]
|
||||
//
|
||||
// CHECK: [[STRUCT]]:{{.*}}TAG_structure_type
|
||||
// CHECK-NOT: {{DW_TAG|NULL}}
|
||||
// CHECK: AT_name{{.*}} "S"
|
||||
// CHECK-NOT: {{DW_TAG|NULL}}
|
||||
// CHECK-NOT: AT_declaration
|
||||
// CHECK: AT_byte_size
|
||||
// CHECK-NOT: {{DW_TAG|NULL}}
|
||||
// CHECK: TAG_member
|
||||
|
||||
#elif defined(FILE3)
|
||||
# 1 "Header.h" 1
|
||||
typedef struct S *Sptr;
|
||||
typedef Sptr *Sptrptr;
|
||||
# 3 "Source1.cpp" 2
|
||||
void foo() {
|
||||
Sptrptr ptr1 = 0;
|
||||
}
|
||||
|
||||
// Finally we confirm that uniquing is not broken and the same typedef is
|
||||
// referenced by ptr1.
|
||||
//
|
||||
// CHECK: TAG_variable
|
||||
// CHECK-NOT: {{DW_TAG|NULL}}
|
||||
// CHECK: AT_name{{.*}} "ptr1"
|
||||
// CHECK-NOT: {{DW_TAG|NULL}}
|
||||
// CHECK: AT_type{{.*}}0x{{0*}}[[TYPEDEF3]]
|
||||
// CHECK-NOT: TAG_typedef
|
||||
// CHECK-NOT: TAG_pointer
|
||||
// CHECK-NOT: TAG_structure_type
|
||||
|
||||
#else
|
||||
#error "You must define which file you generate"
|
||||
#endif
|
Reference in New Issue
Block a user