<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/61068>61068</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            C++ modules example fails on LLVM 15.0.7 for 64-bit Windows
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          csimon-bambecksystems
      </td>
    </tr>
</table>

<pre>
    The documentation [here](https://releases.llvm.org/15.0.0/tools/clang/docs/StandardCPlusPlusModules.html) provides the following Hello-World style example:

```
// M.cppm
export module M;
export import :interface_part;
import :impl_part;
export void Hello();

// interface_part.cppm
export module M:interface_part;
export void World();

// impl_part.cppm
module;
#include <iostream>
#include <string>
module M:impl_part;
import :interface_part;

std::string W = "World.";
void World() {
  std::cout << W << std::endl;
}

// Impl.cpp
module;
#include <iostream>
module M;
void Hello() {
  std::cout << "Hello ";
}

// User.cpp
import M;
int main() {
  Hello();
 World();
  return 0;
}

Precompiling the module
clang++ -std=c++20 interface_part.cppm --precompile -o M-interface_part.pcm
clang++ -std=c++20 impl_part.cppm --precompile -fprebuilt-module-path=. -o M-impl_part.pcm
clang++ -std=c++20 M.cppm --precompile -fprebuilt-module-path=. -o M.pcm
clang++ -std=c++20 Impl.cpp -fmodule-file=M.pcm -c -o Impl.o

Compiling the user
clang++ -std=c++20 User.cpp -fprebuilt-module-path=. -c -o User.o

Compiling the module and linking it together
clang++ -std=c++20 M-interface_part.pcm -c -o M-interface_part.o
clang++ -std=c++20 M-impl_part.pcm -c -o M-impl_part.o
clang++ -std=c++20 M.pcm -c -o M.o
clang++ User.o M-interface_part.o  M-impl_part.o M.o Impl.o -o a.out
```

I tried this exact example on LLVM 15.0.7 for 64-bit Windows. The files are included. The standard library and linker/backend in my environment is MSVC 17.5.1. I have changed the command lines slightly for Windows. The result is a strange failure at Impl.cpp:
```
Impl.cpp:5:3: error: use of undeclared identifier 'std'
  std::cout << "Hello ";
  ^
1 error generated.
```

Note, I can compile, link and execute a regular "Hello World" (without C++20 modules) in my LLVM environment just fine, it is only behaving this way when it imports modules and includes system headers in global module fragments of those imported modules.
[test2.zip](https://github.com/llvm/llvm-project/files/10854413/test2.zip)

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJycVt1u2zgTfRr6ZmBBpiz_XPgisT_jC1AvCnS3vVxQ5EhiS5ECSSX1Pv2ClCzbiZs6CySyxCHPOZwZDoc5JyuNuCH5I8l3E9b52tgNd7IxelqwpkD-wx2dx8ZNCiOOmz9rBGF416D2zEujgeSPNVok-Y7QVe1960j2QOie0L1FhcyhS5R6bhJjK0L3szxJk5TQvTdGOUL3XDEdDMLw8PnFMy2YFdvPqnPh_2BEp9AltW8UoWtorXmWAh34GqE0SpkXqSv4Pyplpt-MVQKcPyoE_MmaVmFQk-5Ienou0uGv_4xC4ZDwtm36IfzZGuuhibxwINnj1bhs4g_JHqT2aEvG8e-WWT_Ou5jQtOraNmA8Gyl6xYSuCF2P9itR1_jvKfyVlEu66Jp36U5qL5h6ivN8mknNVScQSLaVxnmLrCHZ_26ZnbdSV6PxUu0bv_zWqf3TeRHCmT302PANSLYDQmncXEIoHRe83jOQ5WABGGG46QLplmTbiBVfRitqoc4ClrsbPntqWhXc9V-89SbBXmfFbyUTSuN0uNz4baF_ObRnoYO7z9RSe2iY1G-Jb2XpzVwCsOg7qyH9lZTPFrlpWqlC6MLpHfwVjUMZeCT0EaZxtzvef9L01kmA6bQ94SFMDRymr2a1vLkH-irrX6GWrcWik8pPe6nTlvmaZLtkIBzX3sd1-DjHncinPIRpOaCUMmTiLgLAlAewOMlcRmR7FY7Oob2D65RK70qPhHHmO4TDCWBagJL6RxiWHryp0Nd3SbkV84H7jcnch3cZ0jPUOHoXyuXaWyt6v9yQCNdcYfUQtYDFEtP527dYfD6BtxIF-Fq6cPtxf7oDwWj49OnrAeLtu4TSWFjMp4X08E1qYV5cAuFmD0njgFmEoXCJftwNlzIoWVhmj2PI0BK6Lxj_gVqA1NAcAfWztEaHBgGkg8OXr1uYLZM8mSXwBDV7RuA101UUisBN0wxo6MApWdVeHaPCK2kWXaciIgPnbQCAkknVWQTmz4U4u33PX9hzkj1kJHsAtNbY8NI5BFNCpwVyxSwKkAK1l6VEC4QuQ4Dp8uOlGIDkQ7Gf9WxQoUbLPIrknUD-YTwSuoUn4EzDUCnCQHB59D3-RN55BAYWq04xexYw1GYKhK5epK-DyO2Ym_2Rc6HI9-GKaXEZs--d81BKHQll9LjR6ggF1uy5P7nSwQs7wkuNOs6It4k7YUeBQ_446LtHqJEJtC6QVsoUTJ0Of2lZFXhdiICvjcMBD8UJ8OSq_NGj8zT5R7a3us1K-rorEm4aQveh4xx-pq0135F7Qvcxv0MTmq7y-XyWhTZ0hKTrnmciNplYZ2s2wc1ssVwuZnmWryf1JmNZOl8LylEILDKOZbGYLWclW6V5sVjPJ3JDU5qllK5oOsvzdYKzPM95uc7ndElXjJF5ig2TamyIJ9K5DjeLWbpYTRQrULnYi1Oq8QWiMSRUvpvYTdxL0VWOzFMlnT-31RMvvcLNEOUxDqfDH46J-30JmHRWbT7s0qgx-DTu4d8AAAD__1UczPQ">