Skip to content
  1. Nov 19, 2013
  2. Nov 18, 2013
    • Alexey Samsonov's avatar
      Revert r194865 and r194874. · 49109a27
      Alexey Samsonov authored
      This change is incorrect. If you delete virtual destructor of both a base class
      and a subclass, then the following code:
        Base *foo = new Child();
        delete foo;
      will not cause the destructor for members of Child class. As a result, I observe
      plently of memory leaks. Notable examples I investigated are:
      ObjectBuffer and ObjectBufferStream, AttributeImpl and StringSAttributeImpl.
      
      llvm-svn: 194997
      49109a27
  3. Nov 17, 2013
  4. Nov 16, 2013
  5. Nov 15, 2013
    • David Blaikie's avatar
      DwarfCompileUnit: Push DIDescriptor usage out from isShareableAcrossCUs · 4201ddf3
      David Blaikie authored
      This is the first of a few similar patches. We'll see how far it
      goes/makes sense.
      
      llvm-svn: 194871
      4201ddf3
    • Juergen Ributzka's avatar
      [weak vtables] Remove a bunch of weak vtables · dbedae89
      Juergen Ributzka authored
      This patch removes most of the trivial cases of weak vtables by pinning them to
      a single object file.
      
      Differential Revision: http://llvm-reviews.chandlerc.com/D2068
      
      Reviewed by Andy
      
      llvm-svn: 194865
      dbedae89
    • Matt Arsenault's avatar
      Fix confusing machine verifier error. · 23c9274b
      Matt Arsenault authored
      The error reported the number of explicit operands,
      but that isn't what is checked. In my case, this
      resulted in the confusing errors
      
      "Too few operands." followed shortly by
      "8 operands expected, but 8 given."
      
      llvm-svn: 194862
      23c9274b
    • Adrian Prantl's avatar
      Reimplement r194843 in a slightly less broken way. · 7d828bbe
      Adrian Prantl authored
      llvm-svn: 194848
      7d828bbe
    • Adrian Prantl's avatar
      Restore the behaviour from before r194728. · fc0fea02
      Adrian Prantl authored
      If getDIE() fails, getOrCreateContextDIE() should also return the CUDie.
      
      llvm-svn: 194843
      fc0fea02
    • Bob Wilson's avatar
      Avoid illegal integer promotion in fastisel · 9f3e6b25
      Bob Wilson authored
      Stop folding constant adds into GEP when the type size doesn't match.
      Otherwise, the adds' operands are effectively being promoted, changing the
      conditions of an overflow.  Results are different when:
      
          sext(a) + sext(b) != sext(a + b)
      
      Problem originally found on x86-64, but also fixed issues with ARM and PPC,
      which used similar code.
      
      <rdar://problem/15292280>
      
      Patch by Duncan Exon Smith!
      
      llvm-svn: 194840
      9f3e6b25
    • Daniel Sanders's avatar
      Fix illegal DAG produced by SelectionDAG::getConstant() for v2i64 type · 50b80410
      Daniel Sanders authored
      Summary:
      When getConstant() is called for an expanded vector type, it is split into
      multiple scalar constants which are then combined using appropriate build_vector
      and bitcast operations.
      
      In addition to the usual big/little endian differences, the case where the
      element-order of the vector does not have the same endianness as the elements
      themselves is also accounted for.  For example, for v4i32 on big-endian MIPS,
      the byte-order of the vector is <3210,7654,BA98,FEDC>. For little-endian, it is
      <0123,4567,89AB,CDEF>.
      Handling this case turns out to be a nop since getConstant() returns a splatted
      vector (so reversing the element order doesn't change the value)
      
      This fixes a number of cases in MIPS MSA where calling getConstant() during
      operation legalization introduces illegal types (e.g. to legalize v2i64 UNDEF
      into a v2i64 BUILD_VECTOR of illegal i64 zeros). It should also handle bigger
      differences between illegal and legal types such as legalizing v2i64 into v8i16.
      
      lowerMSASplatImm() in the MIPS backend no longer needs to avoid calling
      getConstant() so this function has been updated in the same patch.
      
      For the sake of transparency, the steps I've taken since the review are:
      * Added 'virtual' to isVectorEltOrderLittleEndian() as requested. This revealed
        that the MIPS tests were falsely passing because a polymorphic function was
        not actually polymorphic in the reviewed patch.
      * Fixed the tests that were now failing. This involved deleting the code to
        handle the MIPS MSA element-order (which was previously doing an byte-order
        swap instead of an element-order swap). This left
        isVectorEltOrderLittleEndian() unused and it was deleted.
      * Fixed build failures caused by rebasing beyond r194467-r194472. These build
        failures involved the bset, bneg, and bclr instructions added in these commits
        using lowerMSASplatImm() in a way that was no longer valid after this patch.
        Some of these were fixed by calling SelectionDAG::getConstant() instead,
        others were fixed by a new function getBuildVectorSplat() that provided the
        removed functionality of lowerMSASplatImm() in a more sensible way.
      
      Reviewers: bkramer
      
      Reviewed By: bkramer
      
      CC: llvm-commits
      
      Differential Revision: http://llvm-reviews.chandlerc.com/D1973
      
      llvm-svn: 194811
      50b80410
    • Matt Arsenault's avatar
      Add target hook to prevent folding some bitcasted loads. · c5559bb1
      Matt Arsenault authored
      This is to avoid this transformation in some cases:
      fold (conv (load x)) -> (load (conv*)x)
      
      On architectures that don't natively support some vector
      loads efficiently casting the load to a smaller vector of
      larger types and loading is more efficient.
      
      Patch by Micah Villmow.
      
      llvm-svn: 194783
      c5559bb1
    • Eric Christopher's avatar
      Use a reference rather than a pointer as we don't expect a NULL · 34a2c871
      Eric Christopher authored
      DbgVariable.
      
      No functional change.
      
      llvm-svn: 194761
      34a2c871
    • Matt Arsenault's avatar
      Add addrspacecast instruction. · b03bd4d9
      Matt Arsenault authored
      Patch by Michele Scandale!
      
      llvm-svn: 194760
      b03bd4d9
    • Andrew Trick's avatar
      When folding memory operands, preserve existing MachineMemOperands. · a9f4d928
      Andrew Trick authored
      This comes into play with patchpoint, which can fold multiple
      operands. Since the patchpoint is already treated as a call, the
      machine mem operands won't affect anything, and there's nothing to
      test. But we still want to do the right thing here to be sure that our
      MIs obey the rules.
      
      llvm-svn: 194750
      a9f4d928
  6. Nov 14, 2013
  7. Nov 13, 2013
    • David Blaikie's avatar
      DIEHash: Move header include to be first in the implementation file to flush... · 9208b5ed
      David Blaikie authored
      DIEHash: Move header include to be first in the implementation file to flush out header inclusion ordering issues
      
      llvm-svn: 194588
      9208b5ed
    • Juergen Ributzka's avatar
      SelectionDAG: Teach the legalizer to split SETCC if VSELECT needs splitting too. · 34c652d3
      Juergen Ributzka authored
      This patch reapplies r193676 with an additional fix for the Hexagon backend. The
      SystemZ backend has already been fixed by r194148.
      
      The Type Legalizer recognizes that VSELECT needs to be split, because the type
      is to wide for the given target. The same does not always apply to SETCC,
      because less space is required to encode the result of a comparison. As a result
      VSELECT is split and SETCC is unrolled into scalar comparisons.
      
      This commit fixes the issue by checking for VSELECT-SETCC patterns in the DAG
      Combiner. If a matching pattern is found, then the result mask of SETCC is
      promoted to the expected vector mask type for the given target. Now the type
      legalizer will split both VSELECT and SETCC.
      
      This allows the following X86 DAG Combine code to sucessfully detect the MIN/MAX
      pattern. This fixes PR16695, PR17002, and <rdar://problem/14594431>.
      
      Reviewed by Nadav
      
      llvm-svn: 194542
      34c652d3
Loading