Detect EAF flags in ipa-modref

Richard Biener rguenther@suse.de
Mon Nov 16 07:48:30 GMT 2020


On Sun, 15 Nov 2020, Jan Hubicka wrote:

> > See PR97840.
> Thanks,
> this is a false positive where we fail to discover that pointed-to type
> is empty on non-x86_64 targets.  This is triggered by better alias
> analysis caused by non-escape discovery.
> 
> While this is not a full fix (I hope someone with more experience on
> C++ types and warnings will set up) I think it may be useful to avoid
> warning on unused parameter.
> 
> Bootstrapped/regtested x86_64-linux, OK?

OK.

> 	PR middle-end/97840
> 	* tree-ssa-uninit.c (maybe_warn_pass_by_reference): Update prototype;
> 	silence warning on EAF_UNUSED parameters.
> 	(warn_uninitialized_vars): Update.
> diff --git a/gcc/tree-ssa-uninit.c b/gcc/tree-ssa-uninit.c
> index f23514395e0..1e074793b02 100644
> --- a/gcc/tree-ssa-uninit.c
> +++ b/gcc/tree-ssa-uninit.c
> @@ -443,7 +443,7 @@ maybe_warn_operand (ao_ref &ref, gimple *stmt, tree lhs, tree rhs,
>     access implying read access to those objects.  */
>  
>  static void
> -maybe_warn_pass_by_reference (gimple *stmt, wlimits &wlims)
> +maybe_warn_pass_by_reference (gcall *stmt, wlimits &wlims)
>  {
>    if (!wlims.wmaybe_uninit)
>      return;
> @@ -501,6 +501,10 @@ maybe_warn_pass_by_reference (gimple *stmt, wlimits &wlims)
>  	      && !TYPE_READONLY (TREE_TYPE (argtype)))
>  	    continue;
>  
> +	  /* Ignore args we are not going to read from.  */
> +	  if (gimple_call_arg_flags (stmt, argno - 1) & EAF_UNUSED)
> +	    continue;
> +
>  	  if (save_always_executed && access->mode == access_read_only)
>  	    /* Attribute read_only arguments imply read access.  */
>  	    wlims.always_executed = true;
> @@ -639,8 +643,8 @@ warn_uninitialized_vars (bool wmaybe_uninit)
>  	  if (gimple_vdef (stmt))
>  	    wlims.vdef_cnt++;
>  
> -	  if (is_gimple_call (stmt))
> -	    maybe_warn_pass_by_reference (stmt, wlims);
> +	  if (gcall *call = dyn_cast <gcall *> (stmt))
> +	    maybe_warn_pass_by_reference (call, wlims);
>  	  else if (gimple_assign_load_p (stmt)
>  		   && gimple_has_location (stmt))
>  	    {
> 

-- 
Richard Biener <rguenther@suse.de>
SUSE Software Solutions Germany GmbH, Maxfeldstrasse 5, 90409 Nuernberg,
Germany; GF: Felix Imend


More information about the Gcc-patches mailing list