From: J"orn Rennecke Date: Tue, 13 Dec 2005 12:49:56 +0000 (+0000) Subject: rtlhooks.c (gen_lowpart_general): Handle SUBREGs of floating point values. X-Git-Tag: releases/gcc-4.2.0~5379 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=80e6edb051397f18aa328e0ddeb83f4bf380b3f9;p=thirdparty%2Fgcc.git rtlhooks.c (gen_lowpart_general): Handle SUBREGs of floating point values. * rtlhooks.c (gen_lowpart_general): Handle SUBREGs of floating point values. From-SVN: r108479 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0a6bd70888f5..345f7d6bec75 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2005-12-13 J"orn Rennecke + + * rtlhooks.c (gen_lowpart_general): Handle SUBREGs of floating point + values. + 2005-12-13 Nathan Sidwell * config/mt/t-mt (MULTILIB_OPTIONS): Add ms2 diff --git a/gcc/rtlhooks.c b/gcc/rtlhooks.c index bc413987865f..0034da783fac 100644 --- a/gcc/rtlhooks.c +++ b/gcc/rtlhooks.c @@ -44,9 +44,12 @@ gen_lowpart_general (enum machine_mode mode, rtx x) if (result) return result; - else if (REG_P (x)) + /* If it's a REG, it must be a hard reg that's not valid in MODE. */ + else if (REG_P (x) + /* Or we could have a subreg of a floating point value. */ + || (GET_CODE (x) == SUBREG + && FLOAT_MODE_P (GET_MODE (SUBREG_REG (x))))) { - /* Must be a hard reg that's not valid in MODE. */ result = gen_lowpart_common (mode, copy_to_reg (x)); gcc_assert (result != 0); return result;