This is the mail archive of the gcc@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: Attacking quadratic behaviors associated with SWITCH_EXPR



It's tree_redirect_edge_and_branch that is quadratic if most outgoing
edges of a block ending in a SWITCH_EXPR are critical edges.

(Note that pass_split_crit_edges really shouldn't be a pass.  It only
provides a property, PROP_no_crit_edges, but it's run unconditionally,

That's the fault of the pass manager.
Passes can provide propreties.
If nothing requires the property it provides (due to them not being executed), it shouldn't run the pass that provides the property.


so even with -fno-tree-pre (which is the only pass that requires this
property) we still run the pass_split_crit_edges pass - wasteful!)

This is true, PRE is the only pass that *requires* it (and even that is not strictly true. I could make PRE not require it, at the expense of missing a bunch of redundancies).
However, splitting critical edges is *useful* to a lot of passes, AFAIK.



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