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: -fstrict-aliasing fixes 6/6: permit inlining of comdats


> On Fri, 4 Dec 2015, Jan Hubicka wrote:
> 
> > Hi,
> > this is the patch for fold-const.c. Can you think of some testcase for the
> > MR_DEPENDENCE_CLIQUE comparsion? I am not that familiar with the code to
> > be able to construct it :(
> 
> With ICF it would involve a variant using restrict args vs.
> non-restrict args.  For other optimizers it's more difficult
> to construct a testcase that would fail.  But if any alias related
> compare is necessary in operand_equal_p then the dependence check
> is required as well.
> 
> > Bootstrapped/regtested x86_64-linux, OK?
> 
> Ok.
OK, thanks.
Comitted w/o a testcase for now.  Once ipa-icf-gimple transition to operand_equal_p
is complete, we can invent a testcase.  Obviously restrict args are checked earlier
independently of the operand comparsion ATM, so this testcase would not fail either.

Honza
> 
> Thanks,
> Richard.
> 
> > Honza
> > 
> > 	* fold-const.c (operand_equal_p): Do not use flag_strict_aliasing.
> > Index: fold-const.c
> > ===================================================================
> > --- fold-const.c	(revision 231290)
> > +++ fold-const.c	(working copy)
> > @@ -2987,14 +2987,13 @@ operand_equal_p (const_tree arg0, const_
> >  					   flags)))
> >  		return 0;
> >  	      /* Verify that accesses are TBAA compatible.  */
> > -	      if (flag_strict_aliasing
> > -		  && (!alias_ptr_types_compatible_p
> > -		        (TREE_TYPE (TREE_OPERAND (arg0, 1)),
> > -		         TREE_TYPE (TREE_OPERAND (arg1, 1)))
> > -		      || (MR_DEPENDENCE_CLIQUE (arg0)
> > -			  != MR_DEPENDENCE_CLIQUE (arg1))
> > -		      || (MR_DEPENDENCE_BASE (arg0)
> > -			  != MR_DEPENDENCE_BASE (arg1))))
> > +	      if (!alias_ptr_types_compatible_p
> > +		     (TREE_TYPE (TREE_OPERAND (arg0, 1)),
> > +		      TREE_TYPE (TREE_OPERAND (arg1, 1)))
> > +		  || (MR_DEPENDENCE_CLIQUE (arg0)
> > +		      != MR_DEPENDENCE_CLIQUE (arg1))
> > +		  || (MR_DEPENDENCE_BASE (arg0)
> > +		      != MR_DEPENDENCE_BASE (arg1)))
> >  		return 0;
> >  	     /* Verify that alignment is compatible.  */
> >  	     if (TYPE_ALIGN (TREE_TYPE (arg0))


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