Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CTU not working #3012

Closed
jimis opened this issue Nov 9, 2020 · 29 comments
Closed

CTU not working #3012

jimis opened this issue Nov 9, 2020 · 29 comments
Assignees
Labels
analyzer 📈 Related to the analyze commands (analysis driver) clang sa 🐉 The Clang Static Analyzer is a source code analysis tool that finds bugs in C-family programs.

Comments

@jimis
Copy link
Contributor

jimis commented Nov 9, 2020

  1. CTU analysis in combination to --ctu-ast-mode parse-on-demand is causing clangsa segfaults as reported at https://bugs.llvm.org/show_bug.cgi?id=47998
  2. CTU analysis fails for many files with errors of the type "unsupported AST node" CXXFoldExpr or ShuffleVectorExpr as reported here and here
  3. Because of that I am happy I can use --ctu-reanalyze-on-failure flag, but this one is marked as deprecated.

What is the recommended course of action, given that I don't see much activity on the LLVM bugtracker?

@martong
Copy link
Contributor

martong commented Nov 10, 2020

Thanks for reporting the issues!

The unsupported nodes for CXXFoldExpr or ShuffleVectorExpr are fairly easy to implement in ASTNodeImporter (and any contribution is welcome). It simply means that we didn't have time to implement all (newer) C++ expressions in the Importer.

I had a look at the 47K long stack trace you mention, and it requires further investigation.

@jimis
Copy link
Contributor Author

jimis commented Nov 10, 2020

Thank you, I'm glad I cross posted the issues then. :-)

Regarding the new nodes implementation in ASTNodeImporter, is there some patch that implements similar functionality? I'm curious to see if this is something I can pick.

Could the segfault be a stack overflow, maybe because of infinite recursion?

@jimis
Copy link
Contributor Author

jimis commented Nov 10, 2020

The other issue remains that --ctu-reanalyze-on-failure is shouting DEPRECATED while it's very useful given that CTU fails so often. At this point it might even be the default. :-)

@martong
Copy link
Contributor

martong commented Nov 10, 2020

I've already posted answers to bugzilla, but I prefer github, so let's communicate here.

Regarding the new nodes implementation in ASTNodeImporter, is there some patch that implements similar functionality? I'm curious to see if this is something I can pick.

Thanks, any contribution is welcome. Perhaps the implementation could be somewhat similar to SizeOfPackExpr. Basicly, you have to simply import the dependent nodes (i.e. the subexpressions, etc.).

Could the segfault be a stack overflow, maybe because of infinite recursion?

Yes, could you please check if there is a loop in the stack trace? If yes, could you please attach that (with at least two full iterations). Maybe there is something wrong with our ASTUnit caching mechanism in cross_tu::CrossTranslationUnitContext.

@jimis
Copy link
Contributor Author

jimis commented Nov 10, 2020

Thanks, any contribution is welcome. Perhaps the implementation could be somewhat similar to SizeOfPackExpr. Basicly, you have to simply import the dependent nodes (i.e. the subexpressions, etc.).

Can you point me to the source on the web?

Yes, could you please check if there is a loop in the stack trace? If yes, could you please attach that (with at least two full iterations). Maybe there is something wrong with our ASTUnit caching mechanism in cross_tu::CrossTranslationUnitContext.

I had looked for loops, but the backtrace was so long and complicated that I couldn't find one. FWIW I tried capturing the crash with both gdb and lldb, still couldn't find a loop. I wonder if there is a tool to do that automatically.

@martong
Copy link
Contributor

martong commented Nov 10, 2020

@jimis
Copy link
Contributor Author

jimis commented Nov 10, 2020

Hmmm, this goes outside my understanding so I'll have to pass, for now at least.

@martong
Copy link
Contributor

martong commented Nov 10, 2020

Yes, could you please check if there is a loop in the stack trace? If yes, could you please attach that (with at least two full iterations). Maybe there is something wrong with our ASTUnit caching mechanism in cross_tu::CrossTranslationUnitContext.

I had looked for loops, but the backtrace was so long and complicated that I couldn't find one. FWIW I tried capturing the crash with both gdb and lldb, still couldn't find a loop. I wonder if there is a tool to do that automatically.

There must be a failed directory under the results directory which should contain a zip file with the name of the file that caused the stack overflow. This should contain all dependent headers and other translation units needed for CTU analysis. If possible could you please attach that zip file?

