[LLVMdev] Question about circular dependency checker

Talin viridia at gmail.com
Sat Jun 7 01:06:33 PDT 2008


Gordon Henriksen wrote:
> CodeGen, since it depends on MachineModuleInfo.
>   
I started to do that, but after some investigation I came to the 
conclusion that putting it there was wrong. So instead, I removed the 
dependencies on System/Path and MachineModuleInfo (the only thing it was 
getting from there was LLVMDebugVersion.)

Unfortunately, I am still getting circular dependency errors. My headers 
now look like this:

    #include <llvm/Support/DebugInfoBuilder.h>
    #include <llvm/DerivedTypes.h>
    #include <llvm/Constants.h>
    #include <llvm/GlobalVariable.h>
    #include <llvm/Module.h>
    #include <llvm/Support/Dwarf.h>

I also think that the definition of LLVMDebugVersion should be moved out 
of CodeGen. AFAICT, Frontends can write bitcode files without ever 
linking to CodeGen, but they will want to know the debug version.

Also - I'd like to send what I have done so far just for sanity checking 
and approval of the overall direction I am taking with the API for this 
thing.

Oh, and one other thing - I was wondering how incomplete a debug 
descriptor graph can be and still be valid. For example: The source line 
number descriptors contain references to function descriptors, which 
contain references to type descriptors, and so on. Suppose I want to 
just generate line number information without all of the complete typing 
information. Can the appropriate descriptor fields be left blank?
> On 2008-06-05, at 04:06, Talin wrote:
>
>   
>> HyperQuantum wrote:
>>     
>>> I'm not a LLVM developer, but I'll give it a try...
>>>
>>> On Wed, Jun 4, 2008 at 9:12 AM, Talin <viridia at gmail.com> wrote:
>>>
>>>
>>>       
>>>> I went and added a new file to the "Support"
>>>> directory (in include and lib). However, when I try to compile it,  
>>>> it
>>>> complains of a circular dependency error between libCore and  
>>>> libSupport:
>>>>
>>>>   find-cycles.pl: Circular dependency between *.a files:
>>>>   find-cycles.pl:   libLLVMCore.a libLLVMSupport.a
>>>>
>>>> The odd part is, that no other file in LLVM even references my  
>>>> header,
>>>> so I'm not sure where the cycle is.
>>>>
>>>>         
>>> The problem is not other code depending on your files directly. The
>>> "Support" library consists (AFAIK) of utility code that is used
>>> everywhere in other LLVM libraries. So you cannot add code to the
>>> "Support" library that calls code in other LLVM libraries on a higher
>>> level, like "VMCore", without introducing a circular dependency
>>> between the libraries.
>>>
>>>
>>>       
>>>> The headers that I am including in my .cpp file are:
>>>>
>>>>   #include <llvm/DerivedTypes.h>
>>>>   #include <llvm/Constants.h>
>>>>   #include <llvm/GlobalVariable.h>
>>>>   #include <llvm/Module.h>
>>>>   #include <llvm/CodeGen/MachineModuleInfo.h>
>>>>   #include <llvm/Support/Dwarf.h>
>>>>   #include <llvm/System/Path.h>
>>>>
>>>>         
>>> There's your problem.
>>>
>>>
>>>       
>>>> Any ideas? Am I going to have to put my .cpp file in some library  
>>>> other
>>>> than Support?
>>>>
>>>>         
>>> If you need the includes, and you probably do, then you have no  
>>> choice
>>> but to put your code in another library.
>>>
>>>       
>> All right, then, which library should it go in to? I wanted it to go
>> into "Support" because logically it is a sibling of IRBuilder - it  
>> does
>> what IRBuilder does, only for source-level debugging info.
>>     
>>> Regards,
>>> Kevin André
>>>
>>> _______________________________________________
>>> LLVM Developers mailing list
>>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>>
>>>       
>> _______________________________________________
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>     
>
>
>
> — Gordon
>
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
>   




More information about the llvm-dev mailing list