Skip to content
  1. Jul 07, 2011
  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