summaryrefslogtreecommitdiff
path: root/gcc/config
diff options
context:
space:
mode:
authorkazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4>2003-12-24 20:39:30 +0000
committerkazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4>2003-12-24 20:39:30 +0000
commitc84f22693180cd5f40073968953a4bb70c13d3e1 (patch)
treec0b65cf986eaee3de41d21df486af67322872cad /gcc/config
parent064ec9f774c3ac555bd32575b3a73ffa80c8101d (diff)
downloadgcc-c84f22693180cd5f40073968953a4bb70c13d3e1.tar.gz
PR target/12721.
* config/avr/avr.c: Include ggc.h. (tmp_reg_rtx): Declare with GTY. (zero_reg_rtx): Likewise. (ldi_reg_rtx): Remove. (avr_override_options): Initialize zero_reg_rtx and ldi_reg_rtx. (avr_init): Remove. Include gt-avr.h. * config/avr/avr.h (LDI_REG_REGNO): Remove. Remove externs for tmp_reg_rtx, zero_reg_rtx, and ldi_reg_rtx. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@75010 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config')
-rw-r--r--gcc/config/avr/avr.c33
-rw-r--r--gcc/config/avr/avr.h7
2 files changed, 6 insertions, 34 deletions
diff --git a/gcc/config/avr/avr.c b/gcc/config/avr/avr.c
index a7a71871552..402cbca9b73 100644
--- a/gcc/config/avr/avr.c
+++ b/gcc/config/avr/avr.c
@@ -39,6 +39,7 @@
#include "obstack.h"
#include "function.h"
#include "recog.h"
+#include "ggc.h"
#include "tm_p.h"
#include "target.h"
#include "target-def.h"
@@ -81,14 +82,10 @@ static int avr_address_cost (rtx);
#define FIRST_CUM_REG 26
/* Temporary register RTX (gen_rtx (REG,QImode,TMP_REGNO)) */
-rtx tmp_reg_rtx;
+static GTY(()) rtx tmp_reg_rtx;
/* Zeroed register RTX (gen_rtx (REG,QImode,ZERO_REGNO)) */
-rtx zero_reg_rtx;
-
-/* RTX for register which will be used for loading immediate values to
- r0-r15 registers. */
-rtx ldi_reg_rtx;
+static GTY(()) rtx zero_reg_rtx;
/* AVR register names {"r0", "r1", ..., "r31"} */
static const char *const avr_regnames[] = REGISTER_NAMES;
@@ -274,29 +271,10 @@ avr_override_options (void)
if (optimize && !TARGET_NO_TABLEJUMP)
avr_case_values_threshold = (!AVR_MEGA || TARGET_CALL_PROLOGUES) ? 8 : 17;
-}
-#if 0 /* Does not play nice with GC. FIXME. */
-/* Initialize TMP_REG_RTX and ZERO_REG_RTX */
-void
-avr_init_once (void)
-{
- tmp_reg_rtx = xcalloc (1, sizeof (struct rtx_def) + 1 * sizeof (rtunion));
- PUT_CODE (tmp_reg_rtx, REG);
- PUT_MODE (tmp_reg_rtx, QImode);
- XINT (tmp_reg_rtx, 0) = TMP_REGNO;
-
- zero_reg_rtx = xcalloc (1, sizeof (struct rtx_def) + 1 * sizeof (rtunion));
- PUT_CODE (zero_reg_rtx, REG);
- PUT_MODE (zero_reg_rtx, QImode);
- XINT (zero_reg_rtx, 0) = ZERO_REGNO;
-
- ldi_reg_rtx = xcalloc (1, sizeof (struct rtx_def) + 1 * sizeof (rtunion));
- PUT_CODE (ldi_reg_rtx, REG);
- PUT_MODE (ldi_reg_rtx, QImode);
- XINT (ldi_reg_rtx, 0) = LDI_REG_REGNO;
+ tmp_reg_rtx = gen_rtx_REG (QImode, TMP_REGNO);
+ zero_reg_rtx = gen_rtx_REG (QImode, ZERO_REGNO);
}
-#endif
/* return register class from register number */
@@ -5389,3 +5367,4 @@ avr_asm_out_dtor (rtx symbol, int priority)
default_dtor_section_asm_out_destructor (symbol, priority);
}
+#include "gt-avr.h"
diff --git a/gcc/config/avr/avr.h b/gcc/config/avr/avr.h
index 547e927f52f..eae93e5e1c3 100644
--- a/gcc/config/avr/avr.h
+++ b/gcc/config/avr/avr.h
@@ -2482,11 +2482,4 @@ extern int avr_case_values_threshold;
/* zero register r1 */
#define ZERO_REGNO 1
-/* Temporary register which used for load immediate values to r0-r15 */
-#define LDI_REG_REGNO 31
-
-extern struct rtx_def *tmp_reg_rtx;
-extern struct rtx_def *zero_reg_rtx;
-extern struct rtx_def *ldi_reg_rtx;
-
#define PREFERRED_DEBUGGING_TYPE DBX_DEBUG