diff options
| author | Zachary Turner <zturner@google.com> | 2018-09-18 16:35:05 +0000 |
|---|---|---|
| committer | Zachary Turner <zturner@google.com> | 2018-09-18 16:35:05 +0000 |
| commit | c41ce8355f88ce522dabde2b435bfe83d550a379 (patch) | |
| tree | e3606b39394096113cd7d0e3c4b1c8ecd644b650 /llvm/test/DebugInfo/PDB | |
| parent | c1e2f39b3503869bd471a867c177f6486da5fee0 (diff) | |
| download | bcm5719-llvm-c41ce8355f88ce522dabde2b435bfe83d550a379.tar.gz bcm5719-llvm-c41ce8355f88ce522dabde2b435bfe83d550a379.zip | |
[PDB] Better support for enumerating pointer types.
There were several issues with the previous implementation.
1) There were no tests.
2) We didn't support creating PDBSymbolTypePointer records for
builtin types since those aren't described by LF_POINTER
records.
3) We didn't support a wide enough variety of builtin types even
ignoring pointers.
This patch fixes all of these issues. In order to add tests,
it's helpful to be able to ignore the symbol index id hierarchy
because it makes the golden output from the DIA version not match
our output, so I've extended the dumper to disable dumping of id
fields.
llvm-svn: 342493
Diffstat (limited to 'llvm/test/DebugInfo/PDB')
| -rw-r--r-- | llvm/test/DebugInfo/PDB/Inputs/every-pointer.cpp | 48 | ||||
| -rw-r--r-- | llvm/test/DebugInfo/PDB/Inputs/every-pointer.pdb | bin | 0 -> 110592 bytes | |||
| -rw-r--r-- | llvm/test/DebugInfo/PDB/Native/pdb-native-compilands.test | 6 | ||||
| -rw-r--r-- | llvm/test/DebugInfo/PDB/Native/pdb-native-enums.test | 100 | ||||
| -rw-r--r-- | llvm/test/DebugInfo/PDB/Native/pdb-native-pointers.test | 358 |
5 files changed, 458 insertions, 54 deletions
diff --git a/llvm/test/DebugInfo/PDB/Inputs/every-pointer.cpp b/llvm/test/DebugInfo/PDB/Inputs/every-pointer.cpp new file mode 100644 index 00000000000..7f7fab93b82 --- /dev/null +++ b/llvm/test/DebugInfo/PDB/Inputs/every-pointer.cpp @@ -0,0 +1,48 @@ +// Build with "cl.exe /Zi /GR- /GX- every-pointer.cpp /link /debug /nodefaultlib /incremental:no /entry:main" + +#include <stdint.h> + +// clang-format off +void *__purecall = 0; + +void __cdecl operator delete(void *,unsigned int) {} +void __cdecl operator delete(void *,unsigned __int64) {} + + +struct Foo { + int X = 0; + int func() { return 42; } +}; + +int *IntP = nullptr; +Foo *FooP = nullptr; + +Foo F; + +Foo __unaligned *UFooP = &F; +Foo * __restrict RFooP = &F; + +const Foo * CFooP = &F; +volatile Foo * VFooP = &F; +const volatile Foo * CVFooP = &F; + +template<typename T> void f(T t) {} + +int main(int argc, char **argv) { + f<int*>(IntP); + f<Foo*>(FooP); + + f<Foo __unaligned *>(UFooP); + f<Foo *__restrict>(RFooP); + + f<const Foo*>(CFooP); + f<volatile Foo*>(VFooP); + f<const volatile Foo*>(CVFooP); + + f<Foo&>(F); + f<Foo&&>(static_cast<Foo&&>(F)); + + f(&Foo::X); + f(&Foo::func); + return 0; +} diff --git a/llvm/test/DebugInfo/PDB/Inputs/every-pointer.pdb b/llvm/test/DebugInfo/PDB/Inputs/every-pointer.pdb Binary files differnew file mode 100644 index 00000000000..e911f3937aa --- /dev/null +++ b/llvm/test/DebugInfo/PDB/Inputs/every-pointer.pdb diff --git a/llvm/test/DebugInfo/PDB/Native/pdb-native-compilands.test b/llvm/test/DebugInfo/PDB/Native/pdb-native-compilands.test index 7dca036f9ba..620c4f0f658 100644 --- a/llvm/test/DebugInfo/PDB/Native/pdb-native-compilands.test +++ b/llvm/test/DebugInfo/PDB/Native/pdb-native-compilands.test @@ -68,16 +68,14 @@ BIGREAD: * Linker * DUMP: { DUMP-NEXT: symIndexId: 2 -DUMP-NEXT: symTag: 2 -DUMP-NEXT: lexicalParentId: 0 +DUMP-NEXT: symTag: Compiland DUMP-NEXT: libraryName: d:\src\llvm\test\DebugInfo\PDB\Inputs\empty.obj DUMP-NEXT: name: d:\src\llvm\test\DebugInfo\PDB\Inputs\empty.obj DUMP-NEXT: editAndContinueEnabled: 0 DUMP-NEXT: } DUMP-NEXT: { DUMP-NEXT: symIndexId: 3 -DUMP-NEXT: symTag: 2 -DUMP-NEXT: lexicalParentId: 0 +DUMP-NEXT: symTag: Compiland DUMP-NEXT: libraryName: DUMP-NEXT: name: * Linker * DUMP-NEXT: editAndContinueEnabled: 0 diff --git a/llvm/test/DebugInfo/PDB/Native/pdb-native-enums.test b/llvm/test/DebugInfo/PDB/Native/pdb-native-enums.test index 480fd03ccdb..c4569642e11 100644 --- a/llvm/test/DebugInfo/PDB/Native/pdb-native-enums.test +++ b/llvm/test/DebugInfo/PDB/Native/pdb-native-enums.test @@ -10,7 +10,7 @@ ; RUN: llvm-pdbutil pretty -native -enums %p/../Inputs/every-enum.pdb \ ; RUN: | FileCheck -check-prefix=ENUMS %s -; RUN: llvm-pdbutil diadump -native -enums %p/../Inputs/every-enum.pdb \ +; RUN: llvm-pdbutil diadump -hierarchy -native -enums %p/../Inputs/every-enum.pdb \ ; RUN: | FileCheck -check-prefix=DUMP %s @@ -81,7 +81,7 @@ ENUMS: const volatile enum EC DUMP: { DUMP: symIndexId: 2 -DUMP: symTag: 12 +DUMP: symTag: Enum DUMP: baseType: 2 DUMP: lexicalParentId: 0 DUMP: name: I8 @@ -104,7 +104,7 @@ DUMP: isValueUdt: 0 DUMP: volatileType: 0 DUMP: { DUMP: symIndexId: 4 -DUMP: symTag: 7 +DUMP: symTag: Data DUMP: classParentId: 2 DUMP: lexicalParentId: 0 DUMP: name: I8A @@ -118,7 +118,7 @@ DUMP: value: -128 DUMP: } DUMP: { DUMP: symIndexId: 5 -DUMP: symTag: 7 +DUMP: symTag: Data DUMP: classParentId: 2 DUMP: lexicalParentId: 0 DUMP: name: I8B @@ -132,7 +132,7 @@ DUMP: value: 0 DUMP: } DUMP: { DUMP: symIndexId: 6 -DUMP: symTag: 7 +DUMP: symTag: Data DUMP: classParentId: 2 DUMP: lexicalParentId: 0 DUMP: name: I8C @@ -147,7 +147,7 @@ DUMP: } DUMP: } DUMP: { DUMP: symIndexId: 7 -DUMP: symTag: 12 +DUMP: symTag: Enum DUMP: baseType: 6 DUMP: lexicalParentId: 0 DUMP: name: I16 @@ -170,7 +170,7 @@ DUMP: isValueUdt: 0 DUMP: volatileType: 0 DUMP: { DUMP: symIndexId: 9 -DUMP: symTag: 7 +DUMP: symTag: Data DUMP: classParentId: 7 DUMP: lexicalParentId: 0 DUMP: name: I16A @@ -184,7 +184,7 @@ DUMP: value: -32768 DUMP: } DUMP: { DUMP: symIndexId: 10 -DUMP: symTag: 7 +DUMP: symTag: Data DUMP: classParentId: 7 DUMP: lexicalParentId: 0 DUMP: name: I16B @@ -198,7 +198,7 @@ DUMP: value: 0 DUMP: } DUMP: { DUMP: symIndexId: 11 -DUMP: symTag: 7 +DUMP: symTag: Data DUMP: classParentId: 7 DUMP: lexicalParentId: 0 DUMP: name: I16C @@ -213,7 +213,7 @@ DUMP: } DUMP: } DUMP: { DUMP: symIndexId: 12 -DUMP: symTag: 12 +DUMP: symTag: Enum DUMP: baseType: 6 DUMP: lexicalParentId: 0 DUMP: name: I32 @@ -236,7 +236,7 @@ DUMP: isValueUdt: 0 DUMP: volatileType: 0 DUMP: { DUMP: symIndexId: 14 -DUMP: symTag: 7 +DUMP: symTag: Data DUMP: classParentId: 12 DUMP: lexicalParentId: 0 DUMP: name: I32A @@ -250,7 +250,7 @@ DUMP: value: -2147483648 DUMP: } DUMP: { DUMP: symIndexId: 15 -DUMP: symTag: 7 +DUMP: symTag: Data DUMP: classParentId: 12 DUMP: lexicalParentId: 0 DUMP: name: I32B @@ -264,7 +264,7 @@ DUMP: value: 0 DUMP: } DUMP: { DUMP: symIndexId: 16 -DUMP: symTag: 7 +DUMP: symTag: Data DUMP: classParentId: 12 DUMP: lexicalParentId: 0 DUMP: name: I32C @@ -279,7 +279,7 @@ DUMP: } DUMP: } DUMP: { DUMP: symIndexId: 17 -DUMP: symTag: 12 +DUMP: symTag: Enum DUMP: baseType: 6 DUMP: lexicalParentId: 0 DUMP: name: I64 @@ -302,7 +302,7 @@ DUMP: isValueUdt: 0 DUMP: volatileType: 0 DUMP: { DUMP: symIndexId: 19 -DUMP: symTag: 7 +DUMP: symTag: Data DUMP: classParentId: 17 DUMP: lexicalParentId: 0 DUMP: name: I64A @@ -316,7 +316,7 @@ DUMP: value: -9223372036854775808 DUMP: } DUMP: { DUMP: symIndexId: 20 -DUMP: symTag: 7 +DUMP: symTag: Data DUMP: classParentId: 17 DUMP: lexicalParentId: 0 DUMP: name: I64B @@ -330,7 +330,7 @@ DUMP: value: 0 DUMP: } DUMP: { DUMP: symIndexId: 21 -DUMP: symTag: 7 +DUMP: symTag: Data DUMP: classParentId: 17 DUMP: lexicalParentId: 0 DUMP: name: I64C @@ -345,7 +345,7 @@ DUMP: } DUMP: } DUMP: { DUMP: symIndexId: 22 -DUMP: symTag: 12 +DUMP: symTag: Enum DUMP: baseType: 2 DUMP: lexicalParentId: 0 DUMP: name: U8 @@ -368,7 +368,7 @@ DUMP: isValueUdt: 0 DUMP: volatileType: 0 DUMP: { DUMP: symIndexId: 24 -DUMP: symTag: 7 +DUMP: symTag: Data DUMP: classParentId: 22 DUMP: lexicalParentId: 0 DUMP: name: U8A @@ -382,7 +382,7 @@ DUMP: value: 0 DUMP: } DUMP: { DUMP: symIndexId: 25 -DUMP: symTag: 7 +DUMP: symTag: Data DUMP: classParentId: 22 DUMP: lexicalParentId: 0 DUMP: name: U8B @@ -397,7 +397,7 @@ DUMP: } DUMP: } DUMP: { DUMP: symIndexId: 26 -DUMP: symTag: 12 +DUMP: symTag: Enum DUMP: baseType: 7 DUMP: lexicalParentId: 0 DUMP: name: U16 @@ -420,7 +420,7 @@ DUMP: isValueUdt: 0 DUMP: volatileType: 0 DUMP: { DUMP: symIndexId: 28 -DUMP: symTag: 7 +DUMP: symTag: Data DUMP: classParentId: 26 DUMP: lexicalParentId: 0 DUMP: name: U16A @@ -434,7 +434,7 @@ DUMP: value: 0 DUMP: } DUMP: { DUMP: symIndexId: 29 -DUMP: symTag: 7 +DUMP: symTag: Data DUMP: classParentId: 26 DUMP: lexicalParentId: 0 DUMP: name: U16B @@ -449,7 +449,7 @@ DUMP: } DUMP: } DUMP: { DUMP: symIndexId: 30 -DUMP: symTag: 12 +DUMP: symTag: Enum DUMP: baseType: 7 DUMP: lexicalParentId: 0 DUMP: name: U32 @@ -472,7 +472,7 @@ DUMP: isValueUdt: 0 DUMP: volatileType: 0 DUMP: { DUMP: symIndexId: 32 -DUMP: symTag: 7 +DUMP: symTag: Data DUMP: classParentId: 30 DUMP: lexicalParentId: 0 DUMP: name: U32A @@ -486,7 +486,7 @@ DUMP: value: 0 DUMP: } DUMP: { DUMP: symIndexId: 33 -DUMP: symTag: 7 +DUMP: symTag: Data DUMP: classParentId: 30 DUMP: lexicalParentId: 0 DUMP: name: U32B @@ -501,7 +501,7 @@ DUMP: } DUMP: } DUMP: { DUMP: symIndexId: 34 -DUMP: symTag: 12 +DUMP: symTag: Enum DUMP: baseType: 7 DUMP: lexicalParentId: 0 DUMP: name: U64 @@ -524,7 +524,7 @@ DUMP: isValueUdt: 0 DUMP: volatileType: 0 DUMP: { DUMP: symIndexId: 36 -DUMP: symTag: 7 +DUMP: symTag: Data DUMP: classParentId: 34 DUMP: lexicalParentId: 0 DUMP: name: U64A @@ -538,7 +538,7 @@ DUMP: value: 0 DUMP: } DUMP: { DUMP: symIndexId: 37 -DUMP: symTag: 7 +DUMP: symTag: Data DUMP: classParentId: 34 DUMP: lexicalParentId: 0 DUMP: name: U64B @@ -553,7 +553,7 @@ DUMP: } DUMP: } DUMP: { DUMP: symIndexId: 38 -DUMP: symTag: 12 +DUMP: symTag: Enum DUMP: baseType: 7 DUMP: lexicalParentId: 0 DUMP: name: Char16 @@ -576,7 +576,7 @@ DUMP: isValueUdt: 0 DUMP: volatileType: 0 DUMP: { DUMP: symIndexId: 39 -DUMP: symTag: 7 +DUMP: symTag: Data DUMP: classParentId: 38 DUMP: lexicalParentId: 0 DUMP: name: C16A @@ -590,7 +590,7 @@ DUMP: value: 97 DUMP: } DUMP: { DUMP: symIndexId: 40 -DUMP: symTag: 7 +DUMP: symTag: Data DUMP: classParentId: 38 DUMP: lexicalParentId: 0 DUMP: name: C16B @@ -605,7 +605,7 @@ DUMP: } DUMP: } DUMP: { DUMP: symIndexId: 41 -DUMP: symTag: 12 +DUMP: symTag: Enum DUMP: baseType: 7 DUMP: lexicalParentId: 0 DUMP: name: Char32 @@ -628,7 +628,7 @@ DUMP: isValueUdt: 0 DUMP: volatileType: 0 DUMP: { DUMP: symIndexId: 43 -DUMP: symTag: 7 +DUMP: symTag: Data DUMP: classParentId: 41 DUMP: lexicalParentId: 0 DUMP: name: C32A @@ -642,7 +642,7 @@ DUMP: value: 97 DUMP: } DUMP: { DUMP: symIndexId: 44 -DUMP: symTag: 7 +DUMP: symTag: Data DUMP: classParentId: 41 DUMP: lexicalParentId: 0 DUMP: name: C32B @@ -657,7 +657,7 @@ DUMP: } DUMP: } DUMP: { DUMP: symIndexId: 45 -DUMP: symTag: 12 +DUMP: symTag: Enum DUMP: baseType: 7 DUMP: lexicalParentId: 0 DUMP: name: WChar @@ -680,7 +680,7 @@ DUMP: isValueUdt: 0 DUMP: volatileType: 0 DUMP: { DUMP: symIndexId: 46 -DUMP: symTag: 7 +DUMP: symTag: Data DUMP: classParentId: 45 DUMP: lexicalParentId: 0 DUMP: name: WCA @@ -694,7 +694,7 @@ DUMP: value: 97 DUMP: } DUMP: { DUMP: symIndexId: 47 -DUMP: symTag: 7 +DUMP: symTag: Data DUMP: classParentId: 45 DUMP: lexicalParentId: 0 DUMP: name: WCB @@ -709,7 +709,7 @@ DUMP: } DUMP: } DUMP: { DUMP: symIndexId: 48 -DUMP: symTag: 12 +DUMP: symTag: Enum DUMP: baseType: 10 DUMP: lexicalParentId: 0 DUMP: name: Bool @@ -732,7 +732,7 @@ DUMP: isValueUdt: 0 DUMP: volatileType: 0 DUMP: { DUMP: symIndexId: 50 -DUMP: symTag: 7 +DUMP: symTag: Data DUMP: classParentId: 48 DUMP: lexicalParentId: 0 DUMP: name: BA @@ -746,7 +746,7 @@ DUMP: value: true DUMP: } DUMP: { DUMP: symIndexId: 51 -DUMP: symTag: 7 +DUMP: symTag: Data DUMP: classParentId: 48 DUMP: lexicalParentId: 0 DUMP: name: BB @@ -760,7 +760,7 @@ DUMP: value: false DUMP: } DUMP: { DUMP: symIndexId: 113 -DUMP: symTag: 12 +DUMP: symTag: Enum DUMP: baseType: 6 DUMP: lexicalParentId: 0 DUMP: name: EC @@ -783,7 +783,7 @@ DUMP: isValueUdt: 0 DUMP: volatileType: 0 DUMP: { DUMP: symIndexId: 114 -DUMP: symTag: 7 +DUMP: symTag: Data DUMP: classParentId: 113 DUMP: lexicalParentId: 0 DUMP: name: A @@ -797,7 +797,7 @@ DUMP: value: 1 DUMP: } DUMP: { DUMP: symIndexId: 115 -DUMP: symTag: 7 +DUMP: symTag: Data DUMP: classParentId: 113 DUMP: lexicalParentId: 0 DUMP: name: B @@ -812,7 +812,7 @@ DUMP: } DUMP: } DUMP: { DUMP: symIndexId: 116 -DUMP: symTag: 12 +DUMP: symTag: Enum DUMP: baseType: 6 DUMP: lexicalParentId: 0 DUMP: name: Struct::Nested @@ -835,7 +835,7 @@ DUMP: isValueUdt: 0 DUMP: volatileType: 0 DUMP: { DUMP: symIndexId: 114 -DUMP: symTag: 7 +DUMP: symTag: Data DUMP: classParentId: 113 DUMP: lexicalParentId: 0 DUMP: name: A @@ -849,7 +849,7 @@ DUMP: value: 1 DUMP: } DUMP: { DUMP: symIndexId: 115 -DUMP: symTag: 7 +DUMP: symTag: Data DUMP: classParentId: 113 DUMP: lexicalParentId: 0 DUMP: name: B @@ -864,7 +864,7 @@ DUMP: } DUMP: } DUMP: { DUMP: symIndexId: 117 -DUMP: symTag: 12 +DUMP: symTag: Enum DUMP: baseType: 6 DUMP: lexicalParentId: 0 DUMP: name: EC @@ -887,7 +887,7 @@ DUMP: unalignedType: 0 DUMP: isValueUdt: 0 DUMP: volatileType: 1 { DUMP: symIndexId: 114 -DUMP: symTag: 7 +DUMP: symTag: Data DUMP: classParentId: 113 DUMP: lexicalParentId: 0 DUMP: name: A @@ -901,7 +901,7 @@ DUMP: value: 1 DUMP: } DUMP: { DUMP: symIndexId: 115 -DUMP: symTag: 7 +DUMP: symTag: Data DUMP: classParentId: 113 DUMP: lexicalParentId: 0 DUMP: name: B diff --git a/llvm/test/DebugInfo/PDB/Native/pdb-native-pointers.test b/llvm/test/DebugInfo/PDB/Native/pdb-native-pointers.test new file mode 100644 index 00000000000..5bc739b1422 --- /dev/null +++ b/llvm/test/DebugInfo/PDB/Native/pdb-native-pointers.test @@ -0,0 +1,358 @@ +; Test that the native PDB reader can enumerate pointer types. The output +; being checked against is golden output generated by llvm-pdbutil without +; the -native flag. Then we check that we generate the same output. + +; RUN: llvm-pdbutil diadump -no-ids -native -pointers \ +; RUN: %p/../Inputs/every-pointer.pdb | FileCheck %s + +; CHECK: { +; CHECK-NEXT: symTag: PointerType +; CHECK-NEXT: length: 8 +; CHECK-NEXT: constType: 0 +; CHECK-NEXT: isPointerToDataMember: 0 +; CHECK-NEXT: isPointerToMemberFunction: 0 +; CHECK-NEXT: RValueReference: 0 +; CHECK-NEXT: reference: 0 +; CHECK-NEXT: restrictedType: 0 +; CHECK-NEXT: unalignedType: 0 +; CHECK-NEXT: volatileType: 0 +; CHECK-NEXT: } +; CHECK-NEXT: { +; CHECK-NEXT: symTag: PointerType +; CHECK-NEXT: length: 8 +; CHECK-NEXT: constType: 0 +; CHECK-NEXT: isPointerToDataMember: 0 +; CHECK-NEXT: isPointerToMemberFunction: 0 +; CHECK-NEXT: RValueReference: 0 +; CHECK-NEXT: reference: 0 +; CHECK-NEXT: restrictedType: 0 +; CHECK-NEXT: unalignedType: 0 +; CHECK-NEXT: volatileType: 0 +; CHECK-NEXT: } +; CHECK-NEXT: { +; CHECK-NEXT: symTag: PointerType +; CHECK-NEXT: length: 8 +; CHECK-NEXT: constType: 0 +; CHECK-NEXT: isPointerToDataMember: 0 +; CHECK-NEXT: isPointerToMemberFunction: 0 +; CHECK-NEXT: RValueReference: 0 +; CHECK-NEXT: reference: 1 +; CHECK-NEXT: restrictedType: 0 +; CHECK-NEXT: unalignedType: 0 +; CHECK-NEXT: volatileType: 0 +; CHECK-NEXT: } +; CHECK-NEXT: { +; CHECK-NEXT: symTag: PointerType +; CHECK-NEXT: length: 8 +; CHECK-NEXT: constType: 0 +; CHECK-NEXT: isPointerToDataMember: 0 +; CHECK-NEXT: isPointerToMemberFunction: 0 +; CHECK-NEXT: RValueReference: 0 +; CHECK-NEXT: reference: 0 +; CHECK-NEXT: restrictedType: 0 +; CHECK-NEXT: unalignedType: 0 +; CHECK-NEXT: volatileType: 0 +; CHECK-NEXT: } +; CHECK-NEXT: { +; CHECK-NEXT: symTag: PointerType +; CHECK-NEXT: length: 8 +; CHECK-NEXT: constType: 0 +; CHECK-NEXT: isPointerToDataMember: 0 +; CHECK-NEXT: isPointerToMemberFunction: 0 +; CHECK-NEXT: RValueReference: 0 +; CHECK-NEXT: reference: 0 +; CHECK-NEXT: restrictedType: 0 +; CHECK-NEXT: unalignedType: 0 +; CHECK-NEXT: volatileType: 0 +; CHECK-NEXT: } +; CHECK-NEXT: { +; CHECK-NEXT: symTag: PointerType +; CHECK-NEXT: length: 8 +; CHECK-NEXT: constType: 0 +; CHECK-NEXT: isPointerToDataMember: 0 +; CHECK-NEXT: isPointerToMemberFunction: 0 +; CHECK-NEXT: RValueReference: 0 +; CHECK-NEXT: reference: 0 +; CHECK-NEXT: restrictedType: 0 +; CHECK-NEXT: unalignedType: 0 +; CHECK-NEXT: volatileType: 0 +; CHECK-NEXT: } +; CHECK-NEXT: { +; CHECK-NEXT: symTag: PointerType +; CHECK-NEXT: length: 8 +; CHECK-NEXT: constType: 0 +; CHECK-NEXT: isPointerToDataMember: 0 +; CHECK-NEXT: isPointerToMemberFunction: 0 +; CHECK-NEXT: RValueReference: 0 +; CHECK-NEXT: reference: 0 +; CHECK-NEXT: restrictedType: 0 +; CHECK-NEXT: unalignedType: 0 +; CHECK-NEXT: volatileType: 0 +; CHECK-NEXT: } +; CHECK-NEXT: { +; CHECK-NEXT: symTag: PointerType +; CHECK-NEXT: length: 8 +; CHECK-NEXT: constType: 0 +; CHECK-NEXT: isPointerToDataMember: 0 +; CHECK-NEXT: isPointerToMemberFunction: 0 +; CHECK-NEXT: RValueReference: 0 +; CHECK-NEXT: reference: 0 +; CHECK-NEXT: restrictedType: 1 +; CHECK-NEXT: unalignedType: 0 +; CHECK-NEXT: volatileType: 0 +; CHECK-NEXT: } +; CHECK-NEXT: { +; CHECK-NEXT: symTag: PointerType +; CHECK-NEXT: length: 8 +; CHECK-NEXT: constType: 1 +; CHECK-NEXT: isPointerToDataMember: 0 +; CHECK-NEXT: isPointerToMemberFunction: 0 +; CHECK-NEXT: RValueReference: 0 +; CHECK-NEXT: reference: 0 +; CHECK-NEXT: restrictedType: 0 +; CHECK-NEXT: unalignedType: 0 +; CHECK-NEXT: volatileType: 0 +; CHECK-NEXT: } +; CHECK-NEXT: { +; CHECK-NEXT: symTag: PointerType +; CHECK-NEXT: length: 8 +; CHECK-NEXT: constType: 1 +; CHECK-NEXT: isPointerToDataMember: 0 +; CHECK-NEXT: isPointerToMemberFunction: 0 +; CHECK-NEXT: RValueReference: 0 +; CHECK-NEXT: reference: 0 +; CHECK-NEXT: restrictedType: 0 +; CHECK-NEXT: unalignedType: 0 +; CHECK-NEXT: volatileType: 0 +; CHECK-NEXT: } +; CHECK-NEXT: { +; CHECK-NEXT: symTag: PointerType +; CHECK-NEXT: length: 8 +; CHECK-NEXT: constType: 1 +; CHECK-NEXT: isPointerToDataMember: 0 +; CHECK-NEXT: isPointerToMemberFunction: 0 +; CHECK-NEXT: RValueReference: 0 +; CHECK-NEXT: reference: 0 +; CHECK-NEXT: restrictedType: 0 +; CHECK-NEXT: unalignedType: 0 +; CHECK-NEXT: volatileType: 0 +; CHECK-NEXT: } +; CHECK-NEXT: { +; CHECK-NEXT: symTag: PointerType +; CHECK-NEXT: length: 8 +; CHECK-NEXT: constType: 1 +; CHECK-NEXT: isPointerToDataMember: 0 +; CHECK-NEXT: isPointerToMemberFunction: 0 +; CHECK-NEXT: RValueReference: 0 +; CHECK-NEXT: reference: 0 +; CHECK-NEXT: restrictedType: 0 +; CHECK-NEXT: unalignedType: 0 +; CHECK-NEXT: volatileType: 0 +; CHECK-NEXT: } +; CHECK-NEXT: { +; CHECK-NEXT: symTag: PointerType +; CHECK-NEXT: length: 8 +; CHECK-NEXT: constType: 1 +; CHECK-NEXT: isPointerToDataMember: 0 +; CHECK-NEXT: isPointerToMemberFunction: 0 +; CHECK-NEXT: RValueReference: 0 +; CHECK-NEXT: reference: 0 +; CHECK-NEXT: restrictedType: 0 +; CHECK-NEXT: unalignedType: 0 +; CHECK-NEXT: volatileType: 0 +; CHECK-NEXT: } +; CHECK-NEXT: { +; CHECK-NEXT: symTag: PointerType +; CHECK-NEXT: length: 8 +; CHECK-NEXT: constType: 1 +; CHECK-NEXT: isPointerToDataMember: 0 +; CHECK-NEXT: isPointerToMemberFunction: 0 +; CHECK-NEXT: RValueReference: 0 +; CHECK-NEXT: reference: 0 +; CHECK-NEXT: restrictedType: 0 +; CHECK-NEXT: unalignedType: 0 +; CHECK-NEXT: volatileType: 0 +; CHECK-NEXT: } +; CHECK-NEXT: { +; CHECK-NEXT: symTag: PointerType +; CHECK-NEXT: length: 8 +; CHECK-NEXT: constType: 1 +; CHECK-NEXT: isPointerToDataMember: 0 +; CHECK-NEXT: isPointerToMemberFunction: 0 +; CHECK-NEXT: RValueReference: 0 +; CHECK-NEXT: reference: 0 +; CHECK-NEXT: restrictedType: 0 +; CHECK-NEXT: unalignedType: 0 +; CHECK-NEXT: volatileType: 0 +; CHECK-NEXT: } +; CHECK-NEXT: { +; CHECK-NEXT: symTag: PointerType +; CHECK-NEXT: length: 8 +; CHECK-NEXT: constType: 0 +; CHECK-NEXT: isPointerToDataMember: 0 +; CHECK-NEXT: isPointerToMemberFunction: 0 +; CHECK-NEXT: RValueReference: 0 +; CHECK-NEXT: reference: 0 +; CHECK-NEXT: restrictedType: 0 +; CHECK-NEXT: unalignedType: 0 +; CHECK-NEXT: volatileType: 0 +; CHECK-NEXT: } +; CHECK-NEXT: { +; CHECK-NEXT: symTag: PointerType +; CHECK-NEXT: length: 8 +; CHECK-NEXT: constType: 0 +; CHECK-NEXT: isPointerToDataMember: 0 +; CHECK-NEXT: isPointerToMemberFunction: 0 +; CHECK-NEXT: RValueReference: 1 +; CHECK-NEXT: reference: 0 +; CHECK-NEXT: restrictedType: 0 +; CHECK-NEXT: unalignedType: 0 +; CHECK-NEXT: volatileType: 0 +; CHECK-NEXT: } +; CHECK-NEXT: { +; CHECK-NEXT: symTag: PointerType +; CHECK-NEXT: length: 8 +; CHECK-NEXT: constType: 1 +; CHECK-NEXT: isPointerToDataMember: 0 +; CHECK-NEXT: isPointerToMemberFunction: 0 +; CHECK-NEXT: RValueReference: 0 +; CHECK-NEXT: reference: 0 +; CHECK-NEXT: restrictedType: 0 +; CHECK-NEXT: unalignedType: 0 +; CHECK-NEXT: volatileType: 0 +; CHECK-NEXT: } +; CHECK-NEXT: { +; CHECK-NEXT: symTag: PointerType +; CHECK-NEXT: length: 8 +; CHECK-NEXT: constType: 0 +; CHECK-NEXT: isPointerToDataMember: 0 +; CHECK-NEXT: isPointerToMemberFunction: 1 +; FIXME: isSingleInheritance: 1 # DIA has this property for member pointers +; CHECK-NEXT: RValueReference: 0 +; CHECK-NEXT: reference: 0 +; CHECK-NEXT: restrictedType: 0 +; CHECK-NEXT: unalignedType: 0 +; CHECK-NEXT: volatileType: 0 +; CHECK-NEXT: } +; CHECK-NEXT: { +; CHECK-NEXT: symTag: PointerType +; CHECK-NEXT: length: 4 +; CHECK-NEXT: constType: 0 +; CHECK-NEXT: isPointerToDataMember: 1 +; CHECK-NEXT: isPointerToMemberFunction: 0 +; CHECK-NEXT: RValueReference: 0 +; CHECK-NEXT: reference: 0 +; CHECK-NEXT: restrictedType: 0 +; FIXME: isSingleInheritance: 1 # DIA has this property for member pointers +; CHECK-NEXT: unalignedType: 0 +; CHECK-NEXT: volatileType: 0 +; CHECK-NEXT: } +; CHECK-NEXT: { +; CHECK-NEXT: symTag: PointerType +; CHECK-NEXT: length: 8 +; CHECK-NEXT: constType: 0 +; CHECK-NEXT: isPointerToDataMember: 0 +; CHECK-NEXT: isPointerToMemberFunction: 1 +; CHECK-NEXT: RValueReference: 0 +; CHECK-NEXT: reference: 0 +; CHECK-NEXT: restrictedType: 0 +; FIXME: isSingleInheritance: 1 # DIA has this property for member pointers +; CHECK-NEXT: unalignedType: 0 +; CHECK-NEXT: volatileType: 0 +; CHECK-NEXT: } +; CHECK-NEXT: { +; CHECK-NEXT: symTag: PointerType +; CHECK-NEXT: length: 8 +; CHECK-NEXT: constType: 0 +; CHECK-NEXT: isPointerToDataMember: 0 +; CHECK-NEXT: isPointerToMemberFunction: 0 +; CHECK-NEXT: RValueReference: 0 +; CHECK-NEXT: reference: 0 +; CHECK-NEXT: restrictedType: 0 +; CHECK-NEXT: unalignedType: 0 +; CHECK-NEXT: volatileType: 0 +; CHECK-NEXT: } +; CHECK-NEXT: { +; CHECK-NEXT: symTag: PointerType +; CHECK-NEXT: length: 8 +; CHECK-NEXT: constType: 0 +; CHECK-NEXT: isPointerToDataMember: 0 +; CHECK-NEXT: isPointerToMemberFunction: 0 +; CHECK-NEXT: RValueReference: 0 +; CHECK-NEXT: reference: 0 +; CHECK-NEXT: restrictedType: 0 +; CHECK-NEXT: unalignedType: 0 +; CHECK-NEXT: volatileType: 0 +; CHECK-NEXT: } +; CHECK-NEXT: { +; CHECK-NEXT: symTag: PointerType +; CHECK-NEXT: length: 8 +; CHECK-NEXT: constType: 0 +; CHECK-NEXT: isPointerToDataMember: 0 +; CHECK-NEXT: isPointerToMemberFunction: 0 +; CHECK-NEXT: RValueReference: 0 +; CHECK-NEXT: reference: 0 +; CHECK-NEXT: restrictedType: 1 +; CHECK-NEXT: unalignedType: 0 +; CHECK-NEXT: volatileType: 0 +; CHECK-NEXT: } +; CHECK-NEXT: { +; CHECK-NEXT: symTag: PointerType +; CHECK-NEXT: length: 8 +; CHECK-NEXT: constType: 0 +; CHECK-NEXT: isPointerToDataMember: 0 +; CHECK-NEXT: isPointerToMemberFunction: 0 +; CHECK-NEXT: RValueReference: 0 +; CHECK-NEXT: reference: 0 +; CHECK-NEXT: restrictedType: 0 +; CHECK-NEXT: unalignedType: 0 +; CHECK-NEXT: volatileType: 0 +; CHECK-NEXT: } +; CHECK-NEXT: { +; CHECK-NEXT: symTag: PointerType +; CHECK-NEXT: length: 8 +; CHECK-NEXT: constType: 0 +; CHECK-NEXT: isPointerToDataMember: 0 +; CHECK-NEXT: isPointerToMemberFunction: 0 +; CHECK-NEXT: RValueReference: 0 +; CHECK-NEXT: reference: 0 +; CHECK-NEXT: restrictedType: 0 +; CHECK-NEXT: unalignedType: 0 +; CHECK-NEXT: volatileType: 0 +; CHECK-NEXT: } +; CHECK-NEXT: { +; CHECK-NEXT: symTag: PointerType +; CHECK-NEXT: length: 8 +; CHECK-NEXT: constType: 0 +; CHECK-NEXT: isPointerToDataMember: 0 +; CHECK-NEXT: isPointerToMemberFunction: 0 +; CHECK-NEXT: RValueReference: 0 +; CHECK-NEXT: reference: 0 +; CHECK-NEXT: restrictedType: 0 +; CHECK-NEXT: unalignedType: 0 +; CHECK-NEXT: volatileType: 0 +; CHECK-NEXT: } +; CHECK-NEXT: { +; CHECK-NEXT: symTag: PointerType +; CHECK-NEXT: length: 8 +; CHECK-NEXT: constType: 0 +; CHECK-NEXT: isPointerToDataMember: 0 +; CHECK-NEXT: isPointerToMemberFunction: 0 +; CHECK-NEXT: RValueReference: 1 +; CHECK-NEXT: reference: 0 +; CHECK-NEXT: restrictedType: 0 +; CHECK-NEXT: unalignedType: 0 +; CHECK-NEXT: volatileType: 0 +; CHECK-NEXT: } +; CHECK-NEXT: { +; CHECK-NEXT: symTag: PointerType +; CHECK-NEXT: length: 8 +; CHECK-NEXT: constType: 0 +; CHECK-NEXT: isPointerToDataMember: 0 +; CHECK-NEXT: isPointerToMemberFunction: 0 +; CHECK-NEXT: RValueReference: 0 +; CHECK-NEXT: reference: 1 +; CHECK-NEXT: restrictedType: 0 +; CHECK-NEXT: unalignedType: 0 +; CHECK-NEXT: volatileType: 0 +; CHECK-NEXT: }
\ No newline at end of file |

