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]

[tree-ssa] Another EH cfg cleanup PATCH

The remaining libstdc++ failures were due to us incorrectly discarding
cleanups because we didn't think they were reachable.  This was happening
because we only made an edge from a call to the innermost cleanup, and we
don't yet make edges from one cleanup to the next.

The easy fix is to just make edges from a call to all reachable cleanups.
Long term, we should thread the cleanups together.

Booted and tested i686-pc-linux-gnu.  This patch fixes all previously
broken libstdc++ tests and breaks ext/ with an SSA
coalescing failure.  I think this is an improvement over the current
situation, so I'm checking it in.  Feel free to disagree.

2003-05-22  Jason Merrill  <>

	* tree-cfg.c (compute_reachable_eh): Don't skip cleanups.

*** tree-cfg.c.~1~	2003-05-22 14:37:40.000000000 -0400
--- tree-cfg.c	2003-05-22 16:12:08.000000000 -0400
*************** compute_reachable_eh (tree stmt)
*** 4251,4257 ****
--- 4255,4265 ----
  	  reachable_handlers = tree_cons (void_type_node,
+ #if 0
+ 	  /* Actually, we can't.  At least not until we build edges from
+ 	     one cleanup to the next.  */
  	  skip_cleanups = 1;
+ #endif

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