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

    <tr>
        <th>Summary</th>
        <td>
            clang doesn't apply -Wconversion flag when including header from include search path
        </td>
    </tr>

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

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

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

<pre>
    * Scenario no. 1 (everything is as expected, i.e. the narrowing conversion is caught at compile-time):

```c
/* file.c */

/* Compile with: clang -std=c11 file.c -Wall -Wextra -Wpedantic -Wconversion -Werror */

#include <assert.h>
#include <inttypes.h>
#include <unistd.h>

#define SOME_WEIRD_MACRO(type, a, b) \
  do { \
    type tmp1 = a; \
    type tmp2 = b; \
    return tmp1 == tmp2; \
  } while (0)

int main(void) {
  unsigned long long size = (unsigned long long)-1;
 SOME_WEIRD_MACRO(int, 0, size); // ERROR (see below)
}

/*

file.c:16:28: error: implicit conversion loses integer precision: 'unsigned long long' to 'int' [-Werror,-Wshorten-64-to-32]
  SOME_WEIRD_MACRO(int, 0, size);
 ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~
file.c:10:17: note: expanded from macro 'SOME_WEIRD_MACRO'
    type tmp2 = b; \
         ~~~~   ^
1 error generated.

*/

```

* Scenario no. 2 (presumed bug: the narrowing conversion is not caught at compile-time; no errors, no warnings):

```c
/* /usr/local/include/my_weird_macro.h */

#include <assert.h>
#include <inttypes.h>
#include <unistd.h>

#define SOME_WEIRD_MACRO(type, a, b) \
  do { \
    type tmp1 = a; \
    type tmp2 = b; \
    return tmp1 == tmp2; \
  } while (0)

```

```c
/* file.c */

/* Compile with: clang -std=c11 file.c -Wall -Wextra -Wpedantic -Wconversion -Werror */

#include <my_weird_macro.h>

int main(void) {
  unsigned long long size = (unsigned long long)-1;
  SOME_WEIRD_MACRO(int, 0, size); // OK for some reason
}

```

Note: if scenario no. 2 is modified such that `my_weird_macro.h` is included from the same directory as `file.c` (i.e. moving it locally and doing `#include "my_weird_macro.h"` instead of `#include <my_weird_macro.h>`), then the compiler reports the conversion error.

Version info (package downloaded from: https://github.com/llvm/llvm-project/releases/download/llvmorg-17.0.6/clang+llvm-17.0.6-x86_64-linux-gnu-ubuntu-22.04.tar.xz):

```
clang version 17.0.6 (https://github.com/llvm/llvm-project 6009708b4367171ccdbf4b5905cb6a803753fe18)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /usr/local/bin/clang-17/bin
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsV0Fv2zoS_jX0ZSCBomxJPviQxDFQLLoB0sXmGFDiSOKWIgWSipMe9rc_kJJbJ3GKFnjv8IBnBHTMGY5mvvnmM82dk51G3JHNNdnsV3zyvbE7qWUzKb6qjXjZEXYFXxrU3EoD2qSQAWEVPqF98b3UHUgH3AE-j9h4FITdgEwxBd8jaG6tOQanxugntE4aHfwbPnW9B-6hMcMoFSZeDkjYluRXhO4JPa0Fnf-a5TM7hHRaqTBtgLC4ce4_22_moHCUvif5FTSK6w4S5wXJ902WnQIkD1wpSB7w2VsOycOIgmsvg-Es3-QBrTX24uNyqRs1CQSS33Dn0Pq0J_ntJbPU3r-M6D50mLR0XpybT04CW6kRvtx9vn18uP10v3_8fHVzf0dYFSIGxHlYasK2QDY38zkAYYCU1-c7AOEA-GHMgOR74CT_wM6ivX5nt-gnq79HCE7B-40fKfdw7EMLCKto6OtZQVJ7GLjUhFVPRoqYdHl9OjrpSEkByuhuXpz8hjEdwqr3ZsK2SUbyU4ALIEntAzw0LCFW5Nk1RLIc4Pb-_u4-hHaIUKMyxx_5lvv37DrfmXlE8qusIPkVqwLZIlnCP3IYlWykP-e-Mg4dSO2xQwujxUaG_eBOWHmpuBK8CbZYRAlkc73wkbCb5MH1xnrUSbFOvElyRjb7E5C_DMRy4P8fvcjmNr69qZiGpQyZa-MxVv48ci1QQGvNAANvbMz8fSLlr_MtvsLjAYBslsHIZpChQ42WexTp6za9m9OTjLxxe61rLJBgtOimAQXUUxdq-pmKaeM_UrL8GrSZs3QBbW3gyK2WunO_rHKEHSZnCTso03BF2GHRCsIOw8vjEaUVjxHktP9Hm_4kbbrMlL_Tt9Bbarzp2F8rvr-vvnf_gtZYcGZAsMid0Zel91Jf_r3ojmzBvR5k6WAwQrYSBbip6cH33AMp6Dt0ChqcF_wW5Qoz7_iAIKTFxhv7Ei44pKCL-BU0gBEvOYN5ilcgD3FI1QtwLUCYsBmyPWsNY-8ezlh8vnYeuQDTvj1yuZtFJC27CXnqmOwiPRYsjsZ6t2x-505kziuN_O9JxXRrouzx5ivvEIQ5amX4CYqAbu_96IJixYZ10vdTnTZmCMKknk5vyWjN_7DxhB0sKuQOHWGHU7jFydguycqUpgVhhzgOhF3H0_Nu8lwVj8U6UVJPz0mnp2SqJ-2nhLGUrlPPbfr87Sf6OX-c5-xU-xw51Ph7hUBB6bakVb3OizIrs6YRdbuuN1u6aeqCVzQvN3mLWfVdQf7DbYc-QLaUMemv2hz1j3IWv96Gdg9GoAreo3HyeTZ90s5zpVDspZ3vBG--AuowuTN0SVYuG69BWIldLrb5lq9wl5W0KrKKZdmq3zFGWZbVJd1seZOtGVvTushL3vI6L2nFVnLHKFtTxlhWZJRu03VRY87aRuTttmlxTdYUBy5VGoBKje1W0rkJdxUr1puV4jUqF39KMLZ0N1xIVnYXga2nzpE1VdJ59yOCl17hbu6ZMOg0YaUHPo7q5bUAtop3cAyUn-cjjFiPXKCdp_Y0NQ65bXoYue9Xk1W73-ZvrCmwN5b1RwAAAP__07nj8g">