sh.c (sh_recog_treg_set_expr): Return false during expand phase to avoid codegen...
authorKaz Kojima <kkojima@gcc.gnu.org>
Fri, 7 Aug 2015 08:11:45 +0000 (08:11 +0000)
committerKaz Kojima <kkojima@gcc.gnu.org>
Fri, 7 Aug 2015 08:11:45 +0000 (08:11 +0000)
* config/sh/sh.c (sh_recog_treg_set_expr): Return false during
expand phase to avoid codegen differences with -g.

From-SVN: r226715

gcc/ChangeLog
gcc/config/sh/sh.c

index 75b4d94f0dc4d23a3e4eae8e31f423e1ffff9f63..7fbacb3e9fa3a1a02cc0a9e73de322cdc7b49c92 100644 (file)
@@ -1,3 +1,9 @@
+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.
+
 2015-08-06  Yaakov Selkowitz  <yselkowi@redhat.com>
 
        * configure.ac: Define LIBICONV_DEP with in-tree libiconv.
index f4291936fb1f3261fa5609cd54f106254b355023..450d634e246856c73406b47d806f3b13d2e3e210 100644 (file)
@@ -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;