Uploaded image for project: 'Qt Creator'
  1. Qt Creator
  2. QTCREATORBUG-17102

ClangStaticAnalyzer: Fails with Clang toolchain due to wrong/mulitiple instrinsics path

    XMLWordPrintable

Details

    Description

      1. Set up a Kit with a clang exectuable as toolchain
      2. Set up a clang executable for the ClangStaticAnalyzer that is different from step 1
      3. Open ${QTCREATOR_SOURCE}/src/plugins/clangstaticanalyzer/unit-tests/stdc+11-includes/stdc+11-includes.pro with the Kit from the step before
      4. Run the analyzer

      The very first error is:

      In file included from /home/nik/dev/creator/creator-4.2/src/plugins/clangstaticanalyzer/unit-tests/stdc++11-includes/main.cpp:3:
      In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/algorithm:62:
      In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/bits/stl_algo.h:66:
      In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/random:50:
      In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/x86_64-linux-gnu/c++/5.4.0/bits/opt_random.h:33:
      In file included from /usr/lib/llvm-3.8/bin/../lib/clang/3.8.0/include/x86intrin.h:29:
      In file included from /usr/lib/llvm-3.8/bin/../lib/clang/3.8.0/include/immintrin.h:29:
      /usr/lib/llvm-3.8/bin/../lib/clang/3.8.0/include/xmmintrin.h:646:3: error: use of undeclared identifier '__builtin_ia32_storeups'
        __builtin_ia32_storeups(__p, __a);
        ^
      

      This is due to the following include paths that are used:

      #include "..." search starts here:
      #include <...> search starts here:
       /home/nik/work/csaTestSessionProjects/stdc++11-includes
       /home/nik/work/csaTestSessionProjects/build-stdc++11-includes-Qt_5_6_1_gcc_64_with_Clang_x86_64bit_in_usr_bin-Debug
       /home/nik/usr/qt-5.6.1-1/5.6/gcc_64/mkspecs/linux-clang
       /usr/lib/llvm-3.8/bin/../lib/clang/3.8.0/include
       /usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0
       /usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/x86_64-linux-gnu/c++/5.4.0
       /usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/backward
       /usr/local/include
       /home/nik/dev/llvm/3.9/installs/gcc54_rtti/bin/../lib/clang/3.9.1/include
       /usr/include/x86_64-linux-gnu
       /usr/include
      End of search list.
      

      Note that there are two include paths to the intrinsics - path /usr/lib/llvm-3.8/bin/../lib/clang/3.8.0/include and /home/nik/dev/llvm/3.9/installs/gcc54_rtti/bin/../lib/clang/3.9.1/include.

      The first one comes from the toolchain, the second one from the clang static analyzer executable. The clang static analyzer executable is confronted with the instrinsics include path to another clang version.

      There should be only one include path to instrinsics. It should be the one from the clang static analyzer executable.

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            kosjar Nikolai Kosjar
            kosjar Nikolai Kosjar
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes