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
alias.bz2
Description: BZip2 compressed data