This fixes an ICE with -mno-direct-move. Tested etc.; committing.
Segher 2018-04-12 Segher Boessenkool <seg...@kernel.crashing.org> * config/rs6000/rs6000.md (fix_trunc<mode>si2): Use legacy code if asked to not generate direct moves. (fix_trunc<mode>si2_stfiwx): Similar. (fix_trunc<mode>si2_internal): Similar. --- gcc/config/rs6000/rs6000.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index 25ac0b8..de652fa 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -5591,7 +5591,7 @@ (define_expand "fix_trunc<mode>si2" (fix:SI (match_operand:SFDF 1 "gpc_reg_operand")))] "TARGET_HARD_FLOAT && <TARGET_FLOAT>" { - if (!TARGET_P8_VECTOR) + if (!(TARGET_P8_VECTOR && TARGET_DIRECT_MOVE)) { rtx src = force_reg (<MODE>mode, operands[1]); @@ -5618,7 +5618,7 @@ (define_insn_and_split "fix_trunc<mode>si2_stfiwx" "TARGET_HARD_FLOAT && TARGET_DOUBLE_FLOAT && (<MODE>mode != SFmode || TARGET_SINGLE_FLOAT) && TARGET_STFIWX && can_create_pseudo_p () - && !TARGET_P8_VECTOR" + && !(TARGET_P8_VECTOR && TARGET_DIRECT_MOVE)" "#" "" [(pc)] @@ -5659,7 +5659,8 @@ (define_insn_and_split "fix_trunc<mode>si2_internal" (fix:SI (match_operand:SFDF 1 "gpc_reg_operand" "d,<rreg>"))) (clobber (match_operand:DI 2 "gpc_reg_operand" "=1,d")) (clobber (match_operand:DI 3 "offsettable_mem_operand" "=o,o"))] - "TARGET_HARD_FLOAT && TARGET_DOUBLE_FLOAT && !TARGET_P8_VECTOR" + "TARGET_HARD_FLOAT && TARGET_DOUBLE_FLOAT + && !(TARGET_P8_VECTOR && TARGET_DIRECT_MOVE)" "#" "" [(pc)] -- 1.8.3.1