test suite
How to debug the test suite error¶
You'd better remove llvm/log first.
Log file¶
FAIL: test-suite :: SingleSource/UnitTests/SignlessTypes/cast-bug.test (467 of 543)
You can get below log:
Bash
FAIL: test-suite :: SingleSource/UnitTests/SignlessTypes/cast-bug.test (467 of 543)
******************** TEST 'test-suite :: SingleSource/UnitTests/SignlessTypes/cast-bug.test' FAILED ********************
/home/shkzhang/llvm/log/test-2019-05-10_05-22-47/tools/timeit-target --limit-core 0 --limit-cpu 7200 --timeout 7200 --limit-file-size 104857600 --limit-rss-size 838860800 --append-exitstatus --redirect-output /home/shkzhang/llvm/log/test-2019-05-10_05-22-47/SingleSource/UnitTests/SignlessTypes/Output/cast-bug.test.out --redirect-input /dev/null --chdir /home/shkzhang/llvm/log/test-2019-05-10_05-22-47/SingleSource/UnitTests/SignlessTypes --summary /home/shkzhang/llvm/log/test-2019-05-10_05-22-47/SingleSource/UnitTests/SignlessTypes/Output/cast-bug.test.time /home/shkzhang/llvm/log/test-2019-05-10_05-22-47/SingleSource/UnitTests/SignlessTypes/cast-bug 31415926
cd /home/shkzhang/llvm/log/test-2019-05-10_05-22-47/SingleSource/UnitTests/SignlessTypes ; /home/shkzhang/llvm/log/test-2019-05-10_05-22-47/tools/fpcmp /home/shkzhang/llvm/log/test-2019-05-10_05-22-47/SingleSource/UnitTests/SignlessTypes/Output/cast-bug.test.out cast-bug.reference_output
The error is line 5:
Bash
/home/shkzhang/llvm/log/test-2019-05-10_05-22-47/tools/fpcmp /home/shkzhang/llvm/log/test-2019-05-10_05-22-47/SingleSource/UnitTests/SignlessTypes/Output/cast-bug.test.out cast-bug.reference_output
Below is the build command:
Bash
/usr/bin/make -f SingleSource/UnitTests/SignlessTypes/CMakeFiles/div.dir/build.make SingleSource/UnitTests/SignlessTypes/CMakeFiles/div.dir/depend
[ 88%] Building C object SingleSource/UnitTests/SignlessTypes/CMakeFiles/cast-bug.dir/cast-bug.c.o
cd /home/shkzhang/llvm/log/test-2019-05-10_05-22-47/SingleSource/UnitTests/SignlessTypes && /home/shkzhang/llvm/log/test-2019-05-10_05-22-47/tools/timeit --summary CMakeFiles/cast-bug.dir/cast-bug.c.o.time /home/shkzhang/llvm/build/bin/clang -DNDEBUG -O3 -DNDEBUG -w -Werror=date-time -o CMakeFiles/cast-bug.dir/cast-bug.c.o -c /home/shkzhang/llvm_cdl/llvm-test-suite/SingleSource/UnitTests/SignlessTypes/cast-bug.c
The log file is in:
Bash
/home/shkzhang/llvm/log/test-2019-05-10_05-22-47/SingleSource/UnitTests/SignlessTypes/CMakeFiles/cast-bug.dir
If the test is right, you want to get the log, you can modify
Bash
/home/ken/llvm_cdl/llvm-test-suite/./SingleSource/UnitTests/SignlessTypes/cast-bug.reference_output
Add set -x in /home/ken/llvm_cdl/llvm-test-suite/DiffOutput.sh.
可能出错代码处加assert,定位出错的文件,然后单独编译此文件。
Bash
/home/ken/llvm_cdl/llvm-test-suite/HashProgramOutput.sh Output/ldecod.simple-hash
/home/ken/llvm_cdl/llvm-test-suite/DiffOutput.sh "/home/ken/llvm/log/test-2019-06-20_06-21-44/tools/fpcmp " simple ldecod
******************** TEST (simple) 'ldecod' FAILED! ********************
Execution Context Diff:
/home/ken/llvm/log/test-2019-06-20_06-21-44/tools/fpcmp: files differ without tolerance allowance
******************** TEST (simple) 'ldecod' ****************************
/home/ken/llvm_cdl/llvm-test-suite/RunSafely.sh --show-errors -t "/home/ken/llvm/log/test-2019-06-20_06-21-44/tools/timeit" 500 /dev/null Output/rawdaudio.llvm.o.compile \
/home/ken/llvm/build/bin/clang -I/home/ken/llvm/log/test-2019-06-20_06-21-44/MultiSource/Benchmarks/mediabench/adpcm/rawdaudio -I/home/ken/llvm_cdl/llvm-test-suite/MultiSource/Benchmarks/mediabench/adpcm/rawdaudio -I/home/ken/llvm_cdl/llvm-test-suite/include -I../../../../../include -D_GNU_SOURCE -D__STDC_LIMIT_MACROS -DNDEBUG -O3 -ffp-contract=off -fomit-frame-pointer -c /home/ken/llvm_cdl/llvm-test-suite/MultiSource/Benchmarks/mediabench/adpcm/rawdaudio/rawdaudio.c -o Output/rawdaudio.llvm.o
rm -f Output/ldecod.exe-simple
Bash
/home/ken/llvm/log/test-2019-06-20_08-42-10/MultiSource/Applications/JM/ldecod/Output
grep -r "exit"
The file return not 0 is error
cd /home/ken/llvm/log/test-2019-06-20_08-42-10/MultiSource/Applications/JM/ldecod/Output
/home/ken/llvm/build/bin/clang -D __USE_LARGEFILE64 -D _FILE_OFFSET_BITS=64 -I/home/ken/llvm/log/test-2019-06-20_08-42-10/MultiSource/Applications/JM/lencod -I/home/ken/llvm_cdl/llvm-test-suite/MultiSource/Applications/JM/lencod -I/home/ken/llvm_cdl/llvm-test-suite/include -I../../../../include -D_GNU_SOURCE -D__STDC_LIMIT_MACROS -DNDEBUG -O3 -ffp-contract=off -fomit-frame-pointer -c /home/ken/llvm_cdl/llvm-test-suite/MultiSource/Applications/JM/lencod/loopFilter.c -o Output/loopFilter.llvm.o
可在代码中标志输出,然后在所有的log中grep
Bash
12440 dbgs() << __LINE__ << "zhangkang_num*****************\n";
12441 LHS.dump();
12442 RHS.dump();
12443 N->dump();
12444 dbgs() << __LINE__ << "*****************\n";
cd /home/ken/llvm/log/test-2019-06-24_06-01-49
grep -r "zhangkang"
结合 test-2019-06-24_02-01-49.out 中出错的case,很容易定位到是哪个文件出现了不理想的结果。因为每个文件的编译输出都会输出到文件。
Open ./MultiSource/Benchmarks/MallocBench/cfrac/Output/atop.llvm.o.compile we can get the building file ./MultiSource/Benchmarks/MallocBench/cfrac/Output/atop.c. Then, we can search the test.log to get the cmd to build file
Bash
./MultiSource/Benchmarks/MallocBench/cfrac/Output/atop.llvm.o.compile:clang-9: /home/ken/llvm/llvm/lib/Target/PowerPC/PPCISelLowering.cpp:12397: llvm::SDValue llvm::PPCTargetLowering::combineSetCC(llvm::SDNode*, llvm::TargetLowering::DAGCombinerInfo&) const: Assertion `"zhangkang find a case" && false' failed.