Hi Carl, On Sat, May 14, 2005 at 01:13:23AM +0200, Carl Friedrich Bolz wrote: > When a block has been transformed in this way, all the links are > considered; if the concrete types of the Variables that exit do not > match the canonical low-level types expected by the target block, > conversions are inserted. > > "Inserted" meaning that explicit cast operations are put append to the > operations of the basic block?
No, there is a new block inserted along the link; the conversions are only interesting for a single exit of the block, the other exits may need different ones. (This idea was stolen from genllvm -- I remembered you described it to me before I wrote the translator/typer.py.) > And a more general note: I think that the whole low level/rpython typer > approach makes a lot of sense. I implemented some of the things that are > now redone by the new approach. So I was really doing too much work > since some of the things I did would have to be done for every (remotely > C-ish) backend which is obviously not a good solution. In addition all > the templating hacks I did started to get brittle -- I had to add more > and more code that did string manipulations on the template I used for > the implementation of RPython's lists in LLVM. Good to hear. Yes, I was quite afraid we were about to run into exactly the same troubles in genc. BTW genllvm is a nice source for inspiration which we're using freely to reorganize genc now :-) A bientot, Armin. _______________________________________________ [email protected] http://codespeak.net/mailman/listinfo/pypy-dev
