aboutsummaryrefslogtreecommitdiff
path: root/gcc
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
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')
-rw-r--r--gcc/ChangeLog11
-rw-r--r--gcc/config/msp430/msp430.c4
-rw-r--r--gcc/doc/rtl.texi5
-rw-r--r--gcc/genmodes.c1
-rw-r--r--gcc/machmode.def1
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.target/msp430/pr79242.c11
7 files changed, 36 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 3ddfff6..bcaf137 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,14 @@
+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.
+
2018-02-13 Peter Bergner <bergner@vnet.ibm.com>
PR target/84279
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);
}
diff --git a/gcc/doc/rtl.texi b/gcc/doc/rtl.texi
index 43d5405..b5410f9 100644
--- a/gcc/doc/rtl.texi
+++ b/gcc/doc/rtl.texi
@@ -1303,10 +1303,11 @@ point values. The floating point values are in @code{QFmode},
@findex CDImode
@findex CTImode
@findex COImode
-@item CQImode, CHImode, CSImode, CDImode, CTImode, COImode
+@findex CPSImode
+@item CQImode, CHImode, CSImode, CDImode, CTImode, COImode, CPSImode
These modes stand for a complex number represented as a pair of integer
values. The integer values are in @code{QImode}, @code{HImode},
-@code{SImode}, @code{DImode}, @code{TImode}, and @code{OImode},
+@code{SImode}, @code{DImode}, @code{TImode}, @code{OImode}, and @code{PSImode},
respectively.
@findex BND32mode
diff --git a/gcc/genmodes.c b/gcc/genmodes.c
index a70f096..af0d280 100644
--- a/gcc/genmodes.c
+++ b/gcc/genmodes.c
@@ -119,6 +119,7 @@ complex_class (enum mode_class c)
switch (c)
{
case MODE_INT: return MODE_COMPLEX_INT;
+ case MODE_PARTIAL_INT: return MODE_COMPLEX_INT;
case MODE_FLOAT: return MODE_COMPLEX_FLOAT;
default:
error ("no complex class for class %s", mode_class_names[c]);
diff --git a/gcc/machmode.def b/gcc/machmode.def
index d5d5efc..9505cc3 100644
--- a/gcc/machmode.def
+++ b/gcc/machmode.def
@@ -260,6 +260,7 @@ UACCUM_MODE (UTA, 16, 64, 64); /* 64.64 */
/* Complex modes. */
COMPLEX_MODES (INT);
+COMPLEX_MODES (PARTIAL_INT);
COMPLEX_MODES (FLOAT);
/* Decimal floating point modes. */
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 0a22031..a8dc606 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2018-02-14 Jozef Lawrynowicz <jozefl.gcc@gmail.com>
+
+ PR target/79242
+ * gcc.target/msp430/pr79242.c: New test.
+
2018-02-13 Peter Bergner <bergner@vnet.ibm.com>
PR target/84372
diff --git a/gcc/testsuite/gcc.target/msp430/pr79242.c b/gcc/testsuite/gcc.target/msp430/pr79242.c
new file mode 100644
index 0000000..d7ff8d3
--- /dev/null
+++ b/gcc/testsuite/gcc.target/msp430/pr79242.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-skip-if "" { "*-*-*" } { "-mcpu=msp430" "-msmall" } { "" } } */
+/* { dg-options "-mcpu=msp430x" } */
+
+typedef _Complex __int20 C;
+
+C
+foo (C x, C y)
+{
+ return x + y;
+}