and though bugs are the bane of my existence, rest assured the wretched thing will get the best of care here

  1. 26 Nov, 2020 8 commits
  2. 25 Nov, 2020 5 commits
  3. 21 Nov, 2020 3 commits
  4. 12 Nov, 2020 3 commits
  5. 03 Nov, 2020 4 commits
    • Arthur Eubanks's avatar
      [DAE] MarkLive in MarkValue(MaybeLive) if any use is live · ef4ffcaf
      Arthur Eubanks authored
      While looping through all args or all return values, we may mark a use
      of a later iteration as live. Previously when we got to that later value
      it would ignore that and continue adding to Uses instead of marking it
      live. For example, when looping through arg#0 and arg#1,
      MarkValue(arg#0, Live) may cause some use of arg#1 to be live, but
      MarkValue(arg#1, MaybeLive) will not notice that and continue adding
      into Uses.
      
      Now MarkValue(RA, MaybeLive) will MarkLive(RA) if any use is live.
      
      Fixes PR47444.
      
      Reviewed By: rnk
      
      Differential Revision: https://reviews.llvm.org/D88529
      
      (cherry picked from commit 7468afe9)
      ef4ffcaf
    • Geoff Levner's avatar
      DeferredDiagnosticsEmitter crashes · 3c687677
      Geoff Levner authored
      Patch VisitCXXDeleteExpr() in clang::UsedDeclVisitor to avoid it crashing
      when the expression's destroyed type is null. According to the comments
      in CXXDeleteExpr::getDestroyedType(), this can happen when the type to
      delete is a dependent type.
      
      Patch by Geoff Levner.
      
      Differential Revision: https://reviews.llvm.org/D88949
      
      (cherry picked from commit b9225543)
      3c687677
    • Hubert Tong's avatar
      [clang][Sema] Fix PR47676: Handle dependent AltiVec C-style cast · 701addff
      Hubert Tong authored
      Fix premature decision in the presence of type-dependent expression
      operands on whether AltiVec vector initializations from single
      expressions are "splat" operations.
      
      Verify that the instantiation is able to determine the correct cast
      semantics for both the scalar type and the vector type case.
      
      Note that, because the change only affects the single-expression
      case (and the target type is an AltiVec-style vector type), the
      replacement of a parenthesized list with a parenthesized expression
      does not change the semantics of the program in a program-observable
      manner.
      
      Reviewed By: aaron.ballman
      
      Differential Revision: https://reviews.llvm.org/D88526
      
      (cherry picked from commit 35ecc7fe)
      701addff
    • Simon Pilgrim's avatar
      [X86] Fix cpu name typos · 5ad2592b
      Simon Pilgrim authored
      As discussed on PR26418 rGea84dc95 incorrectly set the knl cpuname to tremont (and missed out the tremont cpuname entirely).
      
      (cherry picked from commit 0d17dc2e)
      5ad2592b
  6. 31 Oct, 2020 4 commits
  7. 26 Oct, 2020 1 commit
  8. 23 Oct, 2020 1 commit
  9. 07 Oct, 2020 2 commits
  10. 06 Oct, 2020 1 commit
    • Qiu Chaofan's avatar
      [SelectionDAG] Don't remove unused negated constant immediately · 121babae
      Qiu Chaofan authored
      This reverts partial of a2fb5446 (actually, 2508ef01) about removing
      negated FP constant immediately if it has no uses. However, as discussed
      in bug 47517, there're cases when NegX is folded into constant from
      other places while NegY is removed by that line of code and NegX is
      equal to NegY. In these cases, NegX is deleted before used and crash
      happens. So revert the code and add necessary test case.
      
      (cherry picked from commit b326d4ff)
      121babae
  11. 05 Oct, 2020 1 commit
  12. 01 Oct, 2020 2 commits
  13. 30 Sep, 2020 2 commits
    • Sanjay Patel's avatar
      [APFloat] prevent NaN morphing into Inf on conversion (PR43907) · 60a25202
      Sanjay Patel authored
      We shift the significand right on a truncation, but that needs to be made NaN-safe:
      always set at least 1 bit in the significand.
      https://llvm.org/PR43907
      
      See D88238 for the likely follow-up (but needs some plumbing fixes before it can proceed).
      
      Differential Revision: https://reviews.llvm.org/D87835
      
      (cherry picked from commit e34bd1e0)
      60a25202
    • Amara Emerson's avatar
      [GlobalISel] Fix multiply with overflow intrinsics legalization generating invalid MIR. · a3aee267
      Amara Emerson authored
      During lowering of G_UMULO and friends, the previous code moved the builder's
      insertion point to be after the legalizing instruction. When that happened, if
      there happened to be a "G_CONSTANT i32 0" immediately after, the CSEMIRBuilder
      would try to find that constant during the buildConstant(zero) call, and since
      it dominates itself would return the iterator unchanged, even though the def
      of the constant was *after* the current insertion point. This resulted in the
      compare being generated *before* the constant which it was using.
      
      There's no need to modify the insertion point before building the mul-hi or
      constant. Delaying moving the insert point ensures those are built/CSEd before
      the G_ICMP is built.
      
      Fixes PR47679
      
      Differential Revision: https://reviews.llvm.org/D88514
      
      (cherry picked from commit 1d54e75c)
      a3aee267
  14. 29 Sep, 2020 1 commit
  15. 28 Sep, 2020 2 commits
    • Hans Wennborg's avatar
      Fix mysterious failure of SupportTests FileCheckTest.Binop · eb83b551
      Hans Wennborg authored
      The test would fail in no-asserts release builds using MSVC
      for 64-bit Windows:
      
      Unexpected error message:
      TestBuffer:1:1: error: implicit format conflict between 'FOO' (%u) and '18\0' (%x), need an explicit format specifier
      
      Error message(s) not found:
      {implicit format conflict between 'FOO' (%u) and 'BAZ' (%x), need an explicit format specifier}
      
      It seems a string from a previous test case is finding its way
      into the latter one.
      
      This doesn't reproduce on master anymore after 998709b7, so let's
      just hack around it here for the branch.
      eb83b551
    • Robert Widmann's avatar
      [LLVM-C] Turn a ShuffleVector Constant Into a Getter. · 29392497
      Robert Widmann authored
      It is not a good idea to expose raw constants in the LLVM C API. Replace this with an explicit getter.
      
      Differential Revision: https://reviews.llvm.org/D88367
      
      (cherry picked from commit 55f72730)
      29392497