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

    <tr>
        <th>Summary</th>
        <td>
            [C++20][Modules] error: '_freea' has different definitions in different modules
        </td>
    </tr>

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

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

    <tr>
      <th>Reporter</th>
      <td>
          Ivan171
      </td>
    </tr>
</table>

<pre>
    ### Environment
Windows 10
Clang 18.0.0git (https://github.com/llvm/llvm-project f9da4c6eadf478a3828362bdfa9ec5136e8c131b)
MSVC 17.8.3

### Reproducer
```c++
// mod2.cpp

module;

#include <algorithm>

export module mod2;
```

```c++
// mod1.cpp

module;

#include <string_view>

export module mod1;

import mod2;
```

```
$ clang++.exe -std=c++20 -fno-delayed-template-parsing -fno-ms-compatibility -x c++-module mod2.cpp --precompile
$ clang++.exe -std=c++20 -fno-delayed-template-parsing -fno-ms-compatibility -x c++-module mod1.cpp -fprebuilt-module-path=.
In module 'mod2' imported from mod1.cpp:7:
C:\Program Files (x86)\Windows Kits\10\include\10.0.22621.0\ucrt\malloc.h:150:29: error: '_freea' has different definitions in
      different modules; definition in module 'mod2.<global>' first difference is function body
  150 |     __inline void __CRTDECL _freea(_Pre_maybenull_ _Post_invalid_ void* _Memory)
 | ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 151 |     {
      |     ~
  152 |         unsigned int _Marker;
 |         ~~~~~~~~~~~~~~~~~~~~~
  153 |         if (_Memory)
      | ~~~~~~~~~~~~
  154 |         {
      |         ~
  155 | _Memory = (char*)_Memory - _ALLOCA_S_MARKER_SIZE;
      | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  156 | _Marker = *(unsigned int*)_Memory;
      | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  157 |             if (_Marker == _ALLOCA_S_HEAP_MARKER)
      | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  158 |             {
      | ~
  159 |                 free(_Memory);
      | ~~~~~~~~~~~~~~
  160 |             }
      |             ~
  161 | #ifdef _ASSERTE
      |             ~~~~~~~~~~~~~~~
  162 | else if (_Marker != _ALLOCA_S_STACK_MARKER)
      | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  163 |             {
 |             ~
  164 |                 _ASSERTE(("Corrupted pointer passed to _freea" && 0));
      | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  165 | }
      |             ~
C:\Program Files (x86)\Windows Kits\10\include\10.0.22621.0\ucrt\malloc.h:150:29: note: but in '' found a different body
  150 |     __inline void __CRTDECL _freea(_Pre_maybenull_ _Post_invalid_ void* _Memory)
      | ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 151 |     {
      |     ~
  152 |         unsigned int _Marker;
 |         ~~~~~~~~~~~~~~~~~~~~~
  153 |         if (_Memory)
      | ~~~~~~~~~~~~
  154 |         {
      |         ~
  155 | _Memory = (char*)_Memory - _ALLOCA_S_MARKER_SIZE;
      | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  156 | _Marker = *(unsigned int*)_Memory;
      | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  157 |             if (_Marker == _ALLOCA_S_HEAP_MARKER)
      | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  158 |             {
      | ~
  159 |                 free(_Memory);
      | ~~~~~~~~~~~~~~
  160 |             }
      |             ~
  161 | #ifdef _ASSERTE
      |             ~~~~~~~~~~~~~~~
  162 | else if (_Marker != _ALLOCA_S_STACK_MARKER)
      | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  163 |             {
 |             ~
  164 |                 _ASSERTE(("Corrupted pointer passed to _freea" && 0));
      | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  165 | }
      |             ~
1 error generated.
```

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWElv47gS_jX0hZAgkdbigw-K7OA1uoMXJI33gLkIlFiyOUORAkm5k0v_9oEWr1k7A_RcQgheVKWqr76qUoFk1oqNAlii6ApFqxnr3Fab5ZcdU2ESzkrNH5eI0PHCa7UTRqsGlEPBCgXZ_4Xi-ofFYTD-zyVTGxymfuAHG-EwIunWudYimiFyjcj1RrhtV_qVbhC5lnK3__Jao_-EyuF6wdm8ioHxep6kjKYkpTEpec0WUEUhjSGtQhqWiCxGlzf3_8txmPipT8cb0-cB9B20RvOuAjNJ4mC8KkSu-mvS7-HhRnPiV217aqrRvJOA6NWFfaEq2XHAiOZMbrQRbtsguj7VgodWG4dHC4Pxo5k9jDOrb2ALP4DNOiPUptgJ-PEWuvDCkGj2Cu_FvQcwx1VfCmMUPjwA9qzjiK6mwEiAvVppj4Nkj8A9B00rmQOvZcYKtRmljfUq3bTMiVJI4R6x94AnA94Jpz0p2PNaA722kPBvoAhHFHVroOyEdJPIa5nbIrryR0xf1J5uRJKBV5LgkWbguDa6OaaZZknfN2Nj9b-i_NbojWENvhYSbN9dD2ncd0KU7zvxq3AWRXkYoCifimD46wc-ITEJ_V7QVcahKG-YlLryt4hmYRQgmpEFohkGY7TpfyCSFLUBYD3ILbOYi7oGA8phDrVQwgmtLBZqxIiHddQZA7WIXp2oY3HJgI9ovpG6ZLIvT5LgWhjrDnYqwMLiulPV8Hj_Rtq7C6MAoyQf3BaFUFIowDstOC6K_O77ap1_w_sA0uLWQNGwxxJUJ2WBi1ttXSHUjknBi-ExRDJc3ECjzePh9TI4-PnCQtH6JdErazIcRuEBPUquTjnc3_55jJQcbvarU8Nrm2OhHC5umPkLzKFDzzRfQ4DDiJ4pi7qvqScUHDA9b2N-ZuOFUC7CiQbB5AkjuuodV1tmEMkQWewFHi6yb9_-m2fFfXGT3X1d3xX3X_5YH0N9FtqvZAGHUTxhGVicsGSIpKckn8H6kPujv-SMlFPeDwh6EMfI_7PObqfw30jKO7ynT7w_k7ET_cUT_X71XXVeKm9xcrAYB88gWL1UM-d1E48t0w-4mkONi-z-fn33ff3q0y_hGFsKpIXLBJDwPAH337P86z_MwKV3-koeXiFg_mw6DjyQdLhIro3p2n6mtFooBwa3zFrg2OnDK5FgRGJEYhz0Mb0jhb8e5Njm70vv7xxxSjvov8vO9QMJkWQYPLpTHLOTEfbbp82bzH-OnM-R8zlyPkfOB6ruc-RcRheOex28AQWGOeD-s9vZGV9SvqALNoNlmARxSOM0CGbbZR1AQoNkQeY0LtM4ShPKy5rRgHAeRGQ-E0sSkHkQkjkhESWBH0c0LNkipvGc0AWlaB5Aw4T0pdw1vjabmbC2g2WyoGk8k6wEaYezGUIU_MCDEBGCotXMLIeDk7LbWDQPpLDOHq044eRwqJPvd7ooWqHo6mbak0WrD2zznu7tZp2Ry1874UHkeojCInI9RPl3AAAA__8Q2HpZ">