On 03/03/14 07:05, Kai Tietz wrote:
[the possibility to use offline verification tools for the
transforms comes to my mind as well]
This is actually a pretty interesting idea. As it would allow us to
do testing for this area without side-effects by high-level passes,
target-properties, etc
Yea, the question is are there offline tools that we can use for this
purpose? I simply haven't explored that space at all.;
Additional I think we need to some related conceptional decisions here
too. I saw here some missing concept for abstraction of
back-end/target specific limitations in middle-end. For example the
branch-cost optimization, or the target's pattern-preferences, etc.
We lack to make a consequent difference between target-agnostic and
target-specific passes in middle-end. There were introduced
diagnostics in late passes. For latter see "possible integral
overflow on additions in loops" as one sample. Such stuff hinders us
to do better job on pattern-folding in many places. Right now we tend
to introduce backend-representation too early (eg branch-cost,
avoiding packing of conditional patterns due some limitiation on some
targets, too early jump-threading, etc). So I think we should think
about at least some passes doing target/backend agnostic
folding/normalization, and doing target/backend-specific
pattern-transformation explicit in latter passes.
There's a lot of open questions in this space -- but I don't think we
necessarily have to tie them together. If we can express
simplifications in the way Richi wants, that seems largely independent
of most of these issues.
jeff