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 up DSE - PR middle-end/64388, target/55023


On 1/6/2015 9:08 AM, Jakub Jelinek wrote:
@@ -2527,7 +2518,13 @@ scan_insn (bb_info_t bb_info, rtx_insn *
  		     const_call ? "const" : "memset", INSN_UID (insn));
/* See the head comment of the frame_read field. */
-	  if (reload_completed)
+	  if (reload_completed
+	      /* Tail calls are storing their arguments using
+		 arg poinnter.  If it is a frame pointer on the target,
Typo.
+		 even before reload we need to kill frame pointer based
+		 stores.  */
+	      || (SIBLING_CALL_P (insn)
+		  && HARD_FRAME_POINTER_IS_ARG_POINTER))
  	    insn_info->frame_read = true;

I had tested this hunk before, without the "HARD_FRAME_POINTER_IS_ARG_POINTER"
addition, on 32-bit hppa and it resolved the original test case.

Thanks,
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]