Started 2 mo 15 days ago
Took 11 hr on green-dragon-13

Failed Build #6454 (Jul 8, 2019 4:03:43 AM)

Revisions
  • http://llvm.org/svn/llvm-project/llvm/trunk : 365306
  • http://llvm.org/svn/llvm-project/cfe/trunk : 365305
  • http://llvm.org/svn/llvm-project/compiler-rt/trunk : 365303
  • http://llvm.org/svn/llvm-project/debuginfo-tests/trunk : 364589
  • http://llvm.org/svn/llvm-project/libcxx/trunk : 365290
  • http://llvm.org/svn/llvm-project/clang-tools-extra/trunk : 365289
Changes
  1. [ARM] Relax constraints on operands of VQxDMLxDH instructions

    Summary:
    According to a recently updated Armv8-M spec
    (https://static.docs.arm.com/ddi0553/bh/DDI0553B_h_armv8m_arm.pdf) the
    32-bit width versions of the following instructions:
    * VQDMLADH
    * VQDMLADHX
    * VQRDMLADH
    * VQRDMLADHX
    * VQDMLSDH
    * VQDMLSDHX
    * VQRDMLSDH
    * VQRDMLSDHX
    are no longer unpredictable when their output register is the same as
    one of the input registers.

    This patch updates the assembler parser and the corresponding tests
    and also removes @earlyclobber from the instruction constraints.

    Reviewers: simon_tatham, ostannard, dmgreen, SjoerdMeijer, samparker

    Reviewed By: simon_tatham

    Subscribers: javed.absar, kristof.beyls, hiraditya, llvm-commits

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D64250 (detail)
    by miyuki
  2. [RISCV] Specify registers used for exception handling

    Implements the handling of __builtin_eh_return_regno().

    Differential Revision: https://reviews.llvm.org/D63417
    Patch by Edward Jones. (detail)
    by asb
  3. [ubsan][test] Fix several UBSan-* :: TestCases/ImplicitConversion tests on Solaris

    A couple of UBSan-*  :: TestCases/ImplicitConversion testcases FAIL on Solaris/x86
    (and Solaris/SPARC with https://reviews.llvm.org/D40900):

      FAIL: UBSan-AddressSanitizer-i386 :: TestCases/ImplicitConversion/signed-integer-truncation-or-sign-change-blacklist.c (49187 of 49849)
      ******************** TEST 'UBSan-AddressSanitizer-i386 :: TestCases/ImplicitConversion/signed-integer-truncation-or-sign-change-blacklist.c' FAILED ********************
      [...]
      Command Output (stderr):
      --
      /vol/llvm/src/compiler-rt/local/test/ubsan/TestCases/ImplicitConversion/signed-integer-truncation-or-sign-change-blacklist.c:53:11: error: CHECK: expected string not found in input
      // CHECK: {{.*}}signed-integer-truncation-or-sign-change-blacklist.c:[[@LINE-1]]:10: runtime error: implicit conversion from type '{{.*}}' (aka 'unsigned int') of value 4294967295 (32-bit, unsigned) to type '{{.*}}' (aka 'signed char') changed the value to -1 (8-bit, signed)
                ^
      <stdin>:1:1: note: scanning from here
      /vol/llvm/src/compiler-rt/local/test/ubsan/TestCases/ImplicitConversion/signed-integer-truncation-or-sign-change-blacklist.c:52:10: runtime error: implicit conversion from type 'uint32_t' (aka 'unsigned int') of value 4294967295 (32-bit, unsigned) to type 'int8_t' (aka 'char') changed the value to -1 (8-bit, signed)
      ^
      <stdin>:1:1: note: with "@LINE-1" equal to "52"
      /vol/llvm/src/compiler-rt/local/test/ubsan/TestCases/ImplicitConversion/signed-integer-truncation-or-sign-change-blacklist.c:52:10: runtime error: implicit conversion from type 'uint32_t' (aka 'unsigned int') of value 4294967295 (32-bit, unsigned) to type 'int8_t' (aka 'char') changed the value to -1 (8-bit, signed)
      ^
      <stdin>:1:69: note: possible intended match here
      /vol/llvm/src/compiler-rt/local/test/ubsan/TestCases/ImplicitConversion/signed-integer-truncation-or-sign-change-blacklist.c:52:10: runtime error: implicit conversion from type 'uint32_t' (aka 'unsigned int') of value 4294967295 (32-bit, unsigned) to type 'int8_t' (aka 'char') changed the value to -1 (8-bit, signed)
                                                                          ^

    This is always a difference for int8_t where signed char is expected, but only
    char seen.

    I could trace this to <sys/int_types.h> which has

      /*
       * Basic / Extended integer types
       *
       * The following defines the basic fixed-size integer types.
       *
       * Implementations are free to typedef them to Standard C integer types or
       * extensions that they support. If an implementation does not support one
       * of the particular integer data types below, then it should not define the
       * typedefs and macros corresponding to that data type.  Note that int8_t
       * is not defined in -Xs mode on ISAs for which the ABI specifies "char"
       * as an unsigned entity because there is no way to define an eight bit
       * signed integral.
       */
      #if defined(_CHAR_IS_SIGNED)
      typedef char int8_t;
      #else
      #if defined(__STDC__)
      typedef signed char int8_t;
      #endif
      #endif

    _CHAR_IS_SIGNED is always defined on both sparc and x86.  Since it seems ok
    to have either form, I've changed the affected tests to use
    '{{(signed )?}}char' instead of 'signed char'.

    Tested on x86_64-pc-solaris2.11, sparcv9-sun-solaris2.11, and x86_64-pc-linux-gnu.

    Differential Revision: https://reviews.llvm.org/D63984 (detail)
    by ro
  4. [ubsan][test] Don't disable ubsan testing on 64-bit Solaris/x86

    Unlike asan, which isn't supported yet on 64-bit Solaris/x86, there's no reason to disable
    ubsan.  This patch does that, but keeps the 64-bit ubsan-with-asan tests disabled.

    Tested on x86_64-pc-solaris2.11.

    Differential Revision: https://reviews.llvm.org/D63982 (detail)
    by ro
  5. [RISCV] Specify registers used in DWARF exception handling

    Defines RISCV registers for getExceptionPointerRegister() and
    getExceptionSelectorRegister().

    Differential Revision: https://reviews.llvm.org/D63411
    Patch by Edward Jones.
    Modified by Alex Bradbury to add CHECK lines to exception-pointer-register.ll. (detail)
    by asb
  6. [AArch64] Fix scalar vuqadd intrinsics operands

    Summary:
    Change the vuqadd scalar instrinsics to have the second argument as unsigned values, not signed,
    accordingly to https://developer.arm.com/architectures/instruction-sets/simd-isas/neon/intrinsics

    So now the compiler correctly warns that a undefined negative float conversion is being done.

    Reviewers: LukeCheeseman, john.brawn

    Reviewed By: john.brawn

    Subscribers: john.brawn, javed.absar, kristof.beyls, cfe-commits

    Tags: #clang

    Differential Revision: https://reviews.llvm.org/D64242 (detail)
    by dnsampaio
  7. [ARM] Fix null pointer dereference in CodeGen/ARM/Windows/stack-protector-msvc.ll.test after D64292/r365283

    CLI.CS may not be set. (detail)
    by maskray
  8. [AArch64] Fix vsqadd scalar intrinsics operands

    Summary:
    Change the vsqadd scalar instrinsics to have the second argument as signed values, not unsigned,
    accordingly to https://developer.arm.com/architectures/instruction-sets/simd-isas/neon/intrinsics

    The existing unsigned argument can cause faulty code as negative float to unsigned conversion is
    undefined, which llvm/clang optimizes away.

    Reviewers: LukeCheeseman, john.brawn

    Reviewed By: john.brawn

    Subscribers: john.brawn, javed.absar, kristof.beyls, cfe-commits

    Tags: #clang

    Differential Revision: https://reviews.llvm.org/D64239 (detail)
    by dnsampaio
  9. [UpdateTestChecks] Skip over .Lfunc_begin for RISC-V

    This mirrors the change made for X86 in rL336987. Without this patch,
    update_llc_test_checks will completely skip functions with personality
    functions. (detail)
    by asb
  10. [AMDGPU] Use a named predicate instead of a magic number.

    Reviewers: arsenm

    Reviewed By: arsenm

    Subscribers: arsenm, kzhuravl, jvesely, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye, hiraditya, llvm-commits

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D64201 (detail)
    by foad
  11. [X86] Allow execution domain fixing to turn SHUFPD into SHUFPS.

    This can help with code size on SSE targets where SHUFPD requires
    a 0x66 prefix and SHUFPS doesn't. (detail)
    by ctopper
  12. [X86] Make movsd commutable to shufpd with a 0x02 immediate on pre-SSE4.1 targets.

    This can help avoid a copy or enable load folding.

    On SSE4.1 targets we can commute it to blendi instead.

    I had to make shufpd with a 0x02 immediate commutable as well
    since we expect commuting to be reversible. (detail)
    by ctopper
  13. [RISCV] Support z and i operand modifiers

    Differential Revision: https://reviews.llvm.org/D57792
    Patch by James Clarke. (detail)
    by asb
  14. Make forward_list::remove/remove_if/unique all return void before C++20; undoes that bit of D58332. Thanks to Mikhail Maltsev for pointing this out (detail)
    by marshall
  15. [clangd] Avoid slow ostreams in URI conversion.

    This speeds up some hot paths significantly (e.g.  dex::generateProximityURIs
    by a third or so) (detail)
    by sammccall
  16. [clangd] Encapsulate fields in dex token. NFC (detail)
    by sammccall
  17. [X86] Add MOVSDrr->MOVLPDrm entry to load folding table. Add custom handling to turn UNPCKLPDrr->MOVHPDrm when load is under aligned.

    If the load is aligned we can turn UNPCKLPDrr into UNPCKLPDrm. (detail)
    by ctopper
  18. [llvm-bcanalyzer] Refactor and move to libLLVMBitReader

    This allows us to use the analyzer from unit tests.

    * Refactor the interface to use proper error handling for most functions
      after JF's work.
    * Move everything into a BitstreamAnalyzer class.
    * Move that to Bitcode/BitcodeAnalyzer.h.

    Differential Revision: https://reviews.llvm.org/D64116 (detail)
    by thegameg
  19. [NFC][PowerPC] Add the test add_cmp.ll (detail)
    by zhangkang
  20. Revert "[IRBuilder] Fold consistently for or/and whether constant is LHS or RHS"

    This reverts commit r365260 which broke the following tests:

        Clang :: CodeGenCXX/cfi-mfcall.cpp
        Clang :: CodeGenObjC/ubsan-nullability.m
        LLVM :: Transforms/LoopVectorize/AArch64/pr36032.ll (detail)
    by phosek
  21. [ARM] Add support for MSVC stack cookie checking

    Heavily based on the same for AArch64, from SVN r346469.

    Differential Revision: https://reviews.llvm.org/D64292 (detail)
    by mstorsjo
  22. Make ~mutex and ~condition_variable trivial on Windows.

    The implementations of __libcpp_mutex_destroy and __libcpp_condvar_destroy
    are already NOPs, so this optimization is safe to perform.

    See r365273 and PR27658 for more information. (detail)
    by ericwf
  23. gn build: Merge r355546

    Found by inspection; the sync script doesn't sync .ipp files. (detail)
    by nico
  24. gn build: Merge r365273 (detail)
    by nico
  25. gn build: Sort sync script output (detail)
    by nico
  26. gn build: Sort cxx_sources in libcxx build file

    Since these are in a custom list, `gn format` doesn't automatically sort
    them.

    Now their order matches the CMake build.

    No additions or deletions, this just sorts the files that are there. (detail)
    by nico
  27. gn build: Merge r365258 and follow-ups r365263, r365264 (detail)
    by nico
  28. [X86] Make sure load isn't volatile before shrinking it in MOVDDUP isel patterns. (detail)
    by ctopper
  29. [CodeGen] Add larger vector types for i32 and f32

    Some out of tree backend require larger vector type. Since maintaining the changes out of tree is difficult due to the many manual changes needed when adding a new type we are adding it even if no backend currently use it.

    Differential Revision: https://reviews.llvm.org/D64141

    Patch by Thomas Raoux! (detail)
    by majnemer
  30. Fix PR27658 - Make ~mutex trivial when possible.

    Currently std::mutex has a constexpr constructor, but a non-trivial
    destruction.

    The constexpr constructor is required to ensure the construction of a
    mutex with static storage duration happens at compile time, during
    constant initialization, and not during dynamic initialization.
    This means that static mutex's are always initialized and can be used
    safely during dynamic initialization without the "static initialization
    order fiasco".

    A trivial destructor is important for similar reasons. If a mutex is
    used during dynamic initialization it might also be used during program
    termination. If a static mutex has a non-trivial destructor it will be
    invoked during termination. This can introduce the "static
    deinitialization order fiasco".

    Additionally, function-local statics emit a guard variable around
    non-trivially destructible types. This results in horrible codegen and
    adds a runtime cost to every call to that function. non-local static's
    also result in slightly worse codegen but it's not as big of a problem.

    Example codegen can be found here: https://goo.gl/3CSzbM

    Note: This optimization is not safe with every pthread implementation.
    Some implementations allocate on the first call to pthread_mutex_lock
    and free the allocation in pthread_mutex_destroy.

    Also, changing the triviality of the destructor is not an ABI break.
    At least to the best of my knowledge :-) (detail)
    by ericwf
  31. Treat the range of representable values of floating-point types as [-inf, +inf] not as [-max, +max].

    Summary:
    Prior to r329065, we used [-max, max] as the range of representable
    values because LLVM's `fptrunc` did not guarantee defined behavior when
    truncating from a larger floating-point type to a smaller one. Now that
    has been fixed, we can make clang follow normal IEEE 754 semantics in this
    regard and take the larger range [-inf, +inf] as the range of representable
    values.

    In practice, this affects two parts of the frontend:
    * the constant evaluator no longer treats floating-point evaluations
       that result in +-inf as being undefined (because they no longer leave
       the range of representable values of the type)
    * UBSan no longer treats conversions to floating-point type that are
       outside the [-max, +max] range as being undefined

    In passing, also remove the float-divide-by-zero sanitizer from
    -fsanitize=undefined, on the basis that while it's undefined per C++
    rules (and we disallow it in constant expressions for that reason), it
    is defined by Clang / LLVM / IEEE 754.

    Reviewers: rnk, BillyONeal

    Subscribers: cfe-commits

    Tags: #clang

    Differential Revision: https://reviews.llvm.org/D63793 (detail)
    by rsmith
  32. [X86] SimplifyDemandedVectorEltsForTargetNode - fix shadow variable warning. NFCI.

    Fixes cppcheck warning. (detail)
    by rksimon
  33. [X86] LowerBuildVectorv16i8 - pull out repeated getOperand() call. NFCI. (detail)
    by rksimon
  34. [DAGCombine] convertBuildVecZextToZext - remove duplicate getOpcode() call. NFCI. (detail)
    by rksimon
  35. [X86] Add PS<->PD domain changing support for MOVH/MOVL load instructions and MOVH store instructions.

    These instructions don't have an integer domain equivalent, but
    we can at least change between the two floating point domains.

    This allows a smaller encoding on SSE targets if we can turn
    PD into PS. (detail)
    by ctopper
  36. [X86] Remove patterns from MOVLPSmr and MOVHPSmr instructions.

    These patterns are the same as the MOVLPDmr and MOVHPDmr patterns,
    but with a bitcast at the end. We can just select the PD instruction
    and let execution domain fixing switch to PS. (detail)
    by ctopper
  37. [X86] Add patterns to select MOVLPDrm from MOVSD+load and MOVHPD from UNPCKL+load.

    These narrow the load so we can only do it if the load isn't
    volatile.

    There also tests in vector-shuffle-128-v4.ll that this should
    support, but we don't seem to fold bitcast+load on pre-sse4.2
    targets due to the slow unaligned mem 16 flag. (detail)
    by ctopper
  38. [X86] Copy some test cases from vector-shuffle-sse1.ll to vector-shuffle-128-v4.ll and v8 where sse1 did better load folding. NFC (detail)
    by ctopper
  39. [Rewrite] Try to fix buildbot link fail left by r365263

    http://lab.llvm.org:8011/builders/clang-ppc64le-linux-multistage/builds/10272 (detail)
    by jdenny
  40. [Rewrite] Try to fix buildbot link fail caused by r365258

    http://lab.llvm.org:8011/builders/clang-ppc64le-linux-multistage/builds/10270 (detail)
    by jdenny
  41. [LFTR] Regenerate test checks; NFC (detail)
    by nikic
  42. Make list::remove/remove_if/unique all return void before C++20; undoes that bit of D58332. Thanks to Mikhail Maltsev for pointing this out (detail)
    by marshall
  43. [IRBuilder] Fold consistently for or/and whether constant is LHS or RHS

    Without this, we have the unfortunate property that tests are dependent on the order of operads passed the CreateOr and CreateAnd functions.  In actual usage, we'd promptly optimize them away, but it made tests slightly more verbose than they should have been. (detail)
    by reames
  44. [IRBuilder] Introduce helpers for and/or of multiple values at once

    We had versions of this code scattered around, so consolidate into one location.

    Not strictly NFC since the order of intermediate results may change in some places, but since these operations are associatives, should not change results. (detail)
    by reames
  45. [Rewrite] Extend to further accept CharSourceRange

    Some Rewrite functions are already overloaded to accept
    CharSourceRange, and this extends others in the same manner.  I'm
    calling these in code that's not ready to upstream, but I figure they
    might be useful to others in the meantime.

    Reviewed By: jdoerfert

    Differential Revision: https://reviews.llvm.org/D61467 (detail)
    by jdenny
  46. [TSan] Attempt to fix iOS on-device test (detail)
    by yln
  47. [RegisterCoalescer] Fix an overzealous assert

    Although removeCopyByCommutingDef deals with full copies, it is still
    possible to copy undef lanes and thus, we wouldn't have any a value
    number for these lanes.

    This fixes PR40215. (detail)
    by qcolombet
  48. RegUsageInfoCollector: Skip AMDGPU entry point functions

    I'm not sure if it's worth it or not to add a hook to disable the pass
    for an arbitrary function.

    This pass is taking up to 5% of compile time in tiny programs by
    iterating through all of the physical registers in every register
    class. This pass should be rewritten in terms of regunits. For now,
    skip doing anything for entry point functions. The vast majority of
    functions in the real world aren't callable, so just not running this
    will give the majority of the benefit. (detail)
    by arsenm
  49. XFAIL a few failing TSan-fiber tests for iOS (detail)
    by yln
  50. Remove `XFAIL: ios` from test that passes in CI (detail)
    by yln
  51. Revert "[FileCheck] Simplify numeric variable interface"

    This reverts commit 096600a4b073dd94a366cc8e57bff93c34ff6966. (detail)
    by hliao
  52. [FileCheck] Simplify numeric variable interface

    Summary:
    This patch simplifies 2 aspects in the FileCheckNumericVariable code.

    First, setValue() method is turned into a void function since being
    called only on undefined variable is an invariant and is now asserted
    rather than returned. This remove the assert from the callers.

    Second, clearValue() method is also turned into a void function since
    the only caller does not check its return value since it may be trying
    to clear the value of variable that is already cleared without this
    being noteworthy.

    Reviewers: jhenderson, chandlerc, jdenny, probinson, grimar, arichardson, rnk

    Subscribers: JonChesterfield, rogfer01, hfinkel, kristina, rnk, tra, arichardson, grimar, dblaikie, probinson, llvm-commits, hiraditya

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D64231 (detail)
    by thopre
  53. Improve MSVC visualization of annot_template_id tokens

    Now shows the actual annotated template. E.g.,
    {annot_template_id (A<int, double>)}

    Also a few miscellaneous fixes to visualizers of other types (detail)
    by mps
  54. AMDGPU: Fix assert in clang test (detail)
    by arsenm
  55. Revert "[TSan] Improve handling of stack pointer mangling in {set,long}jmp, pt.4"

    This reverts commit 6bb13da7c16f2a677cc285bb6ffeb79dfb0cfe64. (detail)
    by yln
  56. [SystemZ] Fix addcarry of usubo (PR42512)

    Only custom lower uaddo+addcarry or usubo+subcarry chains and leave
    mixtures like usubo+addcarry or uaddo+subcarry to the generic
    legalizer. Otherwise we run into issues because SystemZ uses
    different CC values for carries and borrows.

    Fixes https://bugs.llvm.org/show_bug.cgi?id=42512.

    Differential Revision: https://reviews.llvm.org/D64213 (detail)
    by nikic
  57. AMDGPU: Make AMDGPUPerfHintAnalysis an SCC pass

    Add a string attribute instead of directly setting
    MachineFunctionInfo. This avoids trying to get the analysis in the
    MachineFunctionInfo in a way that doesn't work with the new pass
    manager.

    This will also avoid re-visiting the call graph for every single
    function. (detail)
    by arsenm
  58. [CodeGen] Enhance `MachineInstrSpan` to allow the end of MBB to be used.

    Summary:
    - Explicitly specify the parent MBB to allow the end iterator to be
      used.

    Reviewers: aprantl, MatzeB, craig.topper, qcolombet

    Subscribers: arsenm, jvesely, nhaehnle, hiraditya, llvm-commits

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D64261 (detail)
    by hliao
  59. Bitstream reader: Fix undefined behavior seen after rL364464

    Summary:
    After rL364464 the following tests started to fail when
    running the clang-doc tests with an ubsan instrumented
    build of clang-doc:
        Clang Tools :: clang-doc/single-file-public.cpp
        Extra Tools Unit Tests :: clang-doc/./ClangDocTests/BitcodeTest.emitEnumInfoBitcode
        Extra Tools Unit Tests :: clang-doc/./ClangDocTests/BitcodeTest.emitMethodInfoBitcode
        Extra Tools Unit Tests :: clang-doc/./ClangDocTests/BitcodeTest.emitRecordInfoBitcode
        Extra Tools Unit Tests :: clang-doc/./ClangDocTests/SerializeTest.emitInfoWithCommentBitcode

    We need to check that the read value is in range for being
    casted to the llvm::bitc::FixedAbbrevIDs enum, before the
    cast in ClangDocBitcodeReader::skipUntilRecordOrBlock.

    SerializedDiagnosticReader::skipUntilRecordOrBlock was updated
    in the same way.

    Reviewers: jfb

    Reviewed By: jfb

    Subscribers: Bigcheese, vsapsai, bruno, ilya-biryukov, dexonsmith, kadircet, cfe-commits

    Tags: #clang

    Differential Revision: https://reviews.llvm.org/D64262 (detail)
    by bjope
  60. This patch makes swap functions constexpr. Both swap overloads, swap_ranges and iter_swap are updated (with tests). (detail)
    by zoecarver
  61. [PowerPC] Fold another unused variable into assertion. NFC. (detail)
    by d0k
  62. [PowerPC] Fold variable into assert. NFC.

    Avoids a warning in Release builds. (detail)
    by d0k
  63. [PowerPC] Remove unused variable. NFC. (detail)
    by d0k
  64. [X86] Correct the size check in foldMemoryOperandCustom.

    The Size either needs to be 0 meaning we aren't folding
    a stack reload. Or the stack slot needs to be at least
    16 bytes. I've also added a paranoia check ensure the
    RCSize is at leat 16 bytes as well. This avoids any
    FR32/FR64 surprises, but I think we already filtered
    those earlier.

    All of our test case have Size as either 0 or 16 and
    RCSize == 16. So the Size <= 16 check worked for those
    cases. (detail)
    by ctopper
  65. Revert "[libc++] Do not cleverly link against libc++abi just because it happens to be there"

    This reverts r365222, which broke the libc++ build bots. (detail)
    by Louis Dionne
  66. [PowerPC] Move TOC save to prologue when profitable

    The indirect call sequence on PPC requires that the TOC base register be saved
    prior to the indirect call and restored after the call since the indirect call
    may branch to a global entry point in another DSO which will update the TOC
    base. Over the last couple of years, we have improved this to:

    - be able to hoist TOC saves from loops (with changes to MachineLICM)
    - avoid multiple saves when one dominates the other[s]

    However, it is still possible to have multiple TOC saves dynamically in the
    execution path if there is no dominance relationship between them.

    This patch moves the TOC save to the prologue when one of the TOC saves is in a
    block that post-dominates entry (i.e. it cannot be avoided) or if it is in a
    block that is hotter than entry.

    Differential revision: https://reviews.llvm.org/D63803 (detail)
    by nemanjai
  67. Add lldb-mi deprecation to the release notes

    Differential revision: https://reviews.llvm.org/D64254 (detail)
    by Jonas Devlieghere
  68. [TSan] Improve handling of stack pointer mangling in {set,long}jmp, pt.5

    Remove unnecessary computation of mangled SP for ARM64 architecture.

    Reviewed By: dvyukov

    Differential Revision: https://reviews.llvm.org/D64022 (detail)
    by yln
  69. [TSan] Improve handling of stack pointer mangling in {set,long}jmp, pt.4

    For x86_64, since we don't clobber %rsi (2nd argument) anymore, we don't
    have to save/restore it.

    Reviewed By: dvyukov

    Differential Revision: https://reviews.llvm.org/D63946 (detail)
    by yln
  70. Add LLDB section to the release notes (detail)
    by Jonas Devlieghere
  71. [InferFunctionAttrs] add tests for 'dereferenceable' argument attribute; NFC (detail)
    by spatel
  72. [X86] Update SSE1 MOVLPSrm and MOVHPSrm isel patterns to ensure loads are non-volatile before folding.

    These patterns use 128-bit loads, but the instructions only load
    64-bits. We shouldn't narrow the load if its volatile.

    Fixes another variant of PR42079 (detail)
    by ctopper
  73. [X86] Remove unnecessary isel pattern for MOVLPSmr.

    This was identical to a pattern for MOVPQI2QImr with a bitcast
    as an input. But we should be able to turn MOVPQI2QImr into
    MOVLPSmr in the execution domain fixup pass so we shouldn't
    need this. (detail)
    by ctopper
  74. [NFC] A test commit to check the access permission. Removed a blank line. (detail)
    by cdevadas
  75. [libc++] Do not cleverly link against libc++abi just because it happens to be there

    Summary:
    Otherwise, when libcxxabi is not an enabled project in the monorepo, we
    get a link error because we try to link against non-existent cxxabi_shared.

    More generally, we shouldn't change the behavior of the build based on
    implicit things like whether a file happens to be at a specific path or
    not.

    Reviewers: EricWF

    Subscribers: mgorny, christof, jkorous, dexonsmith, libcxx-commits

    Tags: #libc

    Differential Revision: https://reviews.llvm.org/D63883 (detail)
    by Louis Dionne
  76. [docs][llvm-readobj] Add a note to options that do nothing in GNU output

    --section-data, --section-relocations and --section-symbols have no
    effect for GNU style ouput. This patch changes the docs to point this
    out, as it has caught me out on a couple of occasions.

    See also https://bugs.llvm.org/show_bug.cgi?id=42522. (detail)
    by jhenderson
  77. [FileCheck] Share variable instance among uses

    Summary:
    This patch changes expression support to use one instance of
    FileCheckNumericVariable per numeric variable rather than one per
    variable and per definition. The current system was only necessary for
    the last patch of the numeric expression support patch series in order
    to handle a line using a variable defined earlier on the same line from
    the input text. However this can be dealt more efficiently.

    Reviewers: jhenderson, chandlerc, jdenny, probinson, grimar, arichardson, rnk

    Subscribers: JonChesterfield, rogfer01, hfinkel, kristina, rnk, tra, arichardson, grimar, dblaikie, probinson, llvm-commits, hiraditya

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D64229 (detail)
    by thopre
  78. [FileCheck] Don't diagnose undef vars at parse time

    Summary:
    Diagnosing use of undefined variables takes place in
    parseNumericVariableUse() and printSubstitutions() for numeric variables
    but only takes place in printSubstitutions() for string variables. The
    reason for the split location of diagnostics is that parsing is not
    aware of the clearing of variables due to --enable-var-scope and thus
    use of variables cleared in this way can only be catched by
    printSubstitutions().

    Beyond the code level inconsistency, there is also a user facing
    inconsistency since diagnostics look different between the two
    functions. While the diagnostic in printSubstitutions is more verbose,
    doing the diagnostic there allows to diagnose all undefined variables
    rather than just the first one and error out.

    This patch create dummy variable definition when encountering a use of
    undefined variable so that parsing can proceed and be diagnosed by
    printSubstitutions() later. Tests that were testing whether parsing
    fails in such case are thus modified accordingly.

    Reviewers: jhenderson, chandlerc, jdenny, probinson, grimar, arichardson, rnk

    Subscribers: JonChesterfield, rogfer01, hfinkel, kristina, rnk, tra, arichardson, grimar, dblaikie, probinson, llvm-commits, hiraditya

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D64228 (detail)
    by thopre
  79. [AMDGPU] Added a new metadata for multi grid sync implicit argument

    Patch by Christudasan Devadasan.

    Differential Revision: https://reviews.llvm.org/D63886 (detail)
    by yaxunl
  80. ScheduleDAG: Fix incorrectly killing registers in bundles

    When looking for uses/defs to add kill flags, the iterator was double
    incremented, skipping the first instruction in the bundle. The use
    register in the first bundle instruction was then incorrectly killed.
    The "First" instruction should be the BUNDLE itself as the proper
    reverse iterator endpoint. (detail)
    by arsenm
  81. [ThinLTO] Attempt to recommit r365188 after alignment fix (detail)
    by evgeny777
  82. [ARM] MVE patterns for VMVN, VORR and VBIC

    This add simple Q register forms of bitwise not instructions.

    Differential Revision: https://reviews.llvm.org/D63983 (detail)
    by dmgreen
  83. gn build: Merge r365203 (detail)
    by nico
  84. Add a comment explaining why a function exists (detail)
    by nico
  85. [AMDGPU] DPP combiner: recognize identities for more opcodes

    Summary:
    This allows the DPP combiner to kick in more often. For example the
    exclusive scan generated by the atomic optimizer for a divergent atomic
    add used to look like this:

            v_mov_b32_e32 v3, v1
            v_mov_b32_e32 v5, v1
            v_mov_b32_e32 v6, v1
            v_mov_b32_dpp v3, v2  wave_shr:1 row_mask:0xf bank_mask:0xf
            s_nop 1
            v_add_u32_dpp v4, v3, v3  row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:0
            v_mov_b32_dpp v5, v3  row_shr:2 row_mask:0xf bank_mask:0xf
            v_mov_b32_dpp v6, v3  row_shr:3 row_mask:0xf bank_mask:0xf
            v_add3_u32 v3, v4, v5, v6
            v_mov_b32_e32 v4, v1
            s_nop 1
            v_mov_b32_dpp v4, v3  row_shr:4 row_mask:0xf bank_mask:0xe
            v_add_u32_e32 v3, v3, v4
            v_mov_b32_e32 v4, v1
            s_nop 1
            v_mov_b32_dpp v4, v3  row_shr:8 row_mask:0xf bank_mask:0xc
            v_add_u32_e32 v3, v3, v4
            v_mov_b32_e32 v4, v1
            s_nop 1
            v_mov_b32_dpp v4, v3  row_bcast:15 row_mask:0xa bank_mask:0xf
            v_add_u32_e32 v3, v3, v4
            s_nop 1
            v_mov_b32_dpp v1, v3  row_bcast:31 row_mask:0xc bank_mask:0xf
            v_add_u32_e32 v1, v3, v1
            v_add_u32_e32 v1, v2, v1
            v_readlane_b32 s0, v1, 63

    But now most of the dpp movs are combined into adds:

            v_mov_b32_e32 v3, v1
            v_mov_b32_e32 v5, v1
            s_nop 0
            v_mov_b32_dpp v3, v2  wave_shr:1 row_mask:0xf bank_mask:0xf
            s_nop 1
            v_add_u32_dpp v4, v3, v3  row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:0
            v_mov_b32_dpp v5, v3  row_shr:2 row_mask:0xf bank_mask:0xf
            v_mov_b32_dpp v1, v3  row_shr:3 row_mask:0xf bank_mask:0xf
            v_add3_u32 v1, v4, v5, v1
            s_nop 1
            v_add_u32_dpp v1, v1, v1  row_shr:4 row_mask:0xf bank_mask:0xe
            s_nop 1
            v_add_u32_dpp v1, v1, v1  row_shr:8 row_mask:0xf bank_mask:0xc
            s_nop 1
            v_add_u32_dpp v1, v1, v1  row_bcast:15 row_mask:0xa bank_mask:0xf
            s_nop 1
            v_add_u32_dpp v1, v1, v1  row_bcast:31 row_mask:0xc bank_mask:0xf
            v_add_u32_e32 v1, v2, v1
            v_readlane_b32 s0, v1, 63

    Reviewers: arsenm, vpykhtin

    Subscribers: kzhuravl, nemanjai, jvesely, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye, hiraditya, kbarton, MaskRay, jfb, llvm-commits

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D64207 (detail)
    by foad
  86. NFC: Add an explicit return for safety and consistency

    This case implicitly falls-through, which is fine now as it's at the end of the
    function, but it seems like an accident waiting to happen. (detail)
    by hamzasood
  87. Removed the test case added in D63538 due to windows buildbot failures (detail)
    by szelethus
  88. [analyzer] Add a debug analyzer config to place an event for each tracked condition

    Differential Revision: https://reviews.llvm.org/D63642 (detail)
    by szelethus
  89. [analyzer] Track terminator conditions on which a tracked expression depends

    This patch is a major part of my GSoC project, aimed to improve the bug
    reports of the analyzer.

    TL;DR: Help the analyzer understand that some conditions are important,
    and should be explained better. If an CFGBlock is a control dependency
    of a block where an expression value is tracked, explain the condition
    expression better by tracking it.

    if (A) // let's explain why we believe A to be true
      10 / x; // division by zero

    This is an experimental feature, and can be enabled by the
    off-by-default analyzer configuration "track-conditions".

    In detail:

    This idea was inspired by the program slicing algorithm. Essentially,
    two things are used to produce a program slice (a subset of the program
    relevant to a (statement, variable) pair): data and control
    dependencies. The bug path (the linear path in the ExplodedGraph that leads
    from the beginning of the analysis to the error node) enables to
    analyzer to argue about data dependencies with relative ease.

    Control dependencies are a different slice of the cake entirely.

    Just because we reached a branch during symbolic execution, it
    doesn't mean that that particular branch has any effect on whether the
    bug would've occured. This means that we can't simply rely on the bug
    path to gather control dependencies.

    In previous patches, LLVM's IDFCalculator, which works on a control flow
    graph rather than the ExplodedGraph was generalized to solve this issue.
    We use this information to heuristically guess that the value of a tracked
    expression depends greatly on it's control dependencies, and start
    tracking them as well.

    After plenty of evaluations this was seen as great idea, but still
    lacking refinements (we should have different descriptions about a
    conditions value), hence it's off-by-default.

    Differential Revision: https://reviews.llvm.org/D62883 (detail)
    by szelethus
  90. Reverted r365188 due to alignment problems on i686-android (detail)
    by evgeny777
  91. [clangd] Added highlighting for variable references (declrefs)

    Summary: Added highlighting for variable references using VisitDeclRefExpr.

    Reviewers: hokein, sammccall

    Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, kadircet, cfe-commits

    Tags: #clang

    Differential Revision: https://reviews.llvm.org/D64199 (detail)
    by jvikstrom
  92. [clangd] Deduplicate clang-tidy diagnostic messages.

    Summary:
    Clang-tidy checks may emit duplicated messages (clang-tidy tool
    deduplicate them in its custom diagnostic consumer), and we may show
    multiple duplicated diagnostics in the UI, which is really bad.

    This patch makes clangd do the deduplication, and revert the change
    rL363889.

    Reviewers: sammccall

    Subscribers: ilya-biryukov, MaskRay, jkorous, mgrang, arphaman, kadircet, cfe-commits

    Tags: #clang

    Differential Revision: https://reviews.llvm.org/D64127 (detail)
    by hokein
  93. Scalable Vector IR Type with further LTO fixes

    Reintroduces the scalable vector IR type from D32530, after it was reverted
    a couple of times due to increasing chromium LTO build times. This latest
    incarnation removes the walk over aggregate types from the verifier entirely,
    in favor of rejecting scalable vectors in the isValidElementType methods in
    ArrayType and StructType. This removes the 70% degradation observed with
    the second repro tarball from PR42210.

    Reviewers: thakis, hans, rengolin, sdesmalen

    Reviewed By: sdesmalen

    Differential Revision: https://reviews.llvm.org/D64079 (detail)
    by huntergr
  94. This reverts r365061 and r365062 (test update)

    Revision r365061 changed a skip of debug instructions for a skip
    of meta instructions. This is not safe, as IMPLICIT_DEF is classed
    as a meta instruction. (detail)
    by rlougher
  95. [RISCV] Support @llvm.readcyclecounter() Intrinsic

    On RISC-V, the `cycle` CSR holds a 64-bit count of the number of clock
    cycles executed by the core, from an arbitrary point in the past. This
    matches the intended semantics of `@llvm.readcyclecounter()`, which we
    currently leave to the default lowering (to the constant 0).

    With this patch, we will now correctly lower this intrinsic to the
    intended semantics, using the user-space instruction `rdcycle`. On
    64-bit targets, we can directly lower to this instruction.

    On 32-bit targets, we need to do more, as `rdcycle` only returns the low
    32-bits of the `cycle` CSR. In this case, we perform a custom lowering,
    based on the PowerPC lowering, using `rdcycleh` to obtain the high
    32-bits of the `cycle` CSR. This custom lowering inserts a new basic
    block which detects overflow in the high 32-bits of the `cycle` CSR
    during reading (because multiple instructions are required to read). The
    emitted assembly matches the suggested assembly in the RISC-V
    specification.

    Differential Revision: https://reviews.llvm.org/D64125 (detail)
    by lenary
  96. lld, llvm-dlltool, llvm-lib: Use getAsString() instead of getSpelling() for printing unknown args

    Since OPT_UNKNOWN args never have any values and consist only of
    spelling (and are never aliased), this doesn't make any difference in
    practice, but it's more consistent with Arg's guidance to use
    getAsString() for diagnostics, and it matches what clang does.

    Also tweak two tests to use an unknown option that contains '=' for
    additional coverage while here. (The new tests pass fine with the old
    code too though.) (detail)
    by nico
  97. Revert r365198 as this accidentally commited something that
    should not have been added. (detail)
    by rlougher
  98. This reverts r365061 and r365062 (test update)

    Revision r365061 changed a skip of debug instructions for a skip
    of meta instructions. This is not safe, as IMPLICIT_DEF is classed
    as a meta instruction. (detail)
    by rlougher
  99. [analyzer][IDF] Add a control dependency calculator + a new debug checker

    I intend to improve the analyzer's bug reports by tracking condition
    expressions.

    01 bool b = messyComputation();
    02 int i = 0;
    03 if (b) // control dependency of the bug site, let's explain why we assume val
    04        // to be true
    05   10 / i; // warn: division by zero

    I'll detail this heuristic in the followup patch, strictly related to this one
    however:

    * Create the new ControlDependencyCalculator class that uses llvm::IDFCalculator
      to (lazily) calculate control dependencies for Clang's CFG.
    * A new debug checker debug.DumpControlDependencies is added for lit tests
    * Add unittests

    Differential Revision: https://reviews.llvm.org/D62619 (detail)
    by szelethus
  100. [RISCV][NFC] Replace hard-coded CSR duplication with symbolic references

    Reviewers: asb, lenary

    Reviewed By: asb, lenary

    Subscribers: MaskRay, hiraditya, rbar, johnrusso, simoncook, apazos, sabuasal, niosHD, kito-cheng, shiva0217, zzheng, edward-jones, rogfer01, MartinMosbeck, brucehoult, the_o, rkruppe, PkmX, jocewei, psnobl, benna, Jim, llvm-commits

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D64139

    Patch by James Clarke (jrtc27) (detail)
    by lenary
  101. Fix MSVC/cppcheck Use::Next isn't initialized warning. NFCI. (detail)
    by rksimon
  102. [llvm-objcopy] Allow strip symtab from executables and DSOs

    Differential revision: https://reviews.llvm.org/D61672 (detail)
    by evgeny777
  103. [FileCheck] Fix comment in parseNumericVariableUse

    Summary:
    Comment explaining the interaction between parsing of numeric variable
    definition and uses in parseNumericVariableUse is stale since it
    suggests both use and definition parsing is done in the same function.
    This was the case in a previous version of the patch committed as
    71d3f227a790d6cf39d8c6267940e0dc0c237e11 but is no longer the case. This
    patch updates the comment accordingly.

    Reviewers: jhenderson, chandlerc, jdenny, probinson, grimar, arichardson, rnk

    Subscribers: JonChesterfield, rogfer01, hfinkel, kristina, rnk, tra, arichardson, grimar, dblaikie, probinson, llvm-commits, hiraditya

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D64227 (detail)
    by thopre
  104. [FileCheck] Factor some parsing checks out

    Summary:
    Both callers of parseNumericVariableDefinition() perform the same extra
    check that no character is found after the variable name. This patch
    factors out this check into parseNumericVariableDefinition().

    Reviewers: jhenderson, chandlerc, jdenny, probinson, grimar, arichardson, rnk

    Subscribers: JonChesterfield, rogfer01, hfinkel, kristina, rnk, tra, arichardson, grimar, dblaikie, probinson, llvm-commits, hiraditya

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D64226 (detail)
    by thopre
  105. [FileCheck] Add missing final dot in comment (detail)
    by thopre
  106. [NFC] Test commit access (detail)
    by gamesh411
  107. [ThinLTO] Attempt to recommit r365040 after caching fix

    It's possible that some function can load and store the same
    variable using the same constant expression:

    store %Derived* @foo, %Derived** bitcast (%Base** @bar to %Derived**)
    %42 = load %Derived*, %Derived** bitcast (%Base** @bar to %Derived**)

    The bitcast expression was mistakenly cached while processing loads,
    and never examined later when processing store. This caused @bar to
    be mistakenly treated as read-only variable. See load-store-caching.ll. (detail)
    by evgeny777
  108. [docs][llvm-objcopy] Improve some wording. (detail)
    by jhenderson
  109. Make joined instances of JoinedOrSeparate flags point to the unaliased args, like all other arg types do

    This fixes an 8-year-old regression. r105763 made it so that aliases
    always refer to the unaliased option – but it missed the "joined" branch
    of JoinedOrSeparate flags. (r162231 then made the Args classes
    non-virtual, and r169344 moved them from clang to llvm.)

    Back then, there was no JoinedOrSeparate flag that was an alias, so it
    wasn't observable. Now /U in CLCompatOptions is a JoinedOrSeparate alias
    in clang, and warn_slash_u_filename incorrectly used the aliased arg id
    (using the unaliased one isn't really a regression since that warning
    checks if the undefined macro contains slash or backslash and only then
    emits the warning – and no valid use will pass "-Ufoo/bar" or similar).

    Also, lld has many JoinedOrSeparate aliases, and due to this bug it had
    to explicitly call `getUnaliasedOption()` in a bunch of places, even
    though that shouldn't be necessary by design. After this fix in Option,
    these calls really don't have an effect any more, so remove them.

    No intended behavior change.

    (I accidentally fixed this bug while working on PR29106 but then
    wondered why the warn_slash_u_filename broke. When I figured it out, I
    thought it would make sense to land this in a separate commit.)

    Differential Revision: https://reviews.llvm.org/D64156 (detail)
    by nico
  110. gn build: Merge r365179 (detail)
    by nico
  111. [Object/ELF.h] - Improve error reporting.

    The errors coming from ELF.h are usually not very
    useful because they are uninformative. This patch is a
    first step to improve the situation.

    I tested this patch with a run of check-llvm and found
    that few messages are untested. In this patch, I did not
    add more tests but marked all such cases with a "TODO" comment.

    For all tested messages I extended the error text to
    provide more details (see test cases changed).

    Differential revision: https://reviews.llvm.org/D64014 (detail)
    by grimar
  112. lld-link: Make /debugtype: option work better

    - The code tried to pass false to split()'s KeepEmpty parameter, but
      instead passed it to MaxSplit. As a result, it would never split on
      commas. This has been broken since the flag was added in r278056.

    - The code used getSpelling() for getting the argument's values, but
      getSpelling() always returns the `/debugtype:` prefix without any
      values. So if any /debugtype: flag was passed, it always resulted in
      an "unknown option:" warning. (The warning code then used the correct
      getValue() for printing the invalid option, so the warning looked
      kind of like it made sense.) This regressed in r342894.

    Slightly improve the test coverage of this feature (but since I don't
    know what this flag actually does, there's still no test for the correct
    semantics), and add a comment to getSpelling() explaining what it does. (detail)
    by nico
  113. Fix a buildbot failure due to the AST's lifetime ending before the test (detail)
    by szelethus
  114. [X86][SSE] LowerINSERT_VECTOR_ELT - early out for out of range indices

    Fixes OSS-Fuzz #15662 (detail)
    by rksimon
  115. [analyzer][Dominators][NFC] Add unit tests

    Differential Revision: https://reviews.llvm.org/D62611 (detail)
    by szelethus
  116. [ARM] MVE VMOV immediate handling

    This adds some handling for VMOVimm, using the same method that NEON uses. We
    create VMOVIMM/VMVNIMM/VMOVFPIMM nodes based on the immediate, and select them
    using the now renamed ARMvmovImm/etc. There is also an extra 64bit immediate
    mode that I have not yet added here.

    Code by David Sherwood

    Differential Revision: https://reviews.llvm.org/D63884 (detail)
    by dmgreen
  117. [CFG] Add a new function to get the proper condition of a CFGBlock

    getTerminatorCondition() returned a condition that may be outside of the
    block, while the new function returns the proper one:

    if (A && B && C) {}

    Return C instead of A && B && C.

    Differential Revision: https://reviews.llvm.org/D63538 (detail)
    by szelethus
  118. [ARM] MVE fp to int conversions

    This adds the patterns needed for fptosi and sitofp.

    Differential Revision: https://reviews.llvm.org/D63729 (detail)
    by dmgreen
  119. [RISCV] Delete a ctor that is commented out. NFC (detail)
    by maskray
  120. Silence gcc warning "control reaches end of non-void function" [NFCI]

    Without this fix gcc (7.4) complains with

    /data/repo/master/clang/lib/CodeGen/CGObjCMac.cpp: In member function 'std::__cxx11::string {anonymous}::CGObjCCommonMac::GetSectionName(llvm::StringRef, llvm::StringRef)':
    /data/repo/master/clang/lib/CodeGen/CGObjCMac.cpp:4944:1: error: control reaches end of non-void function [-Werror=return-type]
      }
      ^

    All values in the ObjectFormatType enum are currently handled in the switch
    but gcc complains anyway. (detail)
    by uabelho
  121. [llvm-objcopy][NFC] Refactor output target parsing v2

    Summary:
    Use an enum instead of string to hold the output file format in Config.InputFormat and Config.OutputFormat. It's essential to support other output file formats other than ELF.

    This patch originally has been submitted as D63239. However, there was an use-of-uninitialized-value bug and reverted in r364379 (git commit 4ee933c).

    This patch includes the fix for the bug by setting Config.InputFormat/Config.OutputFormat in parseStripOptions.

    Reviewers: espindola, alexshap, rupprecht, jhenderson

    Reviewed By: jhenderson

    Subscribers: emaste, arichardson, jakehehrlich, MaskRay, llvm-commits

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D64170 (detail)
    by seiya
  122. [llvm-objcopy][test] Fix respect-umask.test after D62718/r365162 (detail)
    by maskray
  123. Fix patch not passing test cases (detail)
    by abrachet
  124. Temporarily stop failing test case (detail)
    by abrachet
  125. gn build: Merge r365130. (detail)
    by pcc
  126. gn build: Merge r365103. (detail)
    by pcc
  127. gn build: Merge r365007. (detail)
    by pcc
  128. gn build: Merge r365091. (detail)
    by pcc
  129. [X86] Add custom isel to select ADD/SUB/OR/XOR/AND to their non-immediate forms under optsize when the immediate has additional users.

    Summary:
    We attempt to prevent folding immediates with multiple users under optsize. But we only do this from store nodes and X86ISD::ADD/SUB/XOR/OR/AND patterns. We don't do it for ISD::ADD/SUB/XOR/OR/AND even though we count them as users when deciding whether to fold into other nodes. This leads to situations where we block folding to a compare for example, but still fold into an AND or OR as seen in PR27202.

    Unfortunately touching the isel patterns in tablegen for the ISD::ADD/SUB/XOR/OR/AND opcodes will cause the patterns to be unusable for fast isel. And we don't have a way to make a fast isel only pattern.

    To workaround this, this patch adds custom isel in front of the isel table that will select the non-immediate forms if the immediate has additional users. This may create some issues for ANDN and NOT matching. And there's room for improvement with unsigned 32 immediates on 64-bit AND.

    This patch needs more thorough test cases, but I wanted to get feedback on the direction. Please send me any other test cases you've seen in the wild.

    I think we probably have the same issue with the immediate matching when we fold RMW from X86ISD::ADD/SUB/XOR/OR/AND. And our TEST immedaite shrinking logic. Our cost modeling for immediates that can fit in a sign extended 8-bit immediate on a 16/32/64 bit operation is completely wrong.

    I also wonder if we should update the ConstantHoisting cost model and block folding for "opaque" constants. But of course constants can still be created by DAG combine and lowering optimizations.

    Fixes PR27202

    Reviewers: spatel, RKSimon, andreadb

    Reviewed By: RKSimon

    Subscribers: jsji, hiraditya, jdoerfert, llvm-commits

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D59909 (detail)
    by ctopper
  130. [llvm-objcopy] Change handling of output file permissions

    Summary: Address bug [[ https://bugs.llvm.org/show_bug.cgi?id=42082 | 42082 ]] where files were always outputted with 0775 permissions. Now, the output file is given either 0666 or 0777 if the object is executable.

    Reviewers: espindola, alexshap, rupprecht, jhenderson, jakehehrlich, MaskRay

    Reviewed By: rupprecht, jhenderson, jakehehrlich, MaskRay

    Subscribers: emaste, arichardson, jakehehrlich, MaskRay, llvm-commits

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D62718 (detail)
    by abrachet
  131. [mips] Refactor expandSeq and expandSeqI methods. NFC (detail)
    by atanasyan
  132. [NFC] Make some ObjectFormatType switches covering

    Summary:
    This patch removes the `default` case from some switches on
    `llvm::Triple::ObjectFormatType`, and cases for the missing enumerators
    are then added.

    For `UnknownObjectFormat`, the action (`llvm_unreachable`) for the
    `default` case is kept.

    For the other unhandled cases, `report_fatal_error` is used instead.

    Reviewers: sfertile, jasonliu, daltenty

    Reviewed By: sfertile

    Subscribers: wuzish, aheejin, jsji, cfe-commits, llvm-commits

    Tags: #clang, #llvm

    Differential Revision: https://reviews.llvm.org/D63767 (detail)
    by hubert.reinterpretcast
  133. [docs] [tools] Fix see also links

    Summary: Changes "see also" links to use :manpage: instead of plain text or the form `name|name` which was being treated literally, not as a link.

    Reviewers: jhenderson, rupprecht

    Reviewed By: jhenderson

    Subscribers: llvm-commits

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D63970 (detail)
    by abrachet
  134. docs: add documentation for `LIBCXX_INCLUDE_TESTS`

    Add some missing documentation for the `LIBCXX_INCLUDE_TESTS` option.

    Patch by Jean Heyd Meneide! (detail)
    by Saleem Abdulrasool
  135. [modules] Add PP callbacks for entering and leaving a submodule. (detail)
    by vvassilev
  136. [clangd] Mark a couple of unimportant flags as hidden. NFC (detail)
    by sammccall
  137. [DAGCombiner] Don't combine (addcarry (uaddo X, Y), 0, Carry) -> (addcarry X, Y, Carry) if the Carry comes from the uaddo.

    Summary:
    The uaddo won't be removed and the addcarry will still be
    dependent on the uaddo. So we'll just increase the use count
    of X and Y and potentially require a COPY.

    Reviewers: spatel, RKSimon, deadalnix

    Reviewed By: RKSimon

    Subscribers: hiraditya, llvm-commits

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D64190 (detail)
    by ctopper
  138. [AMDGPU] Custom lower INSERT_SUBVECTOR v3, v4, v5, v8

    Summary:
    Since the changes to introduce vec3 and vec5, INSERT_VECTOR for these
    sizes has been marked "expand", which made LegalizeDAG lower it to loads
    and stores via a stack slot. The code got optimized a bit later, but the
    now-unused stack slot was never deleted.

    This commit avoids that problem by custom lowering INSERT_SUBVECTOR into
    an EXTRACT_VECTOR_ELT and INSERT_VECTOR_ELT for each element in the
    subvector to insert.

    V2: Addressed review comments re test.

    Differential Revision: https://reviews.llvm.org/D63160

    Change-Id: I9e3c13e36f68cfa3431bb9814851cc1f673274e1 (detail)
    by tpr
  139. [InstCombine] allow undef elements when forming splat from chain of insertelements

    We allow forming a splat (broadcast) shuffle, but we were conservatively limiting
    that to cases where all elements of the vector are specified. It should be safe
    from a codegen perspective to allow undefined lanes of the vector because the
    expansion of a splat shuffle would become the chain of inserts again.

    Forming splat shuffles can reduce IR and help enable further IR transforms.
    Motivating bugs:
    https://bugs.llvm.org/show_bug.cgi?id=42174
    https://bugs.llvm.org/show_bug.cgi?id=16739

    Differential Revision: https://reviews.llvm.org/D63848 (detail)
    by spatel

Started by upstream project clang-stage2-cmake-RgSan_relay build number 1170
originally caused by:

This run spent:

  • 3 ms waiting;
  • 11 hr build duration;
  • 11 hr total from scheduled to completion.
Test Result (2 failures / +2)

Identified problems

Regression test failed

This build failed because a regression test in the test suite FAILed. See the test report for details.
Indication 1

Ninja target failed

Below is a link to the first failed ninja target.
Indication 2