------- Comment #2 from zadeck at naturalbridge dot com 2010-06-04 17:18 ------- I would just like to say that i think that target_reinit should be removed. It is nothing but trouble. We tried to use it on our private port and it was very slow and most of the time ended up crashing. Furthermore, when we got down to the end, we discovered that in fact it does not end up calling everything that was needed to reinitialize ira.
Our platform has a register architecture like a sparc but it has a variable number of ins and outs. The exact number of ins depends on the function signature and the number of outs depends on the signatures of the callees. So we tried using target_reinit to reset the register allocator after we had seen the caller to the function and all of the callees. in the end we added a special pass that does an reinit_regs () before ira. This sped up our compiler by about 4x. (i.e target_reinit is not just buggy, it is slow.) Note that target_reinit does not do a reinit_regs and so it actually does not really reinitialize the target, at least as far as ira is concerned. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40419