aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/m68k/m68k.h
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/config/m68k/m68k.h')
-rw-r--r--gcc/config/m68k/m68k.h46
1 files changed, 23 insertions, 23 deletions
diff --git a/gcc/config/m68k/m68k.h b/gcc/config/m68k/m68k.h
index 268b639d8b7..9a58f1db6be 100644
--- a/gcc/config/m68k/m68k.h
+++ b/gcc/config/m68k/m68k.h
@@ -341,11 +341,6 @@ extern int target_flags;
/* This defines the register which is used to hold the offset table for PIC. */
#define PIC_OFFSET_TABLE_REGNUM 13
-/* Used to output a (use pic_offset_table_rtx) so that we
- always save/restore a5 in functions that use PIC relocation
- at *any* time during the compilation process. */
-#define FINALIZE_PIC finalize_pic()
-
#ifndef SUPPORT_SUN_FPA
/* 1 for registers that have pervasive standard uses
@@ -446,8 +441,17 @@ extern int target_flags;
if (TEST_HARD_REG_BIT (x, i)) \
fixed_regs[i] = call_used_regs[i] = 1; \
} \
+ if (flag_pic) \
+ fixed_regs[PIC_OFFSET_TABLE_REGNUM] \
+ = call_used_regs[PIC_OFFSET_TABLE_REGNUM] = 1;\
+}
+#else
+#define CONDITIONAL_REGISTER_USAGE \
+{ \
+ if (flag_pic) \
+ fixed_regs[PIC_OFFSET_TABLE_REGNUM] \
+ = call_used_regs[PIC_OFFSET_TABLE_REGNUM] = 1;\
}
-
#endif /* defined SUPPORT_SUN_FPA */
/* Return number of consecutive hard regs needed starting at reg REGNO
@@ -772,23 +776,19 @@ extern enum reg_class regno_reg_class[];
in some cases it is preferable to use a more restrictive class.
On the 68000 series, use a data reg if possible when the
value is a constant in the range where moveq could be used
- and we ensure that QImodes are reloaded into data regs.
- Also, if a floating constant needs reloading, put it in memory.
- Don't do this for !G constants, since all patterns in the md file
- expect them to be loaded into a register via fpmovecr. See above. */
-
-#define PREFERRED_RELOAD_CLASS(X,CLASS) \
- ((GET_CODE (X) == CONST_INT \
- && (unsigned) (INTVAL (X) + 0x80) < 0x100 \
- && (CLASS) != ADDR_REGS) \
- ? DATA_REGS \
- : (GET_MODE (X) == QImode && (CLASS) != ADDR_REGS) \
- ? DATA_REGS \
- : (GET_CODE (X) == CONST_DOUBLE \
- && GET_MODE_CLASS (GET_MODE (X)) == MODE_FLOAT) \
- ? (! CONST_DOUBLE_OK_FOR_LETTER_P (X, 'G') \
- && (CLASS == FP_REGS || CLASS == DATA_OR_FP_REGS) \
- ? FP_REGS : NO_REGS) \
+ and we ensure that QImodes are reloaded into data regs. */
+
+#define PREFERRED_RELOAD_CLASS(X,CLASS) \
+ ((GET_CODE (X) == CONST_INT \
+ && (unsigned) (INTVAL (X) + 0x80) < 0x100 \
+ && (CLASS) != ADDR_REGS) \
+ ? DATA_REGS \
+ : (GET_MODE (X) == QImode && (CLASS) != ADDR_REGS) \
+ ? DATA_REGS \
+ : (GET_CODE (X) == CONST_DOUBLE \
+ && GET_MODE_CLASS (GET_MODE (X)) == MODE_FLOAT) \
+ ? (TARGET_68881 && (CLASS == FP_REGS || CLASS == DATA_OR_FP_REGS) \
+ ? FP_REGS : NO_REGS) \
: (CLASS))
/* Force QImode output reloads from subregs to be allocated to data regs,