On Wed, Nov 02, 2016 at 10:08:25AM +0100, Richard Biener wrote:
> On Mon, 31 Oct 2016, Jakub Jelinek wrote:
> 
> > Hi!
> > 
> > Some automatic VAR_DECLs don't get DECL_RTL set - e.g. if its SSA_NAMEs
> > expand to multiple rtls, then there is not a single one that can be used.
> > Using DECL_RTL on such VAR_DECLs ICEs.
> > 
> > I've tried to just return 0 in nonoverlapping_memrefs_p if either
> > DECL_RTL_SET_P (expr{x,y}) wasn't true, but that triggered way too often
> > during bootstrap/regtest (3800+ times).  So the following patch narrows it
> > down more and triggers only on the testcase below.
> 
> What kind of cases did this trigger on?  I would have expected we
> have DECL_RTL_SET_P on (almost?) all decls that can have it.  And for
> those that don't it should be uninteresting to have?

I admit I havne't studied it in detail yet.  Attaching list of
BITS_PER_WORD, main_input_filename, current_function_name ()
where nonoverlapping_memrefs_p returned 0 early because
either exprx or expry didn't have DECL_RTL_SET_P.  As except for the new
testcase that didn't result into ICE, all of those must have been something
where make_decl_rtl created RTL in that case.

> > Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?
> 
> Hmm.  Can you try splitting out a decl_can_have_rtl () predicate
> from make_decl_rtl and use that?

Will do.

        Jakub

Attachment: alias.bz2
Description: BZip2 compressed data

Reply via email to