Message ID | mvmwqch1ds1.fsf@hawking.suse.de |
---|---|
State | New |
Headers | show |
On Mon, Jun 16, 2014 at 9:04 AM, Andreas Schwab <schwab@suse.de> wrote: > Hans-Peter Nilsson <hp@bitrange.com> writes: > >> On Sun, 15 Jun 2014, Hans-Peter Nilsson wrote: >> >>> On Sun, 15 Jun 2014, Hans-Peter Nilsson wrote: >>> > On Sun, 15 Jun 2014, Steven Bosscher wrote: >>> > > Can you please try: >>> > > >>> > > [...] >>> > >>> > Thanks. Looks pretty obvious. I was heading for the door with >>> > just enough time to report the issue, so I didn't actually look >>> > at the code before. I'll commit this on your behalf once build >>> > has passed the point of failure. >>> >>> ...which includes not just compiling auto-inc-dec.c but also >>> compiling e.g. libgcc with the compiled compiler. No such luck, >>> segv in that function (must be from Richard's code, not from the >>> patch as no dumps are output at that time). Bah. >> >> Ok, I'm out; I don't know why the insn_info is invalid here. >> Hopefully obvious to you or Richard. PR61516 for this. > > Please try this: > > diff --git a/gcc/auto-inc-dec.c b/gcc/auto-inc-dec.c > index 64a3706..d84e097 100644 > --- a/gcc/auto-inc-dec.c > +++ b/gcc/auto-inc-dec.c > @@ -1341,6 +1341,7 @@ merge_in_block (int max_reg, basic_block bb) > > FOR_BB_INSNS_REVERSE_SAFE (bb, insn, curr) > { > + unsigned int uid = INSN_UID (insn); > df_insn_info *insn_info = DF_INSN_INFO_GET (insn); > bool insn_is_add_or_inc = true; > > @@ -1417,7 +1418,7 @@ merge_in_block (int max_reg, basic_block bb) > > /* If the inc insn was merged with a mem, the inc insn is gone > and there is noting to update. */ > - if (insn_info) > + if (DF_INSN_UID_GET (uid)) > { > df_ref def, use; Doesn't appear to help on arm-none-linux-gnueabihf where I tried applying a slight variant of this after the latest fixups for the auto-inc-dec breakage. I've gone through all the stages of breakage on this on my arm-none-linux-gnueabihf auto-tester too. regards Ramana > > > Andreas. > > -- > Andreas Schwab, SUSE Labs, schwab@suse.de > GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE 1748 E4D4 88E3 0EEA B9D7 > "And now for something completely different."
diff --git a/gcc/auto-inc-dec.c b/gcc/auto-inc-dec.c index 64a3706..d84e097 100644 --- a/gcc/auto-inc-dec.c +++ b/gcc/auto-inc-dec.c @@ -1341,6 +1341,7 @@ merge_in_block (int max_reg, basic_block bb) FOR_BB_INSNS_REVERSE_SAFE (bb, insn, curr) { + unsigned int uid = INSN_UID (insn); df_insn_info *insn_info = DF_INSN_INFO_GET (insn); bool insn_is_add_or_inc = true; @@ -1417,7 +1418,7 @@ merge_in_block (int max_reg, basic_block bb) /* If the inc insn was merged with a mem, the inc insn is gone and there is noting to update. */ - if (insn_info) + if (DF_INSN_UID_GET (uid)) { df_ref def, use;