[gcc r14-6847] LoongArch: Fixed bug in *bstrins_<mode>_for_ior_mask template.

LuluCheng chenglulu@gcc.gnu.org
Wed Dec 27 06:55:57 GMT 2023


https://gcc.gnu.org/g:245c9ef2b8574fcaf277416d5986f46c0babbbec

commit r14-6847-g245c9ef2b8574fcaf277416d5986f46c0babbbec
Author: Li Wei <liwei@loongson.cn>
Date:   Mon Dec 25 11:20:23 2023 +0800

    LoongArch: Fixed bug in *bstrins_<mode>_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_<mode>_for_ior_mask template was
    empty, which should actually be consistent with the insn condition.
    
    gcc/ChangeLog:
    
            * config/loongarch/loongarch.md: Adjust.

Diff:
---
 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 @@
   "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))]


More information about the Gcc-cvs mailing list