aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/msp430
diff options
context:
space:
mode:
authorJozef Lawrynowicz <jozefl.gcc@gmail.com>2018-02-14 07:21:11 +0000
committerJeff Law <law@gcc.gnu.org>2018-02-14 00:21:11 -0700
commita005570e2ca18626a11212dc55d9942f95eaccac (patch)
treeb4330c40114871bc38e72839f7c5fd1fb9f22e99 /gcc/config/msp430
parent3f5ddefdaaa239e5e274c0460b6e420840fc9bdb (diff)
downloadgcc-a005570e2ca18626a11212dc55d9942f95eaccac.zip
gcc-a005570e2ca18626a11212dc55d9942f95eaccac.tar.gz
gcc-a005570e2ca18626a11212dc55d9942f95eaccac.tar.bz2
re PR target/79242 (ICE in simplify_subreg, at simplify-rtx.c:6029)
2018-02-14 Jozef Lawrynowicz <jozefl.gcc@gmail.com> PR target/79242 * machmode.def: Define a complex mode for PARTIAL_INT. * genmodes.c (complex_class): Return MODE_COMPLEX_INT for MODE_PARTIAL_INT. * doc/rtl.texi: Document CSPImode. * config/msp430/msp430.c (msp430_hard_regno_nregs): Add CPSImode handling. (msp430_hard_regno_nregs_with_padding): Likewise. PR target/79242 * gcc.target/msp430/pr79242.c: New test. From-SVN: r257653
Diffstat (limited to 'gcc/config/msp430')
-rw-r--r--gcc/config/msp430/msp430.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/gcc/config/msp430/msp430.c b/gcc/config/msp430/msp430.c
index 83e9e38..a8fed12 100644
--- a/gcc/config/msp430/msp430.c
+++ b/gcc/config/msp430/msp430.c
@@ -914,6 +914,8 @@ msp430_hard_regno_nregs (unsigned int, machine_mode mode)
{
if (mode == PSImode && msp430x)
return 1;
+ if (mode == CPSImode && msp430x)
+ return 2;
return ((GET_MODE_SIZE (mode) + UNITS_PER_WORD - 1)
/ UNITS_PER_WORD);
}
@@ -936,6 +938,8 @@ msp430_hard_regno_nregs_with_padding (int regno ATTRIBUTE_UNUSED,
{
if (mode == PSImode)
return 2;
+ if (mode == CPSImode)
+ return 4;
return msp430_hard_regno_nregs (regno, mode);
}