================
@@ -2904,50 +2915,52 @@ static void DiagnoseAllocationLookupFailure(
   auto Rerun = [&](ImplicitAllocationArguments &ArgumentList,
                    OverloadCandidateSet &Candidates,
                    SmallVectorImpl<Expr *> &Args) {
+    const LookupResult &LocalLookup =
+        ArgumentList.updateLookupForMSVCCompatibility(SemaRef, BaseLookup,
+                                                      MSVCFallback);
     llvm::append_range(Args, ArgumentList.getImplicitArguments());
     llvm::append_range(Args, PlacementArguments);
     FunctionDecl *Unused = nullptr;
-    resolveAllocationOverload(SemaRef, R, Range, ArgumentList, Args, Unused,
-                              Candidates, /*Diagnose=*/false);
+    resolveAllocationOverload(SemaRef, LocalLookup, Range, ArgumentList, Args,
+                              Unused, Candidates, /*Diagnose=*/false);
   };
   std::optional<OverloadCandidateSet> AlignedCandidates;
   Expr *AlignArg = nullptr;
   if (AlignedArgumentList) {
-    AlignedCandidates.emplace(R.getNameLoc(), 
OverloadCandidateSet::CSK_Normal);
+    AlignedCandidates.emplace(BaseLookup.getNameLoc(),
+                              OverloadCandidateSet::CSK_Normal);
     SmallVector<Expr *, 4> AlignedArgs;
     Rerun(*AlignedArgumentList, *AlignedCandidates, AlignedArgs);
     AlignArg = AlignedArgumentList->getAlignmentArgument();
   }
-  OverloadCandidateSet UnalignedCandidates(R.getNameLoc(),
+  OverloadCandidateSet UnalignedCandidates(BaseLookup.getNameLoc(),
                                            OverloadCandidateSet::CSK_Normal);
   SmallVector<Expr *, 4> UnalignedArgs;
   Rerun(*UnalignedArgumentList, UnalignedCandidates, UnalignedArgs);
   diagnoseNoViableFunctionForAllocationOverloadResolution(
-      SemaRef, R, Range, UnalignedArgs, UnalignedCandidates,
-      AlignedCandidates ? &*AlignedCandidates : nullptr, AlignArg);
+      SemaRef, BaseLookup, MSVCFallback, Range, UnalignedArgs,
+      UnalignedCandidates, AlignedCandidates ? &*AlignedCandidates : nullptr,
+      AlignArg);
 }
 
-bool Sema::getTypeIdentityArgument(QualType Type, SourceLocation Loc,
-                                   Expr **FoundExpr) {
+std::optional<Expr *> Sema::getTypeIdentityArgument(QualType Type,
----------------
ojhunt wrote:

I really dislike that model but recognize it's very clunky, so I've adopted it 
and renamed the method.

https://github.com/llvm/llvm-project/pull/211482
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to