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: Enable first scheduling pass for SH4


Sanjiv Kumar Gupta wrote:
> 
> On Thu, 13 Nov 2003 12:18:11 -0500, Vladimir Makarov <vmakarov@redhat.com>
> wrote:
> > So if you decide not to implement this approach, I would prefer the
> > previous machine-depnendent approach.  Just let me know and I'll look at
> > the previous patch again and probably approve it.
> 
> Here is the link:
>  http://gcc.gnu.org/ml/gcc-patches/2003-09/msg00090.html
> 
> I can submit a follow-up patch if you want some changes.

Sanjiv,

  I've examined the patch.  In whole, the patch is ok.  But I have some
minor comments:

  o Shed1 is switched on for SH5 too.  Your hooks work for all
    subtargets but sh4 is not mentioned there.  If the code is
    to work for sh5 too (I am not sure about this.  I think it will
    require additional benchmarking and tuning), you should be more
    accurate in calculation of register pressure for sh5 because
    values of DImode and DFmode can be placed in one register for sh5.
    If it is not the code checking subtarget should be added (which is
    a good practice in any case because new subtargets could be added
    in future).

  o PARAMS should be not used in forward function declarations (in
    file sh.c) anymore.

  o Variables regmode_weight, skip cycles, cached_can_issue_more
    should be declared as static because they are used only in sh.c

  o There are lot of places where indentation is incorrect (in
    functions find_set_regmode_weight, find_insn_regmode_weight,
    rank_for_reorder, and sh_dfa_new_cycle).  Like in the following
    function.

+static short
+find_set_regmode_weight (x, mode)
+    rtx x;
+    enum machine_mode mode;
+{
+  if (GET_CODE (x) == CLOBBER
+      && register_operand (SET_DEST (x), mode))
+    return 1;
+  if (GET_CODE (x) == SET
+      && register_operand (SET_DEST (x), mode))
+    {
+      if (GET_CODE (SET_DEST (x)) == REG)
+        {
+          if (!reg_mentioned_p (SET_DEST (x), SET_SRC (x)))
+           return 1;
+         else
+           return 0;
+       }
         ^ Here
+       return 1;
        ^ and here
+    }
+    return 0;
+}

  o Two blank spaces should be after period which is an end of a
    sentence.  Like in the following comments

+   to REG_DEAD notes. This causes CHECK_DEAD_NOTES in sched1 to abort.
To 
                      ^                                                ^
  o Changelog has one inaccurate entry (`added; should start with
    capital letter).

        * flow.c (recompute_reg_usage): added PROP_DEATH_NOTES flag
        in call to update_life_info.

Please fix this and after that you can commit the patch.

Vlad


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