> The most visible ongoing effort is the conversion from target macros > to target hooks (which is incomplete). The goal was to allow "hot > swapping" of backends. This is still the most obvious, most complete, > and least unappealing (from a technical POV) approach IMHO. But Kaveh > showed at one point that the compile time penalty of even just the > partial conversion done so far is a few percentage points (somewhere > between 3% and 5%, I don't recall the details). And also it's not nice > and easy work so nobody is working on it actively AFAIK.
It occurred to me at some point that using an indirect function call is useless. It would be much better to have, instead of the current targetm.foo syntax, something like TARGET(foo); this would expand to target_foo and be further remapped to the target hooks via aliases. Just by swapping targ* files you could choose whether to use function pointers if the target does not support aliases (or in the future if multiple backends are desired), or regular functions in the other case. Another problem is the mess of GO_IF_LEGITIMATE_ADDRESS and REG_OK_FOR_{BASE,INDEX}_P. These should be expressed as RTL constructs and constraints in my opinion. I had started a little work on that but never got very far. Paolo