https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104335
rdapp at linux dot ibm.com changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |rdapp at linux dot ibm.com --- Comment #1 from rdapp at linux dot ibm.com --- The problem is that we pass a CC comparison to rs6000_emit_cmove (). In the sequence before it will return false via if (FLOAT_MODE_P (compare_mode) && !FLOAT_MODE_P (result_mode)) because compare_mode == SFmode and result_mode == DImode. Now it continues with compare_mode == CCFPmode and result_mode still DImode. Finally, in rs6000_generate_compare the validation fails. It looks like this function does not expect CC comparison. It looks like you always try to generate one in the .md file already, regardless of whether the incoming comparison already is a CC comparison or not. I'm not really sure how to proceed. I guess CCFPmode is not a real FLOAT_MODE but maybe we should not continue at this point anyway? Or would we need some other mechanism now to make backends aware that this situation can occur now? I haven't checked all of them but I was expecting the backend to just return NULL_RTX if it cannot handle a specific combination of ops.