[clang-tools-extra] [clang-tidy] Fix handling --driver-mode= (PR #66553)

Radosław Śnieżek via cfe-commits cfe-commits at lists.llvm.org
Fri Feb 23 01:53:04 PST 2024


rsniezek wrote:

Let's move discussion from the other topic here. 

I have this minimalistic reproduction example:
main.cpp
```cpp 
#include <xmmintrin.h>
int main() { return 0; }
```

With CMakeLists.txt:
```cmake
cmake_minimum_required(VERSION 3.26)
project(testexe)

set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_STANDARD_REQUIRED)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
set(CMAKE_EXPORT_COMPILE_COMMANDS TRUE)
set(CMAKE_CXX_STANDARD_INCLUDE_DIRECTORIES
    ${CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES})
find_program(CLANGTIDY clang-tidy REQUIRED)
set(CMAKE_CXX_CLANG_TIDY ${CLANGTIDY};--checks=*; -p; ${CMAKE_BINARY_DIR})
add_executable(testexe main.cpp)
```

When I run the compilation from cmake level I get a intrinsics errors:
```
VERBOSE=1 cmake --build build
Change Dir: '/home/rsniezek/workspace/testings_stuff/build'

Run Build Command(s): /run/current-system/sw/bin/ninja -v
[1/2] /nix/store/jacf2kn4dfj99c3ywbvfyg6w53xvxsfl-cmake-3.27.8/bin/cmake -E __run_co_compile --tidy="/run/current-system/sw/bin/clang-tidy;--checks=*;-p;/home/rsniezek/workspace/testings_stuff/build;--extra-arg-before=--driver-mode=g++" --source=/home/rsniezek/workspace/testings_stuff/main.cpp -- /run/current-system/sw/bin/c++  -isystem /nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/include/c++/13.2.0 -isystem /nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/include/c++/13.2.0/x86_64-unknown-linux-gnu -isystem /nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/include/c++/13.2.0/backward -isystem /nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include -isystem /nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/include -isystem /nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include-fixed -isystem /nix/store/3mmvgb08qy8n6n37mnprf77fnp4rssi9-glibc-2.38-27-dev/include -std=gnu++23 -fPIE -MD -MT CMakeFiles/testexe.dir/main.cpp.o -MF CMakeFiles/testexe.dir/main.cpp.o.d -o CMakeFiles/testexe.dir/main.cpp.o -c /home/rsniezek/workspace/testings_stuff/main.cpp
FAILED: CMakeFiles/testexe.dir/main.cpp.o 
/nix/store/jacf2kn4dfj99c3ywbvfyg6w53xvxsfl-cmake-3.27.8/bin/cmake -E __run_co_compile --tidy="/run/current-system/sw/bin/clang-tidy;--checks=*;-p;/home/rsniezek/workspace/testings_stuff/build;--extra-arg-before=--driver-mode=g++" --source=/home/rsniezek/workspace/testings_stuff/main.cpp -- /run/current-system/sw/bin/c++  -isystem /nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/include/c++/13.2.0 -isystem /nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/include/c++/13.2.0/x86_64-unknown-linux-gnu -isystem /nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/include/c++/13.2.0/backward -isystem /nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include -isystem /nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/include -isystem /nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include-fixed -isystem /nix/store/3mmvgb08qy8n6n37mnprf77fnp4rssi9-glibc-2.38-27-dev/include -std=gnu++23 -fPIE -MD -MT CMakeFiles/testexe.dir/main.cpp.o -MF CMakeFiles/testexe.dir/main.cpp.o.d -o CMakeFiles/testexe.dir/main.cpp.o -c /home/rsniezek/workspace/testings_stuff/main.cpp
error: too many errors emitted, stopping now [clang-diagnostic-error]
/home/rsniezek/workspace/testings_stuff/main.cpp:1:1: warning: system include xmmintrin.h not allowed [llvmlibc-restrict-system-libc-headers]
    1 | #include <xmmintrin.h>
      | ^
note: this fix will not be applied because it overlaps with another fix
/home/rsniezek/workspace/testings_stuff/main.cpp:1:1: warning: included header xmmintrin.h is not used directly [misc-include-cleaner]
note: this fix will not be applied because it overlaps with another fix
/home/rsniezek/workspace/testings_stuff/main.cpp:3:5: warning: declaration must be declared within the '__llvm_libc' namespace [llvmlibc-implementation-in-namespace]
    3 | int main() { return 0; }
      |     ^
/home/rsniezek/workspace/testings_stuff/main.cpp:3:5: warning: use a trailing return type for this function [modernize-use-trailing-return-type]
    3 | int main() { return 0; }
      | ~~~ ^
      | auto       -> int
/nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include/xmmintrin.h:136:19: error: use of undeclared identifier '__builtin_ia32_addss' [clang-diagnostic-error]
  136 |   return (__m128) __builtin_ia32_addss ((__v4sf)__A, (__v4sf)__B);
      |                   ^
/nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include/xmmintrin.h:142:19: error: use of undeclared identifier '__builtin_ia32_subss' [clang-diagnostic-error]
  142 |   return (__m128) __builtin_ia32_subss ((__v4sf)__A, (__v4sf)__B);
      |                   ^
/nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include/xmmintrin.h:148:19: error: use of undeclared identifier '__builtin_ia32_mulss' [clang-diagnostic-error]
  148 |   return (__m128) __builtin_ia32_mulss ((__v4sf)__A, (__v4sf)__B);
      |                   ^
/nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include/xmmintrin.h:154:19: error: use of undeclared identifier '__builtin_ia32_divss'; did you mean '__builtin_ia32_minss'? [clang-diagnostic-error]
  154 |   return (__m128) __builtin_ia32_divss ((__v4sf)__A, (__v4sf)__B);
      |                   ^
/nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include/xmmintrin.h:148:19: note: '__builtin_ia32_minss' declared here
  148 |   return (__m128) __builtin_ia32_mulss ((__v4sf)__A, (__v4sf)__B);
      |                   ^
/nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include/xmmintrin.h:248:10: error: use of undeclared identifier '__builtin_ia32_andps'; did you mean '__builtin_ia32_haddps'? [clang-diagnostic-error]
  248 |   return __builtin_ia32_andps (__A, __B);
      |          ^
/nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include/xmmintrin.h:248:10: note: '__builtin_ia32_haddps' declared here
/nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include/xmmintrin.h:254:10: error: use of undeclared identifier '__builtin_ia32_andnps' [clang-diagnostic-error]
  254 |   return __builtin_ia32_andnps (__A, __B);
      |          ^
/nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include/xmmintrin.h:260:10: error: use of undeclared identifier '__builtin_ia32_orps' [clang-diagnostic-error]
  260 |   return __builtin_ia32_orps (__A, __B);
      |          ^
/nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include/xmmintrin.h:266:10: error: use of undeclared identifier '__builtin_ia32_xorps' [clang-diagnostic-error]
  266 |   return __builtin_ia32_xorps (__A, __B);
      |          ^
/nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include/xmmintrin.h:294:19: error: use of undeclared identifier '__builtin_ia32_movss' [clang-diagnostic-error]
  294 |   return (__m128) __builtin_ia32_movss ((__v4sf) __A,
      |                   ^
/nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include/xmmintrin.h:304:19: error: use of undeclared identifier '__builtin_ia32_movss' [clang-diagnostic-error]
  304 |   return (__m128) __builtin_ia32_movss ((__v4sf) __A,
      |                   ^
/nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include/xmmintrin.h:332:19: error: use of undeclared identifier '__builtin_ia32_movss' [clang-diagnostic-error]
  332 |   return (__m128) __builtin_ia32_movss ((__v4sf) __A,
      |                   ^
/nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include/xmmintrin.h:342:19: error: use of undeclared identifier '__builtin_ia32_movss' [clang-diagnostic-error]
  342 |   return (__m128) __builtin_ia32_movss ((__v4sf) __A,
      |                   ^
/nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include/xmmintrin.h:386:19: error: use of undeclared identifier '__builtin_ia32_cmpgtps'; did you mean '__builtin_ia32_cmpltps'? [clang-diagnostic-error]
  386 |   return (__m128) __builtin_ia32_cmpgtps ((__v4sf)__A, (__v4sf)__B);
      |                   ^
/nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include/xmmintrin.h:374:19: note: '__builtin_ia32_cmpltps' declared here
  374 |   return (__m128) __builtin_ia32_cmpltps ((__v4sf)__A, (__v4sf)__B);
      |                   ^
/nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include/xmmintrin.h:392:19: error: use of undeclared identifier '__builtin_ia32_cmpgeps'; did you mean '__builtin_ia32_cmpleps'? [clang-diagnostic-error]
  392 |   return (__m128) __builtin_ia32_cmpgeps ((__v4sf)__A, (__v4sf)__B);
      |                   ^
/nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include/xmmintrin.h:380:19: note: '__builtin_ia32_cmpleps' declared here
  380 |   return (__m128) __builtin_ia32_cmpleps ((__v4sf)__A, (__v4sf)__B);
      |                   ^
/nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include/xmmintrin.h:416:19: error: use of undeclared identifier '__builtin_ia32_cmpngtps'; did you mean '__builtin_ia32_cmpnltps'? [clang-diagnostic-error]
  416 |   return (__m128) __builtin_ia32_cmpngtps ((__v4sf)__A, (__v4sf)__B);
      |                   ^
/nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include/xmmintrin.h:386:19: note: '__builtin_ia32_cmpnltps' declared here
  386 |   return (__m128) __builtin_ia32_cmpgtps ((__v4sf)__A, (__v4sf)__B);
      |                   ^
/nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include/xmmintrin.h:422:19: error: use of undeclared identifier '__builtin_ia32_cmpngeps'; did you mean '__builtin_ia32_cmpnleps'? [clang-diagnostic-error]
  422 |   return (__m128) __builtin_ia32_cmpngeps ((__v4sf)__A, (__v4sf)__B);
      |                   ^
/nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include/xmmintrin.h:410:19: note: '__builtin_ia32_cmpnleps' declared here
  410 |   return (__m128) __builtin_ia32_cmpnleps ((__v4sf)__A, (__v4sf)__B);
      |                   ^
/nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include/xmmintrin.h:608:19: error: use of undeclared identifier '__builtin_ia32_cvtsi2ss'; did you mean '__builtin_ia32_cvtsd2ss'? [clang-diagnostic-error]
  608 |   return (__m128) __builtin_ia32_cvtsi2ss ((__v4sf) __A, __B);
      |                   ^
/nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include/xmmintrin.h:608:19: note: '__builtin_ia32_cvtsd2ss' declared here
/nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include/xmmintrin.h:608:58: error: cannot initialize a parameter of type '__attribute__((__vector_size__(2 * sizeof(double)))) double' (vector of 2 'double' values) with an lvalue of type 'int' [clang-diagnostic-error]
  608 |   return (__m128) __builtin_ia32_cvtsi2ss ((__v4sf) __A, __B);
      |                                                          ^~~
/nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include/xmmintrin.h:624:19: error: use of undeclared identifier '__builtin_ia32_cvtsi642ss'; did you mean '__builtin_ia32_cvtsd2ss'? [clang-diagnostic-error]
  624 |   return (__m128) __builtin_ia32_cvtsi642ss ((__v4sf) __A, __B);
      |                   ^
/nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include/xmmintrin.h:608:19: note: '__builtin_ia32_cvtsd2ss' declared here
  608 |   return (__m128) __builtin_ia32_cvtsi2ss ((__v4sf) __A, __B);
      |                   ^
11943 warnings and 20 errors generated.
Error while processing /home/rsniezek/workspace/testings_stuff/main.cpp.
Suppressed 11939 warnings (11939 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.
Found compiler error(s).
ninja: build stopped: subcommand failed.
```

If I bypass cmake and ninja, and invoke the clang-tidy as I expect ninja is doing, I get exact same result:
```
/run/current-system/sw/bin/clang-tidy --checks=* -p /home/rsniezek/workspace/testings_stuff/build --extra-arg-before=--driver-mode=g++ /home/rsniezek/workspace/testings_stuff/main.cpp -- /run/current-system/sw/bin/c++  -isystem /nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/include/c++/13.2.0 -isystem /nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/include/c++/13.2.0/x86_64-unknown-linux-gnu -isystem /nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/include/c++/13.2.0/backward -isystem /nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include -isystem /nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/include -isystem /nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include-fixed -isystem /nix/store/3mmvgb08qy8n6n37mnprf77fnp4rssi9-glibc-2.38-27-dev/include -std=gnu++23 -fPIE -MD -MT CMakeFiles/testexe.dir/main.cpp.o -MF CMakeFiles/testexe.dir/main.cpp.o.d -o CMakeFiles/testexe.dir/main.cpp.o -c /home/rsniezek/workspace/testings_stuff/main.cpp                                                                                                         
11943 warnings and 20 errors generated.
Error while processing /home/rsniezek/workspace/testings_stuff/main.cpp.
error: too many errors emitted, stopping now [clang-diagnostic-error]
/home/rsniezek/workspace/testings_stuff/main.cpp:1:1: warning: system include xmmintrin.h not allowed [llvmlibc-restrict-system-libc-headers]
    1 | #include <xmmintrin.h>
      | ^
note: this fix will not be applied because it overlaps with another fix
/home/rsniezek/workspace/testings_stuff/main.cpp:1:1: warning: included header xmmintrin.h is not used directly [misc-include-cleaner]
note: this fix will not be applied because it overlaps with another fix
/home/rsniezek/workspace/testings_stuff/main.cpp:3:5: warning: declaration must be declared within the '__llvm_libc' namespace [llvmlibc-implementation-in-namespace]
    3 | int main() { return 0; }
      |     ^
/home/rsniezek/workspace/testings_stuff/main.cpp:3:5: warning: use a trailing return type for this function [modernize-use-trailing-return-type]
    3 | int main() { return 0; }
      | ~~~ ^
      | auto       -> int
/nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include/xmmintrin.h:136:19: error: use of undeclared identifier '__builtin_ia32_addss' [clang-diagnostic-error]
  136 |   return (__m128) __builtin_ia32_addss ((__v4sf)__A, (__v4sf)__B);
      |                   ^
/nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include/xmmintrin.h:142:19: error: use of undeclared identifier '__builtin_ia32_subss' [clang-diagnostic-error]
  142 |   return (__m128) __builtin_ia32_subss ((__v4sf)__A, (__v4sf)__B);
      |                   ^
/nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include/xmmintrin.h:148:19: error: use of undeclared identifier '__builtin_ia32_mulss' [clang-diagnostic-error]
  148 |   return (__m128) __builtin_ia32_mulss ((__v4sf)__A, (__v4sf)__B);
      |                   ^
/nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include/xmmintrin.h:154:19: error: use of undeclared identifier '__builtin_ia32_divss'; did you mean '__builtin_ia32_minss'? [clang-diagnostic-error]
  154 |   return (__m128) __builtin_ia32_divss ((__v4sf)__A, (__v4sf)__B);
      |                   ^
/nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include/xmmintrin.h:148:19: note: '__builtin_ia32_minss' declared here
  148 |   return (__m128) __builtin_ia32_mulss ((__v4sf)__A, (__v4sf)__B);
      |                   ^
/nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include/xmmintrin.h:248:10: error: use of undeclared identifier '__builtin_ia32_andps'; did you mean '__builtin_ia32_haddps'? [clang-diagnostic-error]
  248 |   return __builtin_ia32_andps (__A, __B);
      |          ^
/nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include/xmmintrin.h:248:10: note: '__builtin_ia32_haddps' declared here
/nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include/xmmintrin.h:254:10: error: use of undeclared identifier '__builtin_ia32_andnps' [clang-diagnostic-error]
  254 |   return __builtin_ia32_andnps (__A, __B);
      |          ^
/nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include/xmmintrin.h:260:10: error: use of undeclared identifier '__builtin_ia32_orps' [clang-diagnostic-error]
  260 |   return __builtin_ia32_orps (__A, __B);
      |          ^
/nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include/xmmintrin.h:266:10: error: use of undeclared identifier '__builtin_ia32_xorps' [clang-diagnostic-error]
  266 |   return __builtin_ia32_xorps (__A, __B);
      |          ^
/nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include/xmmintrin.h:294:19: error: use of undeclared identifier '__builtin_ia32_movss' [clang-diagnostic-error]
  294 |   return (__m128) __builtin_ia32_movss ((__v4sf) __A,
      |                   ^
/nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include/xmmintrin.h:304:19: error: use of undeclared identifier '__builtin_ia32_movss' [clang-diagnostic-error]
  304 |   return (__m128) __builtin_ia32_movss ((__v4sf) __A,
      |                   ^
/nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include/xmmintrin.h:332:19: error: use of undeclared identifier '__builtin_ia32_movss' [clang-diagnostic-error]
  332 |   return (__m128) __builtin_ia32_movss ((__v4sf) __A,
      |                   ^
/nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include/xmmintrin.h:342:19: error: use of undeclared identifier '__builtin_ia32_movss' [clang-diagnostic-error]
  342 |   return (__m128) __builtin_ia32_movss ((__v4sf) __A,
      |                   ^
/nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include/xmmintrin.h:386:19: error: use of undeclared identifier '__builtin_ia32_cmpgtps'; did you mean '__builtin_ia32_cmpltps'? [clang-diagnostic-error]
  386 |   return (__m128) __builtin_ia32_cmpgtps ((__v4sf)__A, (__v4sf)__B);
      |                   ^
/nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include/xmmintrin.h:374:19: note: '__builtin_ia32_cmpltps' declared here
  374 |   return (__m128) __builtin_ia32_cmpltps ((__v4sf)__A, (__v4sf)__B);
      |                   ^
/nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include/xmmintrin.h:392:19: error: use of undeclared identifier '__builtin_ia32_cmpgeps'; did you mean '__builtin_ia32_cmpleps'? [clang-diagnostic-error]
  392 |   return (__m128) __builtin_ia32_cmpgeps ((__v4sf)__A, (__v4sf)__B);
      |                   ^
/nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include/xmmintrin.h:380:19: note: '__builtin_ia32_cmpleps' declared here
  380 |   return (__m128) __builtin_ia32_cmpleps ((__v4sf)__A, (__v4sf)__B);
      |                   ^
/nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include/xmmintrin.h:416:19: error: use of undeclared identifier '__builtin_ia32_cmpngtps'; did you mean '__builtin_ia32_cmpnltps'? [clang-diagnostic-error]
  416 |   return (__m128) __builtin_ia32_cmpngtps ((__v4sf)__A, (__v4sf)__B);
      |                   ^
/nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include/xmmintrin.h:386:19: note: '__builtin_ia32_cmpnltps' declared here
  386 |   return (__m128) __builtin_ia32_cmpgtps ((__v4sf)__A, (__v4sf)__B);
      |                   ^
/nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include/xmmintrin.h:422:19: error: use of undeclared identifier '__builtin_ia32_cmpngeps'; did you mean '__builtin_ia32_cmpnleps'? [clang-diagnostic-error]
  422 |   return (__m128) __builtin_ia32_cmpngeps ((__v4sf)__A, (__v4sf)__B);
      |                   ^
/nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include/xmmintrin.h:410:19: note: '__builtin_ia32_cmpnleps' declared here
  410 |   return (__m128) __builtin_ia32_cmpnleps ((__v4sf)__A, (__v4sf)__B);
      |                   ^
/nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include/xmmintrin.h:608:19: error: use of undeclared identifier '__builtin_ia32_cvtsi2ss'; did you mean '__builtin_ia32_cvtsd2ss'? [clang-diagnostic-error]
  608 |   return (__m128) __builtin_ia32_cvtsi2ss ((__v4sf) __A, __B);
      |                   ^
/nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include/xmmintrin.h:608:19: note: '__builtin_ia32_cvtsd2ss' declared here
/nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include/xmmintrin.h:608:58: error: cannot initialize a parameter of type '__attribute__((__vector_size__(2 * sizeof(double)))) double' (vector of 2 'double' values) with an lvalue of type 'int' [clang-diagnostic-error]
  608 |   return (__m128) __builtin_ia32_cvtsi2ss ((__v4sf) __A, __B);
      |                                                          ^~~
/nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include/xmmintrin.h:624:19: error: use of undeclared identifier '__builtin_ia32_cvtsi642ss'; did you mean '__builtin_ia32_cvtsd2ss'? [clang-diagnostic-error]
  624 |   return (__m128) __builtin_ia32_cvtsi642ss ((__v4sf) __A, __B);
      |                   ^
/nix/store/lbamp822r4dmq2f7vizvswbilk83awsr-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/include/xmmintrin.h:608:19: note: '__builtin_ia32_cvtsd2ss' declared here
  608 |   return (__m128) __builtin_ia32_cvtsi2ss ((__v4sf) __A, __B);
      |                   ^
Suppressed 11939 warnings (11939 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.
Found compiler error(s).
```

adding --driver-mode=g++ after the -- doesn't change anything, still the same errors.
removing -- and all after it also doesn't change a thing, same errors visible.
only if I leave the -- and nothing after it, I am able to successfully run the checks:
```
/run/current-system/sw/bin/clang-tidy --checks=* -p /home/rsniezek/workspace/testings_stuff/build --extra-arg-before=--driver-mode=g++ /home/rsniezek/workspace/testings_stuff/main.cpp --
11278 warnings generated.
/home/rsniezek/workspace/testings_stuff/main.cpp:1:1: warning: system include xmmintrin.h not allowed [llvmlibc-restrict-system-libc-headers]
    1 | #include <xmmintrin.h>
      | ^
note: this fix will not be applied because it overlaps with another fix
/home/rsniezek/workspace/testings_stuff/main.cpp:1:1: warning: included header xmmintrin.h is not used directly [misc-include-cleaner]
note: this fix will not be applied because it overlaps with another fix
/home/rsniezek/workspace/testings_stuff/main.cpp:3:5: warning: declaration must be declared within the '__llvm_libc' namespace [llvmlibc-implementation-in-namespace]
    3 | int main() { return 0; }
      |     ^
/home/rsniezek/workspace/testings_stuff/main.cpp:3:5: warning: use a trailing return type for this function [modernize-use-trailing-return-type]
    3 | int main() { return 0; }
      | ~~~ ^
      | auto       -> int
Suppressed 11274 warnings (11274 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.
```

Would your merge improve this situation?


https://github.com/llvm/llvm-project/pull/66553


More information about the cfe-commits mailing list