jansvoboda11 added inline comments.

================
Comment at: clang/include/clang/Basic/FileManager.h:316
+  void getSeenFileEntries(
+      SmallVectorImpl<OptionalFileEntryRefDegradesToFileEntryPtr> &Entries)
+      const;
----------------
Since we're already modifying the two only users of this function, maybe we 
could use `Optional<FileEntryRef>` instead of 
`OptionalFileEntryRefDegradesToFileEntryPtr` (which we want to eventually 
remove)?


================
Comment at: clang/lib/Basic/FileManager.cpp:625-627
+        Entries.push_back(
+            FileEntryRef(*reinterpret_cast<const FileEntryRef::MapEntry *>(
+                Value->V.get<const void *>())));
----------------
Why is this necessary? IIUC, `FileEntryRef` has this logic in 
`getBaseMapEntry()`. I would expect `FileEntryRef(Entry)` to be correct 
regardless of what's in `Value->V`.


================
Comment at: clang/lib/Serialization/ASTWriter.cpp:176
 
+  for (auto &File : FileEntries) {
     const HeaderFileInfo *HFI =
----------------
I'm afraid that iterating over file entries in "non-deterministic" order can 
cause non-determinism down the line. For example, calling 
`HeaderSearch::findAllModulesForHeader()` in the loop can trigger 
deserialization of `HeaderFileInfo` from loaded PCMs. That code fills the 
`Module::Headers` vectors, which we serialize without sorting first.


================
Comment at: clang/lib/Serialization/ASTWriter.cpp:1919-1922
+    if (A->getUID() == B->getUID())
+      return A->getName() < B->getName();
 
+    return A->getUID() < B->getUID();
----------------
Nit: I'd slightly prefer:

```
    if (A->getUID() != B->getUID())
      return A->getUID() < B->getUID();

    return A->getName() < B->getName();
    
```


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D143414/new/

https://reviews.llvm.org/D143414

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to