]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
LoongArch: Fix mode size comparision in loongarch_expand_conditional_move
authorXi Ruoyao <xry111@xry111.site>
Wed, 12 Jun 2024 03:01:53 +0000 (11:01 +0800)
committerXi Ruoyao <xry111@xry111.site>
Wed, 12 Jun 2024 12:38:09 +0000 (20:38 +0800)
We were comparing a mode size with word_mode, but word_mode is an enum
value thus this does not really make any sense.  (Un)luckily E_DImode
happens to be 8 so this seemed to work, but let's make it correct so it
won't blow up when we add LA32 support or add another machine mode...

gcc/ChangeLog:

* config/loongarch/loongarch.cc
(loongarch_expand_conditional_move): Compare mode size with
UNITS_PER_WORD instead of word_mode.

gcc/config/loongarch/loongarch.cc

index 1b6df6a436503d1be9b93e580ba27ffa9badeef6..6ec3ee6250262d7f44fd851ee919bb35eccd12f7 100644 (file)
@@ -5352,7 +5352,7 @@ loongarch_expand_conditional_move (rtx *operands)
     loongarch_emit_float_compare (&code, &op0, &op1);
   else
     {
-      if (GET_MODE_SIZE (GET_MODE (op0)) < word_mode)
+      if (GET_MODE_SIZE (GET_MODE (op0)) < UNITS_PER_WORD)
        {
          promote_op[0] = (REG_P (op0) && REG_P (operands[2]) &&
                           REGNO (op0) == REGNO (operands[2]));