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 08 May 2003 11:47:43 -0400, Andrew MacLeod <amacleod@redhat.com> wrote:

> On Thu, 2003-05-08 at 11:39, Jason Merrill wrote:
>> On 08 May 2003 11:21:02 -0400, Andrew MacLeod <amacleod@redhat.com> wrote:
>> 
>> > That won't be good enough, we're going to need those copy-out operations
>> > before all function call locations anyway
>> 
>> Indeed, most non-pure function calls could potentially cause the current
>> function to exit abnormally via longjmp or throw.
>
> Or they could use the global, or re-enter a function with static
> locals... So the correct memory has to be stored to (and recovered after
> the call) if the variables hasn't coalesced with the correct memory
> location.

Sure, but my point is that we should have an abnormal edge there to
properly model the potential flow.  Use of globals is already handled by an
implicit USE, isn't it?  I don't think we need to treat calls specially in
most optimizers if we describe their properties correctly.

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.

Jason


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