Skip to content
  1. Jun 20, 2012
    • Lang Hames's avatar
      Add DAG-combines for aggressive FMA formation. · 39fb1d08
      Lang Hames authored
      This patch adds DAG combines to form FMAs from pairs of FADD + FMUL or
      FSUB + FMUL. The combines are performed when:
      (a) Either
            AllowExcessFPPrecision option (-enable-excess-fp-precision for llc)
              OR
            UnsafeFPMath option (-enable-unsafe-fp-math)
          are set, and
      (b) TargetLoweringInfo::isFMAFasterThanMulAndAdd(VT) is true for the type of
          the FADD/FSUB, and
      (c) The FMUL only has one user (the FADD/FSUB).
      
      If your target has fast FMA instructions you can make use of these combines by
      overriding TargetLoweringInfo::isFMAFasterThanMulAndAdd(VT) to return true for
      types supported by your FMA instruction, and adding patterns to match ISD::FMA
      to your FMA instructions.
      
      llvm-svn: 158757
      39fb1d08
  2. Jun 19, 2012
    • Rafael Espindola's avatar
      Move the support for using .init_array from ARM to the generic · ca3e0ee8
      Rafael Espindola authored
      TargetLoweringObjectFileELF. Use this to support it on X86. Unlike ARM,
      on X86 it is not easy to find out if .init_array should be used or not, so
      the decision is made via TargetOptions and defaults to off.
      
      Add a command line option to llc that enables it.
      
      llvm-svn: 158692
      ca3e0ee8
  3. Jun 15, 2012
  4. Jun 13, 2012
  5. Jun 11, 2012
  6. Jun 07, 2012
  7. Jun 06, 2012
  8. May 30, 2012
    • David Blaikie's avatar
      Reinstate -O3 for LTO. · 787705ae
      David Blaikie authored
      This broke in r144788 when the CodeGenOpt option was moved from everywhere else
      (specifically, from addPassesToEmitFile) to createTargetMachine. Since
      LTOCodeGenerator wasn't passing the 4th argument, when the 4th parameter became
      the 3rd, it silently continued to compile (int->bool conversion) but meant
      something completely different.
      
      This change preserves the existing (accidental) and previous (default)
      semantics of the addPassesToEmitFile and restores the previous/intended
      CodeGenOpt argument by passing it appropriately to createTargetMachine.
      
      (discovered by pending changes to -Wconversion to catch constant->bool
      conversions)
      
      llvm-svn: 157705
      787705ae
    • Bob Wilson's avatar
      Add an insertPass API to TargetPassConfig. <rdar://problem/11498613> · 33e5188c
      Bob Wilson authored
      Besides adding the new insertPass function, this patch uses it to
      enhance the existing -print-machineinstrs so that the MachineInstrs
      after a specific pass can be printed.
      
      Patch by Bin Zeng!
      
      llvm-svn: 157655
      33e5188c
  9. May 29, 2012
  10. May 20, 2012
  11. May 19, 2012
  12. May 18, 2012
    • Jim Grosbach's avatar
      Refactor data-in-code annotations. · 4b63d2ae
      Jim Grosbach authored
      Use a dedicated MachO load command to annotate data-in-code regions.
      This is the same format the linker produces for final executable images,
      allowing consistency of representation and use of introspection tools
      for both object and executable files.
      
      Data-in-code regions are annotated via ".data_region"/".end_data_region"
      directive pairs, with an optional region type.
      
      data_region_directive := ".data_region" { region_type }
      region_type := "jt8" | "jt16" | "jt32" | "jta32"
      end_data_region_directive := ".end_data_region"
      
      The previous handling of ARM-style "$d.*" labels was broken and has
      been removed. Specifically, it didn't handle ARM vs. Thumb mode when
      marking the end of the section.
      
      rdar://11459456
      
      llvm-svn: 157062
      4b63d2ae
    • Kevin Enderby's avatar
      Fixed a bug in llvm-objdump when disassembling using -macho option for a binary · badd100c
      Kevin Enderby authored
      containing no symbols.  Fixed the crash and fixed it not disassembling anything.
      
      llvm-svn: 157031
      badd100c
  13. May 16, 2012
  14. May 15, 2012
  15. May 11, 2012
  16. May 09, 2012
  17. May 04, 2012
    • Chandler Carruth's avatar
      Move the CodeExtractor utility to a dedicated header file / source file, · 0fde0015
      Chandler Carruth authored
      and expose it as a utility class rather than as free function wrappers.
      
      The simple free-function interface works well for the bugpoint-specific
      pass's uses of code extraction, but in an upcoming patch for more
      advanced code extraction, they simply don't expose a rich enough
      interface. I need to expose various stages of the process of doing the
      code extraction and query information to decide whether or not to
      actually complete the extraction or give up.
      
      Rather than build up a new predicate model and pass that into these
      functions, just take the class that was actually implementing the
      functions and lift it up into a proper interface that can be used to
      perform code extraction. The interface is cleaned up and re-documented
      to work better in a header. It also is now setup to accept the blocks to
      be extracted in the constructor rather than in a method.
      
      In passing this essentially reverts my previous commit here exposing
      a block-level query for eligibility of extraction. That is no longer
      necessary with the more rich interface as clients can query the
      extraction object for eligibility directly. This will reduce the number
      of walks of the input basic block sequence by quite a bit which is
      useful if this enters the normal optimization pipeline.
      
      llvm-svn: 156163
      0fde0015
    • Pete Cooper's avatar
      PR12729: Change 'llvm-objdump' to display the available targets. · 28fb4fc9
      Pete Cooper authored
      Patch by Meador Inge.
      
      llvm-svn: 156128
      28fb4fc9
  18. May 02, 2012
  19. Apr 29, 2012
  20. Apr 27, 2012
  21. Apr 26, 2012
    • Michael J. Spencer's avatar
      [CMake] Restructure how Clang, Polly and other external projects get included. · e734f541
      Michael J. Spencer authored
      While making lld build under the tools directory I decided to refactor how this
      works.
      
      There is now a macro, add_llvm_external_project, which takes the name of the
      expected subdirectory. This sets up two CMake options.
      
       * LLVM_EXTERNAL_${NAME}_SOURCE_DIR
           This is the path to the source. It defaults to
           ${CMAKE_CURRENT_SOURCE_DIR}/${name}.
       * LLVM_EXTERNAL_${NAME}_BUILD
           Enable and disable building the tool as part of LLVM.
      
      I chose LLVM_EXTERNAL_${NAME} as a prefix so they all show up together in the
      GUI.
      
      llvm-svn: 155654
      e734f541
  22. Apr 25, 2012
  23. Apr 19, 2012
    • Michael J. Spencer's avatar
      Remove llvm-ld and llvm-stub (which is only used by llvm-ld). · 9125493e
      Michael J. Spencer authored
      llvm-ld is no longer useful and causes confusion and so it is being removed.
      
      * Does not work very well on Windows because it must call a gcc like driver to
        assemble and link.
      * Has lots of hard coded paths which are wrong on many systems.
      * Does not understand most of ld's options.
      * Can be partially replaced by llvm-link | opt | {llc | as, llc -filetype=obj} |
        ld, or fully replaced by Clang.
      
      I know of no production use of llvm-ld, and hacking use should be
      replaced by Clang's driver.
      
      llvm-svn: 155147
      9125493e
  24. Apr 18, 2012
  25. Apr 16, 2012
  26. Apr 15, 2012
  27. Apr 11, 2012
Loading