【标题描述】
[20.03 SP4 RC1][deja] 生成的过程或目标文件中找不到预期目标字段
【环境信息】
软件信息
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/aarch64-linux-gnu/7.3.0/lto-wrapper
Target: aarch64-linux-gnu
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,objc,obj-c++,fortran,lto --enable-plugin --enable-initfini-array --disable-libgcj --with-isl=/home/lkp/rpmbuild/BUILD/gcc-7.3.0/obj-aarch64-linux-gnu/isl-install --without-cloog --enable-gnu-indirect-function --build=aarch64-linux-gnu --with-stage1-ldflags=' -Wl,-z,relro,-z,now' --with-boot-ldflags=' -Wl,-z,relro,-z,now' --enable-bolt --with-multilib-list=lp64
【问题复现步骤】
1.用例thread_leak1.c
gcc thread_leak1.c -Wl,-rpath=/usr/lib64 -fsanitize=thread -g -fno-diagnostics-show-caret -fdiagnostics-color=never -O0 -lm -o ./thread_leak1.exe
./thread_leak1.exe
2.用例unreachable-3.c
gcc unreachable-3.c -Wl,-rpath=/usr/lib64 -fsanitize=unreachable -O2 -fno-reorder-blocks -fsanitize-coverage=trace-pc -fdump-tree-optimized -S -o unreachable-3.s
grep "__builtin___ubsan_handle_builtin_unreachable" *.optimized
3.用例cunroll-12.c
gcc cunroll-12.c -Wl,-rpath=/usr/lib64 -O3 -Warray-bounds -fdump-tree-cunroll-blocks-details -S -o cunroll-12.s
grep "loop with 7 iterations" *.cunroll
4.用例cunroll-4.c
gcc cunroll-4.c -Wl,-rpath=/usr/lib64 -O3 -fdump-tree-ivcanon-details -S -o cunroll-4.s
grep "loop turned into" *.ivcanon
grep "Last iteration exit" *.ivcanon
5.用例ssa-pre-27.c
gcc ssa-pre-27.c -Wl,-rpath=/usr/lib64 -O2 -fdump-tree-pre -fno-code-hoisting -S -o ssa-pre-27.s
grep "# prephitmp" *.pre
6.用例no-scevccp-outer-22.c
gcc no-scevccp-outer-22.c -Wl,-rpath=/usr/lib64 -ftree-vectorize -fno-vect-cost-model -fno-common -O2 -fdump-tree-vect-details -fno-tree-scev-cprop -lm -o ./no-scevccp-outer-22.exe
grep "OUTER LOOP VECTORIZED" *.vect
【实际结果】
1.用例thread_leak1.c,没有扫描到“SUMMARY: ThreadSanitizer: thread leak.*main.*”
2.用例unreachable-3.c,没有扫描到
3.用例cunroll-12.c,没有扫描到
4.用例cunroll-4.c,没有扫描到
5.用例ssa-pre-27.c,只需要扫描到2次,实际扫描到4次
6.用例no-scevccp-outer-22.c,没有扫描到
Hi jixiaohuiyou, welcome to the openEuler Community.
I'm the Bot here serving you. You can find the instructions on how to interact with me at Here.
If you have any questions, please contact the SIG: Compiler, and any of the maintainers: @Noah , @eastb233 , @kuen , @Peilin Guo , @编译小伙 , @huangxiaoquan , @cf-zhao , @周磊 , @stubCode , @dingguangya
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
用例2~6扫描的目的是啥,是否影响deja结果?
如果不影响deja结果,那么说明变动的IR不影响这个用例看护的特性,那么为什么要纠结某些具体IR的不同呢?
可以使用以下runtest命令跑用例:
runtest --tool gcc tsan.exp=thread_leak1.c
runtest --tool gcc ubsan.exp=unreachable-3.c
runtest --tool gcc tree-ssa.exp=cunroll-12.c
runtest --tool gcc tree-ssa.exp=cunroll-4.c
runtest --tool gcc tree-ssa.exp=ssa-pre-27.c
runtest --tool gcc vect.exp=no-scevccp-outer-22.c
问题2定位到 Patch7: add-tsv110-pipeline-scheduling.patch
问题3定位到 Patch26: arm-adjust-be-ldrd-strd.patch
问题4定位到 Patch26: arm-adjust-be-ldrd-strd.patch
问题5定位到 Patch24: floop-interchange.patch
问题6定位到 Patch24: floop-interchange.patch
floop-interchange.patch
的引入是因为以前计划在SPEC2006上提升一些性能,因此尝试了一下高版本的一些优化,选择了几个有一些效果的优化进行回合,整体提升约1%左右。
目前20.03 gcc 7.3并没有需要SPEC 2006性能场景,该选项也无其他使用场景,因此我觉得可以去掉这个patch。
arm-adjust-be-ldrd-strd.patch
是 arm 场景的一个特性,openEuler并没有arm场景,实际上该特性并没有人使用,我觉得可以直接去掉。
add-tsv110-pipeline-scheduling.patch
是tsv110流水线特性,这个我觉得需要分析一下,属于常用的特性。
使用20.03 LTS-SP4 RC5转测repo,用例thread_leak1.c回归结果:不通过
使用20.03 LTS-SP4 RC5转测repo,用例unreachable-3.c回归结果:通过
使用20.03 LTS-SP4 RC5转测repo,用例cunroll-12.c回归结果:通过
使用20.03 LTS-SP4 RC5转测repo,用例cunroll-4.c回归结果:通过
使用20.03 LTS-SP4 RC5转测repo,用例ssa-pre-27.c回归结果:通过
使用20.03 LTS-SP4 RC5转测repo,用例no-scevccp-outer-22.c回归结果:通过
在开源gcc的lib64文件夹下执行strip libtsan.so.0.0.0
后,配置工具链:
export PATH=/root/install/bin:$PATH
export LD_LIBRARY_PATH=/root/install/lib64:$LD_LIBRARY_PATH
执行:runtest --tool tsan.exp=thread_leak1.c
结果如下,和系统自带gcc跑出的结果相同
使用20.03 LTS-SP4 RC5转测repo里gcc源码本地构建,用例成功通过
登录 后才可以发表评论