Skip to content
  1. Sep 13, 2012
    • Dmitri Gribenko's avatar
      Fix Doxygen issues: · 2bc1d483
      Dmitri Gribenko authored
      * wrap code blocks in \code ... \endcode;
      * refer to parameter names in paragraphs correctly (\arg is not what most
        people want -- it starts a new paragraph).
      
      llvm-svn: 163790
      2bc1d483
  2. Sep 12, 2012
  3. Sep 10, 2012
  4. Sep 09, 2012
  5. Sep 06, 2012
  6. Sep 05, 2012
  7. Sep 04, 2012
    • Preston Gurd's avatar
      Generic Bypass Slow Div · cdf540d5
      Preston Gurd authored
      - CodeGenPrepare pass for identifying div/rem ops
      - Backend specifies the type mapping using addBypassSlowDivType
      - Enabled only for Intel Atom with O2 32-bit -> 8-bit
      - Replace IDIV with instructions which test its value and use DIVB if the value
      is positive and less than 256.
      - In the case when the quotient and remainder of a divide are used a DIV
      and a REM instruction will be present in the IR. In the non-Atom case
      they are both lowered to IDIVs and CSE removes the redundant IDIV instruction,
      using the quotient and remainder from the first IDIV. However,
      due to this optimization CSE is not able to eliminate redundant
      IDIV instructions because they are located in different basic blocks.
      This is overcome by calculating both the quotient (DIV) and remainder (REM)
      in each basic block that is inserted by the optimization and reusing the result
      values when a subsequent DIV or REM instruction uses the same operands.
      - Test cases check for the presents of the optimization when calculating
      either the quotient, remainder,  or both.
      
      Patch by Tyler Nowicki!
      
      llvm-svn: 163150
      cdf540d5
    • Nadav Rotem's avatar
      LICM may hoist an instruction with undefined behavior above a trap. · 03dcd85b
      Nadav Rotem authored
      Scan the body of the loop and find instructions that may trap.
      Use this information when deciding if it is safe to hoist or sink instructions.
      Notice that we can optimize the search of instructions that may throw in the case of nested loops.
      
      rdar://11518836
      
      llvm-svn: 163132
      03dcd85b
  8. Sep 02, 2012
    • Nadav Rotem's avatar
      Not all targets have efficient ISel code generation for select instructions. · 9d832026
      Nadav Rotem authored
      For example, the ARM target does not have efficient ISel handling for vector
      selects with scalar conditions. This patch adds a TLI hook which allows the
      different targets to report which selects are supported well and which selects
      should be converted to CF duting codegen prepare.
      
      llvm-svn: 163093
      9d832026
    • Benjamin Kramer's avatar
      LoopRotation: Make the brute force DomTree update more brute force. · 599a4bb6
      Benjamin Kramer authored
      We update until we hit a fixpoint. This is probably slow but also
      slightly simplifies the code. It should also fix the occasional
      invalid domtrees observed when building with expensive checking.
      
      I couldn't find a case where this had a measurable slowdown, but
      if someone finds a pathological case where it does we may have
      to find a cleverer way of updating dominators here.
      
      Thanks to Duncan for the test case.
      
      llvm-svn: 163091
      599a4bb6
  9. Sep 01, 2012
  10. Aug 30, 2012
    • Benjamin Kramer's avatar
      LoopRotate: Also rotate loops with multiple exits. · afdfdb5c
      Benjamin Kramer authored
      The old PHI updating code in loop-rotate was replaced with SSAUpdater a while
      ago, it has no problems with comples PHIs. What had to be fixed is detecting
      whether a loop was already rotated and updating dominators when multiple exits
      were present.
      
      This change increases overall code size a bit, mostly due to additional loop
      unrolling opportunities. Passes test-suite and selfhost with -verify-dom-info.
      Fixes PR7447.
      
      Thanks to Andy for the input on the domtree updating code.
      
      llvm-svn: 162912
      afdfdb5c
  11. Aug 29, 2012
    • Benjamin Kramer's avatar
      Make MemoryBuiltins aware of TargetLibraryInfo. · 8bcc9711
      Benjamin Kramer authored
      This disables malloc-specific optimization when -fno-builtin (or -ffreestanding)
      is specified. This has been a problem for a long time but became more severe
      with the recent memory builtin improvements.
      
      Since the memory builtin functions are used everywhere, this required passing
      TLI in many places. This means that functions that now have an optional TLI
      argument, like RecursivelyDeleteTriviallyDeadFunctions, won't remove dead
      mallocs anymore if the TLI argument is missing. I've updated most passes to do
      the right thing.
      
      Fixes PR13694 and probably others.
      
      llvm-svn: 162841
      8bcc9711
  12. Aug 27, 2012
  13. Aug 24, 2012
  14. Aug 22, 2012
  15. Aug 21, 2012
  16. Aug 18, 2012
  17. Aug 16, 2012
    • Rafael Espindola's avatar
      Teach GVN to reason about edges dominating uses. This allows it to handle cases · cc80cdeb
      Rafael Espindola authored
      where some fact lake a=b dominates a use in a phi, but doesn't dominate the
      basic block itself.
      
      This feature could also be implemented by splitting critical edges, but at least
      with the current algorithm reasoning about the dominance directly is faster.
      
      The time for running "opt -O2" in the testcase in pr10584 is 1.003 times slower
      and on gcc as a single file it is 1.0007 times faster.
      
      llvm-svn: 162023
      cc80cdeb
  18. Aug 15, 2012
  19. Aug 14, 2012
  20. Aug 10, 2012
  21. Aug 08, 2012
  22. Jul 27, 2012
  23. Jul 26, 2012
  24. Jul 25, 2012
  25. Jul 24, 2012
  26. Jul 23, 2012
Loading