This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Fix PR middle-end/61141


On 4-Jun-14, at 3:38 AM, Jeff Law wrote:

On 05/24/14 12:39, John David Anglin wrote:

The insns are being deleted in "final" after the assembly output has
being done.  So, for example, pa_output_call is
never called with a delayed branch sequence containing a NOTE_INSN_DELETED.
OK. That's good to know. I scanned final and final_scan_insn and see a couple places where we delete insns, but if I'm reading the code correctly, they would result in seeing the NOTE_INSN_DELETED rather than a real insn in the output routines.

So what code during final is deleting these insns?

It's the PA backend.  For example,

         /* If this isn't a sibcall, we put the load of %r27 into the
            delay slot.  We can't do this in a sibcall as we don't
have a second call-clobbered scratch register available. */
         if (seq_length != 0
             && ! JUMP_P (NEXT_INSN (insn))
             && !sibcall)
           {
             final_scan_insn (NEXT_INSN (insn), asm_out_file,
                              optimize, 0, NULL);

             /* Now delete the delay insn.  */
             SET_INSN_DELETED (NEXT_INSN (insn));
             delay_insn_deleted = 1;
           }

The insn is deleted so that it won't be emitted again. This is done in a bunch
of places.

What's new is the verification after assembly output.

Dave
--
John David Anglin	dave.anglin@bell.net




Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]