On Mon, 2015-12-07 at 20:28 +0100, Bernd Schmidt wrote: > On 12/07/2015 07:54 PM, Steve Ellcey wrote: > > if (must_annul) > > - used_annul = 1; > > + { > > + /* Frame related instructions cannot go into annulled delay > > + slots, it messes up the dwarf info. */ > > + if (RTX_FRAME_RELATED_P (trial)) > > + return; > > Don't you need to use break rather than return?
I am not sure about this. There is an earlier if statement in the loop that does a 'return' instead of a break (or continue) and there is a return in the 'else' part of the if that sets must_annul. Both of these are inside the loop that looks at all the instructions in the sequence 'seq'. I think the code is looking at all the instructions in the sequence and if any of them fail one of the tests in the loop (in this case require annulling) then we can't handle any of the instructions in the sequence and so we return immediately without putting any of the instructions from 'seq' in the delay slot. I believe a frame related instruction in an annulled branch needs to be handled that way too. > > > + else if (!RTX_FRAME_RELATED_P (trial) \ > > Stray backslash. That is easily fixed. > Other than that I think this is OK. There are some preexisting tests for > frame related insns already in this code. > > > Bernd >