зеркало из https://github.com/microsoft/clang.git
C++/ABI/x86_64: Member pointers should be classified as INTEGER.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103843 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
7711523d94
Коммит
67d438d39a
|
@ -853,6 +853,11 @@ void X86_64ABIInfo::classify(QualType Ty,
|
|||
classify(ET->getDecl()->getIntegerType(), Context, OffsetBase, Lo, Hi);
|
||||
} else if (Ty->hasPointerRepresentation()) {
|
||||
Current = Integer;
|
||||
} else if (Ty->isMemberPointerType()) {
|
||||
if (Ty->isMemberFunctionPointerType())
|
||||
Lo = Hi = Integer;
|
||||
else
|
||||
Current = Integer;
|
||||
} else if (const VectorType *VT = Ty->getAs<VectorType>()) {
|
||||
uint64_t Size = Context.getTypeSize(VT);
|
||||
if (Size == 32) {
|
||||
|
|
|
@ -25,3 +25,11 @@ void f2(f2_s1 a0) { }
|
|||
struct s3_0 {};
|
||||
struct s3_1 { struct s3_0 a; long b; };
|
||||
void f3(struct s3_1 x) {}
|
||||
|
||||
// CHECK: define i64 @_Z4f4_0M2s4i(i64)
|
||||
// CHECK: define [[i64_i64_ty]] @_Z4f4_1M2s4FivE([[i64_i64_ty]])
|
||||
struct s4 {};
|
||||
typedef int s4::* s4_mdp;
|
||||
typedef int (s4::*s4_mfp)();
|
||||
s4_mdp f4_0(s4_mdp a) { return a; }
|
||||
s4_mfp f4_1(s4_mfp a) { return a; }
|
||||
|
|
Загрузка…
Ссылка в новой задаче