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

    <tr>
        <th>Summary</th>
        <td>
            [offload] `rtl.cpp` fails to build with GCC: `ErrorReporting.h:93:3: error: ‘format’ attribute argument 3 value ‘3’ does not refer to a variable argument list`
        </td>
    </tr>

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

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

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

<pre>
    While testing standalone builds, I've also noticed that `rtl.cpp` does not compile with GCC 14.2.1:

```
[1/9] Building CXX object plugins-nextgen/common/CMakeFiles/PluginCommon.dir/src/PluginInterface.cpp.o
FAILED: plugins-nextgen/common/CMakeFiles/PluginCommon.dir/src/PluginInterface.cpp.o 
/usr/bin/c++ -DDEBUG_PREFIX=\"PluginInterface\" -DLIBC_NAMESPACE=__llvm_libc_common_utils -DOMPT_SUPPORT=1 -DTARGET_NAME=\"PluginInterface\" -I/usr/lib/llvm/20/include -I/home/mgorny/git/llvm-project/offload/plugins-nextgen/common/include -I/home/mgorny/git/llvm-project/offload/build/include -I/home/mgorny/git/llvm-project/offload/include -I/home/mgorny/git/llvm-project/runtimes/cmake/Modules/../../../libc -O3 -DNDEBUG -std=c++17 -fPIC -fno-exceptions -MD -MT plugins-nextgen/common/CMakeFiles/PluginCommon.dir/src/PluginInterface.cpp.o -MF plugins-nextgen/common/CMakeFiles/PluginCommon.dir/src/PluginInterface.cpp.o.d -o plugins-nextgen/common/CMakeFiles/PluginCommon.dir/src/PluginInterface.cpp.o -c /home/mgorny/git/llvm-project/offload/plugins-nextgen/common/src/PluginInterface.cpp
In file included from /home/mgorny/git/llvm-project/offload/plugins-nextgen/common/src/PluginInterface.cpp:17:
/home/mgorny/git/llvm-project/offload/plugins-nextgen/common/include/ErrorReporting.h: In substitution of ‘template<class ... ArgsTy> static void llvm::omp::target::plugin::ErrorReporter::print(ColorTy, const char*, ArgsTy&& ...) [with ArgsTy = {const char* const&}]’:
/home/mgorny/git/llvm-project/offload/plugins-nextgen/common/include/ErrorReporting.h:104:10:   required from here
  104 |     print(BoldRed, "%s", ErrorBanner);
      |     ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/mgorny/git/llvm-project/offload/plugins-nextgen/common/include/ErrorReporting.h:93:3: error: ‘format’ attribute argument 3 value ‘3’ does not refer to a variable argument list
   93 |   print(ColorTy Color, const char *Format, ArgsTy &&...Args) {
      |   ^~~~~
/home/mgorny/git/llvm-project/offload/plugins-nextgen/common/include/ErrorReporting.h: In substitution of ‘template<class ... ArgsTy> static void llvm::omp::target::plugin::ErrorReporter::reportError(const char*, ArgsTy&& ...) [with ArgsTy = {const char*&}]’:
/home/mgorny/git/llvm-project/offload/plugins-nextgen/common/include/ErrorReporting.h:110:57:   required from here
  110 |   static void reportError(const char *Str) { reportError("%s", Str); }
      |                                              ~~~~~~~~~~~^~~~~~~~~~~
/home/mgorny/git/llvm-project/offload/plugins-nextgen/common/include/ErrorReporting.h:102:49: error: ‘format’ attribute argument 3 value ‘2’ does not refer to a variable argument list
  102 |   [[gnu::format(__printf__, 1, 2)]] static void reportError(const char *Format,
      |                                                 ^~~~~~~~~~~
/home/mgorny/git/llvm-project/offload/plugins-nextgen/common/include/ErrorReporting.h: In substitution of ‘template<class ... ArgsTy> static void llvm::omp::target::plugin::ErrorReporter::print(const char*, ArgsTy&& ...) [with ArgsTy = {const char*&}]’:
/home/mgorny/git/llvm-project/offload/plugins-nextgen/common/include/ErrorReporting.h:111:45:   required from here
  111 |   static void print(const char *Str) { print("%s", Str); }
      |                                        ~~~~~^~~~~~~~~~~
[…]
```

Mostly wondering if it's a problem with the code or limitation of GCC.

That's against e0ed0333f0fed2e73f805afd58b61176a87aa3ad. To reproduce (sample using Gentoo paths):

