Skip to content
  1. Feb 27, 2012
  2. Feb 14, 2012
  3. Feb 11, 2012
    • Bill Wendling's avatar
      [WIP] Initial code for module flags. · 66f02413
      Bill Wendling authored
      Module flags are key-value pairs associated with the module. They include a
      'behavior' value, indicating how module flags react when mergine two
      files. Normally, it's just the union of the two module flags. But if two module
      flags have the same key, then the resulting flags are dictated by the behaviors.
      
      Allowable behaviors are:
      
           Error
             Emits an error if two values disagree.
      
           Warning
             Emits a warning if two values disagree.
      
           Require
             Emits an error when the specified value is not present
             or doesn't have the specified value. It is an error for
             two (or more) llvm.module.flags with the same ID to have
             the Require behavior but different values. There may be
             multiple Require flags per ID.
      
           Override
             Uses the specified value if the two values disagree. It
             is an error for two (or more) llvm.module.flags with the
             same ID to have the Override behavior but different
             values.
      
      llvm-svn: 150300
      66f02413
  4. Feb 07, 2012
  5. Jan 25, 2012
  6. Jan 24, 2012
  7. Jan 06, 2012
  8. Dec 23, 2011
  9. Dec 21, 2011
    • Chris Lattner's avatar
      Fix a nasty bug in the type remapping stuff that I added that is breaking kc++ on · eaf9b762
      Chris Lattner authored
      the build bot in some cases.  The basic issue happens when a source module contains
      both a "%foo" type and a "%foo.42" type.  It will see the later one, check to see if
      the destination module contains a "%foo" type, and it will return true... because
      both the source and destination modules are in the same LLVMContext.  We don't want
      to map source types to other source types, so don't do the remapping if the mapped
      type came from the source module.
      
      Unfortunately, I've been unable to reduce a decent testcase for this, kc++ is 
      pretty great that way.
      
      llvm-svn: 147010
      eaf9b762
  10. Dec 20, 2011
  11. Dec 17, 2011
  12. Dec 16, 2011
  13. Nov 02, 2011
    • Tanya Lattner's avatar
      Add support to the linker to lazily link in functions. This change only links... · 0a48b877
      Tanya Lattner authored
      Add support to the linker to lazily link in functions. This change only links functions marked with specific linkage (internal, private, linker_private, linker_private_weak, linker_private_weak_def_auto, linkonce, linkonce_odr, and available_externally) if they have uses in the destination module. Instead of automatically linking, these functions are placed onto a worklist to be processed in the final stage of linking. We iterate over the list and if any functions on the list have uses in the destination module, we link them in and repeat the process until no changes in the state (uses) has changed. This means that any functions in the LazilyLink worklist that have a use in the destination module will be linked in and none that don't. 
      
      llvm-svn: 143524
      0a48b877
  14. Oct 30, 2011
  15. Oct 15, 2011
  16. Oct 11, 2011
    • Tanya Lattner's avatar
      Make it possible to use the linker without destroying the source module. This... · cbb91408
      Tanya Lattner authored
      Make it possible to use the linker without destroying the source module. This is so the source module can be linked to multiple other destination modules. For all that used LinkModules() before, they will continue to destroy the source module as before.
      
      This line, and those below, will be ignored--
      
      M    include/llvm/Linker.h
      M    tools/bugpoint/Miscompilation.cpp
      M    tools/bugpoint/BugDriver.cpp
      M    tools/llvm-link/llvm-link.cpp
      M    lib/Linker/LinkModules.cpp
      
      llvm-svn: 141606
      cbb91408
  17. Aug 12, 2011
  18. Aug 04, 2011
  19. Jul 18, 2011
  20. Jul 15, 2011
  21. Jul 14, 2011
  22. Jul 09, 2011
    • Chris Lattner's avatar
      Land the long talked about "type system rewrite" patch. This · b1ed91f3
      Chris Lattner authored
      patch brings numerous advantages to LLVM.  One way to look at it
      is through diffstat:
       109 files changed, 3005 insertions(+), 5906 deletions(-)
      
      Removing almost 3K lines of code is a good thing.  Other advantages
      include:
      
      1. Value::getType() is a simple load that can be CSE'd, not a mutating
         union-find operation.
      2. Types a uniqued and never move once created, defining away PATypeHolder.
      3. Structs can be "named" now, and their name is part of the identity that
         uniques them.  This means that the compiler doesn't merge them structurally
         which makes the IR much less confusing.
      4. Now that there is no way to get a cycle in a type graph without a named
         struct type, "upreferences" go away.
      5. Type refinement is completely gone, which should make LTO much MUCH faster
         in some common cases with C++ code.
      6. Types are now generally immutable, so we can use "Type *" instead 
         "const Type *" everywhere.
      
      Downsides of this patch are that it removes some functions from the C API,
      so people using those will have to upgrade to (not yet added) new API.  
      "LLVM 3.0" is the right time to do this.
      
      There are still some cleanups pending after this, this patch is large enough
      as-is.
      
      llvm-svn: 134829
      b1ed91f3
  23. Mar 30, 2011
  24. Feb 01, 2011
  25. Jan 15, 2011
  26. Jan 13, 2011
  27. Jan 08, 2011
    • Chris Lattner's avatar
      Revamp the ValueMapper interfaces in a couple ways: · 43f8d164
      Chris Lattner authored
      1. Take a flags argument instead of a bool.  This makes
         it more clear to the reader what it is used for.
      2. Add a flag that says that "remapping a value not in the
         map is ok".
      3. Reimplement MapValue to share a bunch of code and be a lot
         more efficient.  For lookup failures, don't drop null values
         into the map.
      4. Using the new flag a bunch of code can vaporize in LinkModules
         and LoopUnswitch, kill it.
      
      No functionality change.
      
      llvm-svn: 123058
      43f8d164
  28. Dec 30, 2010
  29. Dec 29, 2010
  30. Dec 18, 2010
  31. Nov 29, 2010
  32. Oct 19, 2010
Loading