varasm.c (output_constant_def): Do not consult CONSTANT_AFTER_FUNCTION_P.
* varasm.c (output_constant_def): Do not consult CONSTANT_AFTER_FUNCTION_P. Remove all code predicated on it. (after_function_constants, output_after_function_constants): Delete. * doc/tm.texi: Delete documentation of CONSTANT_AFTER_FUNCTION_P. * config/mips/mips-protos.h, config/mips/mips.c (mips16_constant_after_function_p): Delete. * config/mips/mips.h: Delete #if-0-ed definition of CONSTANT_AFTER_FUNCTION_P. * config/d30v/d30v.h, config/stormy16/stormy16.h: Remove mention of CONSTANT_AFTER_FUNCTION_P in comment. From-SVN: r65663
This commit is contained in:
parent
03907fbd21
commit
0b78a9b6a0
@ -1,3 +1,16 @@
|
||||
2003-04-15 Zack Weinberg <zack@codesourcery.com>
|
||||
|
||||
* varasm.c (output_constant_def): Do not consult
|
||||
CONSTANT_AFTER_FUNCTION_P. Remove all code predicated on it.
|
||||
(after_function_constants, output_after_function_constants): Delete.
|
||||
* doc/tm.texi: Delete documentation of CONSTANT_AFTER_FUNCTION_P.
|
||||
* config/mips/mips-protos.h, config/mips/mips.c
|
||||
(mips16_constant_after_function_p): Delete.
|
||||
* config/mips/mips.h: Delete #if-0-ed definition of
|
||||
CONSTANT_AFTER_FUNCTION_P.
|
||||
* config/d30v/d30v.h, config/stormy16/stormy16.h: Remove
|
||||
mention of CONSTANT_AFTER_FUNCTION_P in comment.
|
||||
|
||||
2003-04-15 Geoffrey Keating <geoffk@apple.com>
|
||||
|
||||
* tree.c (next_decl_uid): Mark with GTY.
|
||||
@ -28,7 +41,7 @@
|
||||
2003-04-14 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR middle-end/10336, c++/10401
|
||||
* jump.c (never_reached_warning): Also stop looking if we reach the
|
||||
* jump.c (never_reached_warning): Also stop looking if we reach the
|
||||
beginning of the function.
|
||||
|
||||
2003-04-15 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
|
||||
@ -106,8 +119,8 @@
|
||||
(dbxout_type): Replace extracted code by call to
|
||||
print_int_cst_bounds_in_octal_p.
|
||||
|
||||
* dwarf2out.c (gen_compile_unit_die): Emit DW_LANG_Ada95 instead
|
||||
of DW_LANG_Ada83 for Ada units.
|
||||
* dwarf2out.c (gen_compile_unit_die): Emit DW_LANG_Ada95 instead
|
||||
of DW_LANG_Ada83 for Ada units.
|
||||
|
||||
2003-04-14 Olivier Hainque <hainque@act-europe.fr>
|
||||
|
||||
@ -125,12 +138,12 @@
|
||||
hard regs to pseudos live across abnormal edges, as later passes are
|
||||
not ready to handle them.
|
||||
|
||||
* fold-const.c (fold): Reorder tests for conditional expressions.
|
||||
* fold-const.c (fold): Reorder tests for conditional expressions.
|
||||
|
||||
* expr.c (highest_pow2_factor): Return unsigned.
|
||||
* expr.h (offset_address): Likewise.
|
||||
* emit-rtl.c (offset_address): POW2 argument now unsigned.
|
||||
|
||||
* expr.c (highest_pow2_factor): Return unsigned.
|
||||
* expr.h (offset_address): Likewise.
|
||||
* emit-rtl.c (offset_address): POW2 argument now unsigned.
|
||||
|
||||
2003-04-14 Roger Sayle <roger@eyesopen.com>
|
||||
|
||||
* builtins.c (expand_builtin_strlen): Evaluate the lengths of
|
||||
@ -225,7 +238,7 @@ Mon Apr 14 16:18:37 CEST 2003 Jan Hubicka <jh@suse.cz>
|
||||
config/rs6000/rs64.md, config/rs6000/rtems.h, config/rs6000/spe.h,
|
||||
config/rs6000/spe.md, config/rs6000/sysv4.h,
|
||||
config/rs6000/sysv4le.h, config/rs6000/vxworks.h,
|
||||
config/rs6000/windiss.h, config/rs6000/xcoff.h: Likewise.
|
||||
config/rs6000/windiss.h, config/rs6000/xcoff.h: Likewise.
|
||||
|
||||
2003-04-13 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
|
@ -2738,12 +2738,6 @@ extern const char *d30v_branch_cost_string;
|
||||
You need not define this macro if it would do nothing. */
|
||||
/* #define ASM_OUTPUT_SPECIAL_POOL_ENTRY(FILE, X, MODE, ALIGN, LABELNO, JUMPTO) */
|
||||
|
||||
/* Define this macro as a C expression which is nonzero if the constant EXP, of
|
||||
type `tree', should be output after the code for a function. The compiler
|
||||
will normally output all constants before the function; you need not define
|
||||
this macro if this is OK. */
|
||||
/* #define CONSTANT_AFTER_FUNCTION_P(EXP) */
|
||||
|
||||
/* A C statement to output assembler commands to at the end of the constant
|
||||
pool for a function. FUNNAME is a string giving the name of the function.
|
||||
Should the return type of the function be required, you can obtain it via
|
||||
|
@ -74,7 +74,6 @@ extern int mips_setup_incoming_varargs
|
||||
extern int function_arg_pass_by_reference
|
||||
PARAMS ((const CUMULATIVE_ARGS *,
|
||||
enum machine_mode, tree, int));
|
||||
extern int mips16_constant_after_function_p PARAMS ((tree));
|
||||
extern int mips_output_external PARAMS ((FILE *, tree,
|
||||
const char *));
|
||||
extern tree mips_build_va_list PARAMS ((void));
|
||||
|
@ -9128,46 +9128,6 @@ mips16_output_gp_offset (file, x)
|
||||
output_addr_const (file, x);
|
||||
}
|
||||
|
||||
/* Return nonzero if a constant should not be output until after the
|
||||
function. This is true of most string constants, so that we can
|
||||
use a more efficient PC relative reference. However, a static
|
||||
inline function may never call assemble_function_end to write out
|
||||
the constant pool, so don't try to postpone the constant in that
|
||||
case.
|
||||
|
||||
??? It's really a bug that a static inline function can put stuff
|
||||
in the constant pool even if the function itself is not output.
|
||||
|
||||
We record which string constants we've seen, so that we know which
|
||||
ones might use the more efficient reference. */
|
||||
|
||||
int
|
||||
mips16_constant_after_function_p (x)
|
||||
tree x;
|
||||
{
|
||||
if (TREE_CODE (x) == STRING_CST
|
||||
&& ! flag_writable_strings
|
||||
&& current_function_decl != 0
|
||||
&& ! DECL_DEFER_OUTPUT (current_function_decl)
|
||||
&& ! (DECL_INLINE (current_function_decl)
|
||||
&& ((! TREE_PUBLIC (current_function_decl)
|
||||
&& ! TREE_ADDRESSABLE (current_function_decl)
|
||||
&& ! flag_keep_inline_functions)
|
||||
|| DECL_EXTERNAL (current_function_decl))))
|
||||
{
|
||||
struct string_constant *n;
|
||||
|
||||
n = (struct string_constant *) xmalloc (sizeof *n);
|
||||
n->label = XSTR (XEXP (TREE_CST_RTL (x), 0), 0);
|
||||
n->next = string_constants;
|
||||
string_constants = n;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Validate a constant for the mips16. This rejects general symbolic
|
||||
addresses, which must be loaded from memory. If ADDR is nonzero,
|
||||
this should reject anything which is not a legal address. If
|
||||
|
@ -3312,11 +3312,6 @@ typedef struct mips_args {
|
||||
#define ASM_OUTPUT_POOL_EPILOGUE(FILE, FNNAME, FNDECL, SIZE) \
|
||||
mips_string_length = 0;
|
||||
|
||||
#if 0
|
||||
/* In mips16 mode, put most string constants after the function. */
|
||||
#define CONSTANT_AFTER_FUNCTION_P(tree) \
|
||||
(TARGET_MIPS16 && mips16_constant_after_function_p (tree))
|
||||
#endif
|
||||
|
||||
/* Specify the machine mode that this machine uses
|
||||
for the index in the tablejump instruction.
|
||||
|
@ -2538,12 +2538,6 @@ do { \
|
||||
You need not define this macro if it would do nothing. */
|
||||
/* #define ASM_OUTPUT_SPECIAL_POOL_ENTRY(FILE, X, MODE, ALIGN, LABELNO, JUMPTO) */
|
||||
|
||||
/* Define this macro as a C expression which is nonzero if the constant EXP, of
|
||||
type `tree', should be output after the code for a function. The compiler
|
||||
will normally output all constants before the function; you need not define
|
||||
this macro if this is OK. */
|
||||
/* #define CONSTANT_AFTER_FUNCTION_P(EXP) */
|
||||
|
||||
/* A C statement to output assembler commands to at the end of the constant
|
||||
pool for a function. FUNNAME is a string giving the name of the function.
|
||||
Should the return type of the function be required, you can obtain it via
|
||||
|
@ -6386,13 +6386,6 @@ entry from being output a second time in the usual manner.
|
||||
|
||||
You need not define this macro if it would do nothing.
|
||||
|
||||
@findex CONSTANT_AFTER_FUNCTION_P
|
||||
@item CONSTANT_AFTER_FUNCTION_P (@var{exp})
|
||||
Define this macro as a C expression which is nonzero if the constant
|
||||
@var{exp}, of type @code{tree}, should be output after the code for a
|
||||
function. The compiler will normally output all constants before the
|
||||
function; you need not define this macro if this is OK@.
|
||||
|
||||
@findex ASM_OUTPUT_POOL_EPILOGUE
|
||||
@item ASM_OUTPUT_POOL_EPILOGUE (@var{file} @var{funname} @var{fundecl} @var{size})
|
||||
A C statement to output assembler commands to at the end of the constant
|
||||
|
48
gcc/varasm.c
48
gcc/varasm.c
@ -155,7 +155,6 @@ static void mark_constant_pool PARAMS ((void));
|
||||
static void mark_constants PARAMS ((rtx));
|
||||
static int mark_constant PARAMS ((rtx *current_rtx, void *data));
|
||||
static int output_addressed_constants PARAMS ((tree));
|
||||
static void output_after_function_constants PARAMS ((void));
|
||||
static unsigned HOST_WIDE_INT array_size_for_constructor PARAMS ((tree));
|
||||
static unsigned min_align PARAMS ((unsigned, unsigned));
|
||||
static void output_constructor PARAMS ((tree, HOST_WIDE_INT,
|
||||
@ -1199,9 +1198,6 @@ assemble_end_function (decl, fnname)
|
||||
output_constant_pool (fnname, decl);
|
||||
function_section (decl); /* need to switch back */
|
||||
}
|
||||
|
||||
/* Output any constants which should appear after the function. */
|
||||
output_after_function_constants ();
|
||||
}
|
||||
|
||||
/* Assemble code to leave SIZE bytes of zeros. */
|
||||
@ -2482,10 +2478,6 @@ struct deferred_constant
|
||||
|
||||
static struct deferred_constant *deferred_constants;
|
||||
|
||||
/* Another list of constants which should be output after the
|
||||
function. */
|
||||
static struct deferred_constant *after_function_constants;
|
||||
|
||||
/* Nonzero means defer output of addressed subconstants
|
||||
(i.e., those for which output_constant_def is called.) */
|
||||
static int defer_addressed_constants_flag;
|
||||
@ -2521,23 +2513,6 @@ output_deferred_addressed_constants ()
|
||||
deferred_constants = 0;
|
||||
}
|
||||
|
||||
/* Output any constants which should appear after a function. */
|
||||
|
||||
static void
|
||||
output_after_function_constants ()
|
||||
{
|
||||
struct deferred_constant *p, *next;
|
||||
|
||||
for (p = after_function_constants; p; p = next)
|
||||
{
|
||||
output_constant_def_contents (p->exp, p->reloc, p->labelno);
|
||||
next = p->next;
|
||||
free (p);
|
||||
}
|
||||
|
||||
after_function_constants = 0;
|
||||
}
|
||||
|
||||
/* Make a copy of the whole tree structure for a constant. This
|
||||
handles the same types of nodes that compare_constant handles. */
|
||||
|
||||
@ -2631,7 +2606,6 @@ output_constant_def (exp, defer)
|
||||
char label[256];
|
||||
int reloc;
|
||||
int found = 1;
|
||||
int after_function = 0;
|
||||
int labelno = -1;
|
||||
rtx rtl;
|
||||
|
||||
@ -2709,15 +2683,9 @@ output_constant_def (exp, defer)
|
||||
desc->label = XSTR (XEXP (desc->rtl, 0), 0);
|
||||
}
|
||||
|
||||
#ifdef CONSTANT_AFTER_FUNCTION_P
|
||||
if (current_function_decl != 0
|
||||
&& CONSTANT_AFTER_FUNCTION_P (exp))
|
||||
after_function = 1;
|
||||
#endif
|
||||
|
||||
if (found
|
||||
&& STRING_POOL_ADDRESS_P (XEXP (rtl, 0))
|
||||
&& (!defer || defer_addressed_constants_flag || after_function))
|
||||
&& (!defer || defer_addressed_constants_flag))
|
||||
{
|
||||
defstr = (struct deferred_string **)
|
||||
htab_find_slot_with_hash (const_str_htab, desc->label,
|
||||
@ -2737,7 +2705,7 @@ output_constant_def (exp, defer)
|
||||
output it (or defer its output for later). */
|
||||
if (! found)
|
||||
{
|
||||
if (defer_addressed_constants_flag || after_function)
|
||||
if (defer_addressed_constants_flag)
|
||||
{
|
||||
struct deferred_constant *p
|
||||
= (struct deferred_constant *)
|
||||
@ -2746,16 +2714,8 @@ output_constant_def (exp, defer)
|
||||
p->exp = desc->value;
|
||||
p->reloc = reloc;
|
||||
p->labelno = labelno;
|
||||
if (after_function)
|
||||
{
|
||||
p->next = after_function_constants;
|
||||
after_function_constants = p;
|
||||
}
|
||||
else
|
||||
{
|
||||
p->next = deferred_constants;
|
||||
deferred_constants = p;
|
||||
}
|
||||
p->next = deferred_constants;
|
||||
deferred_constants = p;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user