This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: Fix vectorizer alignment update wrt section anchors
- From: Jakub Jelinek <jakub at redhat dot com>
- To: Jan Hubicka <hubicka at ucw dot cz>
- Cc: gcc-patches at gcc dot gnu dot org, richard dot sandiford at arm dot com
- Date: Mon, 9 Mar 2015 18:19:35 +0100
- Subject: Re: Fix vectorizer alignment update wrt section anchors
- Authentication-results: sourceware.org; auth=none
- References: <20150309033857 dot GD50226 at kam dot mff dot cuni dot cz>
- Reply-to: Jakub Jelinek <jakub at redhat dot com>
On Mon, Mar 09, 2015 at 04:38:57AM +0100, Jan Hubicka wrote:
> --- varasm.c (revision 221269)
> +++ varasm.c (working copy)
> @@ -1630,35 +1630,30 @@ default_ctor_section_asm_out_constructor
> void
> notice_global_symbol (tree decl)
> {
> - const char **type = &first_global_object_name;
> + const char **t = &first_global_object_name;
>
> if (first_global_object_name
> || !TREE_PUBLIC (decl)
> || DECL_EXTERNAL (decl)
> || !DECL_NAME (decl)
> + || (TREE_CODE (decl) == VAR_DECL && DECL_HARD_REGISTER (decl))
> || (TREE_CODE (decl) != FUNCTION_DECL
> && (TREE_CODE (decl) != VAR_DECL
> || (DECL_COMMON (decl)
> && (DECL_INITIAL (decl) == 0
> - || DECL_INITIAL (decl) == error_mark_node))))
> - || !MEM_P (DECL_RTL (decl)))
> + || DECL_INITIAL (decl) == error_mark_node)))))
> return;
>
> /* We win when global object is found, but it is useful to know about weak
> symbol as well so we can produce nicer unique names. */
> if (DECL_WEAK (decl) || DECL_ONE_ONLY (decl) || flag_shlib)
> - type = &weak_global_object_name;
> + t = &weak_global_object_name;
>
> - if (!*type)
> + if (!*t)
> {
> - const char *p;
> - const char *name;
> - rtx decl_rtl = DECL_RTL (decl);
> -
> - p = targetm.strip_name_encoding (XSTR (XEXP (decl_rtl, 0), 0));
> - name = ggc_strdup (p);
> -
> - *type = name;
> + tree id = DECL_ASSEMBLER_NAME (decl);
> + ultimate_transparent_alias_target (&id);
make_decl_rtl only calls this for:
if (TREE_CODE (decl) == FUNCTION_DECL
&& cgraph_node::get (decl)
&& cgraph_node::get (decl)->instrumentation_clone)
Is it intentional you are doing it unconditionally?
> + *t = ggc_strdup (targetm.strip_name_encoding (IDENTIFIER_POINTER (id)));
Otherwise it looks reasonable. Another option would be to just create the
RTL for notice_global_symbol purposes using make_decl_rtl_for_debug.
Jakub