Also, you then please provide the following information?

  • The version (git-hash) of the analyzed open-source project. (It was Qt, right?)
  • The version of the OS. This could be important because of the content of the C++ header files.

Maybe, with all this info we can reproduce the stack overflow.

@martong
Copy link
Contributor

martong commented Nov 10, 2020

I wonder if there is a tool to do that automatically.

What you can do is to save the output of the debugger in a txt file. Then highlight one stack-frame with the address of the function and with the address of the first parameter. Then search the highlighted text in the whole output, between the two search results we should have a possible circle.

@jimis
Copy link
Contributor Author

jimis commented Nov 11, 2020

I have just reproduced the segfault. Full command line and output:

/usr/lib/llvm-11/bin/clang --analyze -Qunused-arguments -Xclang -analyzer-opt-analyze-headers -Xclang -analyzer-output=plist-multi-file -o /tmp/tmp.LVaC4CD1AH/qobject.cpp_clangsa_bf2adf6e71fd14c25357d49c0f567c87.plist -Xclang -analyzer-config -Xclang expand-macros=true -Xclang -analyzer-checker=apiModeling.StdCLibraryFunctions -Xclang -analyzer-checker=apiModeling.TrustNonnull -Xclang -analyzer-checker=apiModeling.google.GTest -Xclang -analyzer-checker=apiModeling.llvm.CastValue -Xclang -analyzer-checker=apiModeling.llvm.ReturnValue -Xclang -analyzer-checker=core.CallAndMessage -Xclang -analyzer-checker=core.CallAndMessageModeling -Xclang -analyzer-checker=core.DivideZero -Xclang -analyzer-checker=core.DynamicTypePropagation -Xclang -analyzer-checker=core.NonNullParamChecker -Xclang -analyzer-checker=core.NonnilStringConstants -Xclang -analyzer-checker=core.NullDereference -Xclang -analyzer-checker=core.StackAddrEscapeBase -Xclang -analyzer-checker=core.StackAddressEscape -Xclang -analyzer-checker=core.UndefinedBinaryOperatorResult -Xclang -analyzer-checker=core.VLASize -Xclang -analyzer-checker=core.builtin.BuiltinFunctions -Xclang -analyzer-checker=core.builtin.NoReturnFunctions -Xclang -analyzer-checker=core.uninitialized.ArraySubscript -Xclang -analyzer-checker=core.uninitialized.Assign -Xclang -analyzer-checker=core.uninitialized.Branch -Xclang -analyzer-checker=core.uninitialized.CapturedBlockVariable -Xclang -analyzer-checker=core.uninitialized.UndefReturn -Xclang -analyzer-checker=cplusplus.InnerPointer -Xclang -analyzer-checker=cplusplus.Move -Xclang -analyzer-checker=cplusplus.NewDelete -Xclang -analyzer-checker=cplusplus.NewDeleteLeaks -Xclang -analyzer-checker=cplusplus.PlacementNew -Xclang -analyzer-checker=cplusplus.PureVirtualCall -Xclang -analyzer-checker=cplusplus.SelfAssignment -Xclang -analyzer-checker=cplusplus.SmartPtrModeling -Xclang -analyzer-checker=cplusplus.VirtualCallModeling -Xclang -analyzer-checker=deadcode.DeadStores -Xclang -analyzer-checker=nullability.NullPassedToNonnull -Xclang -analyzer-checker=nullability.NullReturnedFromNonnull -Xclang -analyzer-checker=optin.cplusplus.UninitializedObject -Xclang -analyzer-checker=optin.cplusplus.VirtualCall -Xclang -analyzer-checker=optin.portability.UnixAPI -Xclang -analyzer-checker=security.FloatLoopCounter -Xclang -analyzer-checker=security.insecureAPI.UncheckedReturn -Xclang -analyzer-checker=security.insecureAPI.getpw -Xclang -analyzer-checker=security.insecureAPI.gets -Xclang -analyzer-checker=security.insecureAPI.mkstemp -Xclang -analyzer-checker=security.insecureAPI.mktemp -Xclang -analyzer-checker=security.insecureAPI.rand -Xclang -analyzer-checker=security.insecureAPI.vfork -Xclang -analyzer-checker=unix.API -Xclang -analyzer-checker=unix.DynamicMemoryModeling -Xclang -analyzer-checker=unix.Malloc -Xclang -analyzer-checker=unix.MallocSizeof -Xclang -analyzer-checker=unix.MismatchedDeallocator -Xclang -analyzer-checker=unix.Vfork -Xclang -analyzer-checker=unix.cstring.BadSizeArg -Xclang -analyzer-checker=unix.cstring.CStringModeling -Xclang -analyzer-checker=unix.cstring.NullArg -Xclang -analyzer-checker=valist.CopyToSelf -Xclang -analyzer-checker=valist.Uninitialized -Xclang -analyzer-checker=valist.Unterminated -Xclang -analyzer-checker=valist.ValistBase -Xclang -analyzer-config -Xclang aggressive-binary-operation-simplification=true -Xclang -analyzer-config -Xclang experimental-enable-naive-ctu-analysis=true -Xclang -analyzer-config -Xclang ctu-dir=/tmp/tmp.LVaC4CD1AH/ctu-dir/x86_64 -Xclang -analyzer-config -Xclang display-ctu-progress=true -Xclang -analyzer-config -Xclang ctu-invocation-list=/tmp/tmp.LVaC4CD1AH/ctu-dir/x86_64/invocation-list.yml -x c++ --target=x86_64-pc-linux-gnu -std=gnu++14 -DELF_INTERPRETER="/lib64/ld-linux-x86-64.so.2" -DQT_ASCII_CAST_WARNINGS -DQT_BUILDING_QT -DQT_BUILD_CORE_LIB -DQT_CORE_QOBJECT_LIB -DQT_DEPRECATED_WARNINGS -DQT_DEPRECATED_WARNINGS_SINCE=0x060000 -DQT_DISABLE_DEPRECATED_BEFORE=0x050000 -DQT_MOC_COMPAT -DQT_NO_CAST_TO_ASCII -DQT_NO_FOREACH -DQT_NO_USING_NAMESPACE -DQT_USE_QSTRINGBUILDER -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -I/home/cc-runs/src/qt/qt5/qtbase/build/src/corelib/Core_autogen/include -I/home/cc-runs/src/qt/qt5/qtbase/build/include -I/home/cc-runs/src/qt/qt5/qtbase/build/include/QtCore -I/home/cc-runs/src/qt/qt5/qtbase/src/corelib -I/home/cc-runs/src/qt/qt5/qtbase/build/src/corelib -I/home/cc-runs/src/qt/qt5/qtbase/build/src/corelib/global -I/home/cc-runs/src/qt/qt5/qtbase/src/3rdparty/tinycbor/src -I/home/cc-runs/src/qt/qt5/qtbase/build/include/QtCore/6.0.0 -I/home/cc-runs/src/qt/qt5/qtbase/build/include/QtCore/6.0.0/QtCore -I/home/cc-runs/src/qt/qt5/qtbase/src/3rdparty/forkfd -I/home/cc-runs/src/qt/qt5/qtbase/build/src/corelib/.rcc -I/home/cc-runs/src/qt/qt5/qtbase/mkspecs/linux-clang -I/usr/include/double-conversion -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/home/cc-runs/src/qt/qt5/qtbase/build/src/corelib/kernel -stdlib=libc++ -g -fPIC -fvisibility=hidden -fvisibility-inlines-hidden -Wall -Wextra -fPIC -std=c++17 -MD -isystem /usr/include/c++/9 -isystem /usr/include/x86_64-linux-gnu/c++/9 -isystem /usr/include/c++/9/backward -isystem /usr/local/include -isystem /usr/include/x86_64-linux-gnu -isystem /usr/include /home/cc-runs/src/qt/qt5/qtbase/src/corelib/kernel/qobject.cpp
CTU loaded AST file: /home/cc-runs/src/qt/qt5/qtbase/src/corelib/text/qbytearray.cpp
CTU loaded AST file: /home/cc-runs/src/qt/qt5/qtbase/src/corelib/text/qstring.cpp
CTU loaded AST file: /home/cc-runs/src/qt/qt5/qtbase/src/corelib/kernel/qmath.cpp
CTU loaded AST file: /home/cc-runs/src/qt/qt5/qtbase/src/corelib/text/qstringconverter.cpp
In file included from /home/cc-runs/src/qt/qt5/qtbase/src/corelib/text/qstringconverter.cpp:45:
In file included from /home/cc-runs/src/qt/qt5/qtbase/build/include/QtCore/6.0.0/QtCore/private/qsimd_p.h:1:
In file included from /home/cc-runs/src/qt/qt5/qtbase/build/include/QtCore/../../../src/corelib/global/qsimd_p.h:56:
In file included from /home/cc-runs/src/qt/qt5/qtbase/build/include/QtCore/qsimd.h:1:
In file included from /home/cc-runs/src/qt/qt5/qtbase/build/include/QtCore/../../../src/corelib/global/qsimd.h:117:
In file included from /usr/lib/llvm-11/lib/clang/11.0.1/include/immintrin.h:20:
In file included from /usr/lib/llvm-11/lib/clang/11.0.1/include/xmmintrin.h:3005:
/usr/lib/llvm-11/lib/clang/11.0.1/include/emmintrin.h:4633:19: error: cannot import unsupported AST node ShuffleVectorExpr
  return (__m128i)__builtin_shufflevector((__v16qi)__a, (__v16qi)__b, 0, 16+0, 1, 16+1, 2, 16+2, 3, 16+3, 4, 16+4, 5, 16+5, 6, 16+6, 7, 16+7);
                  ^
