system.h: Poison ASM_SIMPLIFY_DWARF_ADDR.
* system.h: Poison ASM_SIMPLIFY_DWARF_ADDR. * varasm.c (lookup_constant_def): New function. * rtl.h (lookup_constant_def): Declare it. * dwarf2out.c (loc_descriptor_from_tree): Use it. Use targetm.delegitimize_address, not ASM_SIMPLIFY_DWARF_ADDR. From-SVN: r70072
This commit is contained in:
parent
c197e30661
commit
75c2098081
@ -1,3 +1,12 @@
|
||||
2003-08-01 Richard Henderson <rth@redhat.com>
|
||||
|
||||
* system.h: Poison ASM_SIMPLIFY_DWARF_ADDR.
|
||||
|
||||
* varasm.c (lookup_constant_def): New function.
|
||||
* rtl.h (lookup_constant_def): Declare it.
|
||||
* dwarf2out.c (loc_descriptor_from_tree): Use it.
|
||||
Use targetm.delegitimize_address, not ASM_SIMPLIFY_DWARF_ADDR.
|
||||
|
||||
2003-08-01 Zack Weinberg <zack@codesourcery.com>
|
||||
|
||||
* c-decl.c (gettags, pushdecl_function_level): Delete.
|
||||
|
@ -8560,17 +8560,19 @@ loc_descriptor_from_tree (tree loc, int addressp)
|
||||
|
||||
case CONSTRUCTOR:
|
||||
{
|
||||
/* Get an RTL for this, which will may have the effect of outputting
|
||||
it. This may violates the principle of not having -g affect
|
||||
the generated code, but it's in the data segment and it's hard
|
||||
to see a case where it won't already have been output. */
|
||||
rtx rtl = output_constant_def (loc, 0);
|
||||
/* Get an RTL for this, if something has been emitted. */
|
||||
rtx rtl = lookup_constant_def (loc);
|
||||
enum machine_mode mode;
|
||||
|
||||
if (GET_CODE (rtl) != MEM)
|
||||
return 0;
|
||||
mode = GET_MODE (rtl);
|
||||
rtl = XEXP (rtl, 0);
|
||||
|
||||
rtl = (*targetm.delegitimize_address) (rtl);
|
||||
|
||||
#ifdef ASM_SIMPLIFY_DWARF_ADDR
|
||||
rtl = ASM_SIMPLIFY_DWARF_ADDR (rtl);
|
||||
#endif
|
||||
indirect_p = 1;
|
||||
ret = mem_loc_descriptor (XEXP (rtl, 0), GET_MODE (rtl));
|
||||
ret = mem_loc_descriptor (rtl, mode);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -1911,6 +1911,7 @@ extern rtx gen_lowpart_SUBREG (enum machine_mode, rtx);
|
||||
#define INVALID_REGNUM (~(unsigned int) 0)
|
||||
|
||||
extern rtx output_constant_def (tree, int);
|
||||
extern rtx lookup_constant_def (tree);
|
||||
|
||||
/* Called from integrate.c when a deferred constant is inlined. */
|
||||
extern void notice_rtl_inlining_of_deferred_constant (void);
|
||||
|
@ -586,7 +586,8 @@ typedef char _Bool;
|
||||
WCHAR_UNSIGNED UNIQUE_SECTION SELECT_SECTION SELECT_RTX_SECTION \
|
||||
ENCODE_SECTION_INFO STRIP_NAME_ENCODING ASM_GLOBALIZE_LABEL \
|
||||
ASM_OUTPUT_MI_THUNK CONST_COSTS RTX_COSTS DEFAULT_RTX_COSTS \
|
||||
ADDRESS_COST MACHINE_DEPENDENT_REORG ASM_FILE_START ASM_FILE_END
|
||||
ADDRESS_COST MACHINE_DEPENDENT_REORG ASM_FILE_START ASM_FILE_END \
|
||||
ASM_SIMPLIFY_DWARF_ADDR
|
||||
|
||||
/* Other obsolete target macros, or macros that used to be in target
|
||||
headers and were not used, and may be obsolete or may never have
|
||||
|
15
gcc/varasm.c
15
gcc/varasm.c
@ -2596,6 +2596,21 @@ notice_rtl_inlining_of_deferred_constant (void)
|
||||
{
|
||||
n_deferred_constants++;
|
||||
}
|
||||
|
||||
/* Look up EXP in the table of constant descriptors. Return the rtl
|
||||
if it has been emitted, else null. */
|
||||
|
||||
rtx
|
||||
lookup_constant_def (tree exp)
|
||||
{
|
||||
struct constant_descriptor_tree *desc;
|
||||
struct constant_descriptor_tree key;
|
||||
|
||||
key.value = exp;
|
||||
desc = htab_find (const_desc_htab, &key);
|
||||
|
||||
return (desc ? desc->rtl : NULL_RTX);
|
||||
}
|
||||
|
||||
/* Used in the hash tables to avoid outputting the same constant
|
||||
twice. Unlike 'struct constant_descriptor_tree', RTX constants
|
||||
|
Loading…
Reference in New Issue
Block a user