This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: Fix g++.dg/torture/stackalign/eh-alloca-1.C with LTO plugin
- From: Richard Guenther <rguenther at suse dot de>
- To: Jan Hubicka <hubicka at ucw dot cz>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Thu, 2 Dec 2010 15:18:26 +0100 (CET)
- Subject: Re: Fix g++.dg/torture/stackalign/eh-alloca-1.C with LTO plugin
- References: <20101201195338.GA21321@kam.mff.cuni.cz>
On Wed, 1 Dec 2010, Jan Hubicka wrote:
> Hi,
> this patch fixes the stackalign issues. What happens here is that
> dw2_force_const_mem produce an label that is supposed to point to given
> constant in memory. This is realized by dw2_output_indirect_constant_1 that
> produce variable with the name smatching the label's name and appropriate
> constructor.
>
> This is used to encode personality routines for EH.
>
> The catch is that the label name is "*.Lblah", while the static variable in LTO
> mode ends up being "*.Lblah.1234" because we do the mangling of static vars.
> This patch simply avoids all the mangling by enforcing the assembler name to be
> same as label's assembler name. It is what we want anyway.
>
> I am not quite sure why this happens only with linker plugin. I assume that we
> optimize the functions differently resulting in different EH info.
>
> Regtested/bootstrapped x86_64-linux, OK?
>
> Honza
>
> * dwarf2asm.c (dw2_output_indirect_constant_1): Set assembler name
> of the new decl.
> Index: dwarf2asm.c
> ===================================================================
> --- dwarf2asm.c (revision 167242)
> +++ dwarf2asm.c (working copy)
> @@ -920,6 +920,7 @@ dw2_output_indirect_constant_1 (splay_tr
>
> sym_ref = gen_rtx_SYMBOL_REF (Pmode, sym);
> sym = targetm.strip_name_encoding (sym);
> + SET_DECL_ASSEMBLER_NAME (decl, id);
Shouldn't this be done before the DECL_ASSEMBLER_NAME use above?
Why doesn't it just work in mangled form? We generate that decl
at this very place, so I don't see how we get the chance to mangle it
anyway.
Richard.