aboutsummaryrefslogtreecommitdiff
path: root/gcc/go
diff options
context:
space:
mode:
authorRichard Sandiford <richard.sandiford@linaro.org>2017-08-30 11:21:04 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2017-08-30 11:21:04 +0000
commita97390bf6e92f6f9b0f4e20aff4390ca5c609e37 (patch)
tree887cbbdf7eab9b228fc8dbc63e7d4c06f9b255eb /gcc/go
parent382615c64cad28fb4aa0566b25b3f1921b3d6a3d (diff)
downloadgcc-a97390bf6e92f6f9b0f4e20aff4390ca5c609e37.zip
gcc-a97390bf6e92f6f9b0f4e20aff4390ca5c609e37.tar.gz
gcc-a97390bf6e92f6f9b0f4e20aff4390ca5c609e37.tar.bz2
[77/77] Add a complex_mode class
This patch adds another machine_mode wrapper for modes that are known to be COMPLEX_MODE_P. There aren't yet many places that make use of it, but that might change in future. 2017-08-30 Richard Sandiford <richard.sandiford@linaro.org> Alan Hayward <alan.hayward@arm.com> David Sherwood <david.sherwood@arm.com> gcc/ * coretypes.h (complex_mode): New type. * gdbhooks.py (build_pretty_printer): Handle it. * machmode.h (complex_mode): New class. (complex_mode::includes_p): New function. (is_complex_int_mode): Likewise. (is_complex_float_mode): Likewise. * genmodes.c (get_mode_class): Handle complex mode classes. * function.c (expand_function_end): Use is_complex_int_mode. gcc/go/ * go-lang.c (go_langhook_type_for_mode): Use is_complex_float_mode. Co-Authored-By: Alan Hayward <alan.hayward@arm.com> Co-Authored-By: David Sherwood <david.sherwood@arm.com> From-SVN: r251527
Diffstat (limited to 'gcc/go')
-rw-r--r--gcc/go/ChangeLog6
-rw-r--r--gcc/go/go-lang.c8
2 files changed, 10 insertions, 4 deletions
diff --git a/gcc/go/ChangeLog b/gcc/go/ChangeLog
index ea47870..83138d3 100644
--- a/gcc/go/ChangeLog
+++ b/gcc/go/ChangeLog
@@ -2,6 +2,12 @@
Alan Hayward <alan.hayward@arm.com>
David Sherwood <david.sherwood@arm.com>
+ * go-lang.c (go_langhook_type_for_mode): Use is_complex_float_mode.
+
+2017-08-30 Richard Sandiford <richard.sandiford@linaro.org>
+ Alan Hayward <alan.hayward@arm.com>
+ David Sherwood <david.sherwood@arm.com>
+
* go-lang.c (go_langhook_type_for_mode): Use is_int_mode.
2017-08-30 Richard Sandiford <richard.sandiford@linaro.org>
diff --git a/gcc/go/go-lang.c b/gcc/go/go-lang.c
index d470d5a..81eeb5c 100644
--- a/gcc/go/go-lang.c
+++ b/gcc/go/go-lang.c
@@ -384,7 +384,7 @@ go_langhook_type_for_mode (machine_mode mode, int unsignedp)
scalar_int_mode imode;
scalar_float_mode fmode;
- enum mode_class mc = GET_MODE_CLASS (mode);
+ complex_mode cmode;
if (is_int_mode (mode, &imode))
return go_langhook_type_for_size (GET_MODE_BITSIZE (imode), unsignedp);
else if (is_float_mode (mode, &fmode))
@@ -402,9 +402,9 @@ go_langhook_type_for_mode (machine_mode mode, int unsignedp)
return long_double_type_node;
}
}
- else if (mc == MODE_COMPLEX_FLOAT)
+ else if (is_complex_float_mode (mode, &cmode))
{
- switch (GET_MODE_BITSIZE (mode))
+ switch (GET_MODE_BITSIZE (cmode))
{
case 64:
return complex_float_type_node;
@@ -413,7 +413,7 @@ go_langhook_type_for_mode (machine_mode mode, int unsignedp)
default:
// We have to check for long double in order to support
// i386 excess precision.
- if (mode == TYPE_MODE(complex_long_double_type_node))
+ if (cmode == TYPE_MODE(complex_long_double_type_node))
return complex_long_double_type_node;
}
}