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_<mode>_for_ior_mask template was empty, which should actually be consistent with the insn condition.
gcc/ChangeLog: * config/loongarch/loongarch.md: Adjust. --- gcc/config/loongarch/loongarch.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/config/loongarch/loongarch.md b/gcc/config/loongarch/loongarch.md index 7021105b241..2b0609f2f31 100644 --- a/gcc/config/loongarch/loongarch.md +++ b/gcc/config/loongarch/loongarch.md @@ -1489,7 +1489,7 @@ (define_insn_and_split "*bstrins_<mode>_for_ior_mask" "loongarch_pre_reload_split () && \ loongarch_use_bstrins_for_ior_with_mask (<MODE>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))] -- 2.39.3