Skip to content
  1. Oct 25, 2012
  2. Oct 24, 2012
  3. Oct 23, 2012
    • Michael Liao's avatar
      Fix PR14161 · 2843625b
      Michael Liao authored
      - Check index being extracted to be constant 0 before simplfiying.
        Otherwise, retain the original sequence.
      
      llvm-svn: 166504
      2843625b
    • Nadav Rotem's avatar
      · 33e034a4
      Nadav Rotem authored
      Make the indirect branch optimization deterministic. No functionality change.
      
      Patch by Daniel Reynaud.
      
      llvm-svn: 166501
      33e034a4
    • Matt Beaumont-Gay's avatar
      Silence -Wsign-compare · bdcebd32
      Matt Beaumont-Gay authored
      llvm-svn: 166494
      bdcebd32
    • Nadav Rotem's avatar
      · 5bed7b4f
      Nadav Rotem authored
      Use the AliasAnalysis isIdentifiedObj because it also understands mallocs and c++ news.
      
      PR14158.
      
      llvm-svn: 166491
      5bed7b4f
    • Bill Wendling's avatar
      Ignore unreachable blocks when doing memory dependence analysis on non-local · 5858b56c
      Bill Wendling authored
      loads. It's not really profitable and may result in GVN going into an infinite
      loop when it hits constructs like this:
      
           %x = gep %some.type %x, ...
      
      Found via an LTO build of LLVM.
      
      llvm-svn: 166490
      5858b56c
    • Chad Rosier's avatar
      [ms-inline asm] Add an implementation of the offset operator. This is a follow · 37e755ce
      Chad Rosier authored
      on patch to r166433.
      rdar://12470317
      
      llvm-svn: 166488
      37e755ce
    • Michael Liao's avatar
      Add custom UINT_TO_FP from v4i8/v4i16/v8i8/v8i16 to v4f32/v8f32 · c03c03d5
      Michael Liao authored
      - Replace v4i8/v8i8 -> v8f32 DAG combine with custom lowering to reduce
        DAG combine overhead.
      - Extend the support to v4i16/v8i16 as well.
      
      llvm-svn: 166487
      c03c03d5
    • Michael Liao's avatar
      Enable lowering ZERO_EXTEND/ANY_EXTEND to PMOVZX from SSE4.1 · 1be96bb5
      Michael Liao authored
      llvm-svn: 166486
      1be96bb5
    • Eric Christopher's avatar
      Grammar. · c33f622c
      Eric Christopher authored
      llvm-svn: 166485
      c33f622c
    • Bill Schmidt's avatar
      This is another TLC patch for separating code for the Darwin and ELF ABIs · 57d6de5f
      Bill Schmidt authored
      for the PowerPC target, and factoring the results.  This will ease future
      maintenance of both subtargets.
      
      PPCTargetLowering::LowerCall_Darwin_Or_64SVR4() has grown a lot of special-case
      code for the different ABIs, making maintenance difficult.  This is getting
      worse as we repair errors in the 64-bit ELF ABI implementation, while avoiding
      changes to the Darwin ABI logic.  This patch splits the routine into
      LowerCall_Darwin() and LowerCall_64SVR4(), allowing both versions to be
      significantly simplified.  I've factored out chunks of similar code where it
      made sense to do so.  I also performed similar factoring on
      LowerFormalArguments_Darwin() and LowerFormalArguments_64SVR4().
      
      There are no functional changes in this patch, and therefore no new test
      cases have been developed.
      
      Built and tested on powerpc64-unknown-linux-gnu with no new regressions.
      
      llvm-svn: 166480
      57d6de5f
    • Duncan Sands's avatar
      Fix typo that somehow escaped both testing and code inspection. · 5ed3900d
      Duncan Sands authored
      llvm-svn: 166475
      5ed3900d
    • Duncan Sands's avatar
      Transform code like this · 533c8ae7
      Duncan Sands authored
       %V = mul i64 %N, 4
       %t = getelementptr i8* bitcast (i32* %arr to i8*), i32 %V
      into
       %t1 = getelementptr i32* %arr, i32 %N
       %t = bitcast i32* %t1 to i8*
      incorporating the multiplication into the getelementptr.
      This happens all the time in dragonegg, for example for
        int foo(int *A, int N) {
          return A[N];
        }
      because gcc turns this into byte pointer arithmetic before it hits the plugin:
        D.1590_2 = (long unsigned int) N_1(D);
        D.1591_3 = D.1590_2 * 4;
        D.1592_5 = A_4(D) + D.1591_3;
        D.1589_6 = *D.1592_5;
        return D.1589_6;
      The D.1592_5 line is a POINTER_PLUS_EXPR, which is turned into a getelementptr
      on a bitcast of A_4 to i8*, so this becomes exactly the kind of IR that the
      transform fires on.
      
      An analogous transform (with no testcases!) already existed for bitcasts of
      arrays, so I rewrote it to share code with this one.
      
      llvm-svn: 166474
      533c8ae7
Loading