In file included from /home/cc-runs/src/qt/qt5/qtbase/src/corelib/text/qstringconverter.cpp:41:
In file included from /home/cc-runs/src/qt/qt5/qtbase/build/include/QtCore/qstringconverter.h:1:
In file included from /home/cc-runs/src/qt/qt5/qtbase/build/include/QtCore/../../../src/corelib/text/qstringconverter.h:43:
In file included from /home/cc-runs/src/qt/qt5/qtbase/build/include/QtCore/qstring.h:1:
In file included from /home/cc-runs/src/qt/qt5/qtbase/build/include/QtCore/../../../src/corelib/text/qstring.h:50:
In file included from /home/cc-runs/src/qt/qt5/qtbase/build/include/QtCore/qchar.h:1:
In file included from /home/cc-runs/src/qt/qt5/qtbase/build/include/QtCore/../../../src/corelib/text/qchar.h:43:
In file included from /home/cc-runs/src/qt/qt5/qtbase/build/include/QtCore/qglobal.h:1:
In file included from /home/cc-runs/src/qt/qt5/qtbase/build/include/QtCore/../../../src/corelib/global/qglobal.h:126:
In file included from /usr/include/c++/9/algorithm:71:
In file included from /usr/include/c++/9/pstl/glue_algorithm_defs.h:13:
In file included from /usr/include/c++/9/functional:54:
In file included from /usr/include/c++/9/tuple:39:
/usr/include/c++/9/array:245:28: error: cannot import unsupported AST node CXXFoldExpr
      -> array<enable_if_t<(is_same_v<_Tp, _Up> && ...), _Tp>,
                           ^
