This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[rx] fix no-argument builtins
- From: DJ Delorie <dj at redhat dot com>
- To: gcc-patches at gcc dot gnu dot org
- Date: Wed, 30 Oct 2013 20:29:52 -0400
- Subject: [rx] fix no-argument builtins
- Authentication-results: sourceware.org; auth=none
Apparently, there's a subtle difference between "function that takes
no argument" and "function that takes void" :-P
Committed.
* config/rx/rx.c (ADD_RX_BUILTIN0): New macro, used for builtins
that take no arguments.
Index: config/rx/rx.c
===================================================================
--- config/rx/rx.c (revision 204234)
+++ config/rx/rx.c (working copy)
@@ -2270,12 +2270,20 @@ enum rx_builtin
static GTY(()) tree rx_builtins[(int) RX_BUILTIN_max];
static void
rx_init_builtins (void)
{
+#define ADD_RX_BUILTIN0(UC_NAME, LC_NAME, RET_TYPE) \
+ rx_builtins[RX_BUILTIN_##UC_NAME] = \
+ add_builtin_function ("__builtin_rx_" LC_NAME, \
+ build_function_type_list (RET_TYPE##_type_node, \
+ NULL_TREE), \
+ RX_BUILTIN_##UC_NAME, \
+ BUILT_IN_MD, NULL, NULL_TREE)
+
#define ADD_RX_BUILTIN1(UC_NAME, LC_NAME, RET_TYPE, ARG_TYPE) \
rx_builtins[RX_BUILTIN_##UC_NAME] = \
add_builtin_function ("__builtin_rx_" LC_NAME, \
build_function_type_list (RET_TYPE##_type_node, \
ARG_TYPE##_type_node, \
NULL_TREE), \
@@ -2300,32 +2308,32 @@ rx_init_builtins (void)
ARG_TYPE2##_type_node,\
ARG_TYPE3##_type_node,\
NULL_TREE), \
RX_BUILTIN_##UC_NAME, \
BUILT_IN_MD, NULL, NULL_TREE)
- ADD_RX_BUILTIN1 (BRK, "brk", void, void);
+ ADD_RX_BUILTIN0 (BRK, "brk", void);
ADD_RX_BUILTIN1 (CLRPSW, "clrpsw", void, integer);
ADD_RX_BUILTIN1 (SETPSW, "setpsw", void, integer);
ADD_RX_BUILTIN1 (INT, "int", void, integer);
ADD_RX_BUILTIN2 (MACHI, "machi", void, intSI, intSI);
ADD_RX_BUILTIN2 (MACLO, "maclo", void, intSI, intSI);
ADD_RX_BUILTIN2 (MULHI, "mulhi", void, intSI, intSI);
ADD_RX_BUILTIN2 (MULLO, "mullo", void, intSI, intSI);
- ADD_RX_BUILTIN1 (MVFACHI, "mvfachi", intSI, void);
- ADD_RX_BUILTIN1 (MVFACMI, "mvfacmi", intSI, void);
+ ADD_RX_BUILTIN0 (MVFACHI, "mvfachi", intSI);
+ ADD_RX_BUILTIN0 (MVFACMI, "mvfacmi", intSI);
ADD_RX_BUILTIN1 (MVTACHI, "mvtachi", void, intSI);
ADD_RX_BUILTIN1 (MVTACLO, "mvtaclo", void, intSI);
- ADD_RX_BUILTIN1 (RMPA, "rmpa", void, void);
+ ADD_RX_BUILTIN0 (RMPA, "rmpa", void);
ADD_RX_BUILTIN1 (MVFC, "mvfc", intSI, integer);
ADD_RX_BUILTIN2 (MVTC, "mvtc", void, integer, integer);
ADD_RX_BUILTIN1 (MVTIPL, "mvtipl", void, integer);
ADD_RX_BUILTIN1 (RACW, "racw", void, integer);
ADD_RX_BUILTIN1 (ROUND, "round", intSI, float);
ADD_RX_BUILTIN1 (REVW, "revw", intSI, intSI);
- ADD_RX_BUILTIN1 (WAIT, "wait", void, void);
+ ADD_RX_BUILTIN0 (WAIT, "wait", void);
}
/* Return the RX builtin for CODE. */
static tree
rx_builtin_decl (unsigned code, bool initialize_p ATTRIBUTE_UNUSED)