From: Ben Elliston Date: Tue, 17 Jan 2006 19:58:35 +0000 (+0000) Subject: rs6000.c (rs6000_hard_regno_mode_ok): Reject decimal float modes for all floating... X-Git-Tag: releases/gcc-4.2.0~4810 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a5a97921829bb7d51f71fdb05f5ef0d65be3f354;p=thirdparty%2Fgcc.git rs6000.c (rs6000_hard_regno_mode_ok): Reject decimal float modes for all floating point registers. * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Reject decimal float modes for all floating point registers. From-SVN: r109836 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index eb684fbe8ffe..252bab04b370 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,8 @@ 2006-01-18 Ben Elliston + * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Reject + decimal float modes for all floating point registers. + * config/rs6000/predicates.md (reg_or_mem_operand): Pair up match_code "mem" with match_test "macho_lo_sum_memory_operand". diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index b41a3934f564..97430dd414e5 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -1031,10 +1031,12 @@ rs6000_hard_regno_mode_ok (int regno, enum machine_mode mode) if (INT_REGNO_P (regno)) return INT_REGNO_P (regno + HARD_REGNO_NREGS (regno, mode) - 1); - /* The float registers can only hold floating modes and DImode. */ + /* The float registers can only hold floating modes and DImode. + This also excludes decimal float modes. */ if (FP_REGNO_P (regno)) return (SCALAR_FLOAT_MODE_P (mode) + && !DECIMAL_FLOAT_MODE_P (mode) && FP_REGNO_P (regno + HARD_REGNO_NREGS (regno, mode) - 1)) || (GET_MODE_CLASS (mode) == MODE_INT && GET_MODE_SIZE (mode) == UNITS_PER_FP_WORD);