------- Comment #5 from steven at gcc dot gnu dot org 2007-12-17 08:41 ------- find_avail_set() uses a list search to find an available set. If it is called multiple times for the same register, quadratic behavior results. This is part of the issue for bug 19097. One fix would be to compute bitmaps of expressions per set register, and then AND in the available expressions on entry of a basic block. At most one bit will be set (or at most two bits if constants and copies are tracked separately).
-- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34503