From patchwork Fri May 27 08:30:46 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [picochip] Drop call arg location notes. Date: Thu, 26 May 2011 22:30:46 -0000 From: Hariharan Sandanagobalane X-Patchwork-Id: 97663 Message-Id: <4DDF6136.4010303@picochip.com> To: "gcc-patches@gcc.gnu.org" Hello, Recent changes to dwarf information adds call_arg_location notes just after the call instruction. They need to follow the call instruction strictly. But, this means that they could occur in the middle of a VLIW instruction. Our assembler currently can not handle labels in the middle of a VLIW. We are working towards a port of GNU assembler which should make this easy in the future. Committed to mainline as r174322 Thanks Hari ChangeLog: * config/picochip/picochip.c (reorder_var_tracking_notes): Drop call_arg_location instructions down the floor. Patch: + } } } /* Make sure we are not dropping debug instructions.*/ Index: gcc/config/picochip/picochip.c =================================================================== --- gcc/config/picochip/picochip.c (revision 174269) +++ gcc/config/picochip/picochip.c (working copy) @@ -3243,13 +3243,20 @@ } } } - else if (NOTE_P (insn) && NOTE_KIND (insn) == NOTE_INSN_VAR_LOCATION) + else if (NOTE_P (insn)) { rtx prev = PREV_INSN (insn); PREV_INSN (next) = prev; NEXT_INSN (prev) = next; - PREV_INSN (insn) = queue; - queue = insn; + /* Ignore call_arg notes. They are expected to be just after the + call insn. If the call is start of a long VLIW, labels are + emitted in the middle of a VLIW, which our assembler can not + handle. */ + if (NOTE_KIND (insn) != NOTE_INSN_CALL_ARG_LOCATION) + { + PREV_INSN (insn) = queue; + queue = insn;