Skip to content
  1. Nov 17, 2013
    • Anders Waldenborg's avatar
      python: Fix check for disasm creation failure · 01af07a1
      Anders Waldenborg authored
      Check should be for pointer being NULL, not what it points to.
      
      Also adds a test for this case.
      
      Reviewed By: indygreg
      
      Differential Revision: http://llvm-reviews.chandlerc.com/D1878
      
      llvm-svn: 194965
      01af07a1
    • Anders Waldenborg's avatar
      python: Properly initialize before trying to create disasm · 6a105e99
      Anders Waldenborg authored
      As the "LLVMInitializeAll*" functions are not available as symbols in
      the shared library they can't be used, and as a workaround a list of
      the targets is kept and the individual symbols tried. As soon as the
      "All"-functions are changed to proper symbols (as opposed to static
      inlines in the headers) this hack will be replace with simple calls
      to the corresponding "LLVMInitializeAll*" functions.
      
      Reviewed By: indygreg
      
      CC: llvm-commits
      
      Differential Revision: http://llvm-reviews.chandlerc.com/D1879
      
      llvm-svn: 194964
      6a105e99
    • Alp Toker's avatar
      Update CREDITS · ad72aa05
      Alp Toker authored
      llvm-svn: 194962
      ad72aa05
    • Bill Wendling's avatar
      Testcase for PR17964 · 1ead4a48
      Bill Wendling authored
      llvm-svn: 194961
      1ead4a48
    • Bill Wendling's avatar
      Revert "Micro-optimization" · 25b61dba
      Bill Wendling authored
      This reverts commit f1d9fe9d04ce93f6d5dcebbd2cb6a07414d7a029.
      
      This was causing PR17964. We need to use thread data before regular data.
      
      llvm-svn: 194960
      25b61dba
    • Benjamin Kramer's avatar
    • Yaron Keren's avatar
      DebugLoc defines LineCol as 32 bit in comment but unsigned in code. · 9c131c1f
      Yaron Keren authored
      This patch modifies LineCol to be a uint32_t.
      
      See http://llvm.org/bugs/show_bug.cgi?id=17957
      
      llvm-svn: 194957
      9c131c1f
    • Michael Gottesman's avatar
      [block-freq] Add BlockFrequency::scale that returns a remainder from the... · 4d078a3d
      Michael Gottesman authored
      [block-freq] Add BlockFrequency::scale that returns a remainder from the division and make the private scale in BlockFrequency more performant.
      
      This change is the first in a series of changes improving LLVM's Block
      Frequency propogation implementation to not lose probability mass in
      branchy code when propogating block frequency information from a basic
      block to its successors. This patch is a simple infrastructure
      improvement that does not actually modify the block frequency
      algorithm. The specific changes are:
      
      1. Changes the division algorithm used when scaling block frequencies by
      branch probabilities to a short division algorithm. This gives us the
      remainder for free as well as provides a nice speed boost. When I
      benched the old routine and the new routine on a Sandy Bridge iMac with
      disabled turbo mode performing 8192 iterations on an array of length
      32768, I saw ~600% increase in speed in mean/median performance.
      
      2. Exposes a scale method that returns a remainder. This is important so
      we can ensure that when we scale a block frequency by some branch
      probability BP = N/D, the remainder from the division by D can be
      retrieved and propagated to other children to ensure no probability mass
      is lost (more to come on this).
      
      llvm-svn: 194950
      4d078a3d
    • Chandler Carruth's avatar
      [PM] Completely remove support for explicit 'require' methods on the · a8df4760
      Chandler Carruth authored
      AnalysisManager. All this method did was assert something and we have
      a perfectly good way to trigger that assert from the query path.
      
      llvm-svn: 194947
      a8df4760
    • Matt Arsenault's avatar
      Use more getZExtOrTruncs · 64283bd9
      Matt Arsenault authored
      llvm-svn: 194945
      64283bd9
    • Matt Arsenault's avatar
      Use getZExtOrTrunc instead of repeating the same logic. · 873bb3ea
      Matt Arsenault authored
      llvm-svn: 194944
      873bb3ea
    • Hal Finkel's avatar
      Add the cold attribute to error-reporting call sites · 66cd3f1b
      Hal Finkel authored
      Generally speaking, control flow paths with error reporting calls are cold.
      So far, error reporting calls are calls to perror and calls to fprintf,
      fwrite, etc. with stderr as the stream. This can be extended in the future.
      
      The primary motivation is to improve block placement (the cold attribute
      affects the static branch prediction heuristics).
      
      llvm-svn: 194943
      66cd3f1b
    • Andrew Trick's avatar
      Added a size field to the stack map record to handle subregister spills. · 10d5be4e
      Andrew Trick authored
      Implementing this on bigendian platforms could get strange. I added a
      target hook, getStackSlotRange, per Jakob's recommendation to make
      this as explicit as possible.
      
      llvm-svn: 194942
      10d5be4e
    • Hal Finkel's avatar
      Fix ndebug-build unused variable in loop rerolling · 67107ea1
      Hal Finkel authored
      llvm-svn: 194941
      67107ea1
    • Matt Arsenault's avatar
      Use right address space pointer size · 36f5eb59
      Matt Arsenault authored
      llvm-svn: 194940
      36f5eb59
    • Hal Finkel's avatar
      Add a loop rerolling pass · bf45efde
      Hal Finkel authored
      This adds a loop rerolling pass: the opposite of (partial) loop unrolling. The
      transformation aims to take loops like this:
      
      for (int i = 0; i < 3200; i += 5) {
        a[i]     += alpha * b[i];
        a[i + 1] += alpha * b[i + 1];
        a[i + 2] += alpha * b[i + 2];
        a[i + 3] += alpha * b[i + 3];
        a[i + 4] += alpha * b[i + 4];
      }
      
      and turn them into this:
      
      for (int i = 0; i < 3200; ++i) {
        a[i] += alpha * b[i];
      }
      
      and loops like this:
      
      for (int i = 0; i < 500; ++i) {
        x[3*i] = foo(0);
        x[3*i+1] = foo(0);
        x[3*i+2] = foo(0);
      }
      
      and turn them into this:
      
      for (int i = 0; i < 1500; ++i) {
        x[i] = foo(0);
      }
      
      There are two motivations for this transformation:
      
        1. Code-size reduction (especially relevant, obviously, when compiling for
      code size).
      
        2. Providing greater choice to the loop vectorizer (and generic unroller) to
      choose the unrolling factor (and a better ability to vectorize). The loop
      vectorizer can take vector lengths and register pressure into account when
      choosing an unrolling factor, for example, and a pre-unrolled loop limits that
      choice. This is especially problematic if the manual unrolling was optimized
      for a machine different from the current target.
      
      The current implementation is limited to single basic-block loops only. The
      rerolling recognition should work regardless of how the loop iterations are
      intermixed within the loop body (subject to dependency and side-effect
      constraints), but the significant restriction is that the order of the
      instructions in each iteration must be identical. This seems sufficient to
      capture all current use cases.
      
      This pass is not currently enabled by default at any optimization level.
      
      llvm-svn: 194939
      bf45efde
  2. Nov 16, 2013
Loading