diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 67ef69e3656..f444a970d25 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,16 @@ +2003-04-15 Zack Weinberg + + * 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 * tree.c (next_decl_uid): Mark with GTY. @@ -28,7 +41,7 @@ 2003-04-14 Jason Merrill 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 @@ -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 @@ -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 * builtins.c (expand_builtin_strlen): Evaluate the lengths of @@ -225,7 +238,7 @@ Mon Apr 14 16:18:37 CEST 2003 Jan Hubicka 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 diff --git a/gcc/config/d30v/d30v.h b/gcc/config/d30v/d30v.h index 31384297643..d6a0b422786 100644 --- a/gcc/config/d30v/d30v.h +++ b/gcc/config/d30v/d30v.h @@ -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 diff --git a/gcc/config/mips/mips-protos.h b/gcc/config/mips/mips-protos.h index 75489de623b..bec42ffb588 100644 --- a/gcc/config/mips/mips-protos.h +++ b/gcc/config/mips/mips-protos.h @@ -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)); diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c index 6425f232203..5ef92f03651 100644 --- a/gcc/config/mips/mips.c +++ b/gcc/config/mips/mips.c @@ -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 diff --git a/gcc/config/mips/mips.h b/gcc/config/mips/mips.h index dcacea341b7..a52e7b67bcf 100644 --- a/gcc/config/mips/mips.h +++ b/gcc/config/mips/mips.h @@ -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. diff --git a/gcc/config/stormy16/stormy16.h b/gcc/config/stormy16/stormy16.h index da131a4af8e..55da1749ab0 100644 --- a/gcc/config/stormy16/stormy16.h +++ b/gcc/config/stormy16/stormy16.h @@ -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 diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi index 84643b549be..e17d5a167d3 100644 --- a/gcc/doc/tm.texi +++ b/gcc/doc/tm.texi @@ -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 diff --git a/gcc/varasm.c b/gcc/varasm.c index 04df7ae02b4..684a824c844 100644 --- a/gcc/varasm.c +++ b/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 {