mirror of
https://github.com/gcc-mirror/gcc.git
synced 2026-05-06 06:49:09 +02:00
widen mult: Fix handling of _Fract mixed with _Fract [PR119568]
The problem here is we try calling find_widening_optab_handler_and_mode with to_mode=E_USAmode and from_mode=E_UHQmode. This causes an ICE (with checking only). The fix is to reject the case where the mode classes are different in convert_plusminus_to_widen before even trying to deal with the modes. Bootstrapped and tested on x86_64-linux-gnu. PR tree-optimization/119568 gcc/ChangeLog: * tree-ssa-math-opts.cc (convert_plusminus_to_widen): Reject different mode classes. Signed-off-by: Andrew Pinski <andrew.pinski@oss.qualcomm.com>
This commit is contained in:
@@ -2982,6 +2982,11 @@ convert_plusminus_to_widen (gimple_stmt_iterator *gsi, gimple *stmt,
|
||||
if (to_mode == from_mode)
|
||||
return false;
|
||||
|
||||
/* For fixed point types, the mode classes could be different
|
||||
so reject that case. */
|
||||
if (GET_MODE_CLASS (from_mode) != GET_MODE_CLASS (to_mode))
|
||||
return false;
|
||||
|
||||
from_unsigned1 = TYPE_UNSIGNED (type1);
|
||||
from_unsigned2 = TYPE_UNSIGNED (type2);
|
||||
optype = type1;
|
||||
|
||||
Reference in New Issue
Block a user