Thanks @kparzysz What you said makes sense.
Effectively one point of view calls for a unified structure(base) would be needed to be able to configure through the divide and conquer transition through V0=> V2 => V1 phases of function optimizations. Which in your terminology means “Architecture”. I agree with that pt.
The V2 view mainly calls for a need of ''Architecture", which contains the components and connectivity that can represent :
- V0 global set of configurations
- V2: some configs that contains host with target
- V1: the final leaf terminology where only really a single “target” in traditional compiler sense.
Given “Architecture” describes the relations on how things groups with each other in a hierarchical fashion. One possible option would be to adopt the current Target data structure (perhaps with a different name to differentiate from the leaf component), given the relation groupings usually are sub-trees.
Note that the naming itself is a separate issue that can be addressed independently (Personally I think architecture should be avoided mainly because it is already used in Arch field of LLVM’s target triple, which makes it a sub component of target (triple)), but it is a minor issue.