[clang] 245da0a - [modules] Fix callback argument thinko

Nathan Sidwell via cfe-commits cfe-commits at lists.llvm.org
Mon Oct 17 09:30:58 PDT 2022


Author: Nathan Sidwell
Date: 2022-10-17T09:30:50-07:00
New Revision: 245da0a451e193dc4229ed8aed28cf34fa083ed4

URL: https://github.com/llvm/llvm-project/commit/245da0a451e193dc4229ed8aed28cf34fa083ed4
DIFF: https://github.com/llvm/llvm-project/commit/245da0a451e193dc4229ed8aed28cf34fa083ed4.diff

LOG: [modules] Fix callback argument thinko

VisbleModuleSet::setVisible takes a callback, to inform of modules
being made (transitively) visible.  However, we were calling it as
'Vis(M)' from a recursive lambda, where 'M' is a capture of
setVisible's M, module parameter.  Thus we can invoke the callback
multiple times, passing the same value to it each time.

Everywhere else in the lambda, we refer to V.M of the lambda's
Visiting parameter.  We should be doing so for the callback.  Thus
we'll pass the outermost module on the outermost recursive call, and
as we descend the imports, we'll pass each import to the callback.

Reviewed By: iains

Differential Revision: https://reviews.llvm.org/D135958

Added: 
    

Modified: 
    clang/lib/Basic/Module.cpp

Removed: 
    


################################################################################
diff  --git a/clang/lib/Basic/Module.cpp b/clang/lib/Basic/Module.cpp
index 17b83184abb6..9a58faee1fdd 100644
--- a/clang/lib/Basic/Module.cpp
+++ b/clang/lib/Basic/Module.cpp
@@ -653,7 +653,7 @@ void VisibleModuleSet::setVisible(Module *M, SourceLocation Loc,
       return;
 
     ImportLocs[ID] = Loc;
-    Vis(M);
+    Vis(V.M);
 
     // Make any exported modules visible.
     SmallVector<Module *, 16> Exports;


        


More information about the cfe-commits mailing list