Segmentation fault (core dumped)

@jimis
Copy link
Contributor Author

jimis commented Nov 11, 2020

Attaching backtrace from gdb.
gdb.txt.gz

@jimis
Copy link
Contributor Author

jimis commented Nov 11, 2020

The project is qtbase at bbadd1b5c1. Let me know if the information I post is not enough, then I'll have to provide the exact command line sequence to reproduce this.
EDIT: It's not that hard actually to reproduce. Here is the exact sequence of commands after you checkout qtbase/dev:

mkdir build && cd build
OUTDIR=`mktemp -d`
# I configure linking with LLVM's libc++ but I bet you can get the same crash even excluding the very last flag
../configure -cmake -debug -xcb -no-warnings-are-errors -no-pch -nomake tests -nomake examples -prefix /home/cc-runs/install_dir -no-sse3 -no-ssse3 -no-sse4.1 -no-sse4.2 -no-avx -
no-avx2 -no-avx512 -- -DCMAKE_C_COMPILER=clang-11 -DCMAKE_CXX_COMPILER=clang++-11 -DCMAKE_CXX_FLAGS=-stdlib=libc++
# Build separately the bootstrap tools to avoid analysis, since they build the same code with different defines
ninja bootstrap_tools
# Main build command
CodeChecker log -o $OUTDIR/codechecker_log.json -b 'ninja -j 16'
# Analyse (crash)
echo '-*/src/3rdparty/*' > SKIPFILE
CodeChecker analyze $OUTDIR/codechecker_log.json \
    -i SKIPFILE --capture-analysis-output  -o $OUTDIR --analyzers clangsa
    # EDIT: --ctu will cause clangsa segfault

