diff --git a/debian/changelog b/debian/changelog index 463d0169..799bbec0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,41 @@ +llvm-toolchain-11 (1:11.0.0-2) unstable; urgency=medium + + * Fix a clang-format issue. Fix bug #47589 + + -- Sylvestre Ledru Mon, 12 Oct 2020 15:15:27 +0200 + +llvm-toolchain-11 (1:11.0.0-1) unstable; urgency=medium + + * New upstream release + + -- Sylvestre Ledru Mon, 12 Oct 2020 11:14:19 +0200 + +llvm-toolchain-11 (1:11.0.0~+rc6-1) unstable; urgency=medium + + [ Sylvestre Ledru ] + * New rc release + * remove all artifacts after tests + + [ Gianfranco Costamagna ] + * qualify-clang.sh: exclude z3 tests when support is not available, + not based on libz3-dev installation but on the error returned by + clang invocation + + -- Sylvestre Ledru Wed, 07 Oct 2020 16:38:40 +0200 + +llvm-toolchain-11 (1:11.0.0~+rc5-1) unstable; urgency=medium + + * New rc release + + -- Sylvestre Ledru Wed, 30 Sep 2020 20:15:40 +0200 + +llvm-toolchain-11 (1:11.0.0~+rc4-1) unstable; urgency=medium + + * New rc release + * Fix one more test in autopkgtest + + -- Sylvestre Ledru Mon, 28 Sep 2020 22:21:47 +0200 + llvm-toolchain-11 (1:11.0.0~+rc3-2) unstable; urgency=medium * Update of the symbol list of libomp5: @@ -16,10 +54,6 @@ llvm-toolchain-11 (1:11.0.0~+rc3-2) unstable; urgency=medium clang (LLVM option parsing): Unknown command line argument '-polly'. Try: 'clang (LLVM option parsing) --help' Also found in autopkgtest - * Bring back LLVM_POLLY_LINK_INTO_TOOLS=ON to workaround the error - clang (LLVM option parsing): Unknown command line argument '-polly'. - Try: 'clang (LLVM option parsing) --help' - Fix autopkgtest * In the autopkgtest tests, update the opt arguments (-q removed and -basicaa renamed to -basic-aa) * Disable test executions on mipsel (timeout) diff --git a/debian/patches/fix-clang-format-bug-47589.patch b/debian/patches/fix-clang-format-bug-47589.patch new file mode 100644 index 00000000..010c3339 --- /dev/null +++ b/debian/patches/fix-clang-format-bug-47589.patch @@ -0,0 +1,148 @@ +From 05860350084abdae30dfbd2181452d1b87dca3b4 Mon Sep 17 00:00:00 2001 +From: Sylvestre Ledru +Date: Mon, 12 Oct 2020 18:47:30 +0200 +Subject: [PATCH] Revert "[clang-format] Fix AlignConsecutive on PP blocks" + +This reverts commit b2eb439317576ce718193763c12bff9fccdfc166. +--- + clang/lib/Format/FormatToken.h | 6 ----- + clang/lib/Format/UnwrappedLineParser.cpp | 2 -- + clang/lib/Format/WhitespaceManager.cpp | 10 +++----- + clang/unittests/Format/FormatTest.cpp | 23 ------------------- + clang/unittests/Format/FormatTestComments.cpp | 21 ----------------- + 5 files changed, 3 insertions(+), 59 deletions(-) + +diff --git a/clang/lib/Format/FormatToken.h b/clang/lib/Format/FormatToken.h +index d4287f53fde..b132a3e84da 100644 +--- a/clang/lib/Format/FormatToken.h ++++ b/clang/lib/Format/FormatToken.h +@@ -183,12 +183,6 @@ struct FormatToken { + /// before the token. + bool MustBreakBefore = false; + +- /// Whether to not align across this token +- /// +- /// This happens for example when a preprocessor directive ended directly +- /// before the token, but very rarely otherwise. +- bool MustBreakAlignBefore = false; +- + /// The raw text of the token. + /// + /// Contains the raw token text without leading whitespace and without leading +diff --git a/clang/lib/Format/UnwrappedLineParser.cpp b/clang/lib/Format/UnwrappedLineParser.cpp +index a37386425aa..ea8a41cfba8 100644 +--- a/clang/lib/Format/UnwrappedLineParser.cpp ++++ b/clang/lib/Format/UnwrappedLineParser.cpp +@@ -3037,7 +3037,6 @@ void UnwrappedLineParser::readToken(int LevelDifference) { + } + FormatTok = Tokens->getNextToken(); + FormatTok->MustBreakBefore = true; +- FormatTok->MustBreakAlignBefore = true; + } + + if (!PPStack.empty() && (PPStack.back().Kind == PP_Unreachable) && +@@ -3062,7 +3061,6 @@ void UnwrappedLineParser::pushToken(FormatToken *Tok) { + Line->Tokens.push_back(UnwrappedLineNode(Tok)); + if (MustBreakBeforeNextToken) { + Line->Tokens.back().Tok->MustBreakBefore = true; +- Line->Tokens.back().Tok->MustBreakAlignBefore = true; + MustBreakBeforeNextToken = false; + } + } +diff --git a/clang/lib/Format/WhitespaceManager.cpp b/clang/lib/Format/WhitespaceManager.cpp +index 32e0b685ea0..3a265bd0916 100644 +--- a/clang/lib/Format/WhitespaceManager.cpp ++++ b/clang/lib/Format/WhitespaceManager.cpp +@@ -411,11 +411,9 @@ static unsigned AlignTokens(const FormatStyle &Style, F &&Matches, + if (Changes[i].NewlinesBefore != 0) { + CommasBeforeMatch = 0; + EndOfSequence = i; +- // If there is a blank line, there is a forced-align-break (eg, +- // preprocessor), or if the last line didn't contain any matching token, +- // the sequence ends here. +- if (Changes[i].NewlinesBefore > 1 || +- Changes[i].Tok->MustBreakAlignBefore || !FoundMatchOnLine) ++ // If there is a blank line, or if the last line didn't contain any ++ // matching token, the sequence ends here. ++ if (Changes[i].NewlinesBefore > 1 || !FoundMatchOnLine) + AlignCurrentSequence(); + + FoundMatchOnLine = false; +@@ -726,8 +724,6 @@ void WhitespaceManager::alignTrailingComments() { + if (Changes[i].StartOfBlockComment) + continue; + Newlines += Changes[i].NewlinesBefore; +- if (Changes[i].Tok->MustBreakAlignBefore) +- BreakBeforeNext = true; + if (!Changes[i].IsTrailingComment) + continue; + +diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp +index 17d302f0b65..7e4d1fca509 100644 +--- a/clang/unittests/Format/FormatTest.cpp ++++ b/clang/unittests/Format/FormatTest.cpp +@@ -11968,29 +11968,6 @@ TEST_F(FormatTest, AlignConsecutiveAssignments) { + verifyFormat("int oneTwoThree = 123; // comment\n" + "int oneTwo = 12; // comment", + Alignment); +- +- // Bug 25167 +- verifyFormat("#if A\n" +- "#else\n" +- "int aaaaaaaa = 12;\n" +- "#endif\n" +- "#if B\n" +- "#else\n" +- "int a = 12;\n" +- "#endif\n", +- Alignment); +- verifyFormat("enum foo {\n" +- "#if A\n" +- "#else\n" +- " aaaaaaaa = 12;\n" +- "#endif\n" +- "#if B\n" +- "#else\n" +- " a = 12;\n" +- "#endif\n" +- "};\n", +- Alignment); +- + EXPECT_EQ("int a = 5;\n" + "\n" + "int oneTwoThree = 123;", +diff --git a/clang/unittests/Format/FormatTestComments.cpp b/clang/unittests/Format/FormatTestComments.cpp +index 47509f29744..d5b9f8e0885 100644 +--- a/clang/unittests/Format/FormatTestComments.cpp ++++ b/clang/unittests/Format/FormatTestComments.cpp +@@ -2780,27 +2780,6 @@ TEST_F(FormatTestComments, AlignTrailingComments) { + " // line 2 about b\n" + " long b;", + getLLVMStyleWithColumns(80))); +- +- // Checks an edge case in preprocessor handling. +- // These comments should *not* be aligned +- EXPECT_EQ( +- "#if FOO\n" +- "#else\n" +- "long a; // Line about a\n" +- "#endif\n" +- "#if BAR\n" +- "#else\n" +- "long b_long_name; // Line about b\n" +- "#endif\n", +- format("#if FOO\n" +- "#else\n" +- "long a; // Line about a\n" // Previous (bad) behavior +- "#endif\n" +- "#if BAR\n" +- "#else\n" +- "long b_long_name; // Line about b\n" +- "#endif\n", +- getLLVMStyleWithColumns(80))); + } + + TEST_F(FormatTestComments, AlignsBlockCommentDecorations) { +-- +2.28.0 + diff --git a/debian/patches/series b/debian/patches/series index e8aaa498..cc2a92d2 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -136,12 +136,5 @@ disable-fuzzer-compiler-rt-x86.diff python3-shebang.patch print-lldb-path.patch -no-cgi.patch - -0001-systemz-allow-configuring-default-SYSTEMZ_DEFAULT_AR.patch - -ubuntu-groovy.diff -clang_vendor_pass_stage2.diff -remove-trailing-space-version.diff -mips-force-nomadd4.patch -PowerPC-PPCBoolRetToInt-Dont-translate-Constants-operands.diff +libcxx-armhf-ftbfs.diff +fix-clang-format-bug-47589.patch diff --git a/debian/qualify-clang.sh b/debian/qualify-clang.sh index 00dfa1f6..2be8a8c5 100755 --- a/debian/qualify-clang.sh +++ b/debian/qualify-clang.sh @@ -345,7 +345,7 @@ if test $NBLINES -lt 100; then exit 42 fi -if [ $DEB_HOST_ARCH != "arm64" -a $DEB_HOST_ARCH != "ppc64el" ]; then +if [ $DEB_HOST_ARCH == "amd64" -o $DEB_HOST_ARCH == "i386" ]; then # Fails on arm64 with # /usr/lib/llvm-10/lib/clang/10.0.0/include/mmintrin.h:33:5: error: use of undeclared identifier '__builtin_ia32_emms'; did you mean '__builtin_isless'? echo '#include ' > foo.cc @@ -385,9 +385,16 @@ void testBitwiseRules(unsigned int a, int b) { clang_analyzer_eval((b | -2) >= 0); // expected-warning{{FALSE}} } ' > foo.c -if dpkg -l|grep -q libz3-dev; then - # Should work + +clang-$VERSION -cc1 -analyze -analyzer-constraints=range -analyzer-checker=core,debug.ExprInspection -analyzer-constraints=z3 foo.c &> foo.log +if ! grep -q "LLVM was not compiled with Z3 support" foo.log; then + # Should work clang-$VERSION -cc1 -analyze -analyzer-constraints=range -analyzer-checker=core,debug.ExprInspection -verify -analyzer-config eagerly-assume=false -analyzer-constraints=z3 foo.c + clang-$VERSION -cc1 -analyze -analyzer-constraints=range -analyzer-checker=core,debug.ExprInspection -analyzer-constraints=z3 foo.c &> foo.log + if ! grep -q "2 warnings generated." foo.log; then + echo "Should find 2 warnings" + exit 1 + fi else echo "z3 support not available" fi @@ -399,16 +406,6 @@ if grep -q "File a.c Line 7: UNKNOWN" foo.log; then exit 1 fi -if dpkg -l|grep -q libz3-dev; then - clang-$VERSION -cc1 -analyze -analyzer-constraints=range -analyzer-checker=core,debug.ExprInspection -analyzer-constraints=z3 foo.c &> foo.log - if ! grep -q "2 warnings generated." foo.log; then - echo "Should find 2 warnings" - exit 1 - fi -else - echo "z3 support not available" -fi - clang-$VERSION -cc1 -analyze -analyzer-constraints=range -analyzer-checker=core,debug.ExprInspection foo.c &> foo.log if ! grep -q "warnings generated." foo.log; then echo "Should find at least 2 warnings" @@ -814,7 +811,7 @@ if ! grep "No such file or directory" foo.log; then if ! ./a.out 2>&1 | grep -q -E "(Test unit written|PreferSmall)"; then echo "fuzzer. Output:" ./a.out || true - if [ $DEB_HOST_ARCH != "arm64" -a $DEB_HOST_ARCH != "ppc64el" ]; then + if [ $DEB_HOST_ARCH == "amd64" -o $DEB_HOST_ARCH == "i386" ]; then # Don't fail on arm64 and ppc64el exit 42 fi @@ -1123,7 +1120,7 @@ int main() { EmitBackendOutput(*diags, *hsOpts, *cgOpts, *tOpts, *lOpts, *tDesc, m, *action, std::move(AsmOutStream)); } EOF -clang++-$VERSION foo.cpp -o test -lclangBasic -lclangCodeGen -lclangDriver -lclangFrontend -lclangFrontendTool -lclangCodeGen -lclangRewriteFrontend -lclangARCMigrate -lclangStaticAnalyzerFrontend -lclangStaticAnalyzerCheckers -lclangStaticAnalyzerCore -lclangCrossTU -lclangIndex -lclangFrontend -lclangDriver -lclangParse -lclangSerialization -lclangSema -lclangAnalysis -lclangEdit -lclangFormat -lclangToolingInclusions -lclangToolingCore -lclangRewrite -lclangASTMatchers -lclangAST -lclangLex -lclangBasic -ldl /usr/lib/llvm-10/lib/libLLVM-10.so -lclangCodeGen -lclangDriver -lclangFrontend -lclangFrontendTool -lclangRewriteFrontend -lclangARCMigrate -lclangStaticAnalyzerFrontend -lclangStaticAnalyzerCheckers -lclangStaticAnalyzerCore -lclangCrossTU -lclangIndex -lclangParse -lclangSerialization -lclangSema -lclangAnalysis -lclangEdit -lclangFormat -lclangToolingInclusions -lclangToolingCore -lclangRewrite -lclangASTMatchers -lclangAST -lclangLex -ldl -I /usr/lib/llvm-$VERSION/include/ -L/usr/lib/llvm-$VERSION/lib/ `llvm-config-$VERSION --cxxflags --ldflags --libs all` +clang++-$VERSION foo.cpp -o test -lclangBasic -lclangCodeGen -lclangDriver -lclangFrontend -lclangFrontendTool -lclangCodeGen -lclangRewriteFrontend -lclangARCMigrate -lclangStaticAnalyzerFrontend -lclangStaticAnalyzerCheckers -lclangStaticAnalyzerCore -lclangCrossTU -lclangIndex -lclangFrontend -lclangDriver -lclangParse -lclangSerialization -lclangSema -lclangAnalysis -lclangEdit -lclangFormat -lclangToolingInclusions -lclangToolingCore -lclangRewrite -lclangASTMatchers -lclangAST -lclangLex -lclangBasic -ldl /usr/lib/llvm-$VERSION/lib/libLLVM-$VERSION.so -lclangCodeGen -lclangDriver -lclangFrontend -lclangFrontendTool -lclangRewriteFrontend -lclangARCMigrate -lclangStaticAnalyzerFrontend -lclangStaticAnalyzerCheckers -lclangStaticAnalyzerCore -lclangCrossTU -lclangIndex -lclangParse -lclangSerialization -lclangSema -lclangAnalysis -lclangEdit -lclangFormat -lclangToolingInclusions -lclangToolingCore -lclangRewrite -lclangASTMatchers -lclangAST -lclangLex -ldl -I /usr/lib/llvm-$VERSION/include/ -L/usr/lib/llvm-$VERSION/lib/ `llvm-config-$VERSION --cxxflags --ldflags --libs all` if test ! -f /usr/bin/lldb-$VERSION; then echo "Install lldb-$VERSION"; @@ -1341,6 +1338,6 @@ fi #clean up rm -f a.out bar crash-* foo foo.* lldb-cmd.txt main.* test_fuzzer.cc foo.* o -rm -rf output matmul.* *profraw opt.ll +rm -rf output matmul.* *profraw opt.ll a.json default.profdata test echo "Completed"