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: [tree-ssa Too many edges in CFG



On Thursday, May 8, 2003, at 12:34 PM, Richard Henderson wrote:


On Thu, May 08, 2003 at 12:03:16PM -0400, Jason Merrill wrote:
Morgan says that some algorithms, including PRE, break down if not all
execution paths lead to the exit block. I don't know whether that's true
of our implementation, but it seems like a reasonable invariant.

It's true.


I see that yall have already come to a decision, but I'd brought
this up in the first place because Not having an edge from noreturn
functions is the way things work on the rtl side of the fence.

As for PRE, we have a function that goes in and adds fake edges
for the duration of the algorithm that needs them, and takes them
out afterwards.

But only because of how non-Sparse PRE works.
SSAPRE does not need fake exit edges.
In fact, Open64 specifically ignores the fake exit edges when doing ESSA renaming (in particular, when determining where exit occurrences are):
opt_eocc.cxx:if (bb->Kind() == BB_EXIT && bb != Cfg()->Fake_exit_bb())
Etable()->Append_exit_occurrence(bb);



r~


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