That sounds like a good plan, and I think I might be able to sneak in 
BuryPointer as well, which is just a single function with static variables.

-- adrian

> On Feb 25, 2015, at 1:34 PM, Reid Kleckner <[email protected]> wrote:
> 
> What do you think about moving CodeGenOptions.cpp to Basic, alongside 
> LanguageOptions and SanitizerSet? CodeGenOptions is basically a big bag of 
> strings and numbers with no dependencies on anything interesting.
> 
> On Wed, Feb 25, 2015 at 1:02 PM, Adrian Prantl <[email protected] 
> <mailto:[email protected]>> wrote:
> On Feb 24, 2015, at 6:28 PM, Adrian Prantl <[email protected] 
> <mailto:[email protected]>> wrote:
>> You are correct. I need to remove the use of PCHGenerator from 
>> ModuleContainerGenerator.
>>> On Feb 24, 2015, at 6:11 PM, NAKAMURA Takumi <[email protected] 
>>> <mailto:[email protected]>> wrote:
>>> It still has circular dependencies between clangCodeGen and clangFrontend.
> 
> After some deliberation, I noticed that there is actually more to be done 
> here in order to resolve the cyclic dependencies. Here is a graph of (a 
> simplified subset of) the dependencies after this commit:
> - Pretty much all of CodeGen depends on CodeGenOptions, which is currently 
> part of Frontend.
> - BackendUtil and CodeGenAction depend on both CodeGen and Frontend.
> - CodeGenModuleContainer introduces a cyclic dependency between Frontend and 
> CodeGen.
> 
> <before.png>
> 
> The above cycle can be resolved by reversing the CodeGen->Frontend dependency 
> and splitting out the common dependencies CodeGenOptions and 
> frontend::utils::BuryPointer into a separate library that I’m calling 
> FrontendSupport for lack of a better name. After this, the only remaining 
> CodeGen->Frontend dependencies are CodeGen/BackendUtil.cpp and 
> CodeGen/CodeGenAction.cpp:
> - CodeGenAction looks like it could safely be moved into FrontendTool, which 
> is its only user.
> - BackendUtil can stay were it is, it is needed by CodeGenAction and (via 
> CodeGenModuleContainer) by Frontend. The dependency on Frontend can be 
> eliminated by splitting BuryPointer out from Utils.
> The new picture then looks like this:
>   
> <after.png>
> 
> I’ll try and implement it this way; hopefully I didn’t miss any other edges 
> in the graph.
> -- adrian
> 
>> 
>> thanks for noticing!
>> -- adrian
> 
> 
> _______________________________________________
> cfe-commits mailing list
> [email protected] <mailto:[email protected]>
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits 
> <http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits>
> 
> 

_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to