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

    <tr>
        <th>Summary</th>
        <td>
            misc-use-internal-linkage warns on exported functions
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang-tidy
      </td>
    </tr>

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

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

<pre>
    The following code gets warned on by misc-use-internal-linkage (note that the definition is in another source file).

```cpp
module;
#include <string>
#include <string_view>

export module greeter;

export std::string greet(std::string_view greeting, std::string_view name);
```
```
FAILED: source/module_interface/CMakeFiles/greeter_module.dir/greeter_module.cpp.o source/module_interface/CMakeFiles/greeter_module.dir/greeter.pcm 
/usr/local/bin/cmake -E __run_co_compile --tidy="/usr/bin/clang-tidy;-p=/build/test/default-options/tests/llvm/Output/Debug.test.tmp/build;--enable-module-headers-parsing;--use-color;--extra-arg-before=--driver-mode=g++" --source=/build/test/default-options/tests/llvm/Output/Debug.test.tmp/llvm_toolchain/source/module_interface/greeter_module.cpp -- /usr/bin/clang++ --target=x86_64-unknown-linux-gnu -fdiagnostics-color=always -fstack-protector-strong -fvisibility=hidden -Werror -pedantic -Wall -Wattributes -Wcast-align -Wconversion -Wdouble-promotion -Wextra -Wformat=2 -Wnon-virtual-dtor -Wnull-dereference -Wodr -Wold-style-cast -Woverloaded-virtual -Wshadow -Wsign-conversion -Wsign-promo -Wunused -Wno-ignored-attributes -Wno-unused-command-line-argument -stdlib=libc++ -D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_FAST -fsanitize=address,undefined -fno-sanitize-recover=all -g -std=gnu++23 -MD -MT source/module_interface/CMakeFiles/greeter_module.dir/greeter_module.cpp.o -MF source/module_interface/CMakeFiles/greeter_module.dir/greeter_module.cpp.o.d @source/module_interface/CMakeFiles/greeter_module.dir/greeter_module.cpp.o.modmap -o source/module_interface/CMakeFiles/greeter_module.dir/greeter_module.cpp.o -c /build/test/default-options/tests/llvm/Output/Debug.test.tmp/llvm_toolchain/source/module_interface/greeter_module.cpp
/build/test/default-options/tests/llvm/Output/Debug.test.tmp/llvm_toolchain/source/module_interface/greeter_module.cpp:7:20: error: function 'greet' can be made static or moved into an anonymous namespace to enforce internal linkage [misc-use-internal-linkage,-warnings-as-errors]
    7 | export std::string greet(std::string_view greeting, std::string_view name);
      | ^
30786 warnings generated.
Suppressed 30785 warnings (30785 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
1 warning treated as error
```

**System info**

```
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 24.04 LTS
Release:        24.04
Codename:       noble
```
```
$ clang --version
Ubuntu clang version 19.0.0 (++20240615071947+8cc6a2469c95-1~exp1~20240615071959.215)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/lib/llvm-19/bin
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMV0tv4zgS_jXMpUBDpvw8-GBH8W6ATs9gkoGPBkWWZE4oUuDDSfYwv31BSo67ezqLPXQPxhBku6pYrJc-fuLeq9Ygbsh8R-bVDY_hZN1G_CHrm9rKt83TCaGxWtsXZVoQViK0GDy8cGdQgjVQv0GnvKDRI1UmoDNcU63MM28RCFsZGxDCiQcIJwSJjTIqKGtAeVAGuLHhhA68jU4gNEojYesJKSpSbMf7ohgu0feDpLMyaiTlbjRgpTJCR4lAylsfnDItKe8-Vh7PCl-uFvmOr711AQbX0DrEgO66xZc2PkhSbkm5HbwNxoStvpHnXQZlCojdfrtwMDC8Sylft7qk-92_--39p7uKlNuxYoTth5CPufgNz6LbB_6Me6XRE7YfczkOdhOp3F-Fou8n9se4nPSig0vt99EnlbaCa8L2tTKE7UXHnxHoHRyPLpqjsEdhu15pBEqDkm-krAhj74vHRZqbdlTvaJ9t9nVUWhK2D-gDYXuJDY86UNunCfOjIn1rfe4I2_8SQx-TZYV1bCdJOwld_-6p3FGKhtca6ZAaPSGX6DztufN5rHY0j7qw2rrB_jU4TrlraY2NdUjKilLp1BldcpL-t4Tt8sWA0rHIPzj-ZHAM1mpx4rle_6uXf20-UArfK_gQeOoLdy0GUlavq8VxMaPRPBv7YtKTHl9payLQRireGuuDEv5Sn4rrF_7mgTY-cPFMe2cDimAd9cFZ0wJtzsqrWmkVUt9PSko0QA_onHVAe5TcBCWAHrjW6R6CU3UM6IEeBPeBcq3atEJYc0bnE7TQg7QxNbF3trNhEOU-AT001nU8ZcKAHow19KxciFxTGdKOBxO1phIdNujQCAR6sDIprJbUhzeNNO2bBGd02nKJ8uID6MGfuLQv6YdqDf0qqCzJIQE9RBM9yhwCVa2xDiX9Kjlj6WBDhe06bmSqNaZBix2aANQHqVVNykqrWlwaVR0_3e9uf_31-O_tb9Xd5_vP_zo-_FLdkfIDxXG_fXxK7eEJlv-T5pJL6dB7wm6jyXidwmyMpRcb6lCk3HN7NdA2x5Lm3MQhDlYCfaiAPjz9DJiiD_uf4HYigcyKn-C3s7LjPdAfhK_f1ELAPwlH3nH_nxNRuV2ScsuKdGZmVEk_mmhExgXCluPxvQTBDdQIHZcIPvAEO9ZBZ88oQZlggWe-Yt46G30-t33PBUKwgKaxib9cGBC8M6D57kN6RNgtTURKmdZT7mmOzpN5NVQRAGAJZHkLfwvvgPxJ25H5yIzKYrlawCVEaNGg4wHlSM8eY98npEAJyXJ-tSRsNUiUgQSx0aPL7PHK7X73COPpShulM9mqJoRtUzml8r3mb0O_PDTOdpCgJvnybz5gB-PBPIHsaBBeTuuPXHy9FLiHF9R6DGh6CR-Cw5Rl0g8D811eNk56uh4Hv8o0dhB8l75eVsxA-_roUCNPofNB_tnCp8fdyD89cIfAz1zpREbGCCvlh_PBOrjPHPD3OpoQRy164VR-vpIKYNQCm02KGXx6ehzsfhs2Hm3SJxsMylsrMQ_Gu9bYWuP_w0xTYpkzAKXjmTd2eghj0F1Ow-l6UkyKNCjjiVGwWbGYzovldD1bErZbCbHgbLZYi_WcTv_E137655dG8_WETedpgPMmTyM_2cJIUHpx5Sajyckhl6nCqJNhb716HVT3xgeuNcpKZXi4EldVjxBEp-uRGn2d_I3clHJdrvkNbqbL6XrJyrJkN6dNLWZTjpLPmqbEpWjm6_lCzleLWbOcLcR6daM2Qz5lUczm85JNlrN6Vq5kPW2mxUquFmRWYMeVnqT9J9a1N8r7iJv1croubjSvUfv85sbYF-yYsfQm5zY56Dq2nswKrXzwVzdBBY2bj1_b0oPg08vdADwo3_HS30SnN6cQep8Qhe0T5qpwivVE2O4K53nz3tk_UCRQz3EntB9CP2_YfwMAAP__1iPHRw">