On Thu, 2011-10-20 at 14:27 +0200, Duncan Sands wrote: > And that's it. The price you pay for this simplicity is the need to keep > track > of uses - and this does cost compilation time (clear to anyone who does some > profiling of LLVM) but it isn't that big. The big advantage is that memory > management is easy - so easy that I suspect many LLVM users never thought > about the design choices (and trade-offs) that make it possible.
Having the def-use links always available is amore a feature than a disadvantage IMO, together with the (implicit) coding style that comes along with it. Especially for LLVM beginners, navigating through instructions and changing them is very simple. It provides people with an easy way to learn about LLVM because one just has to remember the def-use and contained-in relationships (module - function/globals - instruction(/argument)), and then one can learn about new kinds of instructions etc. on demand when one actually needs to. But the basic means of navigating are the same (and mostly the same function names etc. IIRC), irrespective of whether one is going from a module to a function or from a function to an instruction. Torvald