+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.
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>
(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>
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
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>
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
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));
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
#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
\f
/* Specify the machine mode that this machine uses
for the index in the tablejump instruction.
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
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
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,
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 ();
}
\f
/* Assemble code to leave SIZE bytes of zeros. */
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;
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. */
char label[256];
int reloc;
int found = 1;
- int after_function = 0;
int labelno = -1;
rtx rtl;
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,
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 *)
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
{