@@ -13415,14 +13415,13 @@ CXXConstructorDecl *Sema::DeclareImplicitDefaultConstructor(
13415
13415
DefaultCon->setAccess(AS_public);
13416
13416
DefaultCon->setDefaulted();
13417
13417
13418
- if (getLangOpts().CUDA) {
13418
+ setupImplicitSpecialMemberType(DefaultCon, Context.VoidTy, None);
13419
+
13420
+ if (getLangOpts().CUDA)
13419
13421
inferCUDATargetForImplicitSpecialMember(ClassDecl, CXXDefaultConstructor,
13420
13422
DefaultCon,
13421
13423
/* ConstRHS */ false,
13422
13424
/* Diagnose */ false);
13423
- }
13424
-
13425
- setupImplicitSpecialMemberType(DefaultCon, Context.VoidTy, None);
13426
13425
13427
13426
// We don't need to use SpecialMemberIsTrivial here; triviality for default
13428
13427
// constructors is easy to compute.
@@ -13696,14 +13695,13 @@ CXXDestructorDecl *Sema::DeclareImplicitDestructor(CXXRecordDecl *ClassDecl) {
13696
13695
Destructor->setAccess(AS_public);
13697
13696
Destructor->setDefaulted();
13698
13697
13699
- if (getLangOpts().CUDA) {
13698
+ setupImplicitSpecialMemberType(Destructor, Context.VoidTy, None);
13699
+
13700
+ if (getLangOpts().CUDA)
13700
13701
inferCUDATargetForImplicitSpecialMember(ClassDecl, CXXDestructor,
13701
13702
Destructor,
13702
13703
/* ConstRHS */ false,
13703
13704
/* Diagnose */ false);
13704
- }
13705
-
13706
- setupImplicitSpecialMemberType(Destructor, Context.VoidTy, None);
13707
13705
13708
13706
// We don't need to use SpecialMemberIsTrivial here; triviality for
13709
13707
// destructors is easy to compute.
@@ -14336,14 +14334,13 @@ CXXMethodDecl *Sema::DeclareImplicitCopyAssignment(CXXRecordDecl *ClassDecl) {
14336
14334
CopyAssignment->setDefaulted();
14337
14335
CopyAssignment->setImplicit();
14338
14336
14339
- if (getLangOpts().CUDA) {
14337
+ setupImplicitSpecialMemberType(CopyAssignment, RetType, ArgType);
14338
+
14339
+ if (getLangOpts().CUDA)
14340
14340
inferCUDATargetForImplicitSpecialMember(ClassDecl, CXXCopyAssignment,
14341
14341
CopyAssignment,
14342
14342
/* ConstRHS */ Const,
14343
14343
/* Diagnose */ false);
14344
- }
14345
-
14346
- setupImplicitSpecialMemberType(CopyAssignment, RetType, ArgType);
14347
14344
14348
14345
// Add the parameter to the operator.
14349
14346
ParmVarDecl *FromParam = ParmVarDecl::Create(Context, CopyAssignment,
@@ -14671,14 +14668,13 @@ CXXMethodDecl *Sema::DeclareImplicitMoveAssignment(CXXRecordDecl *ClassDecl) {
14671
14668
MoveAssignment->setDefaulted();
14672
14669
MoveAssignment->setImplicit();
14673
14670
14674
- if (getLangOpts().CUDA) {
14671
+ setupImplicitSpecialMemberType(MoveAssignment, RetType, ArgType);
14672
+
14673
+ if (getLangOpts().CUDA)
14675
14674
inferCUDATargetForImplicitSpecialMember(ClassDecl, CXXMoveAssignment,
14676
14675
MoveAssignment,
14677
14676
/* ConstRHS */ false,
14678
14677
/* Diagnose */ false);
14679
- }
14680
-
14681
- setupImplicitSpecialMemberType(MoveAssignment, RetType, ArgType);
14682
14678
14683
14679
// Add the parameter to the operator.
14684
14680
ParmVarDecl *FromParam = ParmVarDecl::Create(Context, MoveAssignment,
@@ -15050,14 +15046,13 @@ CXXConstructorDecl *Sema::DeclareImplicitCopyConstructor(
15050
15046
CopyConstructor->setAccess(AS_public);
15051
15047
CopyConstructor->setDefaulted();
15052
15048
15053
- if (getLangOpts().CUDA) {
15049
+ setupImplicitSpecialMemberType(CopyConstructor, Context.VoidTy, ArgType);
15050
+
15051
+ if (getLangOpts().CUDA)
15054
15052
inferCUDATargetForImplicitSpecialMember(ClassDecl, CXXCopyConstructor,
15055
15053
CopyConstructor,
15056
15054
/* ConstRHS */ Const,
15057
15055
/* Diagnose */ false);
15058
- }
15059
-
15060
- setupImplicitSpecialMemberType(CopyConstructor, Context.VoidTy, ArgType);
15061
15056
15062
15057
// During template instantiation of special member functions we need a
15063
15058
// reliable TypeSourceInfo for the parameter types in order to allow functions
@@ -15190,14 +15185,13 @@ CXXConstructorDecl *Sema::DeclareImplicitMoveConstructor(
15190
15185
MoveConstructor->setAccess(AS_public);
15191
15186
MoveConstructor->setDefaulted();
15192
15187
15193
- if (getLangOpts().CUDA) {
15188
+ setupImplicitSpecialMemberType(MoveConstructor, Context.VoidTy, ArgType);
15189
+
15190
+ if (getLangOpts().CUDA)
15194
15191
inferCUDATargetForImplicitSpecialMember(ClassDecl, CXXMoveConstructor,
15195
15192
MoveConstructor,
15196
15193
/* ConstRHS */ false,
15197
15194
/* Diagnose */ false);
15198
- }
15199
-
15200
- setupImplicitSpecialMemberType(MoveConstructor, Context.VoidTy, ArgType);
15201
15195
15202
15196
// Add the parameter to the constructor.
15203
15197
ParmVarDecl *FromParam = ParmVarDecl::Create(Context, MoveConstructor,
0 commit comments