From f5a51d315991d187015fb2c5b12d25b3e07569ab Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Fri, 21 Sep 2018 13:37:48 +0200 Subject: [PATCH 01/12] add some polly checks --- debian/qualify-clang.sh | 48 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) mode change 100644 => 100755 debian/qualify-clang.sh diff --git a/debian/qualify-clang.sh b/debian/qualify-clang.sh old mode 100644 new mode 100755 index 6dbd33a7..169ecbf9 --- a/debian/qualify-clang.sh +++ b/debian/qualify-clang.sh @@ -272,6 +272,52 @@ g++ -nostdinc++ -I/usr/lib/llvm-$VERSION/bin/../include/c++/v1/ -L/usr/lib/llvm- foo.cpp -nodefaultlibs -std=c++17 -lc++ -lc++abi -lm -lc -lgcc_s -lgcc ./o > /dev/null + +if test ! -f /usr/lib/llvm-$VERSION/include/polly/LinkAllPasses.h; then + echo "Install libclang-common-$VERSION-dev for polly"; + exit -1; +fi + +# Polly +echo " +#define N 1536 +float A[N][N]; +float B[N][N]; +float C[N][N]; + +void init_array() +{ + int i, j; + for (i = 0; i < N; i++) { + for (j = 0; j < N; j++) { + A[i][j] = (1+(i*j)%1024)/2.0; + B[i][j] = (1+(i*j)%1024)/2.0; + } + } +} + +int main() +{ + int i, j, k; + double t_start, t_end; + init_array(); + for (i = 0; i < N; i++) { + for (j = 0; j < N; j++) { + C[i][j] = 0; + for (k = 0; k < N; k++) + C[i][j] = C[i][j] + A[i][k] * B[k][j]; + } + } + return 0; +} +" > foo.c +clang-$VERSION -O3 -mllvm -polly foo.c +clang-$VERSION -O3 -mllvm -polly -mllvm -polly-parallel -lgomp foo.c +clang-$VERSION -O3 -mllvm -polly -mllvm -polly-vectorizer=stripmine foo.c +clang-$VERSION -S -emit-llvm foo.c -o matmul.s +opt-$VERSION -S -polly-canonicalize matmul.s > matmul.preopt.ll > /dev/null +opt-$VERSION -basicaa -polly-ast -analyze -q matmul.preopt.ll -polly-process-unprofitable > /dev/null + echo "b main run bt @@ -352,6 +398,8 @@ mkdir cmaketest/foo/ rm -rf cmaketest + + CLANG=clang-$VERSION #command -v "$CLANG" 1>/dev/null 2>/dev/null || { printf "Usage:\n%s CLANGEXE [ARGS]\n" "$0" 1>&2; exit 1; } #shift From 45ea05d3d4f7f50d0c31fbd8517e3bd1b9052064 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Fri, 21 Sep 2018 13:38:55 +0200 Subject: [PATCH 02/12] remove a warning --- debian/qualify-clang.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/qualify-clang.sh b/debian/qualify-clang.sh index 169ecbf9..04df9a22 100755 --- a/debian/qualify-clang.sh +++ b/debian/qualify-clang.sh @@ -171,7 +171,7 @@ echo 'int main() { return a; } ' > foo.c -clang++-$VERSION -g -o bar foo.c +clang-$VERSION -g -o bar foo.c if test ! -f /usr/lib/llvm-$VERSION/lib/libomp.so; then From 4e86dbbc2f54f6ded0b69fd67134c04c7c3abfe3 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Fri, 21 Sep 2018 13:54:52 +0200 Subject: [PATCH 03/12] fix a syntax issue in the patch --- debian/changelog | 6 ++++++ debian/patches/scan-build-clang-X.diff | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 3bcac679..3791d043 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +llvm-toolchain-7 (1:7-3) unstable; urgency=medium + + * Fix a syntax issue in a scan-build patch + + -- + llvm-toolchain-7 (1:7-2) unstable; urgency=medium * Fix the ftbfs under armel on libc++ and enable openmp on armel. diff --git a/debian/patches/scan-build-clang-X.diff b/debian/patches/scan-build-clang-X.diff index e853ec80..8221cc09 100644 --- a/debian/patches/scan-build-clang-X.diff +++ b/debian/patches/scan-build-clang-X.diff @@ -7,7 +7,7 @@ Index: llvm-toolchain-7_7~+rc1/clang/tools/scan-build/bin/scan-build $Cmd =~ /(.*\/?cc[^\/]*$)/ or $Cmd =~ /(.*\/?llvm-gcc[^\/]*$)/ or - $Cmd =~ /(.*\/?clang$)/ or -+​ $Cmd =~ /(.*\/?clang[^\/]*$)/ or ++ $Cmd =~ /(.*\/?clang[^\/]*$)/ or $Cmd =~ /(.*\/?ccc-analyzer[^\/]*$)/) { if (!($Cmd =~ /ccc-analyzer/) and !defined $ENV{"CCC_CC"}) { From a7ff74a854081537acfe2a46628ff062e454e933 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Fri, 21 Sep 2018 13:57:21 +0200 Subject: [PATCH 04/12] improve polly test --- debian/qualify-clang.sh | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/debian/qualify-clang.sh b/debian/qualify-clang.sh index 04df9a22..a38f65ae 100755 --- a/debian/qualify-clang.sh +++ b/debian/qualify-clang.sh @@ -314,9 +314,19 @@ int main() clang-$VERSION -O3 -mllvm -polly foo.c clang-$VERSION -O3 -mllvm -polly -mllvm -polly-parallel -lgomp foo.c clang-$VERSION -O3 -mllvm -polly -mllvm -polly-vectorizer=stripmine foo.c -clang-$VERSION -S -emit-llvm foo.c -o matmul.s +clang-$VERSION -S -fsave-optimization-record -emit-llvm foo.c -o matmul.s opt-$VERSION -S -polly-canonicalize matmul.s > matmul.preopt.ll > /dev/null opt-$VERSION -basicaa -polly-ast -analyze -q matmul.preopt.ll -polly-process-unprofitable > /dev/null +if test ! -f /usr/lib/llvm-$VERSION/share/opt-viewer/opt-viewer.py; then + echo "Install llvm-$VERSION-tools" + exit 42 +fi +/usr/lib/llvm-$VERSION/share/opt-viewer/opt-viewer.py -source-dir . matmul.opt.yaml -o ./output > /dev/null + +if ! grep "not inlined into" output/foo.c.html 2>&1; then + echo "Could not find the output from polly" + exit -1 +fi echo "b main run @@ -436,6 +446,7 @@ EOF #clean up rm -f a.out bar crash-* foo foo.* lldb-cmd.txt main.c test_fuzzer.cc foo.* o +rm -rf output matmul.* # only for AMD64 for now # many sanitizers only work on AMD64 From 62045b70ebfb7cd7aceeac87f8d9693f0977880b Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Fri, 21 Sep 2018 14:09:31 +0200 Subject: [PATCH 05/12] also test pgo and rpass --- debian/qualify-clang.sh | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/debian/qualify-clang.sh b/debian/qualify-clang.sh index a38f65ae..d9b081d1 100755 --- a/debian/qualify-clang.sh +++ b/debian/qualify-clang.sh @@ -328,6 +328,30 @@ if ! grep "not inlined into" output/foo.c.html 2>&1; then exit -1 fi +echo " +int foo(int x, int y) __attribute__((always_inline)); +int foo(int x, int y) { return x + y; } +int bar(int j) { return foo(j, j - 2); }" > foo.cc +clang-$VERSION -O2 -Rpass=inline foo.cc -c &> foo.log +if ! grep "with cost=always" foo.log; then + echo "-Rpass fails" + cat foo.log + exit 1 +fi +echo " +int X = 0; + +int main() { + int i; + for (i = 0; i < 100; i++) + X += i; + return 0; +}"> foo.cc +clang++-$VERSION -O2 -fprofile-instr-generate foo.cc -o foo +LLVM_PROFILE_FILE="foo-%p.profraw" ./foo +llvm-profdata-$VERSION merge -output=foo.profdata foo-*.profraw +clang++-$VERSION -O2 -fprofile-instr-use=foo.profdata foo.cc -o foo + echo "b main run bt @@ -446,7 +470,7 @@ EOF #clean up rm -f a.out bar crash-* foo foo.* lldb-cmd.txt main.c test_fuzzer.cc foo.* o -rm -rf output matmul.* +rm -rf output matmul.* *profraw # only for AMD64 for now # many sanitizers only work on AMD64 From b5fc76579201c96ae2236cd4c73a8e9a821bd40f Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Fri, 21 Sep 2018 14:16:18 +0200 Subject: [PATCH 06/12] also generate the apt-get install cli --- debian/qualify-clang.sh | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/debian/qualify-clang.sh b/debian/qualify-clang.sh index d9b081d1..b09da76d 100755 --- a/debian/qualify-clang.sh +++ b/debian/qualify-clang.sh @@ -4,10 +4,15 @@ set -e VERSION=7 DETAILED_VERSION=7~+rc1-1~exp3 - +LIST="libomp5-${VERSION}_${DETAILED_VERSION}_amd64.deb libomp-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb lldb-${VERSION}_${DETAILED_VERSION}_amd64.deb python-lldb-${VERSION}_${DETAILED_VERSION}_amd64.deb libllvm7_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb liblldb-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libclang1-${VERSION}_${DETAILED_VERSION}_amd64.deb libclang-common-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}_${DETAILED_VERSION}_amd64.deb liblldb-${VERSION}_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}-runtime_${DETAILED_VERSION}_amd64.deb lld-${VERSION}_${DETAILED_VERSION}_amd64.deb libfuzzer-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libclang-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libc++-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libc++1-${VERSION}_${DETAILED_VERSION}_amd64.deb clang-${VERSION}_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}-tools_${DETAILED_VERSION}_amd64.deb" echo "To install everything:" -echo "sudo dpkg -i libomp5-${VERSION}_${DETAILED_VERSION}_amd64.deb libomp-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb lldb-${VERSION}_${DETAILED_VERSION}_amd64.deb python-lldb-${VERSION}_${DETAILED_VERSION}_amd64.deb libllvm7_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb liblldb-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libclang1-${VERSION}_${DETAILED_VERSION}_amd64.deb libclang-common-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}_${DETAILED_VERSION}_amd64.deb liblldb-${VERSION}_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}-runtime_${DETAILED_VERSION}_amd64.deb lld-${VERSION}_${DETAILED_VERSION}_amd64.deb libfuzzer-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libclang-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libc++-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libc++1-${VERSION}_${DETAILED_VERSION}_amd64.deb clang-${VERSION}_${DETAILED_VERSION}_amd64.deb" - +echo "sudo dpkg -i $LIST" +L="" +for f in $LIST; do + L="$L $(echo $f|cut -d_ -f1)" +done +echo "or" +echo "apt-get install $L" if test ! -f /usr/bin/llvm-config-$VERSION; then echo "Install llvm-$VERSION & llvm-$VERSION-dev" From 62e6bb61b12c68817069f08ead7458df9627cdcf Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Fri, 21 Sep 2018 14:16:33 +0200 Subject: [PATCH 07/12] perform the cleanup at the end --- debian/qualify-clang.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/debian/qualify-clang.sh b/debian/qualify-clang.sh index b09da76d..15f79bb5 100755 --- a/debian/qualify-clang.sh +++ b/debian/qualify-clang.sh @@ -473,10 +473,6 @@ int main () } EOF -#clean up -rm -f a.out bar crash-* foo foo.* lldb-cmd.txt main.c test_fuzzer.cc foo.* o -rm -rf output matmul.* *profraw - # only for AMD64 for now # many sanitizers only work on AMD64 # x32 programs need to be enabled in the kernel bootparams for debian @@ -522,4 +518,8 @@ if test ! -f /usr/lib/llvm-$VERSION/lib/libclangBasic.a; then exit 1 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 + echo "Completed" From 1fd825a7855608bb6ea8d388ed8e143aba707383 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Fri, 21 Sep 2018 14:18:50 +0200 Subject: [PATCH 08/12] merge --- debian/changelog | 3 +++ debian/qualify-clang.sh | 53 ++++++++++++++++++++++++++++++++++++----- 2 files changed, 50 insertions(+), 6 deletions(-) diff --git a/debian/changelog b/debian/changelog index 20d2bf9b..a353daa5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -94,6 +94,9 @@ llvm-toolchain-snapshot (1:8~svn340819-1) unstable; urgency=medium -- Sylvestre Ledru Tue, 28 Aug 2018 16:28:24 +0200 +llvm-toolchain-7 (1:7-3) unstable; urgency=medium + + * Fix a syntax issue in a scan-build patch llvm-toolchain-7 (1:7-2) unstable; urgency=medium * Fix the ftbfs under armel on libc++ and enable openmp on armel. diff --git a/debian/qualify-clang.sh b/debian/qualify-clang.sh index ab75e951..dc615e3d 100755 --- a/debian/qualify-clang.sh +++ b/debian/qualify-clang.sh @@ -5,9 +5,15 @@ set -e VERSION=8 DETAILED_VERSION=8~+rc1-1~exp2 +LIST="libomp5-${VERSION}_${DETAILED_VERSION}_amd64.deb libomp-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb lldb-${VERSION}_${DETAILED_VERSION}_amd64.deb python-lldb-${VERSION}_${DETAILED_VERSION}_amd64.deb libllvm7_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb liblldb-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libclang1-${VERSION}_${DETAILED_VERSION}_amd64.deb libclang-common-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}_${DETAILED_VERSION}_amd64.deb liblldb-${VERSION}_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}-runtime_${DETAILED_VERSION}_amd64.deb lld-${VERSION}_${DETAILED_VERSION}_amd64.deb libfuzzer-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libclang-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libc++-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libc++1-${VERSION}_${DETAILED_VERSION}_amd64.deb clang-${VERSION}_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}-tools_${DETAILED_VERSION}_amd64.deb" echo "To install everything:" -echo "sudo dpkg -i libomp5-${VERSION}_${DETAILED_VERSION}_amd64.deb libomp-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb lldb-${VERSION}_${DETAILED_VERSION}_amd64.deb python-lldb-${VERSION}_${DETAILED_VERSION}_amd64.deb libllvm7_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb liblldb-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libclang1-${VERSION}_${DETAILED_VERSION}_amd64.deb libclang-common-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}_${DETAILED_VERSION}_amd64.deb liblldb-${VERSION}_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}-runtime_${DETAILED_VERSION}_amd64.deb lld-${VERSION}_${DETAILED_VERSION}_amd64.deb libfuzzer-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libclang-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libc++-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libc++1-${VERSION}_${DETAILED_VERSION}_amd64.deb clang-${VERSION}_${DETAILED_VERSION}_amd64.deb" - +echo "sudo dpkg -i $LIST" +L="" +for f in $LIST; do + L="$L $(echo $f|cut -d_ -f1)" +done +echo "or" +echo "apt-get install $L" if test ! -f /usr/bin/llvm-config-$VERSION; then echo "Install llvm-$VERSION & llvm-$VERSION-dev" @@ -321,9 +327,43 @@ int main() clang-$VERSION -O3 -mllvm -polly foo.c clang-$VERSION -O3 -mllvm -polly -mllvm -polly-parallel -lgomp foo.c clang-$VERSION -O3 -mllvm -polly -mllvm -polly-vectorizer=stripmine foo.c -clang-$VERSION -S -emit-llvm foo.c -o matmul.s +clang-$VERSION -S -fsave-optimization-record -emit-llvm foo.c -o matmul.s opt-$VERSION -S -polly-canonicalize matmul.s > matmul.preopt.ll > /dev/null opt-$VERSION -basicaa -polly-ast -analyze -q matmul.preopt.ll -polly-process-unprofitable > /dev/null +if test ! -f /usr/lib/llvm-$VERSION/share/opt-viewer/opt-viewer.py; then + echo "Install llvm-$VERSION-tools" + exit 42 +fi +/usr/lib/llvm-$VERSION/share/opt-viewer/opt-viewer.py -source-dir . matmul.opt.yaml -o ./output > /dev/null + +if ! grep "not inlined into" output/foo.c.html 2>&1; then + echo "Could not find the output from polly" + exit -1 +fi + +echo " +int foo(int x, int y) __attribute__((always_inline)); +int foo(int x, int y) { return x + y; } +int bar(int j) { return foo(j, j - 2); }" > foo.cc +clang-$VERSION -O2 -Rpass=inline foo.cc -c &> foo.log +if ! grep "with cost=always" foo.log; then + echo "-Rpass fails" + cat foo.log + exit 1 +fi +echo " +int X = 0; + +int main() { + int i; + for (i = 0; i < 100; i++) + X += i; + return 0; +}"> foo.cc +clang++-$VERSION -O2 -fprofile-instr-generate foo.cc -o foo +LLVM_PROFILE_FILE="foo-%p.profraw" ./foo +llvm-profdata-$VERSION merge -output=foo.profdata foo-*.profraw +clang++-$VERSION -O2 -fprofile-instr-use=foo.profdata foo.cc -o foo echo "b main run @@ -441,9 +481,6 @@ int main () } EOF -#clean up -rm -f a.out bar crash-* foo foo.* lldb-cmd.txt main.c test_fuzzer.cc foo.* o - # only for AMD64 for now # many sanitizers only work on AMD64 # x32 programs need to be enabled in the kernel bootparams for debian @@ -489,4 +526,8 @@ if test ! -f /usr/lib/llvm-$VERSION/lib/libclangBasic.a; then exit 1 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 + echo "Completed" From d1458638267a966c856d00a1a6d8a7d37889303d Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Fri, 21 Sep 2018 14:24:33 +0200 Subject: [PATCH 09/12] clang-tools was missing + check for scan-build --- debian/qualify-clang.sh | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/debian/qualify-clang.sh b/debian/qualify-clang.sh index 15f79bb5..ab95022e 100755 --- a/debian/qualify-clang.sh +++ b/debian/qualify-clang.sh @@ -4,7 +4,7 @@ set -e VERSION=7 DETAILED_VERSION=7~+rc1-1~exp3 -LIST="libomp5-${VERSION}_${DETAILED_VERSION}_amd64.deb libomp-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb lldb-${VERSION}_${DETAILED_VERSION}_amd64.deb python-lldb-${VERSION}_${DETAILED_VERSION}_amd64.deb libllvm7_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb liblldb-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libclang1-${VERSION}_${DETAILED_VERSION}_amd64.deb libclang-common-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}_${DETAILED_VERSION}_amd64.deb liblldb-${VERSION}_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}-runtime_${DETAILED_VERSION}_amd64.deb lld-${VERSION}_${DETAILED_VERSION}_amd64.deb libfuzzer-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libclang-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libc++-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libc++1-${VERSION}_${DETAILED_VERSION}_amd64.deb clang-${VERSION}_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}-tools_${DETAILED_VERSION}_amd64.deb" +LIST="libomp5-${VERSION}_${DETAILED_VERSION}_amd64.deb libomp-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb lldb-${VERSION}_${DETAILED_VERSION}_amd64.deb python-lldb-${VERSION}_${DETAILED_VERSION}_amd64.deb libllvm7_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb liblldb-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libclang1-${VERSION}_${DETAILED_VERSION}_amd64.deb libclang-common-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}_${DETAILED_VERSION}_amd64.deb liblldb-${VERSION}_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}-runtime_${DETAILED_VERSION}_amd64.deb lld-${VERSION}_${DETAILED_VERSION}_amd64.deb libfuzzer-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libclang-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libc++-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libc++1-${VERSION}_${DETAILED_VERSION}_amd64.deb clang-${VERSION}_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}-tools_${DETAILED_VERSION}_amd64.deb clang-tools-${VERSION}_${DETAILED_VERSION}_amd64.deb" echo "To install everything:" echo "sudo dpkg -i $LIST" L="" @@ -32,12 +32,19 @@ if ! ./foo 2>&1 | grep -q heap-use-after-free ; then echo "sanitize=address is failing" exit 42 fi + +if test ! -f /usr/bin/scan-build-$VERSION; then + echo "Install clang-tools-$VERSION" + exit 1 +fi + echo ' void test() { int x; x = 1; // warn } '> foo.c + scan-build-$VERSION gcc -c foo.c &> /dev/null scan-build-$VERSION clang-$VERSION -c foo.c &> /dev/null From 53ce54faf293e5454dff725962d7753d8f95c0af Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Fri, 21 Sep 2018 14:28:28 +0200 Subject: [PATCH 10/12] fix the grep in the test --- debian/qualify-clang.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/qualify-clang.sh b/debian/qualify-clang.sh index 423058d4..e8c7d06d 100755 --- a/debian/qualify-clang.sh +++ b/debian/qualify-clang.sh @@ -51,7 +51,7 @@ scan-build-$VERSION gcc -c foo.c &> /dev/null scan-build-$VERSION clang-$VERSION -c foo.c &> /dev/null scan-build-$VERSION --exclude non-existing/ --exclude /tmp/ -v clang-$VERSION -c foo.c &> /dev/null scan-build-$VERSION --exclude $(pwd) -v clang-$VERSION -c foo.c &> foo.log -if ! grep -q -E "scan-build: 0 bugs found."; then +if ! grep -q -E "scan-build: 0 bugs found." foo.log; then echo "scan-build --exclude didn't ignore the defect" exit 42 fi From 1a4c0465ce6bcb13f87226cf71a06f9be0daf273 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Fri, 21 Sep 2018 14:31:53 +0200 Subject: [PATCH 11/12] also install libc++ abi --- debian/qualify-clang.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/qualify-clang.sh b/debian/qualify-clang.sh index ab95022e..0490851f 100755 --- a/debian/qualify-clang.sh +++ b/debian/qualify-clang.sh @@ -4,7 +4,7 @@ set -e VERSION=7 DETAILED_VERSION=7~+rc1-1~exp3 -LIST="libomp5-${VERSION}_${DETAILED_VERSION}_amd64.deb libomp-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb lldb-${VERSION}_${DETAILED_VERSION}_amd64.deb python-lldb-${VERSION}_${DETAILED_VERSION}_amd64.deb libllvm7_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb liblldb-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libclang1-${VERSION}_${DETAILED_VERSION}_amd64.deb libclang-common-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}_${DETAILED_VERSION}_amd64.deb liblldb-${VERSION}_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}-runtime_${DETAILED_VERSION}_amd64.deb lld-${VERSION}_${DETAILED_VERSION}_amd64.deb libfuzzer-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libclang-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libc++-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libc++1-${VERSION}_${DETAILED_VERSION}_amd64.deb clang-${VERSION}_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}-tools_${DETAILED_VERSION}_amd64.deb clang-tools-${VERSION}_${DETAILED_VERSION}_amd64.deb" +LIST="libomp5-${VERSION}_${DETAILED_VERSION}_amd64.deb libomp-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb lldb-${VERSION}_${DETAILED_VERSION}_amd64.deb python-lldb-${VERSION}_${DETAILED_VERSION}_amd64.deb libllvm7_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb liblldb-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libclang1-${VERSION}_${DETAILED_VERSION}_amd64.deb libclang-common-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}_${DETAILED_VERSION}_amd64.deb liblldb-${VERSION}_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}-runtime_${DETAILED_VERSION}_amd64.deb lld-${VERSION}_${DETAILED_VERSION}_amd64.deb libfuzzer-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libclang-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libc++-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libc++abi-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libc++1-${VERSION}_${DETAILED_VERSION}_amd64.deb libc++abi1-${VERSION}_${DETAILED_VERSION}_amd64.deb clang-${VERSION}_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}-tools_${DETAILED_VERSION}_amd64.deb clang-tools-${VERSION}_${DETAILED_VERSION}_amd64.deb" echo "To install everything:" echo "sudo dpkg -i $LIST" L="" From 5a32eb3cd9da447d134cbed37bdb66938281e7d4 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Fri, 21 Sep 2018 14:35:49 +0200 Subject: [PATCH 12/12] the syntax changed --- debian/qualify-clang.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/qualify-clang.sh b/debian/qualify-clang.sh index ba71f7d7..b14f6e0d 100755 --- a/debian/qualify-clang.sh +++ b/debian/qualify-clang.sh @@ -5,7 +5,7 @@ set -e VERSION=8 DETAILED_VERSION=8~+rc1-1~exp2 -LIST="libomp5-${VERSION}_${DETAILED_VERSION}_amd64.deb libomp-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb lldb-${VERSION}_${DETAILED_VERSION}_amd64.deb python-lldb-${VERSION}_${DETAILED_VERSION}_amd64.deb libllvm7_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb liblldb-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libclang1-${VERSION}_${DETAILED_VERSION}_amd64.deb libclang-common-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}_${DETAILED_VERSION}_amd64.deb liblldb-${VERSION}_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}-runtime_${DETAILED_VERSION}_amd64.deb lld-${VERSION}_${DETAILED_VERSION}_amd64.deb libfuzzer-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libclang-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libc++-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libc++abi-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libc++1-${VERSION}_${DETAILED_VERSION}_amd64.deb libc++abi1-${VERSION}_${DETAILED_VERSION}_amd64.deb clang-${VERSION}_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}-tools_${DETAILED_VERSION}_amd64.deb clang-tools-${VERSION}_${DETAILED_VERSION}_amd64.deb" +LIST="libomp5-${VERSION}_${DETAILED_VERSION}_amd64.deb libomp-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb lldb-${VERSION}_${DETAILED_VERSION}_amd64.deb python-lldb-${VERSION}_${DETAILED_VERSION}_amd64.deb libllvm7_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb liblldb-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libclang1-${VERSION}_${DETAILED_VERSION}_amd64.deb libclang-common-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}_${DETAILED_VERSION}_amd64.deb liblldb-${VERSION}_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}-runtime_${DETAILED_VERSION}_amd64.deb lld-${VERSION}_${DETAILED_VERSION}_amd64.deb libfuzzer-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libclang-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libc++-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libc++abi-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libc++1-${VERSION}_${DETAILED_VERSION}_amd64.deb clang-${VERSION}_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}-tools_${DETAILED_VERSION}_amd64.deb clang-tools-${VERSION}_${DETAILED_VERSION}_amd64.deb" echo "To install everything:" echo "sudo dpkg -i $LIST" @@ -354,7 +354,7 @@ int foo(int x, int y) __attribute__((always_inline)); int foo(int x, int y) { return x + y; } int bar(int j) { return foo(j, j - 2); }" > foo.cc clang-$VERSION -O2 -Rpass=inline foo.cc -c &> foo.log -if ! grep "with cost=always" foo.log; then +if ! grep "cost=always" foo.log; then echo "-Rpass fails" cat foo.log exit 1