rtl.h (SYMBOL_REF_WEAK): New macro.
2001-05-13 Franz Sirl <Franz.Sirl-kernel@lauterbach.com> * rtl.h (SYMBOL_REF_WEAK): New macro. * rtlanal.h (rtx_addr_can_trap): Use it, a weak SYMBOL_REF can trap. * varasm.c (make_decl_rtl): Mark SYMBOL_REF weak if necessary. * rtl.texi (SYMBOL_REF_WEAK): Document it. * gcc.texi: Remove wrong description. From-SVN: r42046
This commit is contained in:
parent
6f22140248
commit
ff0b6b9921
|
@ -1,3 +1,11 @@
|
|||
2001-05-13 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
|
||||
|
||||
* rtl.h (SYMBOL_REF_WEAK): New macro.
|
||||
* rtlanal.h (rtx_addr_can_trap): Use it, a weak SYMBOL_REF can trap.
|
||||
* varasm.c (make_decl_rtl): Mark SYMBOL_REF weak if necessary.
|
||||
* rtl.texi (SYMBOL_REF_WEAK): Document it.
|
||||
* gcc.texi: Remove wrong description.
|
||||
|
||||
2001-05-13 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
* Makefile.in (STAMP): New macro.
|
||||
|
@ -446,7 +454,7 @@ Mon May 7 09:30:14 2001 Jeffrey A Law (law@cygnus.com)
|
|||
* simplify-rtx.c (simplify_binary_operation): Simplify ~a + 1
|
||||
into -a.
|
||||
|
||||
2000-05-04 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
|
||||
2001-05-04 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
|
||||
|
||||
* config/rs6000/rs6000.md (ashldi3 splits): Guard with
|
||||
TARGET_POWERPC64.
|
||||
|
|
|
@ -2007,13 +2007,6 @@ return values which some callers may find useful; it makes no sense to
|
|||
clutter the program with a cast to @code{void} whenever the value isn't
|
||||
useful.
|
||||
|
||||
@item
|
||||
Assuming (for optimization) that the address of an external symbol is
|
||||
never zero.
|
||||
|
||||
This assumption is false on certain systems when @samp{#pragma weak} is
|
||||
used.
|
||||
|
||||
@item
|
||||
Making @samp{-fshort-enums} the default.
|
||||
|
||||
|
|
|
@ -162,7 +162,8 @@ typedef struct rtx_def
|
|||
unsigned int used : 1;
|
||||
/* Nonzero if this rtx came from procedure integration.
|
||||
In a REG, nonzero means this reg refers to the return value
|
||||
of the current function. */
|
||||
of the current function.
|
||||
1 in a SYMBOL_REF if the symbol is weak. */
|
||||
unsigned integrated : 1;
|
||||
/* 1 in an INSN or a SET if this rtx is related to the call frame,
|
||||
either changing how we compute the frame address or saving and
|
||||
|
@ -934,6 +935,9 @@ extern unsigned int subreg_regno PARAMS ((rtx));
|
|||
/* 1 means a SYMBOL_REF has been the library function in emit_library_call. */
|
||||
#define SYMBOL_REF_USED(RTX) ((RTX)->used)
|
||||
|
||||
/* 1 means a SYMBOL_REF is weak. */
|
||||
#define SYMBOL_REF_WEAK(RTX) ((RTX)->integrated)
|
||||
|
||||
/* Define a macro to look for REG_INC notes,
|
||||
but save time on machines where they never exist. */
|
||||
|
||||
|
|
|
@ -496,6 +496,13 @@ once. Stored in the @code{used} field.
|
|||
In a @code{symbol_ref}, this is used as a flag for machine-specific purposes.
|
||||
Stored in the @code{volatil} field and printed as @samp{/v}.
|
||||
|
||||
@findex SYMBOL_REF_WEAK
|
||||
@cindex @code{symbol_ref} and @samp{/i}
|
||||
@cindex @code{integrated}, in @code{symbol_ref}
|
||||
@item SYMBOL_REF_WEAK (@var{x})
|
||||
In a @code{symbol_ref}, indicates that @var{x} has been declared weak.
|
||||
Stored in the @code{integrated} field and printed as @samp{/i}.
|
||||
|
||||
@findex LABEL_OUTSIDE_LOOP_P
|
||||
@cindex @code{label_ref} and @samp{/s}
|
||||
@cindex @code{in_struct}, in @code{label_ref}
|
||||
|
|
|
@ -207,11 +207,9 @@ rtx_addr_can_trap_p (x)
|
|||
switch (code)
|
||||
{
|
||||
case SYMBOL_REF:
|
||||
return SYMBOL_REF_WEAK (x);
|
||||
|
||||
case LABEL_REF:
|
||||
/* SYMBOL_REF is problematic due to the possible presence of
|
||||
a #pragma weak, but to say that loads from symbols can trap is
|
||||
*very* costly. It's not at all clear what's best here. For
|
||||
now, we ignore the impact of #pragma weak. */
|
||||
return 0;
|
||||
|
||||
case REG:
|
||||
|
|
|
@ -747,6 +747,7 @@ make_decl_rtl (decl, asmspec)
|
|||
|
||||
SET_DECL_RTL (decl, gen_rtx_MEM (DECL_MODE (decl),
|
||||
gen_rtx_SYMBOL_REF (Pmode, name)));
|
||||
SYMBOL_REF_WEAK (XEXP (DECL_RTL (decl), 0)) = DECL_WEAK (decl);
|
||||
if (TREE_CODE (decl) != FUNCTION_DECL)
|
||||
set_mem_attributes (DECL_RTL (decl), decl, 1);
|
||||
|
||||
|
|
Loading…
Reference in New Issue