]> gcc.gnu.org Git - gcc.git/commitdiff
RISC-V: Sanitise NEED_EQ_NE_P case with `riscv_emit_int_compare'
authorMaciej W. Rozycki <macro@embecosm.com>
Wed, 22 Nov 2023 01:18:23 +0000 (01:18 +0000)
committerMaciej W. Rozycki <macro@embecosm.com>
Wed, 22 Nov 2023 01:18:23 +0000 (01:18 +0000)
For the NEED_EQ_NE_P `riscv_emit_int_compare' is documented to only emit
EQ or NE comparisons against zero, however it does not catch incorrect
use where a non-equality comparison has been requested and falls through
to the general case then.  Add a safety guard to catch such a case then.

Arguably the NEED_EQ_NE_P case would best be moved into a function of
its own, but let's leave it for a separate cleanup.

gcc/
* config/riscv/riscv.cc (riscv_emit_int_compare): Bail out if
NEED_EQ_NE_P but the comparison is neither EQ nor NE.

gcc/config/riscv/riscv.cc

index 60d3f617395dbdd9d823714f8e28c5b3fc4d531d..453c5f17196c95fdacf1338a7bf2e58adbc7cdf4 100644 (file)
@@ -3808,6 +3808,7 @@ riscv_emit_int_compare (enum rtx_code *code, rtx *op0, rtx *op1,
          *op1 = const0_rtx;
          return;
        }
+      gcc_unreachable ();
     }
 
   if (splittable_const_int_operand (*op1, VOIDmode))
This page took 0.065486 seconds and 5 git commands to generate.