```
cmake ${llvm_checkout}/offload -G Ninja -DFFI_INCLUDE_DIR=/usr/lib64/libffi/include -DFFI_LIBRARY_DIR=/usr/lib64
ninja
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzkWN9v2zgS_mvGLwMJEmlZ1oMf9MMKDDRtkLq43pNBSZTNLSX6SCrdvOzffqDkOK6v3d3bNrniVkgk2iSHw2---eQhM0bse85XEGUQFTM22IPSq26vdP84q1TzuPrHQUiOlhsr-j0ay_qGSdVzrAYhGwMkxw2Q-IEjk0Zhr6yoeYP2wCzCItBW-vXxCIsAG8WN68dadUdn9LOwB7zJcwznPvFDoCkE498iOP0FKURZCKRMICowcys6L_KPH1FVv_Da4lEOe9Ebr-e_2j3vgZS16jrlGvkt-8RLIbkBUt6N4_Kxz2-EBlIaXZ87Nr3lumU1d876CoK0TDdv1gXQ9IWWQLc5Ug7GjavEaBZIBiRDryjW2Yeb3d39utx8BFpAlAMhV2amL9Er3myyfPc2vV2_v0vzNdBit5PyodtJUdW7ydXdYIU06BXvbu-2u_cf7u7e3W-BFiF6xTa9v1lvRwN_tNTm7LAUlbvLhw5ISQIgpehrOTR8GnRQHQdSTjwCUu6FPQ33jlq5wAEpVdtKxRog5e8g_D1mR4Z-p43_fq4eeiu6kRF1xz65CbeqGSaO-P4XNxci9N5R9Iq3Y8zRM7YBWpyoEMbotXebHL22Vx7_teZHK1Rv0Lst0LvdvhQ3vdvyhUz7DXrqxdyu8YeS75trQZBuemydiJ0I0mCrVfday9M0jE9y-QLJBqRca630PT8q7WTfPzgd3PRohspYYQdHQlQtwprAMoBkaXl3lMxyoHktmTHo-z6mem-2j0DX7rVhRY0PSjQ4igZNgaaqO04Ny_Se26k9uTe1L7zg-tStRW-BLHMlld4-utdPrXpjsT4wDSR1X5zWJQsgC-cIkAQhysbXzdSHQAuEOPti6mTITYsLiIqnvSWvDXQYzMe7wxxR838NQj_x68A1hyBFDIM5Qpyju54wyZRs7nnjIABCgERmfOQ4LpKxvucaSAI0G02468nEb-6CaP3bt69XxSChQFP3j9x1usaZa63SHbPn8CCzVotqsByZ3g8d7y1SfGBy4M9z6PPw888QzVuu0Spk-MC0YJW8sCCFsRNKCT2hdEU9HJ9fEhCBpOXk3pmHOBHR9333eeRifB2AE_J_w3zW46exA8jyR6XyT5DEY_5G8e8ncRicCHAJ6LcgceR6b_WJQVfDvkz4aRjQDB0M18n-p6_L7L_UhleWQwI0nSc_TgzIXxaDMCDnjM0gyvb9MNH45AZZ7najTLS7nYtD6G7EhSJybPzTYT5ryF-P3bOq_A9i9nNoy5Ng_z-piquS59EfqEr4FVX5TzCu9ORpwA9Wkq-rR5SdMEwXDs-rmj9Ib5Wx8hE_q77h2pX8okUHaWyQ4VGrSvJuOj-wB461ajgqjVJ0wm15ItxNnvuTte2BnebumXDb5wFvAkppG7S8ITym7TKIWNtEy2oRhvGCLWPGKGt83CqXqFo1Q80RyNKw7ig5DsY5dcN7qxQemT2YEaWvHGCMNSACmUOcjWV5feD1JzVYh-eZE-jd4FvR_8LQK8pys9u8zd98KNa7YnPvivKLsnsxn55tKy7L03HWm012n97_8-uzgrR3C1y6N2tWtElowmZ8FcaURnESRNHssGpaHi1500QJa-IgolEQMUbDes4WAalYMBMrEpB5SII4pPN5OPdpEjUVSUIS0eWcJQ3MA94xIX23Z1_p_UwYM_BVGCbBIplJVnFpxmMnQnr-Gcdex7momOnVmDjVsDcwD5z4mmczVlg5nlc9ZVNUXJ0ztUxI46R8rP_Pp0zja2MR_LQ_NhfBbNBydbD2aByTSDnpyGGo_Fp1z8ctV6oyIueK5RO0Dyvy7wAAAP__8ZxFWQ">