This is the mail archive of the 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: dom requires PROP_loops

On March 13, 2014 5:00:53 PM CET, Paulo Matos <> wrote:
>> -----Original Message-----
>> From: Richard Biener []
>> Sent: 13 March 2014 13:24
>> To: Paulo Matos
>> Cc:
>> Subject: Re: dom requires PROP_loops
>> Probably RTL cfgcleaup needs the same treatment as GIMPLE cfgcleanup
>> then - allow removal if loop properties allows it.
>In both cfgcleanup.c and tree-cfgcleanup.c I can see code that protects
>loop latches, but I see no code that allows removal of latch if
>property allows it. 
>From what you say I would expect this would already be implemented in
>tree-cfgcleanup.c, however what actually happens is that since
>current_loops is non-null (PROP_loops is not destroyed in tree
>loopdone), tree-cfgcleanup call chain ends up calling
>cleanup_tree_cfg_bb on the bb loop latch and tree_forwarder_block_p
>returns false for bb because of the following code thereby not removing
>the latch:
>  if (current_loops)
>    {
>      basic_block dest;
>      /* Protect loop latches, headers and preheaders.  */
>      if (bb->loop_father->header == bb)
>	return false;
>      dest = EDGE_SUCC (bb, 0)->dest;
>      if (dest->loop_father->header == dest)
>	return false;
>    }
>Why do we need to protect the latch?

You are looking at old sources.


>Paulo Matos
>> Richard.

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