]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
LoongArch: Fixed bug in *bstrins_<mode>_for_ior_mask template.
authorLi Wei <liwei@loongson.cn>
Mon, 25 Dec 2023 03:20:23 +0000 (11:20 +0800)
committerLulu Cheng <chenglulu@loongson.cn>
Wed, 27 Dec 2023 06:53:50 +0000 (14:53 +0800)
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

index 7021105b2415651290b7a5ca6db725ae5f232cde..2b0609f2f319028130e33887dd5bf14c5303f00f 100644 (file)
   "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))]