c-pragma.h (add_weak): Move prototype from here...
2001-08-28 Eric Christopher <echristo@redhat.com> Richard Henderson <rth@redhat.com> * c-pragma.h (add_weak): Move prototype from here... * output.h (add_weak): ... to here. * varasm.c (add_weak): Fix typo. * config/mips/crti.asm: New file. * config/mips/crtn.asm: Ditto. * config/mips/elf.h (SBSS_SECTION_ASM_OP) Add #undef. (CTOR_LISTS_DEFINED_EXTERNALLY): Remove. (INVOKE__main): Ditto. (INIT_SECTION_ASM_OP): New. (FINI_SECTION_ASM_OP): Ditto. (STARTFILE_SPEC): Add crti. (ENDFILE_SPEC): Add crtn. * config/mips/elf64.h: Same. * config/mips/rtems64.h (INVOKE__main, NAME__MAIN, SYMBOL__MAIN): Remove. * config/mips/vxworks.h: Ditto. * config/mips/t-elf: Support crti and crtn. Co-Authored-By: Richard Henderson <rth@redhat.com> From-SVN: r45243
This commit is contained in:
parent
5dde01439e
commit
46f9491e74
@ -1,3 +1,24 @@
|
||||
2001-08-28 Eric Christopher <echristo@redhat.com>
|
||||
Richard Henderson <rth@redhat.com>
|
||||
|
||||
* c-pragma.h (add_weak): Move prototype from here...
|
||||
* output.h (add_weak): ... to here.
|
||||
* varasm.c (add_weak): Fix typo.
|
||||
* config/mips/crti.asm: New file.
|
||||
* config/mips/crtn.asm: Ditto.
|
||||
* config/mips/elf.h (SBSS_SECTION_ASM_OP) Add #undef.
|
||||
(CTOR_LISTS_DEFINED_EXTERNALLY): Remove.
|
||||
(INVOKE__main): Ditto.
|
||||
(INIT_SECTION_ASM_OP): New.
|
||||
(FINI_SECTION_ASM_OP): Ditto.
|
||||
(STARTFILE_SPEC): Add crti.
|
||||
(ENDFILE_SPEC): Add crtn.
|
||||
* config/mips/elf64.h: Same.
|
||||
* config/mips/rtems64.h (INVOKE__main, NAME__MAIN, SYMBOL__MAIN):
|
||||
Remove.
|
||||
* config/mips/vxworks.h: Ditto.
|
||||
* config/mips/t-elf: Support crti and crtn.
|
||||
|
||||
2001-08-28 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* jump.c (mark_jump_label): Fix typo: REG_LABEL is EXPR_LIST, not
|
||||
@ -47,7 +68,7 @@
|
||||
bordered, bunordered, buneq, bunge, bungt, bunle, bunlt, bltgt,
|
||||
bordered_rev, bunordered_rev, buneq_rev, bunge_rev, bungt_rev,
|
||||
bunle_rev, bunlt_rev, bltgt_rev): New patterns.
|
||||
|
||||
|
||||
2001-08-27 Roman Zippel <zippel@linux-m68k.org>
|
||||
|
||||
* config/m68k/m68k.md (subreghi1ashrdi_const32, bsetmemqi,
|
||||
@ -104,13 +125,13 @@
|
||||
PRESENCE_SET, ABSENCE_SET, DEFINE_BYPASS, DEFINE_AUTOMATON,
|
||||
AUTOMATA_OPTION, DEFINE_RESERVATION, DEFINE_INSN_RESERVATION): New
|
||||
RTL constructions.
|
||||
|
||||
|
||||
* genattr.c (main): New variable num_insn_reservations. Increase
|
||||
it if there is DEFINE_INSN_RESERVATION. Output automaton based
|
||||
pipeline hazard recognizer interface.
|
||||
|
||||
* genattrtab.h: New file.
|
||||
|
||||
|
||||
* genattrtab.c: Include genattrtab.h.
|
||||
(attr_printf, check_attr_test, make_internal_attr,
|
||||
make_numeric_value): Move protypes into genattrtab.h. Define them
|
||||
@ -124,11 +145,11 @@
|
||||
* genautomata.c: New file.
|
||||
|
||||
* rtl.h (LINK_COST_ZERO, LINK_COST_FREE): Remove them.
|
||||
|
||||
|
||||
* sched-int.h: (curr_state): Add the external definition for
|
||||
automaton pipeline interface.
|
||||
(haifa_insn_data): Add comments for members blockage and units.
|
||||
|
||||
|
||||
* target-def.h (TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE,
|
||||
TARGET_SCHED_INIT_DFA_PRE_CYCLE_INSN,
|
||||
TARGET_SCHED_DFA_PRE_CYCLE_INSN,
|
||||
@ -143,7 +164,7 @@
|
||||
dfa_pre_cycle_insn, init_dfa_post_cycle_insn, dfa_post_cycle_insn,
|
||||
first_cycle_multipass_dfa_lookahead, init_dfa_bubbles,
|
||||
dfa_bubble): New members in gcc_target.sched.
|
||||
|
||||
|
||||
* haifa-sched.c (insert_schedule_bubbles_p): New variable.
|
||||
(MAX_INSN_QUEUE_INDEX): New macro for automaton interface.
|
||||
(insn_queue): Redefine it as pointer to array.
|
||||
@ -177,7 +198,7 @@
|
||||
Initiate insn cost by -1.
|
||||
(sched_finish): Free the current automaton state and finalize
|
||||
automaton pipeline interface.
|
||||
|
||||
|
||||
* sched-rgn.c: Include target.h.
|
||||
(init_ready_list, new_ready, debug_dependencies): Add new code for
|
||||
automaton pipeline interface.
|
||||
@ -185,7 +206,7 @@
|
||||
* sched-vis.c: Include target.h.
|
||||
(get_visual_tbl_length): Add code for automaton interface.
|
||||
(target_units, print_block_visualization): Add comments.
|
||||
|
||||
|
||||
* Makefile.in (GETRUNTIME, HASHTAB, HOST_GETRUNTIME, HOST_HASHTAB,
|
||||
USE_HOST_GETRUNTIME, USE_HOST_HASHTAB, HOST_VARRAY): New variables.
|
||||
(sched-rgn.o, sched-vis.o): Add new dependency file target.h.
|
||||
@ -195,7 +216,7 @@
|
||||
(getruntime.o, hashtab.o): New entries for canadian cross.
|
||||
|
||||
* doc/md.texi: Description of automaton based model.
|
||||
|
||||
|
||||
* doc/tm.texi (TARGET_SCHED_ISSUE_RATE, TARGET_SCHED_ADJUST_COST):
|
||||
Add comments.
|
||||
(TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE,
|
||||
@ -208,7 +229,7 @@
|
||||
hook descriptions.
|
||||
(TRADITIONAL_PIPELINE_INTERFACE, DFA_PIPELINE_INTERFACE,
|
||||
MAX_DFA_ISSUE_RATE): New macro descriptions.
|
||||
|
||||
|
||||
* doc/contrib.texi: Add dfa based scheduler contribution.
|
||||
|
||||
* doc/gcc.texi: Add more information about genattrtab.
|
||||
@ -241,7 +262,7 @@
|
||||
* c-tree.h: Add prototyp for c_sizeof_nowarn.
|
||||
|
||||
2001-08-25 Dan Nicolaescu <dann@ics.uci.edu>
|
||||
|
||||
|
||||
* ssa-ccp.c (ssa_const_prop): Free ssa_edges.
|
||||
|
||||
2001-08-27 Alan Modra <amodra@bigpond.net.au>
|
||||
|
@ -41,11 +41,6 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
|
||||
#define HANDLE_PRAGMA_PACK 1
|
||||
#endif /* HANDLE_PRAGMA_PACK_PUSH_POP */
|
||||
|
||||
|
||||
#ifdef HANDLE_PRAGMA_WEAK
|
||||
extern int add_weak PARAMS ((const char *, const char *));
|
||||
#endif /* HANDLE_PRAGMA_WEAK */
|
||||
|
||||
extern void init_pragma PARAMS ((void));
|
||||
|
||||
/* Duplicate prototypes for the register_pragma stuff and the typedef for
|
||||
|
26
gcc/config/mips/crti.asm
Normal file
26
gcc/config/mips/crti.asm
Normal file
@ -0,0 +1,26 @@
|
||||
/* 4 slots for argument spill area. 1 for cpreturn, 1 for stack.
|
||||
Return spill offset of 40 and 20. */
|
||||
|
||||
.section .init,"ax",@progbits
|
||||
.globl _init
|
||||
.type _init,@function
|
||||
_init:
|
||||
#ifdef __mips64
|
||||
dsubu $sp,$sp,48
|
||||
sd $31,40($sp)
|
||||
#else
|
||||
subu $sp,$sp,32
|
||||
sw $31,20($sp)
|
||||
#endif
|
||||
|
||||
.section .fini,"ax",@progbits
|
||||
.globl _fini
|
||||
.type _fini,@function
|
||||
_fini:
|
||||
#ifdef __mips64
|
||||
dsubu $sp,$sp,48
|
||||
sd $31,40($sp)
|
||||
#else
|
||||
subu $sp,$sp,32
|
||||
sw $31,20($sp)
|
||||
#endif
|
22
gcc/config/mips/crtn.asm
Normal file
22
gcc/config/mips/crtn.asm
Normal file
@ -0,0 +1,22 @@
|
||||
/* 4 slots for argument spill area. 1 for cpreturn, 1 for stack.
|
||||
Return spill offset of 40 and 20. */
|
||||
|
||||
.section .init,"ax",@progbits
|
||||
#ifdef __mips64
|
||||
ld $31,40($sp)
|
||||
daddu $sp,$sp,48
|
||||
#else
|
||||
lw $31,20($sp)
|
||||
addu $sp,$sp,32
|
||||
#endif
|
||||
j $31
|
||||
|
||||
.section .fini,"ax",@progbits
|
||||
#ifdef __mips64
|
||||
ld $31,40($sp)
|
||||
daddu $sp,$sp,48
|
||||
#else
|
||||
lw $31,20($sp)
|
||||
addu $sp,$sp,32
|
||||
#endif
|
||||
j $31
|
@ -99,10 +99,12 @@ do { \
|
||||
uninitialized global data will be output in the data section if
|
||||
`-fno-common' is passed, otherwise `ASM_OUTPUT_COMMON' will be
|
||||
used. */
|
||||
|
||||
#ifndef BSS_SECTION_ASM_OP
|
||||
#define BSS_SECTION_ASM_OP "\t.section\t.bss"
|
||||
#endif
|
||||
|
||||
#undef SBSS_SECTION_ASM_OP
|
||||
#define SBSS_SECTION_ASM_OP "\t.section .sbss"
|
||||
|
||||
/* Like `ASM_OUTPUT_BSS' except takes the required alignment as a
|
||||
@ -213,17 +215,10 @@ do { \
|
||||
#define UNIQUE_SECTION(DECL,RELOC) \
|
||||
mips_unique_section ((DECL), (RELOC))
|
||||
|
||||
/* There's no point providing a default definition of __CTOR_LIST__
|
||||
since people are expected either to use crtbegin.o, or an equivalent,
|
||||
or provide their own definition. */
|
||||
#define CTOR_LISTS_DEFINED_EXTERNALLY
|
||||
|
||||
/* A list of other sections which the compiler might be "in" at any
|
||||
given time. */
|
||||
#undef EXTRA_SECTIONS
|
||||
#define EXTRA_SECTIONS in_sdata, in_sbss, in_rdata
|
||||
|
||||
#define INVOKE__main
|
||||
|
||||
#undef EXTRA_SECTION_FUNCTIONS
|
||||
#define EXTRA_SECTION_FUNCTIONS \
|
||||
@ -241,12 +236,23 @@ void FN () \
|
||||
} \
|
||||
}
|
||||
|
||||
/* On elf, we *do* have support for the .init and .fini sections, and we
|
||||
can put stuff in there to be executed before and after `main'. We let
|
||||
crtstuff.c and other files know this by defining the following symbols.
|
||||
The definitions say how to change sections to the .init and .fini
|
||||
sections. This is the same for all known elf assemblers. */
|
||||
|
||||
#undef INIT_SECTION_ASM_OP
|
||||
#define INIT_SECTION_ASM_OP "\t.section\t.init"
|
||||
#undef FINI_SECTION_ASM_OP
|
||||
#define FINI_SECTION_ASM_OP "\t.section\t.fini"
|
||||
|
||||
/* Don't set the target flags, this is done by the linker script */
|
||||
#undef LIB_SPEC
|
||||
#define LIB_SPEC ""
|
||||
|
||||
#undef STARTFILE_SPEC
|
||||
#define STARTFILE_SPEC "crtbegin%O%s %{!mno-crt0:crt0%O%s}"
|
||||
#define STARTFILE_SPEC "crti%O%s crtbegin%O%s %{!mno-crt0:crt0%O%s}"
|
||||
|
||||
#undef ENDFILE_SPEC
|
||||
#define ENDFILE_SPEC "crtend%O%s"
|
||||
#define ENDFILE_SPEC "crtend%O%s crtn%O%s"
|
||||
|
@ -256,17 +256,10 @@ do { \
|
||||
DECL_SECTION_NAME (DECL) = build_string (len, string); \
|
||||
} while (0)
|
||||
|
||||
/* There's no point providing a default definition of __CTOR_LIST__
|
||||
since people are expected either to use crtbegin.o, or an equivalent,
|
||||
or provide their own definition. */
|
||||
#define CTOR_LISTS_DEFINED_EXTERNALLY
|
||||
|
||||
/* A list of other sections which the compiler might be "in" at any
|
||||
given time. */
|
||||
#undef EXTRA_SECTIONS
|
||||
#define EXTRA_SECTIONS in_sdata, in_rdata
|
||||
|
||||
#define INVOKE__main
|
||||
|
||||
#undef EXTRA_SECTION_FUNCTIONS
|
||||
#define EXTRA_SECTION_FUNCTIONS \
|
||||
@ -282,12 +275,24 @@ void FN () \
|
||||
in_section = ENUM; \
|
||||
} \
|
||||
}
|
||||
|
||||
/* On elf, we *do* have support for the .init and .fini sections, and we
|
||||
can put stuff in there to be executed before and after `main'. We let
|
||||
crtstuff.c and other files know this by defining the following symbols.
|
||||
The definitions say how to change sections to the .init and .fini
|
||||
sections. This is the same for all known elf assemblers. */
|
||||
|
||||
#undef INIT_SECTION_ASM_OP
|
||||
#define INIT_SECTION_ASM_OP "\t.section\t.init"
|
||||
#undef FINI_SECTION_ASM_OP
|
||||
#define FINI_SECTION_ASM_OP "\t.section\t.fini"
|
||||
|
||||
/* Don't set the target flags, this is done by the linker script */
|
||||
#undef LIB_SPEC
|
||||
#define LIB_SPEC ""
|
||||
|
||||
#undef STARTFILE_SPEC
|
||||
#define STARTFILE_SPEC "crtbegin%O%s %{!mno-crt0:crt0%O%s}"
|
||||
#define STARTFILE_SPEC "crti%O%s crtbegin%O%s %{!mno-crt0:crt0%O%s}"
|
||||
|
||||
#undef ENDFILE_SPEC
|
||||
#define ENDFILE_SPEC "crtend%O%s"
|
||||
#define ENDFILE_SPEC "crtend%O%s crtn%O%s"
|
||||
|
@ -33,10 +33,6 @@ Boston, MA 02111-1307, USA. */
|
||||
#undef EXTRA_SECTIONS
|
||||
#define EXTRA_SECTIONS in_sdata, in_rdata
|
||||
|
||||
#undef INVOKE__main
|
||||
#undef NAME__MAIN
|
||||
#undef SYMBOL__MAIN
|
||||
|
||||
#undef EXTRA_SECTION_FUNCTIONS
|
||||
#define EXTRA_SECTION_FUNCTIONS \
|
||||
SECTION_FUNCTION_TEMPLATE(sdata_section, in_sdata, SDATA_SECTION_ASM_OP) \
|
||||
|
@ -1,9 +1,17 @@
|
||||
CONFIG2_H = $(srcdir)/config/mips/ecoff.h
|
||||
|
||||
EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o
|
||||
# Don't let CTOR_LIST end up in sdata section.
|
||||
CRTSTUFF_T_CFLAGS = -G 0
|
||||
|
||||
# Assemble startup files.
|
||||
$(T)crti.o: $(srcdir)/config/mips/crti.asm $(GCC_PASSES)
|
||||
$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \
|
||||
-c -o crti.o -x assembler-with-cpp $(srcdir)/config/mips/crti.asm
|
||||
|
||||
$(T)crtn.o: $(srcdir)/config/mips/crtn.asm $(GCC_PASSES)
|
||||
$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \
|
||||
-c -o crtn.o -x assembler-with-cpp $(srcdir)/config/mips/crtn.asm
|
||||
|
||||
LIB1ASMSRC = mips/mips16.S
|
||||
LIB1ASMFUNCS = _m16addsf3 _m16subsf3 _m16mulsf3 _m16divsf3 \
|
||||
_m16eqsf2 _m16nesf2 _m16gtsf2 _m16gesf2 _m16lesf2 _m16ltsf2 \
|
||||
@ -48,6 +56,7 @@ fp-bit.c: $(srcdir)/config/fp-bit.c
|
||||
MULTILIB_OPTIONS = msoft-float/msingle-float EL/EB mips1/mips3
|
||||
MULTILIB_DIRNAMES = soft-float single el eb mips1 mips3
|
||||
MULTILIB_MATCHES = msingle-float=m4650
|
||||
EXTRA_PARTS = crtbegin.o crtend.o crti.o crtn.o
|
||||
|
||||
LIBGCC = stmp-multilib
|
||||
INSTALL_LIBGCC = install-multilib
|
||||
|
@ -20,10 +20,6 @@ Boston, MA 02111-1307, USA. */
|
||||
#undef EXTRA_SECTIONS
|
||||
#define EXTRA_SECTIONS in_sdata, in_rdata, in_sbss
|
||||
|
||||
#undef INVOKE__main
|
||||
#undef NAME__MAIN
|
||||
#undef SYMBOL__MAIN
|
||||
|
||||
#undef EXTRA_SECTION_FUNCTIONS
|
||||
#define EXTRA_SECTION_FUNCTIONS \
|
||||
SECTION_FUNCTION_TEMPLATE(sdata_section, in_sdata, SDATA_SECTION_ASM_OP) \
|
||||
|
@ -135,6 +135,10 @@ extern void leaf_renumber_regs_insn PARAMS ((rtx));
|
||||
/* Locate the proper template for the given insn-code. */
|
||||
extern const char *get_insn_template PARAMS ((int, rtx));
|
||||
|
||||
/* Add function NAME to the weak symbols list. VALUE is a weak alias
|
||||
associated with NAME. */
|
||||
extern int add_weak PARAMS ((const char *, const char *));
|
||||
|
||||
/* Functions in flow.c */
|
||||
extern void allocate_for_life_analysis PARAMS ((void));
|
||||
extern int regno_uninitialized PARAMS ((int));
|
||||
|
85
gcc/varasm.c
85
gcc/varasm.c
@ -206,7 +206,7 @@ static enum in_section { no_section, in_text, in_data, in_named
|
||||
((TREE_CODE (DECL) == FUNCTION_DECL || TREE_CODE (DECL) == VAR_DECL) \
|
||||
&& DECL_SECTION_NAME (DECL) != NULL_TREE)
|
||||
#endif
|
||||
|
||||
|
||||
/* Text of section name when in_section == in_named. */
|
||||
static const char *in_named_name;
|
||||
|
||||
@ -621,7 +621,7 @@ decode_reg_name (asmspec)
|
||||
|
||||
/* Get rid of confusing prefixes. */
|
||||
asmspec = strip_reg_name (asmspec);
|
||||
|
||||
|
||||
/* Allow a decimal number as a "register name". */
|
||||
for (i = strlen (asmspec) - 1; i >= 0; i--)
|
||||
if (! (asmspec[i] >= '0' && asmspec[i] <= '9'))
|
||||
@ -697,7 +697,7 @@ make_decl_rtl (decl, asmspec)
|
||||
&& !DECL_REGISTER (decl)))
|
||||
abort ();
|
||||
/* And that we were not given a type or a label. */
|
||||
else if (TREE_CODE (decl) == TYPE_DECL
|
||||
else if (TREE_CODE (decl) == TYPE_DECL
|
||||
|| TREE_CODE (decl) == LABEL_DECL)
|
||||
abort ();
|
||||
|
||||
@ -772,7 +772,7 @@ make_decl_rtl (decl, asmspec)
|
||||
kludge to avoid setting DECL_RTL to frame_pointer_rtx. */
|
||||
|
||||
SET_DECL_RTL (decl,
|
||||
gen_rtx_REG (DECL_MODE (decl),
|
||||
gen_rtx_REG (DECL_MODE (decl),
|
||||
FIRST_PSEUDO_REGISTER));
|
||||
REGNO (DECL_RTL (decl)) = reg_number;
|
||||
REG_USERVAR_P (DECL_RTL (decl)) = 1;
|
||||
@ -1082,7 +1082,7 @@ assemble_start_function (decl, fnname)
|
||||
if (align_functions_log > align)
|
||||
{
|
||||
#ifdef ASM_OUTPUT_MAX_SKIP_ALIGN
|
||||
ASM_OUTPUT_MAX_SKIP_ALIGN (asm_out_file,
|
||||
ASM_OUTPUT_MAX_SKIP_ALIGN (asm_out_file,
|
||||
align_functions_log, align_functions-1);
|
||||
#else
|
||||
ASM_OUTPUT_ALIGN (asm_out_file, align_functions_log);
|
||||
@ -1271,14 +1271,14 @@ asm_emit_uninitialised (decl, name, size, rounded)
|
||||
asm_dest_local
|
||||
}
|
||||
destination = asm_dest_local;
|
||||
|
||||
|
||||
if (TREE_PUBLIC (decl))
|
||||
{
|
||||
#if defined ASM_EMIT_BSS
|
||||
if (! DECL_COMMON (decl))
|
||||
destination = asm_dest_bss;
|
||||
else
|
||||
#endif
|
||||
#endif
|
||||
destination = asm_dest_common;
|
||||
}
|
||||
|
||||
@ -1401,7 +1401,7 @@ assemble_variable (decl, top_level, at_end, dont_output_data)
|
||||
|
||||
/* Make sure ENCODE_SECTION_INFO is invoked before we set ASM_WRITTEN. */
|
||||
decl_rtl = DECL_RTL (decl);
|
||||
|
||||
|
||||
TREE_ASM_WRITTEN (decl) = 1;
|
||||
|
||||
/* Do no output if -fsyntax-only. */
|
||||
@ -1498,14 +1498,14 @@ assemble_variable (decl, top_level, at_end, dont_output_data)
|
||||
rounded += (BIGGEST_ALIGNMENT / BITS_PER_UNIT) - 1;
|
||||
rounded = (rounded / (BIGGEST_ALIGNMENT / BITS_PER_UNIT)
|
||||
* (BIGGEST_ALIGNMENT / BITS_PER_UNIT));
|
||||
|
||||
|
||||
/* Don't continue this line--convex cc version 4.1 would lose. */
|
||||
#if !defined(ASM_OUTPUT_ALIGNED_COMMON) && !defined(ASM_OUTPUT_ALIGNED_DECL_COMMON) && !defined(ASM_OUTPUT_ALIGNED_BSS)
|
||||
if ((unsigned HOST_WIDE_INT) DECL_ALIGN (decl) / BITS_PER_UNIT > rounded)
|
||||
warning_with_decl
|
||||
warning_with_decl
|
||||
(decl, "requested alignment for %s is greater than implemented alignment of %d.",rounded);
|
||||
#endif
|
||||
|
||||
|
||||
asm_emit_uninitialised (decl, name, size, rounded);
|
||||
|
||||
return;
|
||||
@ -1519,7 +1519,7 @@ assemble_variable (decl, top_level, at_end, dont_output_data)
|
||||
if (TREE_PUBLIC (decl) && DECL_NAME (decl))
|
||||
{
|
||||
#ifdef ASM_WEAKEN_LABEL
|
||||
if (DECL_WEAK (decl))
|
||||
if (DECL_WEAK (decl))
|
||||
{
|
||||
ASM_WEAKEN_LABEL (asm_out_file, name);
|
||||
/* Remove this variable from the pending weak list so that
|
||||
@ -1690,7 +1690,7 @@ assemble_name (file, name)
|
||||
tree id;
|
||||
|
||||
STRIP_NAME_ENCODING (real_name, name);
|
||||
if (flag_prefix_function_name
|
||||
if (flag_prefix_function_name
|
||||
&& ! memcmp (real_name, CHKR_PREFIX, CHKR_PREFIX_SIZE))
|
||||
real_name = real_name + CHKR_PREFIX_SIZE;
|
||||
|
||||
@ -1916,7 +1916,7 @@ assemble_integer (x, size, align, force)
|
||||
{
|
||||
enum machine_mode omode, imode;
|
||||
unsigned int i;
|
||||
|
||||
|
||||
omode = mode_for_size (BITS_PER_UNIT, MODE_INT, 0);
|
||||
imode = mode_for_size (size * BITS_PER_UNIT, MODE_INT, 0);
|
||||
|
||||
@ -2333,7 +2333,7 @@ struct constant_descriptor
|
||||
const char *label;
|
||||
rtx rtl;
|
||||
/* Make sure the data is reasonably aligned. */
|
||||
union
|
||||
union
|
||||
{
|
||||
unsigned char contents[1];
|
||||
#ifdef HAVE_LONG_DOUBLE
|
||||
@ -2361,7 +2361,7 @@ static htab_t const_str_htab;
|
||||
|
||||
/* Mark a const_hash_table descriptor for GC. */
|
||||
|
||||
static void
|
||||
static void
|
||||
mark_const_hash_entry (ptr)
|
||||
void *ptr;
|
||||
{
|
||||
@ -2376,7 +2376,7 @@ mark_const_hash_entry (ptr)
|
||||
|
||||
/* Mark the hash-table element X (which is really a pointer to an
|
||||
struct deferred_string *). */
|
||||
|
||||
|
||||
static int
|
||||
mark_const_str_htab_1 (x, data)
|
||||
void **x;
|
||||
@ -2388,7 +2388,7 @@ mark_const_str_htab_1 (x, data)
|
||||
|
||||
/* Mark a const_str_htab for GC. */
|
||||
|
||||
static void
|
||||
static void
|
||||
mark_const_str_htab (htab)
|
||||
void *htab;
|
||||
{
|
||||
@ -2529,7 +2529,7 @@ const_hash (exp)
|
||||
case CONVERT_EXPR:
|
||||
case NON_LVALUE_EXPR:
|
||||
return const_hash (TREE_OPERAND (exp, 0)) * 7 + 2;
|
||||
|
||||
|
||||
default:
|
||||
/* A language specific constant. Just hash the code. */
|
||||
return (int) code % MAX_HASH_TABLE;
|
||||
@ -2655,7 +2655,7 @@ compare_constant_1 (exp, p)
|
||||
p += sizeof length;
|
||||
|
||||
/* For record constructors, insist that the types match.
|
||||
For arrays, just verify both constructors are for arrays.
|
||||
For arrays, just verify both constructors are for arrays.
|
||||
Then insist that either both or none have any TREE_PURPOSE
|
||||
values. */
|
||||
if (TREE_CODE (TREE_TYPE (exp)) == RECORD_TYPE)
|
||||
@ -2898,7 +2898,7 @@ record_constant_1 (exp)
|
||||
obstack_grow (&permanent_obstack, (char *) &type, sizeof type);
|
||||
if (TREE_CODE (TREE_TYPE (exp)) == ARRAY_TYPE)
|
||||
obstack_grow (&permanent_obstack, &mode, sizeof mode);
|
||||
|
||||
|
||||
obstack_grow (&permanent_obstack, (char *) &have_purpose,
|
||||
sizeof have_purpose);
|
||||
|
||||
@ -3166,18 +3166,18 @@ output_constant_def (exp, defer)
|
||||
the label number already assigned. */
|
||||
|
||||
hash = const_hash (exp) % MAX_HASH_TABLE;
|
||||
|
||||
|
||||
for (desc = const_hash_table[hash]; desc; desc = desc->next)
|
||||
if (compare_constant (exp, desc))
|
||||
break;
|
||||
|
||||
|
||||
if (desc == 0)
|
||||
{
|
||||
/* No constant equal to EXP is known to have been output.
|
||||
Make a constant descriptor to enter EXP in the hash table.
|
||||
Assign the label number and record it in the descriptor for
|
||||
future calls to this function to find. */
|
||||
|
||||
|
||||
/* Create a string containing the label name, in LABEL. */
|
||||
labelno = const_labelno++;
|
||||
ASM_GENERATE_INTERNAL_LABEL (label, "LC", labelno);
|
||||
@ -3186,7 +3186,7 @@ output_constant_def (exp, defer)
|
||||
desc->next = const_hash_table[hash];
|
||||
desc->label = ggc_strdup (label);
|
||||
const_hash_table[hash] = desc;
|
||||
|
||||
|
||||
/* We have a symbol name; construct the SYMBOL_REF and the MEM. */
|
||||
desc->rtl
|
||||
= gen_rtx_MEM (TYPE_MODE (TREE_TYPE (exp)),
|
||||
@ -3390,7 +3390,7 @@ init_varasm_status (f)
|
||||
|
||||
/* Mark PC for GC. */
|
||||
|
||||
static void
|
||||
static void
|
||||
mark_pool_constant (pc)
|
||||
struct pool_constant *pc;
|
||||
{
|
||||
@ -3526,7 +3526,7 @@ decode_rtx_const (mode, x, value)
|
||||
case LABEL_REF:
|
||||
/* For a LABEL_REF, compare labels. */
|
||||
value->un.addr.base = XEXP (value->un.addr.base, 0);
|
||||
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -3608,7 +3608,7 @@ record_constant_rtx (mode, x)
|
||||
{
|
||||
struct constant_descriptor *ptr;
|
||||
|
||||
ptr = ((struct constant_descriptor *)
|
||||
ptr = ((struct constant_descriptor *)
|
||||
xcalloc (1, (offsetof (struct constant_descriptor, u)
|
||||
+ sizeof (struct rtx_const))));
|
||||
decode_rtx_const (mode, x, (struct rtx_const *) ptr->u.contents);
|
||||
@ -3870,7 +3870,7 @@ output_constant_pool (fnname, fndecl)
|
||||
x = const0_rtx;
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -4162,7 +4162,7 @@ initializer_constant_valid_p (value, endtype)
|
||||
return
|
||||
initializer_constant_valid_p (TREE_VALUE (CONSTRUCTOR_ELTS (value)),
|
||||
endtype);
|
||||
|
||||
|
||||
return TREE_STATIC (value) ? null_pointer_node : 0;
|
||||
|
||||
case INTEGER_CST:
|
||||
@ -4345,7 +4345,7 @@ output_constant (exp, size, align)
|
||||
That way we get the constant (we hope) inside it. Also, strip off any
|
||||
NOP_EXPR that converts between two record, union, array, or set types
|
||||
or a CONVERT_EXPR that converts to a union TYPE. */
|
||||
while ((TREE_CODE (exp) == NOP_EXPR
|
||||
while ((TREE_CODE (exp) == NOP_EXPR
|
||||
&& (TREE_TYPE (exp) == TREE_TYPE (TREE_OPERAND (exp, 0))
|
||||
|| AGGREGATE_TYPE_P (TREE_TYPE (exp))))
|
||||
|| (TREE_CODE (exp) == CONVERT_EXPR
|
||||
@ -4482,7 +4482,7 @@ array_size_for_constructor (val)
|
||||
return 0;
|
||||
|
||||
/* Compute the total number of array elements. */
|
||||
i = size_binop (MINUS_EXPR, convert (sizetype, max_index),
|
||||
i = size_binop (MINUS_EXPR, convert (sizetype, max_index),
|
||||
convert (sizetype,
|
||||
TYPE_MIN_VALUE (TYPE_DOMAIN (TREE_TYPE (val)))));
|
||||
i = size_binop (PLUS_EXPR, i, convert (sizetype, integer_one_node));
|
||||
@ -4607,7 +4607,7 @@ output_constructor (exp, size, align)
|
||||
|
||||
/* Find the alignment of this element. */
|
||||
align2 = min_align (align, BITS_PER_UNIT * pos);
|
||||
|
||||
|
||||
/* Determine size this element should occupy. */
|
||||
if (field)
|
||||
{
|
||||
@ -4799,9 +4799,9 @@ output_constructor (exp, size, align)
|
||||
assemble_zeros (size - total_bytes);
|
||||
}
|
||||
|
||||
/* This structure contains any weak symbol declarations waiting to be
|
||||
emitted. */
|
||||
|
||||
/* This structure contains any weak symbol declarations waiting
|
||||
to be emitted. */
|
||||
struct weak_syms
|
||||
{
|
||||
struct weak_syms * next;
|
||||
@ -4812,8 +4812,8 @@ struct weak_syms
|
||||
static struct weak_syms * weak_decls;
|
||||
|
||||
/* Add function NAME to the weak symbols list. VALUE is a weak alias
|
||||
associatd with NAME. */
|
||||
|
||||
associated with NAME. */
|
||||
|
||||
int
|
||||
add_weak (name, value)
|
||||
const char *name;
|
||||
@ -4878,7 +4878,6 @@ weak_finish ()
|
||||
/* Remove NAME from the pending list of weak symbols. This prevents
|
||||
the compiler from emitting multiple .weak directives which confuses
|
||||
some assemblers. */
|
||||
|
||||
static void
|
||||
remove_from_pending_weak_list (name)
|
||||
const char *name;
|
||||
@ -4890,12 +4889,12 @@ remove_from_pending_weak_list (name)
|
||||
{
|
||||
t = *p;
|
||||
if (strcmp (name, t->name) == 0)
|
||||
{
|
||||
*p = t->next;
|
||||
free (t);
|
||||
}
|
||||
{
|
||||
*p = t->next;
|
||||
free (t);
|
||||
}
|
||||
else
|
||||
p = &(t->next);
|
||||
p = &(t->next);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user