Skip to content
  1. 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
  2. Jul 06, 2011
  3. 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
  4. 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
  5. Jul 03, 2011
  6. Jul 02, 2011
  7. Jul 01, 2011
  8. Jun 30, 2011
    • Rafael Espindola's avatar
      Create a isFullCopy predicate. · 070f96c5
      Rafael Espindola authored
      llvm-svn: 134189
      070f96c5
    • Rafael Espindola's avatar
      Remove dead code. · 79fd2e7a
      Rafael Espindola authored
      llvm-svn: 134148
      79fd2e7a
    • Jakob Stoklund Olesen's avatar
      Reapply r134047 now that the world is ready for it. · adc6a4ca
      Jakob Stoklund Olesen authored
      This patch will sometimes choose live range split points next to
      interference instead of always splitting next to a register point. That
      means spill code can now appear almost anywhere, and it was necessary
      to fix code that didn't expect that.
      
      The difficult places were:
      
      - Between a CALL returning a value on the x87 stack and the
        corresponding FpPOP_RETVAL (was FpGET_ST0). Probably also near x87
        inline assembly, but that didn't actually show up in testing.
      
      - Between a CALL popping arguments off the stack and the corresponding
        ADJCALLSTACKUP.
      
      Both are fixed now. The only place spill code can't appear is after
      terminators, see SplitAnalysis::getLastSplitPoint.
      
      Original commit message:
      
      Rewrite RAGreedy::splitAroundRegion, now with cool ASCII art.
      
      This function has to deal with a lot of special cases, and the old
      version got it wrong sometimes. In particular, it would sometimes leave
      multiple uses in the stack interval in a single block. That causes bad
      code with multiple reloads in the same basic block.
      
      The new version handles block entry and exit in a single pass. It first
      eliminates all the easy cases, and then goes on to create a local
      interval for the blocks with difficult interference. Previously, we
      would only create the local interval for completely isolated blocks.
      
      It can happen that the stack interval becomes completely empty because
      we could allocate a register in all edge bundles, and the new local
      intervals deal with the interference. The empty stack interval is
      harmless, but we need to remove a SplitKit assertion that checks for
      empty intervals.
      
      llvm-svn: 134125
      adc6a4ca
    • Eric Christopher's avatar
      f81292ba
    • Devang Patel's avatar
      · 0eada032
      Devang Patel authored
      Revert r133953 for now.
      
      llvm-svn: 134116
      0eada032
  9. Jun 29, 2011
Loading