mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 18:54:02 +01:00
[codeview] Use a type index of zero for static method "this" types
Otherwise VS won't show anything in the autos or watch window of static methods. llvm-svn: 313329
This commit is contained in:
parent
d1ff5541e1
commit
4ae1df5b81
@ -1561,7 +1561,7 @@ TypeIndex CodeViewDebug::lowerTypeMemberFunction(const DISubroutineType *Ty,
|
||||
ReturnTypeIndex = ReturnAndArgTypesRef.front();
|
||||
ArgTypeIndices = ReturnAndArgTypesRef.drop_front();
|
||||
}
|
||||
TypeIndex ThisTypeIndex = TypeIndex::Void();
|
||||
TypeIndex ThisTypeIndex;
|
||||
if (!IsStaticMethod && !ArgTypeIndices.empty()) {
|
||||
ThisTypeIndex = ArgTypeIndices.front();
|
||||
ArgTypeIndices = ArgTypeIndices.drop_front();
|
||||
|
@ -12,24 +12,60 @@
|
||||
; A *p = new A;
|
||||
; $ clang t.cpp -S -emit-llvm -g -gcodeview -o t.ll
|
||||
|
||||
; CHECK: MemberFunction ([[STATIC_VOID:0x.*]]) {
|
||||
; CHECK-NEXT: TypeLeafKind: LF_MFUNCTION (0x1009)
|
||||
; CHECK-NEXT: ReturnType: void (0x3)
|
||||
; CHECK-NEXT: ClassType: A ({{.*}})
|
||||
; CHECK-NEXT: ThisType: 0x0
|
||||
; CHECK-NEXT: CallingConvention: NearC (0x0)
|
||||
; CHECK-NEXT: FunctionOptions [ (0x0)
|
||||
; CHECK-NEXT: ]
|
||||
; CHECK-NEXT: NumParameters: 0
|
||||
; CHECK-NEXT: ArgListType: () ({{.*}})
|
||||
; CHECK-NEXT: ThisAdjustment: 0
|
||||
; CHECK-NEXT: }
|
||||
; CHECK: MemberFunction ([[INSTANCE_VOID:0x.*]]) {
|
||||
; CHECK-NEXT: TypeLeafKind: LF_MFUNCTION (0x1009)
|
||||
; CHECK-NEXT: ReturnType: void (0x3)
|
||||
; CHECK-NEXT: ClassType: A ({{.*}})
|
||||
; CHECK-NEXT: ThisType: A* ({{.*}})
|
||||
; CHECK-NEXT: CallingConvention: ThisCall (0xB)
|
||||
; CHECK-NEXT: FunctionOptions [ (0x0)
|
||||
; CHECK-NEXT: ]
|
||||
; CHECK-NEXT: NumParameters: 0
|
||||
; CHECK-NEXT: ArgListType: () ({{.*}})
|
||||
; CHECK-NEXT: ThisAdjustment: 0
|
||||
; CHECK-NEXT: }
|
||||
; CHECK: MemberFunction ([[STATIC_TWO:0x.*]]) {
|
||||
; CHECK-NEXT: TypeLeafKind: LF_MFUNCTION (0x1009)
|
||||
; CHECK-NEXT: ReturnType: void (0x3)
|
||||
; CHECK-NEXT: ClassType: A ({{.*}})
|
||||
; CHECK-NEXT: ThisType: 0x0
|
||||
; CHECK-NEXT: CallingConvention: NearC (0x0)
|
||||
; CHECK-NEXT: FunctionOptions [ (0x0)
|
||||
; CHECK-NEXT: ]
|
||||
; CHECK-NEXT: NumParameters: 2
|
||||
; CHECK-NEXT: ArgListType: (int, int) ({{.*}}
|
||||
; CHECK-NEXT: ThisAdjustment: 0
|
||||
; CHECK-NEXT: }
|
||||
; CHECK: OneMethod {
|
||||
; CHECK-NEXT: TypeLeafKind: LF_ONEMETHOD (0x1511)
|
||||
; CHECK-NEXT: AccessSpecifier: Public (0x3)
|
||||
; CHECK-NEXT: MethodKind: Static (0x2)
|
||||
; CHECK-NEXT: Type: void A::() ({{.*}})
|
||||
; CHECK-NEXT: Type: void A::() ([[STATIC_VOID]])
|
||||
; CHECK-NEXT: Name: f
|
||||
; CHECK-NEXT: }
|
||||
; CHECK-NEXT: OneMethod {
|
||||
; CHECK-NEXT: TypeLeafKind: LF_ONEMETHOD (0x1511)
|
||||
; CHECK-NEXT: AccessSpecifier: Public (0x3)
|
||||
; CHECK-NEXT: Type: void A::() ({{.*}})
|
||||
; CHECK-NEXT: Type: void A::() ([[INSTANCE_VOID]])
|
||||
; CHECK-NEXT: Name: g
|
||||
; CHECK-NEXT: }
|
||||
; CHECK-NEXT: OneMethod {
|
||||
; CHECK-NEXT: TypeLeafKind: LF_ONEMETHOD (0x1511)
|
||||
; CHECK-NEXT: AccessSpecifier: Public (0x3)
|
||||
; CHECK-NEXT: MethodKind: Static (0x2)
|
||||
; CHECK-NEXT: Type: void A::(int, int) ({{.*}})
|
||||
; CHECK-NEXT: Type: void A::(int, int) ([[STATIC_TWO]])
|
||||
; CHECK-NEXT: Name: h
|
||||
; CHECK-NEXT: }
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user