David Given wrote:
sparse is working rather well, and seems to be one of the better compiler front ends that I've found. The linearising support is particularly helpful. I have, however, been finding that the learning curve is rather steep --- the API shows a lot of signs of having grown organically over time --- and I've had to build big chunks of code that I'm sure are unnecessary. For example, in order to generate the right kind of code, I need to figure out whether a pseudo contains an integer, float or pointer. The only way I've found out to do this is to recursively follow the chain of pseudo->def pointers until I find an instruction with enough type information attached to it to figure it out. I'm sure there must be an easier way of doing this... (BTW, given a function symbol, how do I find its return type? I can find the list of arguments, but there's nothing in struct symbol that seems to refer to the return value...) I am intending to release my project once done, of course, and I hope people will find it useful, but I'm not sure how much general use it will be; I've basically ripped out and replaced the register allocator / storage mechanism from my back end as I didn't understand it and didn't need the complexity. That should probably all get rewritten properly at some stage, but right now I'm focusing on getting things working...
What I had in mind would not even perform register allocation or any attempt at optimization. Such only obscures how to use sparse as a compiler.
Cheers, Tommy -- To unsubscribe from this list: send the line "unsubscribe linux-sparse" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html