Skip to content
  1. May 23, 2013
  2. May 22, 2013
  3. May 21, 2013
  4. May 20, 2013
  5. May 18, 2013
  6. May 17, 2013
  7. May 16, 2013
  8. May 15, 2013
    • Hal Finkel's avatar
      Fix legalization of SETCC with promoted integer intrinsics · 1f6a7f53
      Hal Finkel authored
      If the input operands to SETCC are promoted, we need to make sure that we
      either use the promoted form of both operands (or neither); a mixture is not
      allowed. This can happen, for example, if a target has a custom promoted
      i1-returning intrinsic (where i1 is not a legal type). In this case, we need to
      use the promoted form of both operands.
      
      This change only augments the behavior of the existing logic in the case where
      the input types (which may or may not have already been legalized) disagree,
      and should not affect existing target code because this case would otherwise
      cause an assert in the SETCC operand promotion code.
      
      This will be covered by (essentially all of the) tests for the new PPCCTRLoops
      infrastructure.
      
      llvm-svn: 181926
      1f6a7f53
    • Derek Schuff's avatar
      Fix miscompile due to StackColoring incorrectly merging stack slots (PR15707) · d2c42d76
      Derek Schuff authored
      IR optimisation passes can result in a basic block that contains:
      
        llvm.lifetime.start(%buf)
        ...
        llvm.lifetime.end(%buf)
        ...
        llvm.lifetime.start(%buf)
      
      Before this change, calculateLiveIntervals() was ignoring the second
      lifetime.start() and was regarding %buf as being dead from the
      lifetime.end() through to the end of the basic block.  This can cause
      StackColoring to incorrectly merge %buf with another stack slot.
      
      Fix by removing the incorrect Starts[pos].isValid() and
      Finishes[pos].isValid() checks.
      
      Just doing:
            Starts[pos] = Indexes->getMBBStartIdx(MBB);
            Finishes[pos] = Indexes->getMBBEndIdx(MBB);
      unconditionally would be enough to fix the bug, but it causes some
      test failures due to stack slots not being merged when they were
      before.  So, in order to keep the existing tests passing, treat LiveIn
      and LiveOut separately rather than approximating the live ranges by
      merging LiveIn and LiveOut.
      
      This fixes PR15707.
      Patch by Mark Seaborn.
      
      llvm-svn: 181922
      d2c42d76
    • David Blaikie's avatar
      Use only explicit bool conversion operators · 041f1aa3
      David Blaikie authored
      BitVector/SmallBitVector::reference::operator bool remain implicit since
      they model more exactly a bool, rather than something else that can be
      boolean tested.
      
      The most common (non-buggy) case are where such objects are used as
      return expressions in bool-returning functions or as boolean function
      arguments. In those cases I've used (& added if necessary) a named
      function to provide the equivalent (or sometimes negative, depending on
      convenient wording) test.
      
      One behavior change (YAMLParser) was made, though no test case is
      included as I'm not sure how to reach that code path. Essentially any
      comparison of llvm::yaml::document_iterators would be invalid if neither
      iterator was at the end.
      
      This helped uncover a couple of bugs in Clang - test cases provided for
      those in a separate commit along with similar changes to `operator bool`
      instances in Clang.
      
      llvm-svn: 181868
      041f1aa3
  9. May 14, 2013
  10. May 13, 2013
  11. May 11, 2013
  12. May 10, 2013
  13. May 09, 2013
  14. May 08, 2013
    • Eric Christopher's avatar
      Make sure debug info contains linkage names (DW_AT_MIPS_linkage_name) · 697fa1c8
      Eric Christopher authored
      for constructors and destructors since the original declaration given
      by the AT_specification both won't and can't.
      
      Patch by Yacine Belkadi, I've cleaned up the testcases.
      
      llvm-svn: 181471
      697fa1c8
    • David Majnemer's avatar
      DAGCombiner: Simplify inverted bit tests · 386ab7f8
      David Majnemer authored
      Fold (xor (and x, y), y) -> (and (not x), y)
      
      This removes an opportunity for a constant to appear twice.
      
      llvm-svn: 181395
      386ab7f8
    • David Blaikie's avatar
      Debug Info: Support DW_TAG_imported_declaration · 3b6038b6
      David Blaikie authored
      This provides basic functionality for imported declarations. For
      subprograms and types some amount of lazy construction is supported (so
      the definition of a function can proceed the using declaration), but it
      still doesn't handle declared-but-not-defined functions (since we don't
      generally emit function declarations).
      
      Variable support is really rudimentary at the moment - simply looking up
      the existing definition with no support for out of order (declaration,
      imported_module, then definition).
      
      llvm-svn: 181392
      3b6038b6
Loading