aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Wilson <wilson@gcc.gnu.org>1992-07-21 12:34:37 -0700
committerJim Wilson <wilson@gcc.gnu.org>1992-07-21 12:34:37 -0700
commitb924cef029b49df4cb6b899126738825bcbffc75 (patch)
tree8e21433833469a5de5e14d36da5dbe3693f041f2
parentaa265568fec8d266353508bb56148af08242400d (diff)
downloadgcc-b924cef029b49df4cb6b899126738825bcbffc75.zip
gcc-b924cef029b49df4cb6b899126738825bcbffc75.tar.gz
gcc-b924cef029b49df4cb6b899126738825bcbffc75.tar.bz2
(SECONDARY_MEMORY_NEEDED): Define to force reload to
handle any copy between GENERAL_REGS and FP_REGS. From-SVN: r1657
-rw-r--r--gcc/config/sparc/sparc.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/config/sparc/sparc.h b/gcc/config/sparc/sparc.h
index d6d43ef..c3c9614 100644
--- a/gcc/config/sparc/sparc.h
+++ b/gcc/config/sparc/sparc.h
@@ -569,6 +569,13 @@ extern char leaf_reg_backmap[];
#define SECONDARY_INPUT_RELOAD_CLASS(CLASS, MODE, IN) \
(flag_pic && pic_address_needs_scratch (IN) ? GENERAL_REGS : NO_REGS)
+/* On SPARC it is not possible to directly move data between
+ GENERAL_REGS and FP_REGS. */
+#define SECONDARY_MEMORY_NEEDED(CLASS1, CLASS2, MODE) \
+ ((CLASS1 == FP_REGS && CLASS2 == GENERAL_REGS) \
+ || (CLASS1 == GENERAL_REGS && CLASS2 == FP_REGS))
+
+
/* Return the maximum number of consecutive registers
needed to represent mode MODE in a register of class CLASS. */
/* On SPARC, this is the size of MODE in words. */