[LLVMdev] Circular dependencies

Eric Kidd emk.lists at gmail.com
Tue Mar 21 21:24:08 PST 2006


On Mar 21, 2006, at 11:23 PM, Chris Lattner wrote:
>>>    LLVMCodeGen.o LLVMSelectionDAG.o libLLVMAnalysis.a  
>>> libLLVMTarget.a
>>>    libLLVMTransformUtils.a libLLVMipa.a
>
> CodeGen should depend on Target, but not the other way around.
> LLVMIPA should depend on LLVMAnalysis, but certainly nothing in the  
> list should depend on LLVMIPA.  If you knew what was pulling in IPA  
> that would probably be an easy tie to sever.
>
> Ideally, none of the above should depend on libLLVMTransformUtils.

Here's the raw data on who's pulling what into that cycle:

LLVMCodeGen.o: libLLVMAnalysis.a libLLVMSupport.a libLLVMTarget.a  
LLVMCore.o

LLVMSelectionDAG.o: libLLVMSupport.a libLLVMSystem.a libLLVMTarget.a  
libLLVMTransformUtils.a LLVMCodeGen.o LLVMCore.o

libLLVMAnalysis.a: libLLVMSupport.a libLLVMTarget.a LLVMCore.o

libLLVMTarget.a: libLLVMSupport.a LLVMCodeGen.o LLVMCore.o  
LLVMSelectionDAG.o

libLLVMTransformUtils.a: libLLVMAnalysis.a libLLVMipa.a  
libLLVMSupport.a LLVMCore.o

libLLVMipa.a: libLLVMAnalysis.a libLLVMSupport.a LLVMCore.o

It looks as if libLLVMipa.a is pulled in by libLLVMTransformUtils.a,  
which is in turn pulled in by LLVMSelectionDAG.o. Do either of those  
links seem remotely plausible?

Somebody who can run GenLibDeps.txt (I can't) could narrow it down  
further.

Cheers,
Eric





More information about the llvm-dev mailing list