Skip to content
  1. Jul 08, 2011
    • Jakob Stoklund Olesen's avatar
      Be more aggressive about following hints. · 4931bbc6
      Jakob Stoklund Olesen authored
      RAGreedy::tryAssign will now evict interference from the preferred
      register even when another register is free.
      
      To support this, add the EvictionCost struct that counts how many hints
      are broken by an eviction. We don't want to break one hint just to
      satisfy another.
      
      Rename canEvict to shouldEvict, and add the first bit of eviction policy
      that doesn't depend on spill weights: Always make room in the preferred
      register as long as the evictees can be split and aren't already
      assigned to their preferred register.
      
      Also make the CSR avoidance more accurate. When looking for a cheaper
      register it is OK to use a new volatile register. Only CSR aliases that
      have never been used before should be avoided.
      
      llvm-svn: 134735
      4931bbc6
    • Devang Patel's avatar
      Refactor. · 2442a89e
      Devang Patel authored
      llvm-svn: 134703
      2442a89e
    • Devang Patel's avatar
      ed9fd457
    • Benjamin Kramer's avatar
      Apparently we can't expect a BinaryOperator here. · 2bb8b26a
      Benjamin Kramer authored
      Should fix llvm-gcc selfhost.
      
      llvm-svn: 134699
      2bb8b26a
    • Benjamin Kramer's avatar
      Emit a more efficient magic number multiplication for exact sdivs. · 9960a250
      Benjamin Kramer authored
      We have to do this in DAGBuilder instead of DAGCombiner, because the exact bit is lost after building.
      
        struct foo { char x[24]; };
        long bar(struct foo *a, struct foo *b) { return a-b; }
      is now compiled into
        movl	4(%esp), %eax
        subl	8(%esp), %eax
        sarl	$3, %eax
        imull	$-1431655765, %eax, %eax
      instead of
        movl	4(%esp), %eax
        subl	8(%esp), %eax
        movl	$715827883, %ecx
        imull	%ecx
        movl	%edx, %eax
        shrl	$31, %eax
        sarl	$2, %edx
        addl	%eax, %edx
        movl	%edx, %eax
      
      llvm-svn: 134695
      9960a250
    • Evan Cheng's avatar
      Eliminate asm parser's dependency on TargetMachine: · 4d1ca96b
      Evan Cheng authored
      - Each target asm parser now creates its own MCSubtatgetInfo (if needed).
      - Changed AssemblerPredicate to take subtarget features which tablegen uses
        to generate asm matcher subtarget feature queries. e.g.
        "ModeThumb,FeatureThumb2" is translated to
        "(Bits & ModeThumb) != 0 && (Bits & FeatureThumb2) != 0".
      
      llvm-svn: 134678
      4d1ca96b
    • Eric Christopher's avatar
      Remove a FIXME. All of the standard ones are in the list. · 6a6d8fc7
      Eric Christopher authored
      llvm-svn: 134647
      6a6d8fc7
  2. Jul 07, 2011
    • Devang Patel's avatar
      Add DEBUG message. · 53b050ae
      Devang Patel authored
      llvm-svn: 134643
      53b050ae
    • Devang Patel's avatar
      If known DebugLocs do not match then two DBG_VALUE machine instructions are... · bf8cc60d
      Devang Patel authored
      If known DebugLocs do not match then two DBG_VALUE machine instructions are not identical. For example,
      
              DBG_VALUE 3.310000e+02, 0, !"ds"; dbg:sse.stepfft.c:138:18 @[ sse.stepfft.c:32:10 ]
              DBG_VALUE 3.310000e+02, 0, !"ds"; dbg:sse.stepfft.c:138:18 @[ sse.stepfft.c:31:10 ]
      
      These two MIs represent identical value, 3.31...,  for one variable, ds, but they are not identical because the represent two separate instances of inlined variable "ds". 
      
      llvm-svn: 134620
      bf8cc60d
    • Lang Hames's avatar
      Add functions 'hasPredecessor' and 'hasPredecessorHelper' to SDNode. The · 5a00499e
      Lang Hames authored
      hasPredecessorHelper function allows predecessors to be cached to speed up
      repeated invocations. This fixes PR10186.
      
      X.isPredecessorOf(Y) now just calls Y.hasPredecessor(X)
      
      Y.hasPredecessor(X) calls Y.hasPredecessorHelper(X, Visited, Worklist) with
      empty Visited and Worklist sets (i.e. no caching over invocations).
      
      Y.hasPredecessorHelper(X, Visited, Worklist) caches search state in Visited
      and Worklist to speed up repeated calls. The Visited set is searched for X
      before going to the worklist to further search the DAG if necessary.
      
      llvm-svn: 134592
      5a00499e
    • Devang Patel's avatar
      Add DEBUG messages. · b7a328ed
      Devang Patel authored
      llvm-svn: 134572
      b7a328ed
    • Eli Friedman's avatar
      When tail-merging multiple blocks, make sure to correctly update the live-in... · bf007364
      Eli Friedman authored
      When tail-merging multiple blocks, make sure to correctly update the live-in list on the merged block to correctly account for the live-outs of all the predecessors.  They might not be the same in all cases (the testcase I have involves a PHI node where one of the operands is an IMPLICIT_DEF).
      
      Unfortunately, the testcase I have is large and confidential, so I don't have a test to commit at the moment; I'll see if I can come up with something smaller where this issue reproduces.
      
      <rdar://problem/9716278>
      
      llvm-svn: 134565
      bf007364
    • Devang Patel's avatar
      Remove dead code. · 92ca8fc9
      Devang Patel authored
      llvm-svn: 134561
      92ca8fc9
    • Devang Patel's avatar
      Typo. · 338e4326
      Devang Patel authored
      llvm-svn: 134559
      338e4326
    • Eric Christopher's avatar
      Grammar and 80-col. · ea336c79
      Eric Christopher authored
      llvm-svn: 134555
      ea336c79
  3. Jul 06, 2011
  4. Jul 05, 2011
    • Jakob Stoklund Olesen's avatar
      Break infinite loop when the Hopfield network oscillates. · 91f3a309
      Jakob Stoklund Olesen authored
      This is impossible in theory, I can prove it. In practice, our near-zero
      threshold can cause the network to oscillate between equally good
      solutions.
      
      <rdar://problem/9720596>
      
      llvm-svn: 134428
      91f3a309
    • Jakob Stoklund Olesen's avatar
      Fix PR10277. · bbad3bce
      Jakob Stoklund Olesen authored
      Remat during spilling triggers dead code elimination. If a phi-def
      becomes unused, that may also cause live ranges to split into separate
      connected components.
      
      This type of splitting is different from normal live range splitting. In
      particular, there may not be a common original interval.
      
      When the split range is its own original, make sure that the new
      siblings are also their own originals. The range being split cannot be
      used as an original since it doesn't cover the new siblings.
      
      llvm-svn: 134413
      bbad3bce
    • Jakob Stoklund Olesen's avatar
      Tweak comment and debug output. · b2090ecb
      Jakob Stoklund Olesen authored
      llvm-svn: 134412
      b2090ecb
  5. Jul 04, 2011
    • Rafael Espindola's avatar
      Move early tail duplication earlier. · c74d9378
      Rafael Espindola authored
      This fixes the issue noted in PR10251 where early tail dup of bbs with
      indirectbr would cause a bb to be duplicated into a loop preheader
      and then into its predecessors, creating phi nodes with identical
      operands just before register allocation.
      
      This helps with jsinterp.o size (__TEXT goes from 163568 to 126656)
      and a bit with performance 1.005x faster on sunspider (jits still enabled).
      
      The result on webkit with the jit disabled is more significant: 1.021x faster.
      
      llvm-svn: 134372
      c74d9378
    • Rafael Espindola's avatar
      Move most of the pre BB code to TailDuplicateAndUpdate. Change the · f9f012ea
      Rafael Espindola authored
      HasIndirectbr variable to be just that. No functionality change.
      
      llvm-svn: 134371
      f9f012ea
    • Rafael Espindola's avatar
      79dc4e77
    • Jakob Stoklund Olesen's avatar
      Fix PR10244. · 71a3a003
      Jakob Stoklund Olesen authored
      A split point inserted in a block with a landing pad successor may be
      hoisted above the call to ensure that it dominates all successors. The
      code that handles the rest of the basic block must take this into
      account.
      
      I am not including a test case, it would be very fragile. PR10244 comes
      from building clang with exceptions enabled.
      
      llvm-svn: 134369
      71a3a003
  6. Jul 03, 2011
  7. Jul 02, 2011
  8. Jul 01, 2011
Loading