rtl: builtins: Fix builtins feclearexcept and feraiseexcept operand check [PR94193]
authorRaoni Fassina Firmino <raoni@linux.ibm.com>
Wed, 26 Jan 2022 15:05:54 +0000 (12:05 -0300)
committerSegher Boessenkool <segher@kernel.crashing.org>
Wed, 26 Jan 2022 15:20:41 +0000 (15:20 +0000)
Commit 4343f5e25679 ("rtl: builtins: (not just) rs6000: Add builtins
for fegetround, feclearexcept and feraiseexcept [PR94193]") broke gcc
bootstra when building with --enable-checking=rtl[1].

The function expand_builtin_feclear_feraise_except was failing to
proper validate op0 predicate before emit_insn leading to the mismatch
type failure.

[1] https://gcc.gnu.org/pipermail/gcc-patches/2022-January/589186.html

2022-01-26  Raoni Fassina Firmino  <raoni@linux.ibm.com>

gcc/
PR target/94193
* builtins.cc (expand_builtin_feclear_feraise_except): Add op0
predicate check.

Signed-off-by: Raoni Fassina Firmino <raoni@linux.ibm.com>
gcc/builtins.cc

index e842080..d784a57 100644 (file)
@@ -2598,6 +2598,9 @@ expand_builtin_feclear_feraise_except (tree exp, rtx target,
   if (icode == CODE_FOR_nothing)
     return NULL_RTX;
 
+  if (!(*insn_data[icode].operand[1].predicate) (op0, GET_MODE (op0)))
+    return NULL_RTX;
+
   if (target == 0
       || GET_MODE (target) != target_mode
       || !(*insn_data[icode].operand[0].predicate) (target, target_mode))