@martong
Copy link
Contributor

martong commented Nov 11, 2020

Ok, thanks for the update.

I see that from the gdb log that we have an infinite loop in the ASTImporter code, so it is most probably not related to our cross_tu ASTUnit caching (@gamesh411).

#21 0x00007ffff5e26db6 in ?? () from /lib/x86_64-linux-gnu/libclang-cpp.so.11
#22 0x00007ffff5e2690f in clang::ASTImporter::Import(clang::QualType) () from /lib/x86_64-linux-gnu/libclang-cpp.so.11
#23 0x00007ffff5e01cf0 in clang::ASTNodeImporter::VisitFunctionProtoType(clang::FunctionProtoType const*) () from /lib/x86_64-linux-gnu/libclang-cpp.so.11
#24 0x00007ffff5e26c5f in ?? () from /lib/x86_64-linux-gnu/libclang-cpp.so.11
#25 0x00007ffff5e2690f in clang::ASTImporter::Import(clang::QualType) () from /lib/x86_64-linux-gnu/libclang-cpp.so.11
#26 0x00007ffff5e0b4ef in clang::ASTNodeImporter::VisitFunctionDecl(clang::FunctionDecl*) () from /lib/x86_64-linux-gnu/libclang-cpp.so.11
#27 0x00007ffff5e26378 in ?? () from /lib/x86_64-linux-gnu/libclang-cpp.so.11
#28 0x00007ffff5e26327 in clang::ASTImporter::ImportImpl(clang::Decl*) () from /lib/x86_64-linux-gnu/libclang-cpp.so.11
#29 0x00007ffff5e27701 in clang::ASTImporter::Import(clang::Decl*) () from /lib/x86_64-linux-gnu/libclang-cpp.so.11
#30 0x00007ffff5e05028 in clang::ASTImporter::ImportContext(clang::DeclContext*) () from /lib/x86_64-linux-gnu/libclang-cpp.so.11
#31 0x00007ffff5e0358a in clang::ASTNodeImporter::ImportDeclParts(clang::NamedDecl*, clang::DeclContext*&, clang::DeclContext*&, clang::DeclarationName&, clang::NamedDecl*&, clang::SourceLocation&) () from /lib/x86_64-linux-gnu/libclang-cpp.so.11
#32 0x00007ffff5e075c9 in clang::ASTNodeImporter::VisitTypedefNameDecl(clang::TypedefNameDecl*, bool) () from /lib/x86_64-linux-gnu/libclang-cpp.so.11
#33 0x00007ffff5e266a2 in ?? () from /lib/x86_64-linux-gnu/libclang-cpp.so.11
#34 0x00007ffff5e26327 in clang::ASTImporter::ImportImpl(clang::Decl*) () from /lib/x86_64-linux-gnu/libclang-cpp.so.11
#35 0x00007ffff5e27701 in clang::ASTImporter::Import(clang::Decl*) () from /lib/x86_64-linux-gnu/libclang-cpp.so.11
#36 0x00007ffff5e26db6 in ?? () from /lib/x86_64-linux-gnu/libclang-cpp.so.11

Now I am trying to reproduce locally on the specific qt version you gave.

@jimis
Copy link
Contributor Author

jimis commented Nov 11, 2020

FWIW at the bottom of the backtrace I see a call to CrossTranslationUnitContext::importDefinitionImpl, which then leads to the infinite loop. Is that possibly related to the ASTUnit caching?

BTW are you guys frequent on some IRC channel? I have faced different issues while setting up CodeServer for Qt, and might help to chat.

@martong
Copy link
Contributor

martong commented Nov 12, 2020

Update: I am struggling with configuring qt, even though I have apt-getted the necessary gl libs (libgl1-mesa-dev libglu1-mesa-dev) I receive:

ERROR: The OpenGL functionality tests failed!  You might need to modify the include and library search paths by editing QMAKE_INCDIR_OPENGL[_ES2], QMAKE_LIBDIR_OPENGL[_ES2] and QMAKE_LIBS_OPENGL[_ES2] in the mkspec for your platform.

So, I tried to disable opengl with -no-opengl to configure, but cmake still failed. On the other hand, I could generate the compile commands.json file, so that could be a good start.

Overall, I am afraid that this is going to take a while until I can reproduce, perhaps another college will help with this issue.

