summaryrefslogtreecommitdiff
path: root/gcc/config/v850
diff options
context:
space:
mode:
authoraesok <aesok@138bc75d-0d04-0410-961f-82ee72b054a4>2015-07-30 21:36:18 +0000
committeraesok <aesok@138bc75d-0d04-0410-961f-82ee72b054a4>2015-07-30 21:36:18 +0000
commitbe3783f2ed5a8ee0a487c273fa64c464b698955b (patch)
treee8ee364041b895d4fa7508c97b2daca02f4b835f /gcc/config/v850
parenta8a727ad2906469fcdc91382dcad1426499797be (diff)
downloadgcc-be3783f2ed5a8ee0a487c273fa64c464b698955b.tar.gz
[V850] Hookize LIBCALL_VALUE
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@226418 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/v850')
-rw-r--r--gcc/config/v850/v850.c15
-rw-r--r--gcc/config/v850/v850.h6
-rw-r--r--gcc/config/v850/v850.md1
3 files changed, 14 insertions, 8 deletions
diff --git a/gcc/config/v850/v850.c b/gcc/config/v850/v850.c
index 2474e756d47..a03f5e2fc9d 100644
--- a/gcc/config/v850/v850.c
+++ b/gcc/config/v850/v850.c
@@ -2979,7 +2979,7 @@ v850_select_section (tree exp,
static bool
v850_function_value_regno_p (const unsigned int regno)
{
- return (regno == 10);
+ return (regno == RV_REGNUM);
}
/* Worker function for TARGET_RETURN_IN_MEMORY. */
@@ -3002,7 +3002,16 @@ v850_function_value (const_tree valtype,
const_tree fn_decl_or_type ATTRIBUTE_UNUSED,
bool outgoing ATTRIBUTE_UNUSED)
{
- return gen_rtx_REG (TYPE_MODE (valtype), 10);
+ return gen_rtx_REG (TYPE_MODE (valtype), RV_REGNUM);
+}
+
+/* Implement TARGET_LIBCALL_VALUE. */
+
+static rtx
+v850_libcall_value (machine_mode mode,
+ const_rtx func ATTRIBUTE_UNUSED)
+{
+ return gen_rtx_REG (mode, RV_REGNUM);
}
@@ -3304,6 +3313,8 @@ v850_gen_movdi (rtx * operands)
#define TARGET_FUNCTION_VALUE_REGNO_P v850_function_value_regno_p
#undef TARGET_FUNCTION_VALUE
#define TARGET_FUNCTION_VALUE v850_function_value
+#undef TARGET_LIBCALL_VALUE
+#define TARGET_LIBCALL_VALUE v850_libcall_value
#undef TARGET_PROMOTE_PROTOTYPES
#define TARGET_PROMOTE_PROTOTYPES hook_bool_const_tree_true
diff --git a/gcc/config/v850/v850.h b/gcc/config/v850/v850.h
index dcc169bcdfd..7b65187de79 100644
--- a/gcc/config/v850/v850.h
+++ b/gcc/config/v850/v850.h
@@ -549,12 +549,6 @@ struct cum_arg { int nbytes; };
#define FUNCTION_ARG_REGNO_P(N) (N >= 6 && N <= 9)
-/* Define how to find the value returned by a library function
- assuming the value has mode MODE. */
-
-#define LIBCALL_VALUE(MODE) \
- gen_rtx_REG (MODE, 10)
-
#define DEFAULT_PCC_STRUCT_RETURN 0
/* EXIT_IGNORE_STACK should be nonzero if, when returning from a function,
diff --git a/gcc/config/v850/v850.md b/gcc/config/v850/v850.md
index 7f2c5bb1bfb..5d7bd5ff2af 100644
--- a/gcc/config/v850/v850.md
+++ b/gcc/config/v850/v850.md
@@ -39,6 +39,7 @@
[(ZERO_REGNUM 0) ; constant zero
(SP_REGNUM 3) ; Stack Pointer
(GP_REGNUM 4) ; GP Pointer
+ (RV_REGNUM 10) ; Return value register
(EP_REGNUM 30) ; EP pointer
(LP_REGNUM 31) ; Return address register
(CC_REGNUM 32) ; Condition code pseudo register