https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116510

--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> ---
And yes, there's a type mismatch in ifcvt:

(gdb) p captures[1]
$1 = <integer_cst 0x7ffff6fbde10>
(gdb) p captures[0]
$2 = <ssa_name 0x7ffff6fde1f8 8>
(gdb) p debug_tree ($1)
 <integer_cst 0x7ffff6fbde10 type <integer_type 0x7ffff6e22348 unsigned char>
constant 92>
$3 = void
(gdb) p debug_tree ($2)
 <ssa_name 0x7ffff6fde1f8
    type <integer_type 0x7ffff6e225e8 int public SI

the built 'cond' is

!(_8 == 92 | _8 == 34)

where _8 is 'int' but the case label constants are 'unsigned char'.  You
have to convert the case label constants to the type of the switch variable.

Reply via email to