aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorEric Christopher <echristo@gcc.gnu.org>2002-06-06 01:25:16 +0000
committerEric Christopher <echristo@gcc.gnu.org>2002-06-06 01:25:16 +0000
commit33005162262a89f7dfd60e3e402c57d23330edfd (patch)
treea7fa60e79e389c8dd2c787bac815437aa9e4d1b3 /gcc
parent5d3dfc3ac1c7fcb4d7a9582d20c21baa8b17b605 (diff)
downloadgcc-33005162262a89f7dfd60e3e402c57d23330edfd.zip
gcc-33005162262a89f7dfd60e3e402c57d23330edfd.tar.gz
gcc-33005162262a89f7dfd60e3e402c57d23330edfd.tar.bz2
toplev.c: Remove half-pic.
2002-06-05 Eric Christopher <echristo@redhat.com> * toplev.c: Remove half-pic. * config/mips/mips.c: Ditto. * config/mips/mips.h: Ditto. Remove unused defines. * config/mips/openbsd.h: Update comment to reflect above. * config/mips/mips.md: Remove half-pic constraints. * halfpic.h: Delete. * halfpic.c: Ditto. From-SVN: r54296
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog44
-rw-r--r--gcc/config/mips/mips.c80
-rw-r--r--gcc/config/mips/mips.h87
-rw-r--r--gcc/config/mips/mips.md35
-rw-r--r--gcc/config/mips/openbsd.h4
-rw-r--r--gcc/halfpic.c399
-rw-r--r--gcc/halfpic.h67
-rw-r--r--gcc/toplev.c4
8 files changed, 58 insertions, 662 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8fa7a5d..042a369 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,8 +1,18 @@
+2002-06-05 Eric Christopher <echristo@redhat.com>
+
+ * toplev.c: Remove half-pic.
+ * config/mips/mips.c: Ditto.
+ * config/mips/mips.h: Ditto. Remove unused defines.
+ * config/mips/openbsd.h: Update comment to reflect above.
+ * config/mips/mips.md: Remove half-pic constraints.
+ * halfpic.h: Delete.
+ * halfpic.c: Ditto.
+
2002-06-05 Jeffrey Law <law@redhat.com>
* pa.h (EXTRA_CONSTRAINT, T case): Further refine so that it
rejects (mem (lo_sum (reg) (unspec))), but will allow
- (mem (lo_sum (reg) (symbol_ref)) for PA2.0.
+ (mem (lo_sum (reg) (symbol_ref)) for PA2.0.
2002-06-05 Neil Booth <neil@daikokuya.demon.co.uk>
@@ -52,7 +62,7 @@ Wed Jun 5 20:42:31 2002 J"orn Rennecke <joern.rennecke@superh.com>
(diagnostic_set_info): Declare.
* diagnostic.c (report_problematic_module): Rename to
- diagnostic_repor_current_module.
+ diagnostic_repor_current_module.
(set_diagnostic_context): Remove.
(count_error): Rename to diagnostic_error_count.
(error_function_changed): Remove.
@@ -215,7 +225,7 @@ Tue Jun 4 19:29:42 CEST 2002 Jan Hubicka <jh@suse.cz>
2002-06-03 Geoffrey Keating <geoffk@redhat.com>
Merge from pch-branch:
-
+
* gengtype.h (UNION_OR_STRUCT_P): New macro.
* gengtype.c (write_gc_structure_fields): Use it.
(write_gc_root): Use it here too.
@@ -362,7 +372,7 @@ Tue Jun 4 19:29:42 CEST 2002 Jan Hubicka <jh@suse.cz>
outside ifdefs.
(incomplete_types): Likewise.
(decl_scope_table): Likewise.
- (dwarf2out_init): Don't call ggc_add_tree_varray_root.
+ (dwarf2out_init): Don't call ggc_add_tree_varray_root.
* cfglayout.c (scope_to_insns_finalize): Don't use VARRAY_FREE.
* c-tree.h (struct lang_type): Update for change to length specifier.
* c-parse.in (yylexstring): Don't use VARRAY_FREE.
@@ -436,7 +446,7 @@ Tue Jun 4 19:29:42 CEST 2002 Jan Hubicka <jh@suse.cz>
to list of includes.
* gengtype.c (write_gc_marker_routine_for_structure): Name
- the routines 'gt_ggc_mx_*' instead of 'gt_ggc_m_*'.
+ the routines 'gt_ggc_mx_*' instead of 'gt_ggc_m_*'.
(write_gc_types): Arrange for the tests with NULL to be inlined.
(write_gc_roots): Update uses of procedure pointers.
* ggc-common.c (gt_ggc_mx_rtx_def): Rename from gt_ggc_m_rtx_def.
@@ -579,7 +589,7 @@ Tue Jun 4 19:29:42 CEST 2002 Jan Hubicka <jh@suse.cz>
* c-tree.h (struct lang_identifier): Use gengtype.
(union lang_tree_node): New.
(c_mark_tree): Delete prototype.
- * dwarf2out.c [!DWARF2_DEBUGGING_INFO]: Define dummy
+ * dwarf2out.c [!DWARF2_DEBUGGING_INFO]: Define dummy
dwarf2_debug_hooks.
* gengtype-lex.l (IWORD): Allow 'bool'.
(ptr_alias): Match.
@@ -664,7 +674,7 @@ Tue Jun 4 19:29:42 CEST 2002 Jan Hubicka <jh@suse.cz>
* config/d30v/d30v.c (d30v_init_expanders): Likewise.
* config/arm/arm.c (arm_init_expanders): Likewise.
* config/alpha/alpha.c (override_options): Likewise.
- * gengtype.h (enum gc_used_enum): Add GC_MAYBE_POINTED_TO.
+ * gengtype.h (enum gc_used_enum): Add GC_MAYBE_POINTED_TO.
* gengtype.c (set_gc_used_type): Handle 'maybe_null' option.
(write_gc_structure_fields): Don't handle 'really' option.
Handle 'maybe_null' option.
@@ -985,7 +995,7 @@ Tue Jun 4 19:29:42 CEST 2002 Jan Hubicka <jh@suse.cz>
* tree.c: Use gengtype for roots.
* tree.h: Use gengtype for roots.
* varasm.c: Use gengtype for roots.
-
+
* Makefile.in (GTFILES): Add @all_gtfiles@.
* configure: Regenerate.
* configure.in: Construct all_gtfiles from the gtfiles definitions
@@ -1031,10 +1041,10 @@ Tue Jun 4 19:29:42 CEST 2002 Jan Hubicka <jh@suse.cz>
* config/arm/arm.c (arm_mark_machine_status): Delete.
(arm_init_machine_status): Update calling sequence.
(arm_init_expanders): Use canonical name for arm_mark_machine_status.
- * config/cris/cris.c (cris_init_machine_status): Update
+ * config/cris/cris.c (cris_init_machine_status): Update
calling sequence.
* config/d30v/d30v.h (struct machine_function): Use gengtype.
- * config/d30v/d30v.c (d30v_init_machine_status): Update
+ * config/d30v/d30v.c (d30v_init_machine_status): Update
calling sequence.
(d30v_mark_machine_status): Delete.
* config/i386/i386.c: Include gt-i386.h.
@@ -1043,12 +1053,12 @@ Tue Jun 4 19:29:42 CEST 2002 Jan Hubicka <jh@suse.cz>
(ix86_mark_machine_status): Delete.
(override_options): Use canonical namke for ix86_mark_machine_status.
* config/ia64/ia64.h (struct machine_function): Use gengtype.
- * config/ia64/ia64.c (ia64_init_machine_status): Update calling
+ * config/ia64/ia64.c (ia64_init_machine_status): Update calling
sequence.
(ia64_mark_machine_status): Delete.
- (ia64_override_options): Use canonical name for
+ (ia64_override_options): Use canonical name for
ia64_mark_machine_status.
- * config/mmix/mmix.c (mmix_init_machine_status): Update calling
+ * config/mmix/mmix.c (mmix_init_machine_status): Update calling
sequence.
* config/rs6000/rs6000.c (rs6000_init_machine_status): Likewise.
* config/xtensa/xtensa.c (xtensa_init_machine_status): Likewise.
@@ -1191,7 +1201,7 @@ Tue Jun 4 19:29:42 CEST 2002 Jan Hubicka <jh@suse.cz>
Document that the machine_function structures must be allocated
using GC. Update mark_machine_status documentation.
* function.h: Don't declare free_machine_status.
- * function.c (free_machine_status): Don't define.
+ * function.c (free_machine_status): Don't define.
(free_after_compilation): Don't call free_machine_status.
(ggc_mark_struct_function): Mark f->machine. Call
mark_machine_status only on non-NULL pointers.
@@ -1388,7 +1398,7 @@ Tue Jun 4 19:29:42 CEST 2002 Jan Hubicka <jh@suse.cz>
2002-06-03 Gabriel Dos Reis <gdr@codesourcery.com>
- * diagnostic.h (diagnostic_count): Move from output_buffer to
+ * diagnostic.h (diagnostic_count): Move from output_buffer to
diagnostic_context.
(diagnostic_kind_count): Adjust definition.
@@ -1555,7 +1565,7 @@ config/h8300:
2002-06-02 Gabriel Dos Reis <gdr@codesourcery.com>
* diagnostic.h (struct diagnostic_context): Add new member
- internal_error.
+ internal_error.
(internal_error_function): Remove declaration.
* diagnostic.c (internal_error_function): Remove definition..
(internal_error): Adjust use.
@@ -1641,7 +1651,7 @@ Sat Jun 1 23:29:51 CEST 2002 Jan Hubicka <jh@suse.cz>
2002-06-01 Daniel Berlin <dberlin@dberlin.org>
* tree-inline.c (expand_call_inline): Make the statement
- expression we generate have a COMPOUND_STMT.
+ expression we generate have a COMPOUND_STMT.
2002-06-01 Roger Sayle <roger@eyesopen.com>
diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c
index 1f6f71e..fb9bda5 100644
--- a/gcc/config/mips/mips.c
+++ b/gcc/config/mips/mips.c
@@ -54,10 +54,6 @@ Boston, MA 02111-1307, USA. */
#include "target.h"
#include "target-def.h"
-#ifdef HALF_PIC_DEBUG
-#include "halfpic.h"
-#endif
-
#ifdef __GNU_STAB__
#define STAB_CODE_TYPE enum __stab_debug_code
#else
@@ -272,10 +268,6 @@ rtx branch_cmp[2];
/* what type of branch to use */
enum cmp_type branch_type;
-/* Number of previously seen half-pic pointers and references. */
-static int prev_half_pic_ptrs = 0;
-static int prev_half_pic_refs = 0;
-
/* The target cpu for code generation. */
enum processor_type mips_arch;
@@ -2277,46 +2269,10 @@ mips_move_1word (operands, insn, unsignedp)
else if (code1 == SYMBOL_REF || code1 == CONST)
{
- if (HALF_PIC_P () && CONSTANT_P (op1) && HALF_PIC_ADDRESS_P (op1))
- {
- rtx offset = const0_rtx;
-
- if (GET_CODE (op1) == CONST)
- op1 = eliminate_constant_term (XEXP (op1, 0), &offset);
-
- if (GET_CODE (op1) == SYMBOL_REF)
- {
- operands[2] = HALF_PIC_PTR (op1);
-
- if (TARGET_STATS)
- mips_count_memory_refs (operands[2], 1);
-
- if (INTVAL (offset) == 0)
- {
- delay = DELAY_LOAD;
- ret = (unsignedp && TARGET_64BIT
- ? "lwu\t%0,%2"
- : "lw\t%0,%2");
- }
- else
- {
- dslots_load_total++;
- operands[3] = offset;
- if (unsignedp && TARGET_64BIT)
- ret = (SMALL_INT (offset)
- ? "lwu\t%0,%2%#\n\tadd\t%0,%0,%3"
- : "lwu\t%0,%2%#\n\t%[li\t%@,%3\n\tadd\t%0,%0,%@%]");
- else
- ret = (SMALL_INT (offset)
- ? "lw\t%0,%2%#\n\tadd\t%0,%0,%3"
- : "lw\t%0,%2%#\n\t%[li\t%@,%3\n\tadd\t%0,%0,%@%]");
- }
- }
- }
- else if (TARGET_MIPS16
- && code1 == CONST
- && GET_CODE (XEXP (op1, 0)) == REG
- && REGNO (XEXP (op1, 0)) == GP_REG_FIRST + 28)
+ if (TARGET_MIPS16
+ && code1 == CONST
+ && GET_CODE (XEXP (op1, 0)) == REG
+ && REGNO (XEXP (op1, 0)) == GP_REG_FIRST + 28)
{
/* This case arises on the mips16; see
mips16_gp_pseudo_reg. */
@@ -5203,10 +5159,6 @@ override_options ()
if (mips_abi != ABI_32 && mips_abi != ABI_O64)
flag_pcc_struct_return = 0;
- /* Tell halfpic.c that we have half-pic code if we do. */
- if (TARGET_HALF_PIC)
- HALF_PIC_INIT ();
-
/* -fpic (-KPIC) is the default when TARGET_ABICALLS is defined. We need
to set flag_pic so that the LEGITIMATE_PIC_OPERAND_P macro will work. */
/* ??? -non_shared turns off pic code generation, but this is not
@@ -6369,11 +6321,6 @@ mips_asm_file_end (file)
tree name_tree;
struct extern_list *p;
- if (HALF_PIC_P ())
- {
- HALF_PIC_FINISH (file);
- }
-
if (extern_head)
{
fputs ("\n", file);
@@ -7614,20 +7561,6 @@ mips_output_function_epilogue (file, size)
dslots_jump_total, dslots_jump_filled,
num_refs[0], num_refs[1], num_refs[2]);
- if (HALF_PIC_NUMBER_PTRS > prev_half_pic_ptrs)
- {
- fprintf (stderr,
- " half-pic=%3d", HALF_PIC_NUMBER_PTRS - prev_half_pic_ptrs);
- prev_half_pic_ptrs = HALF_PIC_NUMBER_PTRS;
- }
-
- if (HALF_PIC_NUMBER_REFS > prev_half_pic_refs)
- {
- fprintf (stderr,
- " pic-ref=%3d", HALF_PIC_NUMBER_REFS - prev_half_pic_refs);
- prev_half_pic_refs = HALF_PIC_NUMBER_REFS;
- }
-
fputc ('\n', stderr);
}
@@ -8085,11 +8018,6 @@ mips_encode_section_info (decl, first)
SYMBOL_REF_FLAG (XEXP (DECL_RTL (decl), 0)) = 1;
}
- else if (HALF_PIC_P ())
- {
- if (first)
- HALF_PIC_ENCODE (decl);
- }
}
/* Return register to use for a function return value with VALTYPE for
diff --git a/gcc/config/mips/mips.h b/gcc/config/mips/mips.h
index b17c2a0..5f71b54 100644
--- a/gcc/config/mips/mips.h
+++ b/gcc/config/mips/mips.h
@@ -172,20 +172,6 @@ extern int mips_string_length; /* length of strings for mips16 */
extern void sdata_section PARAMS ((void));
extern void sbss_section PARAMS ((void));
-/* Stubs for half-pic support if not OSF/1 reference platform. */
-
-#ifndef HALF_PIC_P
-#define HALF_PIC_P() 0
-#define HALF_PIC_NUMBER_PTRS 0
-#define HALF_PIC_NUMBER_REFS 0
-#define HALF_PIC_ENCODE(DECL)
-#define HALF_PIC_DECLARE(NAME)
-#define HALF_PIC_INIT() error ("half-pic init called on systems that don't support it")
-#define HALF_PIC_ADDRESS_P(X) 0
-#define HALF_PIC_PTR(X) X
-#define HALF_PIC_FINISH(STREAM)
-#endif
-
/* Macros to silence warnings about numbers being signed in traditional
C and unsigned in ISO C when compiled on 32-bit hosts. */
@@ -210,7 +196,7 @@ extern void sbss_section PARAMS ((void));
#define MASK_SOFT_FLOAT 0x00000100 /* software floating point */
#define MASK_FLOAT64 0x00000200 /* fp registers are 64 bits */
#define MASK_ABICALLS 0x00000400 /* emit .abicalls/.cprestore/.cpload */
-#define MASK_HALF_PIC 0x00000800 /* Emit OSF-style pic refs to externs*/
+#define MASK_UNUSED1 0x00000800 /* Unused Mask. */
#define MASK_LONG_CALLS 0x00001000 /* Always call through a register */
#define MASK_64BIT 0x00002000 /* Use 64 bit GP registers and insns */
#define MASK_EMBEDDED_PIC 0x00004000 /* Generate embedded PIC code */
@@ -285,9 +271,6 @@ extern void sbss_section PARAMS ((void));
/* .abicalls, etc from Pyramid V.4 */
#define TARGET_ABICALLS (target_flags & MASK_ABICALLS)
- /* OSF pic references to externs */
-#define TARGET_HALF_PIC (target_flags & MASK_HALF_PIC)
-
/* software floating point */
#define TARGET_SOFT_FLOAT (target_flags & MASK_SOFT_FLOAT)
#define TARGET_HARD_FLOAT (! TARGET_SOFT_FLOAT)
@@ -417,10 +400,6 @@ extern void sbss_section PARAMS ((void));
N_("Use Irix PIC")}, \
{"no-abicalls", -MASK_ABICALLS, \
N_("Don't use Irix PIC")}, \
- {"half-pic", MASK_HALF_PIC, \
- N_("Use OSF PIC")}, \
- {"no-half-pic", -MASK_HALF_PIC, \
- N_("Don't use OSF PIC")}, \
{"long-calls", MASK_LONG_CALLS, \
N_("Use indirect calls")}, \
{"no-long-calls", -MASK_LONG_CALLS, \
@@ -506,11 +485,7 @@ extern void sbss_section PARAMS ((void));
#endif
#ifndef TARGET_ENDIAN_DEFAULT
-#ifndef DECSTATION
#define TARGET_ENDIAN_DEFAULT MASK_BIG_ENDIAN
-#else
-#define TARGET_ENDIAN_DEFAULT 0
-#endif
#endif
#ifndef MIPS_ISA_DEFAULT
@@ -780,35 +755,6 @@ while (0)
/* Show we can debug even without a frame pointer. */
#define CAN_DEBUG_WITHOUT_FP
-/* Complain about missing specs and predefines that should be defined in each
- of the target tm files to override the defaults. This is mostly a place-
- holder until I can get each of the files updated [mm]. */
-
-#if defined(OSF_OS) \
- || defined(DECSTATION) \
- || defined(SGI_TARGET) \
- || defined(MIPS_NEWS) \
- || defined(MIPS_SYSV) \
- || defined(MIPS_SVR4) \
- || defined(MIPS_BSD43)
-
-#ifndef CPP_PREDEFINES
- #error "Define CPP_PREDEFINES in the appropriate tm.h file"
-#endif
-
-#ifndef LIB_SPEC
- #error "Define LIB_SPEC in the appropriate tm.h file"
-#endif
-
-#ifndef STARTFILE_SPEC
- #error "Define STARTFILE_SPEC in the appropriate tm.h file"
-#endif
-
-#ifndef MACHINE_TYPE
- #error "Define MACHINE_TYPE in the appropriate tm.h file"
-#endif
-#endif
-
/* Tell collect what flags to pass to nm. */
#ifndef NM_FLAGS
#define NM_FLAGS "-Bn"
@@ -1001,10 +947,6 @@ extern int mips_abi;
%{mint64|mlong64|mlong32:-mexplicit-type-size }\
%{mgp32: %{mfp64:%emay not use both -mgp32 and -mfp64} %{!mfp32: -mfp32}} \
%{G*} %{EB:-meb} %{EL:-mel} %{EB:%{EL:%emay not use both -EB and -EL}} \
-%{pic-none: -mno-half-pic} \
-%{pic-lib: -mhalf-pic} \
-%{pic-extern: -mhalf-pic} \
-%{pic-calls: -mhalf-pic} \
%{save-temps: } \
%(subtarget_cc1_spec) \
%(cc1_cpu_spec)"
@@ -2234,7 +2176,6 @@ extern enum reg_class mips_char_to_class[256];
`Q' is for mips16 GP relative constants
`R' is for memory references which take 1 word for the instruction.
- `S' is for references to extern items which are PIC for OSF/rose.
`T' is for memory addresses that can be used to load two words. */
#define EXTRA_CONSTRAINT(OP,CODE) \
@@ -2243,8 +2184,6 @@ extern enum reg_class mips_char_to_class[256];
&& mips16_gp_offset_p (OP)) \
: (GET_CODE (OP) != MEM) ? FALSE \
: ((CODE) == 'R') ? simple_memory_operand (OP, GET_MODE (OP)) \
- : ((CODE) == 'S') ? (HALF_PIC_P () && CONSTANT_P (OP) \
- && HALF_PIC_ADDRESS_P (OP)) \
: FALSE)
/* Given an rtx X being reloaded into a reg required to be
@@ -3092,14 +3031,13 @@ typedef struct mips_args {
`la $5,s;sw $4,70000($5)' via LEGITIMIZE_ADDRESS. */
/* ??? SGI Irix 6 assembler fails for CONST address, so reject them. */
#define CONSTANT_ADDRESS_P(X) \
- ((GET_CODE (X) == LABEL_REF || GET_CODE (X) == SYMBOL_REF \
+ (GET_CODE (X) == LABEL_REF || GET_CODE (X) == SYMBOL_REF \
|| GET_CODE (X) == CONST_INT || GET_CODE (X) == HIGH \
|| (GET_CODE (X) == CONST \
&& ! (flag_pic && pic_address_needs_scratch (X)) \
&& (mips_abi == ABI_32 \
|| mips_abi == ABI_O64 \
- || mips_abi == ABI_EABI))) \
- && (!HALF_PIC_P () || !HALF_PIC_ADDRESS_P (X)))
+ || mips_abi == ABI_EABI)))
/* Define this, so that when PIC, reload won't try to reload invalid
addresses which require two reload registers. */
@@ -3354,13 +3292,6 @@ typedef struct mips_args {
#define FUNCTION_MODE (Pmode == DImode ? DImode : SImode)
-/* Define TARGET_MEM_FUNCTIONS if we want to use calls to memcpy and
- memset, instead of the BSD functions bcopy and bzero. */
-
-#if defined(MIPS_SYSV) || defined(OSF_OS)
-#define TARGET_MEM_FUNCTIONS
-#endif
-
/* A part of a C `switch' statement that describes the relative
costs of constant RTL expressions. It must contain `case'
@@ -4161,7 +4092,7 @@ typedef struct mips_args {
ALL_COP_ADDITIONAL_REGISTER_NAMES \
}
-/* This is meant to be redefined in the host dependent files. It is a
+/* This is meant to be redefined in the host dependent files. It is a
set of alternative names and regnums for mips coprocessors. */
#define ALL_COP_ADDITIONAL_REGISTER_NAMES
@@ -4282,8 +4213,7 @@ while (0)
LM[0-9]+ Silicon Graphics/ECOFF stabs label before each stmt.
$Lb[0-9]+ Begin blocks for MIPS debug support
$Lc[0-9]+ Label for use in s<xx> operation.
- $Le[0-9]+ End blocks for MIPS debug support
- $Lp\..+ Half-pic labels. */
+ $Le[0-9]+ End blocks for MIPS debug support */
/* This is how to output the definition of a user-level label named NAME,
such as the label on a static function or variable NAME.
@@ -4316,7 +4246,6 @@ do { \
do \
{ \
mips_declare_object (STREAM, NAME, "", ":\n", 0); \
- HALF_PIC_DECLARE (NAME); \
} \
while (0)
@@ -4393,10 +4322,10 @@ do { \
emitting the label is moved to function_prologue, so that we can
get the line number correctly emitted before the .ent directive,
and after any .file directives. */
-
+/*
#undef ASM_DECLARE_FUNCTION_NAME
-#define ASM_DECLARE_FUNCTION_NAME(STREAM,NAME,DECL) \
- HALF_PIC_DECLARE (NAME)
+#define ASM_DECLARE_FUNCTION_NAME(STREAM,NAME,DECL)
+*/
/* This is how to output an internal numbered label where
PREFIX is the class of label and NUM is the number within the class. */
diff --git a/gcc/config/mips/mips.md b/gcc/config/mips/mips.md
index 118c159..83ae30e 100644
--- a/gcc/config/mips/mips.md
+++ b/gcc/config/mips/mips.md
@@ -4938,7 +4938,7 @@ move\\t%0,%z4\\n\\
if ((INTVAL (offset) & 7) == 0
&& (mem_addr == stack_pointer_rtx || mem_addr == frame_pointer_rtx))
- return \"sd\\t%1,%0\";
+ return \"sd\\t%z1,%0\";
return \"usd\\t%z1,%0\";
}"
@@ -5131,17 +5131,17 @@ move\\t%0,%z4\\n\\
"")
(define_insn "movdi_internal2"
- [(set (match_operand:DI 0 "nonimmediate_operand" "=d,d,d,d,d,d,R,m,*x,*d,*x,*a,*B*C*D,*B*C*D,*B*C*D,*d,*m,*R")
- (match_operand:DI 1 "movdi_operand" "d,S,IKL,Mnis,R,m,dJ,dJ,J,*x,*d,*J,*d,*m,*R,*B*C*D,*B*C*D,*B*C*D"))]
+ [(set (match_operand:DI 0 "nonimmediate_operand" "=d,d,d,d,d,R,m,*x,*d,*x,*a,*B*C*D,*B*C*D,*B*C*D,*d,*m,*R")
+ (match_operand:DI 1 "movdi_operand" "d,IKL,Mnis,R,m,dJ,dJ,J,*x,*d,*J,*d,*m,*R,*B*C*D,*B*C*D,*B*C*D"))]
"TARGET_64BIT && !TARGET_MIPS16
&& (register_operand (operands[0], DImode)
|| se_register_operand (operands[1], DImode)
|| (GET_CODE (operands[1]) == CONST_INT && INTVAL (operands[1]) == 0)
|| operands[1] == CONST0_RTX (DImode))"
"* return mips_move_2words (operands, insn); "
- [(set_attr "type" "move,load,arith,arith,load,load,store,store,hilo,hilo,hilo,hilo,xfer,load,load,xfer,store,store")
+ [(set_attr "type" "move,arith,arith,load,load,store,store,hilo,hilo,hilo,hilo,xfer,load,load,xfer,store,store")
(set_attr "mode" "DI")
- (set_attr "length" "4,8,4,8,4,8,4,8,4,4,4,8,8,8,8,8,8,8")])
+ (set_attr "length" "4,4,8,4,8,4,8,4,4,4,8,8,8,8,8,8,8")])
(define_insn ""
[(set (match_operand:DI 0 "nonimmediate_operand" "=d,y,d,d,d,d,d,d,R,m,*d")
@@ -5517,7 +5517,7 @@ move\\t%0,%z4\\n\\
(set_attr "mode" "SI")
(set_attr_alternative
"length"
- [(if_then_else
+ [(if_then_else
(lt (symbol_ref "(unsigned HOST_WIDE_INT) INTVAL (operands[0])")
(const_int 1024))
(const_int 4)
@@ -5527,28 +5527,28 @@ move\\t%0,%z4\\n\\
;; in FP registers (off by default, use -mdebugh to enable).
(define_insn "movsi_internal1"
- [(set (match_operand:SI 0 "nonimmediate_operand" "=d,d,d,d,d,d,R,m,*d,*f*z,*f,*f,*f,*R,*m,*x,*x,*d,*d,*B*C*D,*B*C*D,*B*C*D,*d,*m,*R")
- (match_operand:SI 1 "move_operand" "d,S,IKL,Mnis,R,m,dJ,dJ,*f*z,*d,*f,*R,*m,*f,*f,J,*d,*x,*a,*d,*m,*R,*B*C*D,*B*C*D,*B*C*D"))]
+ [(set (match_operand:SI 0 "nonimmediate_operand" "=d,d,d,d,d,R,m,*d,*f*z,*f,*f,*f,*R,*m,*x,*x,*d,*d,*B*C*D,*B*C*D,*B*C*D,*d,*m,*R")
+ (match_operand:SI 1 "move_operand" "d,IKL,Mnis,R,m,dJ,dJ,*f*z,*d,*f,*R,*m,*f,*f,J,*d,*x,*a,*d,*m,*R,*B*C*D,*B*C*D,*B*C*D"))]
"TARGET_DEBUG_H_MODE && !TARGET_MIPS16
&& (register_operand (operands[0], SImode)
|| register_operand (operands[1], SImode)
|| (GET_CODE (operands[1]) == CONST_INT && INTVAL (operands[1]) == 0))"
"* return mips_move_1word (operands, insn, FALSE);"
- [(set_attr "type" "move,load,arith,arith,load,load,store,store,xfer,xfer,move,load,load,store,store,hilo,hilo,hilo,hilo,xfer,load,load,xfer,store,store")
+ [(set_attr "type" "move,arith,arith,load,load,store,store,xfer,xfer,move,load,load,store,store,hilo,hilo,hilo,hilo,xfer,load,load,xfer,store,store")
(set_attr "mode" "SI")
- (set_attr "length" "4,8,4,8,4,8,4,8,4,4,4,4,8,4,8,4,4,4,4,4,4,8,4,4,8")])
+ (set_attr "length" "4,4,8,4,8,4,8,4,4,4,4,8,4,8,4,4,4,4,4,4,8,4,4,8")])
(define_insn "movsi_internal2"
- [(set (match_operand:SI 0 "nonimmediate_operand" "=d,d,d,d,d,d,R,m,*d,*z,*x,*d,*x,*d,*B*C*D,*B*C*D,*B*C*D,*d,*m,*R")
- (match_operand:SI 1 "move_operand" "d,S,IKL,Mnis,R,m,dJ,dJ,*z,*d,J,*x,*d,*a,*d,*m,*R,*B*C*D,*B*C*D,*B*C*D"))]
+ [(set (match_operand:SI 0 "nonimmediate_operand" "=d,d,d,d,d,R,m,*d,*z,*x,*d,*x,*d,*B*C*D,*B*C*D,*B*C*D,*d,*m,*R")
+ (match_operand:SI 1 "move_operand" "d,IKL,Mnis,R,m,dJ,dJ,*z,*d,J,*x,*d,*a,*d,*m,*R,*B*C*D,*B*C*D,*B*C*D"))]
"!TARGET_DEBUG_H_MODE && !TARGET_MIPS16
&& (register_operand (operands[0], SImode)
|| register_operand (operands[1], SImode)
|| (GET_CODE (operands[1]) == CONST_INT && INTVAL (operands[1]) == 0))"
"* return mips_move_1word (operands, insn, FALSE);"
- [(set_attr "type" "move,load,arith,arith,load,load,store,store,xfer,xfer,hilo,hilo,hilo,hilo,xfer,load,load,xfer,store,store")
+ [(set_attr "type" "move,arith,arith,load,load,store,store,xfer,xfer,hilo,hilo,hilo,hilo,xfer,load,load,xfer,store,store")
(set_attr "mode" "SI")
- (set_attr "length" "4,8,4,8,4,8,4,8,4,4,4,4,4,4,4,4,8,4,4,8")])
+ (set_attr "length" "4,4,8,4,8,4,8,4,4,4,4,4,4,4,4,8,4,4,8")])
;; This is the mips16 movsi instruction. We accept a small integer as
;; the source if the destination is a GP memory reference. This is
@@ -5559,8 +5559,8 @@ move\\t%0,%z4\\n\\
;; into a register.
(define_insn ""
- [(set (match_operand:SI 0 "nonimmediate_operand" "=d,y,d,d,d,d,d,d,d,R,m,*d,*d")
- (match_operand:SI 1 "move_operand" "d,d,y,S,K,N,s,R,m,d,d,*x,*a"))]
+ [(set (match_operand:SI 0 "nonimmediate_operand" "=d,y,d,d,d,d,d,d,R,m,*d,*d")
+ (match_operand:SI 1 "move_operand" "d,d,y,K,N,s,R,m,d,d,*x,*a"))]
"TARGET_MIPS16
&& (register_operand (operands[0], SImode)
|| register_operand (operands[1], SImode)
@@ -5572,13 +5572,12 @@ move\\t%0,%z4\\n\\
&& (SMALL_INT (operands[1])
|| SMALL_INT_UNSIGNED (operands[1]))))"
"* return mips_move_1word (operands, insn, FALSE);"
- [(set_attr "type" "move,move,move,load,arith,arith,arith,load,load,store,store,hilo,hilo")
+ [(set_attr "type" "move,move,move,arith,arith,arith,load,load,store,store,hilo,hilo")
(set_attr "mode" "SI")
(set_attr_alternative "length"
[(const_int 4)
(const_int 4)
(const_int 4)
- (const_int 8)
(if_then_else (match_operand:VOID 1 "m16_uimm8_1" "")
(const_int 4)
(const_int 8))
diff --git a/gcc/config/mips/openbsd.h b/gcc/config/mips/openbsd.h
index 5fc062b..6ed3440 100644
--- a/gcc/config/mips/openbsd.h
+++ b/gcc/config/mips/openbsd.h
@@ -35,7 +35,7 @@ Boston, MA 02111-1307, USA. */
#define LIB_SPEC OBSD_LIB_SPEC
/* By default, OpenBSD mips is little endian. This is important to set
- here as mips/mips.h defaults to big endian unless DECSTATION. */
+ here as mips/mips.h defaults to big endian. */
#ifndef TARGET_ENDIAN_DEFAULT
#define TARGET_ENDIAN_DEFAULT 0
#endif
@@ -81,7 +81,7 @@ Boston, MA 02111-1307, USA. */
/* Controlling the compilation driver. */
-/* LINK_SPEC appropriate for OpenBSD: support for GCC options
+/* LINK_SPEC appropriate for OpenBSD: support for GCC options
-static, -assert, and -nostdlib. Dynamic loader control. */
#undef LINK_SPEC
#define LINK_SPEC \
diff --git a/gcc/halfpic.c b/gcc/halfpic.c
deleted file mode 100644
index f491314..0000000
--- a/gcc/halfpic.c
+++ /dev/null
@@ -1,399 +0,0 @@
-/* OSF/rose half-pic support functions.
- Copyright (C) 1992, 1997, 1998, 1999 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free
-Software Foundation; either version 2, or (at your option) any later
-version.
-
-GCC is distributed in the hope that it will be useful, but WITHOUT ANY
-WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-for more details.
-
-You should have received a copy of the GNU General Public License
-along with GCC; see the file COPYING. If not, write to the Free
-Software Foundation, 59 Temple Place - Suite 330, Boston, MA
-02111-1307, USA. */
-
-/* The OSF/rose half-pic model assumes that the non-library code does
- not need to have full PIC (position independent code), but rather,
- that pointers to external references are put into the data section
- and dereferenced as normal pointers. References to static data does
- not need to be PIC-ized.
-
- Another optimization is to have the compiler know what symbols are
- in the shared libraries, and to only lay down the pointers to
- things which in the library proper. */
-
-#include "config.h"
-
-#ifdef HALF_PIC_INIT
-
-#include "system.h"
-#include "tree.h"
-#include "rtl.h"
-#include "expr.h"
-#include "output.h"
-#include "obstack.h"
-#include "halfpic.h"
-
-#define obstack_chunk_alloc xmalloc
-#define obstack_chunk_free free
-
-int flag_half_pic = 0; /* Global half-pic flag. */
-int half_pic_number_ptrs = 0; /* # distinct pointers found */
-int half_pic_number_refs = 0; /* # half-pic references */
-int (*ptr_half_pic_address_p) PARAMS ((rtx)) = half_pic_address_p;
-
-/* Obstack to hold generated pic names. */
-static struct obstack half_pic_obstack;
-
-/* List of pointers created to pic references. */
-
-struct all_refs {
- struct all_refs *hash_next; /* next name in hash chain */
- struct all_refs *next; /* next name created */
- int external_p; /* name is an external reference */
- int pointer_p; /* pointer created. */
- const char *ref_name; /* reference name to ptr to real_name */
- int ref_len; /* reference name length */
- const char *real_name; /* real function/data name */
- int real_len; /* strlen (real_name) */
-};
-
-static struct all_refs *half_pic_names;
-
-static const char *half_pic_prefix;
-static int half_pic_prefix_len;
-
-
-/* Return the hash bucket of a name or NULL. The hash chain is
- organized as a self reorganizing circularly linked chain. It is
- assumed that any name passed to use will never be reallocated. For
- names in SYMBOL_REF's this is true, because the names are allocated
- on the permanent obstack. */
-
-#ifndef MAX_HASH_TABLE
-#define MAX_HASH_TABLE 1009
-#endif
-
-#define HASHBITS 30
-
-static struct all_refs *half_pic_hash PARAMS ((const char *, int, int));
-
-static struct all_refs *
-half_pic_hash (name, len, create_p)
- const char *name; /* name to hash */
- int len; /* length of the name (or 0 to call strlen) */
- int create_p; /* != 0 to create new hash bucket if new */
-{
- static struct all_refs *hash_table[MAX_HASH_TABLE];
- static struct all_refs zero_all_refs;
-
- const unsigned char *uname;
- int hash;
- int i;
- int ch;
- struct all_refs *first;
- struct all_refs *ptr;
-
- if (len == 0)
- len = strlen (name);
-
- /* Compute hash code */
- uname = (const unsigned char *)name;
- ch = uname[0];
- hash = len * 613 + ch;
- for (i = 1; i < len; i += 2)
- hash = (hash * 613) + uname[i];
-
- hash &= (1 << HASHBITS) - 1;
- hash %= MAX_HASH_TABLE;
-
- /* See if the name is in the hash table. */
- ptr = first = hash_table[hash];
- if (ptr)
- {
- do
- {
- if (len == ptr->real_len
- && ch == *(ptr->real_name)
- && !strcmp (name, ptr->real_name))
- {
- hash_table[hash] = ptr;
- return ptr;
- }
-
- ptr = ptr->hash_next;
- }
- while (ptr != first);
- }
-
- /* name not in hash table. */
- if (!create_p)
- return (struct all_refs *) 0;
-
- ptr = (struct all_refs *) obstack_alloc (&half_pic_obstack, sizeof (struct all_refs));
- *ptr = zero_all_refs;
-
- ptr->real_name = name;
- ptr->real_len = len;
-
- /* Update circular links. */
- if (first == (struct all_refs *) 0)
- ptr->hash_next = ptr;
-
- else
- {
- ptr->hash_next = first->hash_next;
- first->hash_next = ptr;
- }
-
- hash_table[hash] = ptr;
- return ptr;
-}
-
-
-/* Do any half-pic initializations. */
-
-void
-half_pic_init ()
-{
- flag_half_pic = TRUE;
- half_pic_prefix = HALF_PIC_PREFIX;
- half_pic_prefix_len = strlen (half_pic_prefix);
- obstack_init (&half_pic_obstack);
-}
-
-
-/* Write out all pointers to pic references. */
-
-void
-half_pic_finish (stream)
- FILE *stream;
-{
- struct all_refs *p = half_pic_names;
-
- if (!p)
- return;
-
- data_section ();
- for (; p != 0; p = p->next)
- {
- /* Emit the pointer if used. */
- if (p->pointer_p)
- {
- ASM_OUTPUT_LABEL (stream, p->ref_name);
- assemble_aligned_integer (POINTER_SIZE / BITS_PER_UNIT,
- gen_rtx_SYMBOL_REF (Pmode, p->real_name));
- }
- }
-}
-
-
-/* Encode in a declaration whether or not it is half-pic. */
-
-void
-half_pic_encode (decl)
- tree decl;
-{
- enum tree_code code = TREE_CODE (decl);
- tree asm_name;
- struct all_refs *ptr;
-
- if (!flag_half_pic)
- return;
-
- if (code != VAR_DECL && code != FUNCTION_DECL)
- return;
-
- asm_name = DECL_ASSEMBLER_NAME (decl);
-
- if (!asm_name)
- return;
-
-#ifdef HALF_PIC_DEBUG
- if (HALF_PIC_DEBUG)
- {
- fprintf (stderr, "\n========== Half_pic_encode %.*s\n",
- IDENTIFIER_LENGTH (asm_name),
- IDENTIFIER_POINTER (asm_name));
- debug_tree (decl);
- }
-#endif
-
- /* If this is not an external reference, it can't be half-pic. */
- if (!DECL_EXTERNAL (decl) && (code != VAR_DECL || !TREE_PUBLIC (decl)))
- return;
-
- ptr = half_pic_hash (IDENTIFIER_POINTER (asm_name),
- IDENTIFIER_LENGTH (asm_name),
- TRUE);
-
- ptr->external_p = TRUE;
-
-#ifdef HALF_PIC_DEBUG
- if (HALF_PIC_DEBUG)
- fprintf (stderr, "\n%.*s is half-pic\n",
- IDENTIFIER_LENGTH (asm_name),
- IDENTIFIER_POINTER (asm_name));
-#endif
-}
-
-
-/* Mark that an object is now local, and no longer needs half-pic. */
-
-void
-half_pic_declare (name)
- const char *name;
-{
- struct all_refs *ptr;
-
- if (!flag_half_pic)
- return;
-
- ptr = half_pic_hash (name, 0, FALSE);
- if (!ptr)
- return;
-
- ptr->external_p = FALSE;
-
-#ifdef HALF_PIC_DEBUG
- if (HALF_PIC_DEBUG)
- fprintf (stderr, "\n========== Half_pic_declare %s\n", name);
-#endif
-}
-
-
-/* Mark that an object is explicitly external. */
-
-void
-half_pic_external (name)
- const char *name;
-{
- struct all_refs *ptr;
-
- if (!flag_half_pic)
- return;
-
- ptr = half_pic_hash (name, 0, TRUE);
- if (!ptr)
- return;
-
- ptr->external_p = TRUE;
-
-#ifdef HALF_PIC_DEBUG
- if (HALF_PIC_DEBUG)
- fprintf (stderr, "\n========== Half_pic_external %s\n", name);
-#endif
-}
-
-
-/* Return whether an address is half-pic. */
-
-int
-half_pic_address_p (addr)
- rtx addr;
-{
- const char *name;
- int len;
- struct all_refs *ptr;
-
- if (!flag_half_pic)
- return FALSE;
-
- switch (GET_CODE (addr))
- {
- default:
- break;
-
- case CONST:
- {
- rtx offset = const0_rtx;
- addr = eliminate_constant_term (XEXP (addr, 0), &offset);
- if (GET_CODE (addr) != SYMBOL_REF)
- return FALSE;
- }
- /* fall through */
-
- case SYMBOL_REF:
- name = XSTR (addr, 0);
-
-#ifdef HALF_PIC_DEBUG
- if (HALF_PIC_DEBUG)
- fprintf (stderr, "\n========== Half_pic_address_p %s\n", name);
-#endif
-
- /* If this is a label, it will have a '*' in front of it. */
- if (name[0] == '*')
- return FALSE;
-
- /* If this is a reference to the actual half-pic pointer, it
- is obviously not half-pic. */
-
- len = strlen (name);
- if (len > half_pic_prefix_len
- && half_pic_prefix[0] == name[0]
- && !strncmp (name, half_pic_prefix, half_pic_prefix_len))
- return FALSE;
-
- ptr = half_pic_hash (name, len, FALSE);
- if (ptr == (struct all_refs *) 0)
- return FALSE;
-
- if (ptr->external_p)
- {
-#ifdef HALF_PIC_DEBUG
- if (HALF_PIC_DEBUG)
- fprintf (stderr, "%s is half-pic\n", name);
-#endif
- return TRUE;
- }
- }
-
- return FALSE;
-}
-
-
-/* Return the name of the pointer to the PIC function, allocating
- it if need be. */
-
-struct rtx_def *
-half_pic_ptr (operand)
- rtx operand;
-{
- const char *name;
- struct all_refs *p;
- int len;
-
- if (GET_CODE (operand) != SYMBOL_REF)
- return operand;
-
- name = XSTR (operand, 0);
- len = strlen (name);
- p = half_pic_hash (name, len, FALSE);
- if (p == (struct all_refs *) 0 || !p->external_p)
- return operand;
-
- if (!p->pointer_p)
- { /* first time, create pointer */
- obstack_grow (&half_pic_obstack, half_pic_prefix, half_pic_prefix_len);
- obstack_grow (&half_pic_obstack, name, len+1);
-
- p->next = half_pic_names;
- p->ref_name = (char *) obstack_finish (&half_pic_obstack);
- p->ref_len = len + half_pic_prefix_len;
- p->pointer_p = TRUE;
-
- half_pic_names = p;
- half_pic_number_ptrs++;
- }
-
- half_pic_number_refs++;
- return gen_rtx_SYMBOL_REF (Pmode, p->ref_name);
-}
-
-#endif /* HALF_PIC_INIT */
diff --git a/gcc/halfpic.h b/gcc/halfpic.h
deleted file mode 100644
index 37bc499..0000000
--- a/gcc/halfpic.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/* OSF/rose half-pic support definitions.
- Copyright (C) 1992, 1996, 1997, 1998, 2000 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free
-Software Foundation; either version 2, or (at your option) any later
-version.
-
-GCC is distributed in the hope that it will be useful, but WITHOUT ANY
-WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-for more details.
-
-You should have received a copy of the GNU General Public License
-along with GCC; see the file COPYING. If not, write to the Free
-Software Foundation, 59 Temple Place - Suite 330, Boston, MA
-02111-1307, USA. */
-
-#ifndef NO_HALF_PIC
-
-/* Declare the variable flag_half_pic as 'int' instead of 'extern
- int', so that BSS variables are created (even though this is not
- strict ANSI). This is because rtl.c now refers to the
- CONSTANT_ADDRESS_P macro, which in turn refers to flag_half_pic,
- and wants to call half_pic_address_p, whose address we also store
- in a BSS variable. This way, the gen* programs won't get
- unknown symbol errors when being linked (flag_half_pic will never
- be true in the gen* programs). */
-
-int flag_half_pic; /* Global half-pic flag. */
-int (*ptr_half_pic_address_p) PARAMS ((struct rtx_def *)); /* ptr to half_pic_address_p () */
-
-extern int half_pic_number_ptrs; /* # distinct pointers found */
-extern int half_pic_number_refs; /* # half-pic references */
-extern void half_pic_encode PARAMS ((union tree_node *)); /* encode whether half-pic */
-extern void half_pic_declare PARAMS ((const char *)); /* declare object local */
-extern void half_pic_external PARAMS ((const char *)); /* declare object external */
-extern void half_pic_init PARAMS ((void)); /* half_pic initialization */
-extern int half_pic_address_p PARAMS ((struct rtx_def *)); /* true if an address is half-pic */
-extern struct rtx_def *half_pic_ptr PARAMS ((struct rtx_def *)); /* return RTX for half-pic pointer */
-#ifdef BUFSIZ
-extern void half_pic_finish PARAMS ((FILE *)); /* half_pic termination */
-#endif
-
-/* Macros to provide access to the half-pic stuff (so they can easily
- be stubbed out. */
-
-#define HALF_PIC_P() (flag_half_pic)
-#define HALF_PIC_NUMBER_PTRS (half_pic_number_ptrs)
-#define HALF_PIC_NUMBER_REFS (half_pic_number_refs)
-
-#define HALF_PIC_ENCODE(DECL) half_pic_encode (DECL)
-#define HALF_PIC_DECLARE(NAME) half_pic_declare (NAME)
-#define HALF_PIC_EXTERNAL(NAME) half_pic_external (NAME)
-#define HALF_PIC_INIT() half_pic_init ()
-#define HALF_PIC_FINISH(STREAM) half_pic_finish (STREAM)
-#define HALF_PIC_ADDRESS_P(X) ((*ptr_half_pic_address_p) (X))
-#define HALF_PIC_PTR(X) half_pic_ptr (X)
-
-/* Prefix for half-pic names */
-#ifndef HALF_PIC_PREFIX
-#define HALF_PIC_PREFIX "__pic_"
-#endif
-
-#endif /* NO_HALF_PIC */
diff --git a/gcc/toplev.c b/gcc/toplev.c
index 9dd6468..7ac28c0f 100644
--- a/gcc/toplev.c
+++ b/gcc/toplev.c
@@ -88,10 +88,6 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "xcoffout.h" /* Needed for external data
declarations for e.g. AIX 4.x. */
#endif
-
-#ifdef HALF_PIC_DEBUG
-#include "halfpic.h"
-#endif
/* Carry information from ASM_DECLARE_OBJECT_NAME
to ASM_FINISH_DECLARE_OBJECT. */