[lld] LLD's software architecture

Hi,

I’m analysing the LLD code structure (aka architecture) and am

trying to mold it into a component model.

Currently I see 4 components:

  • Driver

  • ReaderWriter

  • Passes

  • Core

I wonder if this is the order that they’re supposed to be in,

since there are also code dependencies upwards from:

Core → ReaderWriter

Passes → ReaderWriter

ReaderWriter → Driver

For a graphical view check:
http://c2lang.org/docs/lld_architecture_96e1b5e02.png

I think that with a few surgical patches, the dependency tree
can be completely free of circular deps.

Bas

You're interpretation seems right to me. I would love to get this
cleaned up. A lot of this seems to be caused by the round trip passes,
which I am currently moving up into reader writer (they are no longer
passes). I'm not sure how to fix the LinkingContext dependencies
though.

- Michael Spencer

These upward dependencies are I think a kind of bug that needs to be fixed. If you can remove them I’d love to see that.