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]

[patch committed SH] Fix target/67002


I've committed the attached tiny patch to fix PR target/67002
which is a 5/6 regression.  sh_recog_treg_set_expr are called
unexpectedly during expand phase only when -g is specified and
it might cause -fcompare-debug failure.  The patch is tested
on sh4-unknown-linux-gnu.  I'll backport it to 5.

Regards,
	kaz
--
2015-08-07  Kaz Kojima  <kkojima@gcc.gnu.org>

	PR target/67002
	* config/sh/sh.c (sh_recog_treg_set_expr): Return false when
	currently_expanding_to_rtl is set.

diff --git a/config/sh/sh.c b/config/sh/sh.c
index f429193..450d634 100644
--- a/config/sh/sh.c
+++ b/config/sh/sh.c
@@ -14165,6 +14165,12 @@ sh_recog_treg_set_expr (rtx op, machine_mode mode)
   if (!can_create_pseudo_p ())
     return false;
 
+  /* expand_debug_locations may call this to compute rtx costs at
+     very early stage.  In that case, don't make new insns here to
+     avoid codegen differences with -g. */
+  if (currently_expanding_to_rtl)
+    return false;
+
   /* We are going to invoke recog in a re-entrant way and thus
      have to capture its current state and restore it afterwards.  */
   recog_data_d prev_recog_data = recog_data;


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