================
@@ -199,7 +199,10 @@ class ModuleManager {
     Missing,
 
     /// The module file is out-of-date.
-    OutOfDate
+    OutOfDate,
+
+    /// The importer file is out-of-date
+    ImporterOutOfDate
----------------
devajithvs wrote:

Hi @ChuanqiXu9, the original issue/bug is mentioned in detail here (also 
pasting it here): 
https://github.com/root-project/root/issues/7704#issuecomment-3501531825

```C++
/* A.h */
void a() {}
```

```C++
/* B.h */
#include "A.h"
```

```C++
/* use.c */
#include "B.h"
void use() { a();}
```

```C++
/* module.modulemap */
module A { header "A.h" }
module B { header "B.h" export * }

```

Build pcms:

```bash
rm -rf prebuilt ; mkdir prebuilt
clang -cc1 -emit-module -o prebuilt/A.pcm -fmodules module.modulemap 
-fmodule-name=A
clang -cc1 -emit-module -o prebuilt/B.pcm -fmodules module.modulemap 
-fmodule-name=B -fmodule-file=A=prebuilt/A.pcm
```

```bash
module_repro$ ls -lrt prebuilt/
total 32
-rw-rw-r-- 1 dvalapar dvalapar 16260 Nov  7 10:27 A.pcm
-rw-rw-r-- 1 dvalapar dvalapar 16252 Nov  7 10:27 B.pcm
```

Change `A.h` and rebuild only `A.pcm`

```
echo "void b() {};" >> A.h
clang -cc1 -emit-module -o prebuilt/A.pcm -fmodules module.modulemap 
-fmodule-name=A
clang -cc1 -emit-obj use.c -fmodules -fimplicit-module-maps 
-fprebuilt-module-path=prebuilt
```

Gives:
```bash
use.c:1:2: fatal error: module file '/tmp/module_repro/prebuilt/A.pcm' is out 
of date and needs to be rebuilt: module file out of date
    1 | #include "B.h"
      |  ^
use.c:1:2: note: imported by module 'B' in '/tmp/module_repro/prebuilt/B.pcm'
1 error generated.
```

Even though A is recent.
```bash
module_repro$ ls -lrt prebuilt/
total 36
-rw-rw-r-- 1 dvalapar dvalapar 16252 Nov  7 10:27 B.pcm
-rw-rw-r-- 1 dvalapar dvalapar 16396 Nov  7 10:28 A.pcm
```

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

Reply via email to