[PATCH 2/2] ARC: Better creation of __NPS400__ define

Andrew Burgess andrew.burgess@embecosm.com
Wed Jan 25 03:36:00 GMT 2017

The __NPS400__ define is currently created in CPP_SPEC unlike the other
target defines, which are created in arc-c.def.  Further, the current
__NPS400__ define is (currently) only created when -mcpu=nps400 is
passed, which is fine, except that if GCC is configured using
--with-cpu=nps400 then the -mcpu option is not required and the
__NPS400__ define will not be created.

This commit moves the __NPS400__ define into arc-c.def inline with all
of the other target defines, and removes the code in CPP_SPEC that used
to create the define.

In order to support the creation of the define in arc-c.def, a new
TARGET_NPS400 macro is created in arc.h.


	* config/arc/arc-c.def: Add __NPS400__ definition.
	* config/arc/arc.h (CPP_SPEC): Don't define __NPS400__ here.
	(TARGET_NPS400): Define.
 gcc/ChangeLog            | 6 ++++++
 gcc/config/arc/arc-c.def | 1 +
 gcc/config/arc/arc.h     | 9 +++++++--
 3 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/gcc/config/arc/arc-c.def b/gcc/config/arc/arc-c.def
index 4903d84..8c5097e 100644
--- a/gcc/config/arc/arc-c.def
+++ b/gcc/config/arc/arc-c.def
@@ -20,6 +20,7 @@
 ARC_C_DEF ("__ARC600__",	TARGET_ARC600)
 ARC_C_DEF ("__ARC601__",	TARGET_ARC601)
 ARC_C_DEF ("__ARC700__",	TARGET_ARC700)
+ARC_C_DEF ("__NPS400__",	TARGET_NPS400)
diff --git a/gcc/config/arc/arc.h b/gcc/config/arc/arc.h
index d6d9012..e269b4d 100644
--- a/gcc/config/arc/arc.h
+++ b/gcc/config/arc/arc.h
@@ -92,8 +92,7 @@ along with GCC; see the file COPYING3.  If not see
 %{mmac-d16:-D__Xxmac_d16} %{mmac-24:-D__Xxmac_24} \
 %{mdsp-packa:-D__Xdsp_packa} %{mcrc:-D__Xcrc} %{mdvbf:-D__Xdvbf} \
 %{mtelephony:-D__Xtelephony} %{mxy:-D__Xxy} %{mmul64: -D__Xmult32} \
-%{mlock:-D__Xlock} %{mswape:-D__Xswape} %{mrtsc:-D__Xrtsc} \
+%{mlock:-D__Xlock} %{mswape:-D__Xswape} %{mrtsc:-D__Xrtsc}"
 #define CC1_SPEC "\
 %{EB:%{EL:%emay not use both -EB and -EL}} \
@@ -223,6 +222,12 @@ extern const char *arc_cpu_to_as (int argc, const char **argv);
 		       && (!TARGET_BARREL_SHIFTER))
 #define TARGET_ARC700 (arc_selected_cpu->arch_info->arch_id	\
 		       == BASE_ARCH_700)
+/* An NPS400 is a specialisation of ARC700, so it is correct for NPS400
+   TARGET_ARC700 is true, and TARGET_NPS400 is true.  */
+#define TARGET_NPS400 ((arc_selected_cpu->arch_info->arch_id	\
+			== BASE_ARCH_700)			\
+		       && (arc_selected_cpu->processor		\
+			   == PROCESSOR_nps400))
 #define TARGET_EM (arc_selected_cpu->arch_info->arch_id == BASE_ARCH_em)
 #define TARGET_HS (arc_selected_cpu->arch_info->arch_id == BASE_ARCH_hs)

More information about the Gcc-patches mailing list