]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
xtensa.c (xtensa_return_in_msb): New function.
authorBob Wilson <bob.wilson@acm.org>
Fri, 5 Mar 2004 01:13:43 +0000 (01:13 +0000)
committerBob Wilson <bwilson@gcc.gnu.org>
Fri, 5 Mar 2004 01:13:43 +0000 (01:13 +0000)
* config/xtensa/xtensa.c (xtensa_return_in_msb): New function.
(TARGET_RETURN_IN_MSB): Define to xtensa_return_in_msb.

From-SVN: r78955

gcc/ChangeLog
gcc/config/xtensa/xtensa.c

index 050d048ea6833b1ff20ac69a5fe3c357f67af34a..74fe10135c9b058d86315e330853f7f325067be1 100644 (file)
@@ -1,3 +1,8 @@
+2004-03-04  Bob Wilson  <bob.wilson@acm.org>
+
+       * config/xtensa/xtensa.c (xtensa_return_in_msb): New function.
+       (TARGET_RETURN_IN_MSB): Define to xtensa_return_in_msb.
+
 2004-03-05  Hans-Peter Nilsson  <hp@axis.com>
 
        PR other/14354
index 09a2f34941fb05f295ffcf15e186c8d8af7506f7..cb03b536d9ba0c3bbf34d8cbd2ccd7caf8244c2a 100644 (file)
@@ -200,6 +200,7 @@ static rtx gen_conditional_move (rtx);
 static rtx fixup_subreg_mem (rtx);
 static enum machine_mode xtensa_find_mode_for_size (unsigned);
 static struct machine_function * xtensa_init_machine_status (void);
+static bool xtensa_return_in_msb (tree);
 static void printx (FILE *, signed int);
 static void xtensa_function_epilogue (FILE *, HOST_WIDE_INT);
 static rtx xtensa_builtin_saveregs (void);
@@ -254,6 +255,9 @@ static const int reg_nonleaf_alloc_order[FIRST_PSEUDO_REGISTER] =
 #undef TARGET_EXPAND_BUILTIN_SAVEREGS
 #define TARGET_EXPAND_BUILTIN_SAVEREGS xtensa_builtin_saveregs
 
+#undef TARGET_RETURN_IN_MSB
+#define TARGET_RETURN_IN_MSB xtensa_return_in_msb
+
 struct gcc_target targetm = TARGET_INITIALIZER;
 \f
 
@@ -1815,6 +1819,15 @@ function_arg (CUMULATIVE_ARGS *cum, enum machine_mode mode, tree type,
 }
 
 
+static bool
+xtensa_return_in_msb (tree valtype)
+{
+  return (TARGET_BIG_ENDIAN
+         && AGGREGATE_TYPE_P (valtype)
+         && int_size_in_bytes (valtype) >= UNITS_PER_WORD);
+}
+
+
 void
 override_options (void)
 {