From d1f0a70a1284af293bbd95e31cdbeb8ac6db9885 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Wed, 3 Aug 2016 10:03:37 +0930 Subject: [PATCH] [RS6000] Force source of fix_truncsi2 to reg * config/rs6000/rs6000.md (fix_truncsi2): Force source operand to a reg. Localize vars. From-SVN: r239011 --- gcc/ChangeLog | 5 +++++ gcc/config/rs6000/rs6000.md | 10 +++++----- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index da112f402fb..a75f39fdbbb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,10 @@ 2016-08-03 Alan Modra + * config/rs6000/rs6000.md (fix_truncsi2): Force source operand + to a reg. Localize vars. + +2016-08-03 Alan Modra + * config/rs6000/rs6000.opt: Remove negatives from help strings and comments. diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index 5afae92291c..45ad66104fa 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -5357,15 +5357,15 @@ { if (!) { - rtx tmp, stack; + rtx src = force_reg (SFmode, operands[1]); if (TARGET_STFIWX) - emit_insn (gen_fix_truncsi2_stfiwx (operands[0], operands[1])); + emit_insn (gen_fix_truncsi2_stfiwx (operands[0], src)); else { - tmp = gen_reg_rtx (DImode); - stack = rs6000_allocate_stack_temp (DImode, true, false); - emit_insn (gen_fix_truncsi2_internal (operands[0], operands[1], + rtx tmp = gen_reg_rtx (DImode); + rtx stack = rs6000_allocate_stack_temp (DImode, true, false); + emit_insn (gen_fix_truncsi2_internal (operands[0], src, tmp, stack)); } DONE; -- 2.11.4.GIT