BTW are you guys frequent on some IRC channel? I have faced different issues while setting up CodeServer for Qt, and might help to chat.

I am sorry, but we are not available on IRC, but we try our best to address issues on github. TBH, we should be more watchful to CSA related tickets on llvm bugzilla as well, we'll try to improve that.

@jimis
Copy link
Contributor Author

jimis commented Nov 12, 2020

Does this help?

sudo apt-get -y install  \
    ninja-build \
    libx11-xcb-dev libxkbcommon-x11-dev \
    libxcb1-dev 'libxcb-*-dev' \
    libegl-dev libegl1-mesa-dev \
    libgtk-3-dev libzstd-dev

@martong
Copy link
Contributor

martong commented Nov 12, 2020

I am on Ubuntu 18.04.
This helped:
https://dhchung.github.io/opengl/2020-02-14-opengl/

@jimis
Copy link
Contributor Author

jimis commented Nov 12, 2020

Sorry I forgot an important detail on the command list above. To reproduce the segfault you need --ctu. I had removed it because I was doing CTU analysis in stages. The segfault happens early (qobject.cpp) in the analysis stage.

@martong
Copy link
Contributor

martong commented Nov 12, 2020

Good news, I could reproduce the segfault, with the stack overflow. I am going to investigate, and will come back to you with my findings. This may take a while.

@whisperity whisperity added clang sa 🐉 The Clang Static Analyzer is a source code analysis tool that finds bugs in C-family programs. analyzer 📈 Related to the analyze commands (analysis driver) labels Nov 13, 2020
@martong
Copy link
Contributor

martong commented Nov 20, 2020

The problem stems from the missing support of C++17 deduction guides.
Here is a minimal reproducer: Import the first CXXDeductionGuideDecl from the AST of this code.

namespace std {
typedef decltype(nullptr) nullptr_t;
} // namespace std

namespace std {
template <typename _Tp> struct shared_ptr {
  shared_ptr(nullptr_t __p, _Tp* p) {}
};
} // namespace std

int x;
auto np = std::shared_ptr(nullptr, &x);

I hope I'll be able to fix this by importing the deduced template first during the import of the deduction guide.

@zporky
Copy link

zporky commented Nov 20, 2020

You might be check the similar issue recently fixed in CodeCompass: Ericsson/CodeCompass#483

@martong
Copy link
Contributor

martong commented Nov 30, 2020

Related LLVM/Clang patch to solve the infinite loop:
https://reviews.llvm.org/D92209

@jimis
Copy link
Contributor Author

jimis commented Nov 30, 2020

Thank you, I'm looking forward to enabling CTU analysis in Qt!

@jimis
Copy link
Contributor Author

jimis commented Dec 14, 2020

@martong how can I track which branch that will be merged in? I'm interested if it will make it to some minor update of Clang v11.

@martong
Copy link
Contributor

martong commented Dec 14, 2020

So, the patch(https://reviews.llvm.org/D92209) is landed in the main branch (the used to be master). So, this means it would be available in Clang 12 for sure. This seems to be quite an isolated change, so I could push towards to our LLVM release manager to try to include that in the upcoming Clang 11 bugfix branch. I am not that familiar with that procedure, though, but I'll try my best.

@martong
Copy link
Contributor

martong commented Dec 15, 2020

I've been checking on the release procedure and my understanding is that we should commit only regression fixes to the release branch. So, I think this will be only available in Clang 12.

https://llvm.org/docs/HowToReleaseLLVM.html#release-patch-rules

@martong martong closed this as completed Dec 15, 2020
@martong
Copy link
Contributor

martong commented Dec 15, 2020

Well, TBH, the rules are not crystal clear, so I just have sent a mail to the release manager, I'll update if we can push it to Clang 11.

@martong
Copy link
Contributor

martong commented Dec 15, 2020

It's too late to ship with 11.0.1.
http://lists.llvm.org/pipermail/cfe-dev/2020-December/067377.html

@jimis
Copy link
Contributor Author

jimis commented Dec 15, 2020

Thanks @martong! Nevertheless I see a flag Blocks: release-11.0.1 has been added to the ticket. It might go into the 11 branch after the release, which will still make it easy for me to try.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
analyzer 📈 Related to the analyze commands (analysis driver) clang sa 🐉 The Clang Static Analyzer is a source code analysis tool that finds bugs in C-family programs.
Projects
None yet
Development

No branches or pull requests

5 participants