On Dec 12, 2017, Rainer Orth <r...@cebitec.uni-bielefeld.de> wrote: > Hi David, >> Something in this series broke bootstrap on AIX, probably Power in general.
> I'm seeing the same in a sparc-sun-solaris2.11 bootstrap. The AIX patch, that I've just emailed out in this thread, should fix that as well. As for the regression you reported, here's a fix. Regstrapping; ok to install? [SFN] don't assume BLOCK_FOR_INSN is set in var-tracking There's no guarantee that BLOCK_FOR_INSN will be set before var-tracking. So, keep track of whether we're in the first block header or inside a BB explicitly, and apply the logic we meant to apply outside BBs only when we are indeed outside a BB. for gcc/ChangeLog PR bootstrap/83396 * var-tracking.c (vt_initialize): Keep track of BB boundaries. --- gcc/var-tracking.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/gcc/var-tracking.c b/gcc/var-tracking.c index 8e500b144712..12158dbb1e0d 100644 --- a/gcc/var-tracking.c +++ b/gcc/var-tracking.c @@ -10156,12 +10156,16 @@ vt_initialize (void) /* If we are walking the first basic block, walk any HEADER insns that might be before it too. Unfortunately, BB_HEADER and BB_FOOTER are not set while we run this - pass. */ + pass. Unfortunately, BLOCK_FOR_INSN may not be set, so + we can't assume that its being NULL implies we're outside + the basic block. */ insn = get_first_insn (bb); + bool outside_bb = insn != BB_HEAD (bb); for (rtx_insn *next; insn != BB_HEAD (bb->next_bb) ? next = NEXT_INSN (insn), true : false; - insn = next) + insn = next, + outside_bb = outside_bb && next != BB_HEAD (bb)) { if (INSN_P (insn)) { @@ -10169,11 +10173,11 @@ vt_initialize (void) if (!BLOCK_FOR_INSN (insn)) { BLOCK_FOR_INSN (insn) = bb; - gcc_assert (DEBUG_INSN_P (insn)); + gcc_assert (!outside_bb || DEBUG_INSN_P (insn)); /* Reset debug insns between basic blocks. Their location is not reliable, because they were probably not maintained up to date. */ - if (DEBUG_BIND_INSN_P (insn)) + if (outside_bb && DEBUG_BIND_INSN_P (insn)) INSN_VAR_LOCATION_LOC (insn) = gen_rtx_UNKNOWN_VAR_LOC (); } -- Alexandre Oliva, freedom fighter http://FSFLA.org/~lxoliva/ You must be the change you wish to see in the world. -- Gandhi Be Free! -- http://FSFLA.org/ FSF Latin America board member Free Software Evangelist|Red Hat Brasil GNU Toolchain Engineer