From: Li Wei Date: Mon, 25 Dec 2023 03:20:23 +0000 (+0800) Subject: LoongArch: Fixed bug in *bstrins__for_ior_mask template. X-Git-Tag: basepoints/gcc-15~3292 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=245c9ef2b8574fcaf277416d5986f46c0babbbec;p=thirdparty%2Fgcc.git LoongArch: Fixed bug in *bstrins__for_ior_mask template. We found that using the latest compiled gcc will cause a miscompare error when running spec2006 400.perlbench test with -flto turned on. After testing, it was found that only the LoongArch architecture will report errors. The first error commit was located through the git bisect command as r14-3773-g5b857e87201335. Through debugging, it was found that the problem was that the split condition of the *bstrins__for_ior_mask template was empty, which should actually be consistent with the insn condition. gcc/ChangeLog: * config/loongarch/loongarch.md: Adjust. --- diff --git a/gcc/config/loongarch/loongarch.md b/gcc/config/loongarch/loongarch.md index 7021105b2415..2b0609f2f319 100644 --- a/gcc/config/loongarch/loongarch.md +++ b/gcc/config/loongarch/loongarch.md @@ -1489,7 +1489,7 @@ "loongarch_pre_reload_split () && \ loongarch_use_bstrins_for_ior_with_mask (mode, operands)" "#" - "" + "&& true" [(set (match_dup 0) (match_dup 1)) (set (zero_extract:GPR (match_dup 0) (match_dup 2) (match_dup 4)) (match_dup 3))]