Skip to content
  • Jeffrey Yasskin's avatar
    Kill ModuleProvider and ghost linkage by inverting the relationship between · 091217be
    Jeffrey Yasskin authored
    Modules and ModuleProviders. Because the "ModuleProvider" simply materializes
    GlobalValues now, and doesn't provide modules, it's renamed to
    "GVMaterializer". Code that used to need a ModuleProvider to materialize
    Functions can now materialize the Functions directly. Functions no longer use a
    magic linkage to record that they're materializable; they simply ask the
    GVMaterializer.
    
    Because the C ABI must never change, we can't remove LLVMModuleProviderRef or
    the functions that refer to it. Instead, because Module now exposes the same
    functionality ModuleProvider used to, we store a Module* in any
    LLVMModuleProviderRef and translate in the wrapper methods.  The bindings to
    other languages still use the ModuleProvider concept.  It would probably be
    worth some time to update them to follow the C++ more closely, but I don't
    intend to do it.
    
    Fixes http://llvm.org/PR5737 and http://llvm.org/PR5735.
    
    llvm-svn: 94686
    091217be
Loading