This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Fix wrong condition in ipa-visibility.c (PR ipa/81520).


> >From 046931ec490d20a6c003094367f7f0bfae64647f Mon Sep 17 00:00:00 2001
> From: marxin <mliska@suse.cz>
> Date: Mon, 24 Jul 2017 11:21:18 +0200
> Subject: [PATCH] Fix wrong condition in ipa-visibility.c (PR ipa/81520).
> 
> gcc/ChangeLog:
> 
> 2017-07-24  Martin Liska  <mliska@suse.cz>
> 
> 	PR ipa/81520
> 	* ipa-visibility.c (function_and_variable_visibility): Make the redirection
> 	just on target that do supporting aliasing.  Fix GNU coding style.
> 
> gcc/testsuite/ChangeLog:
> 
> 2017-07-24  Martin Liska  <mliska@suse.cz>
> 
> 	PR ipa/81520
> 	* gcc.dg/ipa/pr81520.c: New test.

OK, we probably should turn ASM_OUTPUT_DEF ifdefs into a conditional compilation
incrementally.

Thanks,
Honza
> ---
>  gcc/ipa-visibility.c               | 11 +++++++----
>  gcc/testsuite/gcc.dg/ipa/pr81520.c | 11 +++++++++++
>  2 files changed, 18 insertions(+), 4 deletions(-)
>  create mode 100644 gcc/testsuite/gcc.dg/ipa/pr81520.c
> 
> diff --git a/gcc/ipa-visibility.c b/gcc/ipa-visibility.c
> index 21321703dbb..13cf2a3a1cf 100644
> --- a/gcc/ipa-visibility.c
> +++ b/gcc/ipa-visibility.c
> @@ -615,9 +615,10 @@ function_and_variable_visibility (bool whole_program)
>    struct cgraph_node *node;
>    varpool_node *vnode;
>  
> -  /* All aliases should be procssed at this point.  */
> +  /* All aliases should be processed at this point.  */
>    gcc_checking_assert (!alias_pairs || !alias_pairs->length ());
>  
> +#ifdef ASM_OUTPUT_DEF
>    FOR_EACH_DEFINED_FUNCTION (node)
>      {
>        if (node->get_availability () != AVAIL_INTERPOSABLE
> @@ -634,20 +635,22 @@ function_and_variable_visibility (bool whole_program)
>  	    continue;
>  
>  	  if (!alias)
> -	    { 
> +	    {
>  	      alias = dyn_cast<cgraph_node *> (node->noninterposable_alias ());
>  	      gcc_assert (alias && alias != node);
>  	    }
>  
>  	  e->redirect_callee (alias);
>  	  if (gimple_has_body_p (e->caller->decl))
> -	    { 
> +	    {
>  	      push_cfun (DECL_STRUCT_FUNCTION (e->caller->decl));
>  	      e->redirect_call_stmt_to_callee ();
> -	      pop_cfun (); 
> +	      pop_cfun ();
>  	    }
>  	}
>      }
> +#endif
> +
>    FOR_EACH_FUNCTION (node)
>      {
>        int flags = flags_from_decl_or_type (node->decl);
> diff --git a/gcc/testsuite/gcc.dg/ipa/pr81520.c b/gcc/testsuite/gcc.dg/ipa/pr81520.c
> new file mode 100644
> index 00000000000..b5d33d2dc96
> --- /dev/null
> +++ b/gcc/testsuite/gcc.dg/ipa/pr81520.c
> @@ -0,0 +1,11 @@
> +/* PR ipa/81520 */
> +/* { dg-do compile } */
> +/* { dg-options "-O2 -fPIC" } */
> +/* { dg-require-effective-target fpic } */
> +
> +char
> +a (int b)
> +{
> +  a (b);
> +  return 0;
> +}
> -- 
> 2.13.3
> 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]