Started 1 mo 3 days ago
Took 17 hr on green-dragon-08

Failed Build #5483 (Sep 19, 2019 6:10:34 AM)

Revisions
  • http://llvm.org/svn/llvm-project/llvm/trunk : 372315
  • http://llvm.org/svn/llvm-project/cfe/trunk : 372318
  • http://llvm.org/svn/llvm-project/compiler-rt/trunk : 372312
  • http://llvm.org/svn/llvm-project/debuginfo-tests/trunk : 364589
  • http://llvm.org/svn/llvm-project/libcxx/trunk : 372242
  • http://llvm.org/svn/llvm-project/clang-tools-extra/trunk : 372317
Changes
  1. [CUDA][HIP] Fix typo in `BestViableFunction`

    Summary:
    - Should consider viable ones only when checking SameSide candidates.
    - Replace erasing with clearing viable flag to reduce data
      moving/copying.
    - Add one and revise another one as the diagnostic message are more
      relevant compared to previous one.

    Reviewers: tra

    Subscribers: cfe-commits, yaxunl

    Tags: #clang

    Differential Revision: https://reviews.llvm.org/D67730 (detail/ViewSVN)
    by hliao
  2. [clang-tidy] Fix bugprone-argument-comment-check to correctly ignore implicit constructors.

    Summary:
    After revision 370919, this check incorrectly flags certain cases of implicit
    constructors. Specifically, if an argument is annotated with an
    argument-comment and the argument expression triggers an implicit constructor,
    then the argument comment is associated with argument of the implicit
    constructor.

    However, this only happens when the constructor has more than one argument.
    This revision fixes the check for implicit constructors and adds a regression
    test for this case.

    Note: r370919 didn't cause this bug, it simply uncovered it by fixing another
    bug that was masking the behavior.

    Reviewers: gribozavr

    Subscribers: xazax.hun, cfe-commits

    Tags: #clang

    Differential Revision: https://reviews.llvm.org/D67744 (detail/ViewSVN)
    by ymandel
  3. [DAG] Add SelectionDAG::MaxRecursionDepth constant

    As commented on D67557 we have a lot of uses of depth checks all using magic numbers.

    This patch adds the SelectionDAG::MaxRecursionDepth constant and moves over some general cases to use this explicitly.

    Differential Revision: https://reviews.llvm.org/D67711 (detail/ViewSVN)
    by rksimon
  4. Revert r372285 "GlobalISel: Don't materialize immarg arguments to intrinsics"

    This broke the Chromium build, causing it to fail with e.g.

      fatal error: error in backend: Cannot select: t362: v4i32 = X86ISD::VSHLI t392, Constant:i8<15>

    See llvm-commits thread of r372285 for details.

    This also reverts r372286, r372287, r372288, r372289, r372290, r372291,
    r372292, r372293, r372296, and r372297, which seemed to depend on the
    main commit.

    > Encode them directly as an imm argument to G_INTRINSIC*.
    >
    > Since now intrinsics can now define what parameters are required to be
    > immediates, avoid using registers for them. Intrinsics could
    > potentially want a constant that isn't a legal register type. Also,
    > since G_CONSTANT is subject to CSE and legalization, transforms could
    > potentially obscure the value (and create extra work for the
    > selector). The register bank of a G_CONSTANT is also meaningful, so
    > this could throw off future folding and legalization logic for AMDGPU.
    >
    > This will be much more convenient to work with than needing to call
    > getConstantVRegVal and checking if it may have failed for every
    > constant intrinsic parameter. AMDGPU has quite a lot of intrinsics wth
    > immarg operands, many of which need inspection during lowering. Having
    > to find the value in a register is going to add a lot of boilerplate
    > and waste compile time.
    >
    > SelectionDAG has always provided TargetConstant for constants which
    > should not be legalized or materialized in a register. The distinction
    > between Constant and TargetConstant was somewhat fuzzy, and there was
    > no automatic way to force usage of TargetConstant for certain
    > intrinsic parameters. They were both ultimately ConstantSDNode, and it
    > was inconsistently used. It was quite easy to mis-select an
    > instruction requiring an immediate. For SelectionDAG, start emitting
    > TargetConstant for these arguments, and using timm to match them.
    >
    > Most of the work here is to cleanup target handling of constants. Some
    > targets process intrinsics through intermediate custom nodes, which
    > need to preserve TargetConstant usage to match the intrinsic
    > expectation. Pattern inputs now need to distinguish whether a constant
    > is merely compatible with an operand or whether it is mandatory.
    >
    > The GlobalISelEmitter needs to treat timm as a special case of a leaf
    > node, simlar to MachineBasicBlock operands. This should also enable
    > handling of patterns for some G_* instructions with immediates, like
    > G_FENCE or G_EXTRACT.
    >
    > This does include a workaround for a crash in GlobalISelEmitter when
    > ARM tries to uses "imm" in an output with a "timm" pattern source. (detail/ViewSVN)
    by hans
  5. [ARM] MVE i1 splat

    We needn't BFI each lane individually into a predicate register when each lane
    in the same. A simple sign extend and a vmsr will do.

    Differential Revision: https://reviews.llvm.org/D67653 (detail/ViewSVN)
    by dmgreen
  6. [cmake] Strip quotes in try_compile_only

    After r372209, the compile command can end up including an argument with
    quotes in it, e.g.

      -fprofile-instr-use="/foo/bar.profdata"

    when invoking the compiler with execute_process, the compiler ends up
    getting that argument with quotes and all, and fails to open the file.

    This all seems horribly broken, but one way of working around it is to
    simply strip the quotes from the string here. If they were there to
    protect a path that's got spaces in it, that wasn't going to work
    anyway because the string is later split by spaces. (detail/ViewSVN)
    by hans
  7. Revert [llvm-ar] Include a line number when failing to parse an MRI script

    Revert r372309 due to buildbot failures

    Differential Revision: https://reviews.llvm.org/D67449 (detail/ViewSVN)
    by gbreynoo
  8. Fix -Wdocumentation "@returns in a void function" warning. NFCI. (detail/ViewSVN)
    by rksimon
  9. [llvm-ar] Include a line number when failing to parse an MRI script

    Errors that occur when reading an MRI script now include a corresponding
    line number.

    Differential Revision: https://reviews.llvm.org/D67449 (detail/ViewSVN)
    by gbreynoo
  10. Fix MSVC "result of 32-bit shift implicitly converted to 64 bits" warning. NFCI. (detail/ViewSVN)
    by rksimon
  11. [TestCommit] Trivial change to test commit access. (detail/ViewSVN)
    by markrvmurray
  12. [TestCommit] Trivial change to test commit access. (detail/ViewSVN)
    by markrvmurray
  13. [Unroll] Add an option to control complete unrolling

    Add an ability to specify the max full unroll count for LoopUnrollPass pass
    in pass options.

    Reviewers: fhahn, fedor.sergeev
    Reviewed By: fedor.sergeev
    Subscribers: hiraditya, zzheng, dmgreen, llvm-commits
    Differential Revision: https://reviews.llvm.org/D67701 (detail/ViewSVN)
    by skatkov
  14. [X86] Prevent crash in LowerBUILD_VECTORvXi1 for v64i1 vectors on 32-bit targets when the vector is a mix of constants and non-constant.

    We need to materialize the constants as two 32-bit values that
    are casted to v32i1 and then concatenated. (detail/ViewSVN)
    by ctopper
  15. [ARM] Fix for buildbots

    I had missed that massive.mir also needed updating. (detail/ViewSVN)
    by sam_parker
  16. [X86] Change a SmallVector& argument to SmallVectorImpl&. NFC

    Avoids repeating the size. (detail/ViewSVN)
    by ctopper
  17. [X86] Remove unused argument from a helper function. NFC (detail/ViewSVN)
    by ctopper
  18. [Builtins] Delete setjmp_syscall and qsetjmp

    Similar to the resolution of gcc PR71876.
    Nobody uses them or needs the [-Wincomplete-setjmp-declaration]
    diagnostic. (detail/ViewSVN)
    by maskray
  19. AMDGPU/SILoadStoreOptimizer: Add const to more functions

    Reviewers: arsenm, pendingchaos, rampitec, nhaehnle, vpykhtin

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

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D65901 (detail/ViewSVN)
    by tstellar
  20. AMDGPU/GlobalISel: RegBankSelect llvm.amdgcn.ds.swizzle (detail/ViewSVN)
    by arsenm
  21. AMDGPU/GlobalISel: RegBankSelect tbuffer load/store

    These have the same operand structure as the non-t buffer operations. (detail/ViewSVN)
    by arsenm
  22. [CLANG][BPF] change __builtin_preserve_access_index() signature

    The clang intrinsic __builtin_preserve_access_index() currently
    has signature:
      const void * __builtin_preserve_access_index(const void * ptr)

    This may cause compiler warning when:
      - parameter type is "volatile void *" or "const volatile void *", or
      - the assign-to type of the intrinsic does not have "const" qualifier.
    Further, this signature does not allow dereference of the
    builtin result pointer as it is a "const void *" type, which
    adds extra step for the user to do type casting.

    Let us change the signature to:
      PointerT __builtin_preserve_access_index(PointerT ptr)
    such that the result and argument types are the same.
    With this, directly dereferencing the builtin return value
    becomes possible.

    Differential Revision: https://reviews.llvm.org/D67734 (detail/ViewSVN)
    by yhs
  23. AMDGPU/GlobalISel: Select llvm.amdgcn.raw.buffer.store.format

    This needs special handling due to some subtargets that have a
    nonstandard register layout for f16 vectors

    Also reject some illegal types on other targets. (detail/ViewSVN)
    by arsenm
  24. AMDGPU/GlobalISel: Select llvm.amdgcn.raw.buffer.store (detail/ViewSVN)
    by arsenm
  25. AMDGPU/GlobalISel: RegBankSelect struct buffer load/store (detail/ViewSVN)
    by arsenm
  26. AMDGPU/GlobalISel: RegBankSelect llvm.amdgcn.raw.buffer.{load|store} (detail/ViewSVN)
    by arsenm
  27. AMDGPU/GlobalISel: Attempt to RegBankSelect image intrinsics

    Images should always have 2 consecutive, mandatory SGPR arguments. (detail/ViewSVN)
    by arsenm
  28. Fix typo (detail/ViewSVN)
    by arsenm
  29. MachineScheduler: Fix assert from not checking subregs

    The assert would fail if there was a dead def of a subregister if
    there was a previous use of a different subregister. (detail/ViewSVN)
    by arsenm
  30. AMDGPU/GlobalISel: Fix RegBankSelect G_SMULH/G_UMULH pre-gfx9

    The scalar versions were only introduced in gfx9. (detail/ViewSVN)
    by arsenm
  31. GlobalISel: Don't materialize immarg arguments to intrinsics

    Encode them directly as an imm argument to G_INTRINSIC*.

    Since now intrinsics can now define what parameters are required to be
    immediates, avoid using registers for them. Intrinsics could
    potentially want a constant that isn't a legal register type. Also,
    since G_CONSTANT is subject to CSE and legalization, transforms could
    potentially obscure the value (and create extra work for the
    selector). The register bank of a G_CONSTANT is also meaningful, so
    this could throw off future folding and legalization logic for AMDGPU.

    This will be much more convenient to work with than needing to call
    getConstantVRegVal and checking if it may have failed for every
    constant intrinsic parameter. AMDGPU has quite a lot of intrinsics wth
    immarg operands, many of which need inspection during lowering. Having
    to find the value in a register is going to add a lot of boilerplate
    and waste compile time.

    SelectionDAG has always provided TargetConstant for constants which
    should not be legalized or materialized in a register. The distinction
    between Constant and TargetConstant was somewhat fuzzy, and there was
    no automatic way to force usage of TargetConstant for certain
    intrinsic parameters. They were both ultimately ConstantSDNode, and it
    was inconsistently used. It was quite easy to mis-select an
    instruction requiring an immediate. For SelectionDAG, start emitting
    TargetConstant for these arguments, and using timm to match them.

    Most of the work here is to cleanup target handling of constants. Some
    targets process intrinsics through intermediate custom nodes, which
    need to preserve TargetConstant usage to match the intrinsic
    expectation. Pattern inputs now need to distinguish whether a constant
    is merely compatible with an operand or whether it is mandatory.

    The GlobalISelEmitter needs to treat timm as a special case of a leaf
    node, simlar to MachineBasicBlock operands. This should also enable
    handling of patterns for some G_* instructions with immediates, like
    G_FENCE or G_EXTRACT.

    This does include a workaround for a crash in GlobalISelEmitter when
    ARM tries to uses "imm" in an output with a "timm" pattern source. (detail/ViewSVN)
    by arsenm
  32. gn build: Merge r372282 (detail/ViewSVN)
    by gnsyncbot
  33. llvm-reduce: Add pass to reduce instructions

    Patch by Diego Treviño!

    Differential Revision: https://reviews.llvm.org/D66263 (detail/ViewSVN)
    by dblaikie
  34. Initialize all fields in ABIArgInfo.

    Due to usage of an uninitialized fields, we end up with
    a Conditional jump or move depends on uninitialised value

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

    Commited on behalf of Martin Liska <mliska@suse.cz> (detail/ViewSVN)
    by serge_sans_paille
  35. llvm-reduce: Avoid use-after-free when removing a branch instruction

    Found my msan buildbot & pointed out by Nico Weber - thanks Nico! (detail/ViewSVN)
    by dblaikie
  36. [Object] Extend MachOUniversalBinary::getObjectForArch

    Make the method MachOUniversalBinary::getObjectForArch return MachOUniversalBinary::ObjectForArch
    and add helper methods MachOUniversalBinary::getMachOObjectForArch, MachOUniversalBinary::getArchiveForArch
    for those who explicitly expect to get a MachOObjectFile or an Archive.

    Differential revision: https://reviews.llvm.org/D67700

    Test plan: make check-all (detail/ViewSVN)
    by alexshap
  37. [utils] Add minimal support for MIR inputs to update_llc_test_checks.py

    update_{llc,mir}_test_checks.py applicability is determined by the
    output (assembly or MIR), not the input, which makes
    update_llc_test_checks.py the right tool to generate tests that start at
    MIR and stop at the final assembly.

    This commit adds the minimal support for this path. Main limitation that
    remains:

    - MIR has to have LLVM IR section, and the CHECK lines will be inserted
      into the LLVM IR functions that correspond to the MIR functions.

    Running
      ../utils/update_llc_test_checks.py --llc-binary ./bin/llc
    on a slightly modified  ../test/CodeGen/X86/bad-tls-fold.mir

    produces the following diff:

    +# NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
    +# RUN: llc %s -o - | FileCheck %s
    --- |
       target triple = "x86_64-unknown-linux-gnu"

    @@ -6,17 +7,31 @@
       @i = external thread_local global i32

       define i32 @or() {
    +  ; CHECK-LABEL: or:
    +  ; CHECK:       # %bb.0: # %entry
    +  ; CHECK-NEXT:    movq {{.*}}(%rip), %rax
    +  ; CHECK-NEXT:    orq $7, %rax
    +  ; CHECK-NEXT:    movq i@{{.*}}(%rip), %rcx
    +  ; CHECK-NEXT:    orq %rax, %rcx
    +  ; CHECK-NEXT:    movl %fs:(%rcx), %eax
    +  ; CHECK-NEXT:    retq
       entry:
         ret i32 undef
       }
    -
       define i32 @and() {
    +  ; CHECK-LABEL: and:
    +  ; CHECK:       # %bb.0: # %entry
    +  ; CHECK-NEXT:    movq {{.*}}(%rip), %rax
    +  ; CHECK-NEXT:    orq $7, %rax
    +  ; CHECK-NEXT:    movq i@{{.*}}(%rip), %rcx
    +  ; CHECK-NEXT:    andq %rax, %rcx
    +  ; CHECK-NEXT:    movl %fs:(%rcx), %eax
    +  ; CHECK-NEXT:    retq
       entry:
         ret i32 undef
       }
    ...

    (not applied) (detail/ViewSVN)
    by rtereshin
  38. [utils] Amend update_llc_test_checks.py to non-llc tooling, NFC

    Very minor change aiming to make it easier to extend the script
    downstream to support non-llc, but llc-like tools. The main objective is
    to decrease the probability of merge conflicts. (detail/ViewSVN)
    by rtereshin
  39. [WebAssembly] Restore defaults for stores per memop

    Summary:
    Large slowdowns were observed in Rust due to many small, constant
    sized copies in conjunction with poorly-optimized memory.copy
    implementations. Since memory.copy cannot be expected to be inlined
    efficiently by engines at this time, stop using it for the smallest
    copies. We continue to lower all memcpy intrinsics to memory.copy,
    though.

    Reviewers: aheejin, alexcrichton

    Subscribers: dschuff, sbc100, jgravelle-google, hiraditya, JDevlieghere, sunfish, llvm-commits

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D67639 (detail/ViewSVN)
    by tlively
  40. [Docs] Moves topics to new categories

    This commit moves several topics to new categories. It also removes a few duplicate links in Subsystem Documentation. (detail/ViewSVN)
    by dr87
  41. [AArch64][GlobalISel] Support lowering musttail calls

    Since we now lower most tail calls, it makes sense to support musttail.

    Instead of always falling back to SelectionDAG, only fall back when a musttail
    call was not able to be emitted as a tail call. Once we can handle most
    incoming and outgoing arguments, we can change this to a `report_fatal_error`
    like in ISelLowering.

    Remove the assert that we don't have varargs and a musttail, and replace it
    with a return false. Implementing this requires that we implement
    `saveVarArgRegisters` from AArch64ISelLowering, which is an entirely different
    patch.

    Add GlobalISel lines to vararg-tallcall.ll to make sure that we produce correct
    code. Right now we only fall back, but eventually this will be relevant.

    Differential Revision: https://reviews.llvm.org/D67681 (detail/ViewSVN)
    by paquette
  42. Remove the obsolete BlockByRefStruct flag from LLVM IR

    DIFlagBlockByRefStruct is an unused DIFlag that originally was used by
    clang to express (Objective-)C block captures in debug info. For the
    last year Clang has been emitting complex DIExpressions to describe
    block captures instead, which makes all the code supporting this flag
    redundant.

    This patch removes the flag and all supporting "dead" code, so we can
    reuse the bit for something else in the future.

    Since this only affects debug info generated by Clang with the block
    extension this mostly affects Apple platforms and I don't have any
    bitcode compatibility concerns for removing this. The Verifier will
    reject debug info that uses the bit and thus degrade gracefully when
    LTO'ing older bitcode with a newer compiler.

    rdar://problem/44304813

    Differential Revision: https://reviews.llvm.org/D67453 (detail/ViewSVN)
    by Adrian Prantl
  43. llvm-reduce: Remove inaccurate doxy comment about a return that isn't returned

    Addressing post-commit code review feedback from Dávid Bolvanský -
    thanks! (detail/ViewSVN)
    by dblaikie
  44. llvm-reduce: Fix inconsistencies between int/unsigned usage (standardize on int) (detail/ViewSVN)
    by dblaikie
  45. [analyzer] PR43102: Fix an assertion and an out-of-bounds error for diagnostic location construction

    Summary:
    https://bugs.llvm.org/show_bug.cgi?id=43102

    In today's edition of "Is this any better now that it isn't crashing?", I'd like to show you a very interesting test case with loop widening.

    Looking at the included test case, it's immediately obvious that this is not only a false positive, but also a very bad bug report in general. We can see how the analyzer mistakenly invalidated `b`, instead of its pointee, resulting in it reporting a null pointer dereference error. Not only that, the point at which this change of value is noted at is at the loop, rather then at the method call.

    It turns out that `FindLastStoreVisitor` works correctly, rather the supplied explodedgraph is faulty, because `BlockEdge` really is the `ProgramPoint` where this happens.
    {F9855739}
    So it's fair to say that this needs improving on multiple fronts. In any case, at least the crash is gone.

    Full ExplodedGraph: {F9855743}

    Reviewers: NoQ, xazax.hun, baloghadamsoftware, Charusso, dcoughlin, rnkovacs, TWeaver

    Subscribers: JesperAntonsson, uabelho, Ka-Ka, bjope, whisperity, szepet, a.sidorin, mikhail.ramalho, donat.nagy, dkrupp, gamesh411, cfe-commits

    Tags: #clang

    Differential Revision: https://reviews.llvm.org/D66716 (detail/ViewSVN)
    by szelethus
  46. gn build: Merge r372267 (detail/ViewSVN)
    by gnsyncbot
  47. Add AutoUpgrade function to add new address space datalayout string to existing datalayouts.

    Summary:
    Add function to AutoUpgrade to change the datalayout of old X86 datalayout strings.
    This adds "-p270:32:32-p271:32:32-p272:64:64" to X86 datalayouts that are otherwise valid
    and don't already contain it.

    This also removes the compatibility changes in https://reviews.llvm.org/D66843.
    Datalayout change in https://reviews.llvm.org/D64931.

    Reviewers: rnk, echristo

    Subscribers: hiraditya, llvm-commits

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D67631 (detail/ViewSVN)
    by akhuang
  48. gn build: Merge r372264 (detail/ViewSVN)
    by gnsyncbot
  49. llvm-reduce: Add pass to reduce basic blocks

    Patch by Diego Treviño!

    Differential Revision: https://reviews.llvm.org/D66320 (detail/ViewSVN)
    by dblaikie
  50. fix build, adjust test also for Windows path separator

    Introduced in 1e9c1d2b7bfc. (detail/ViewSVN)
    by llunak
  51. [SimplifyCFG] mergeConditionalStoreToAddress(): try to pacify MSAN

    MSAN bot complains that there is use-of-uninitialized-value
    of this FreeStores later in IsWorthwhile().
    Perhaps FreeStores needs to be stored in a vector? (detail/ViewSVN)
    by lebedevri
  52. On PowerPC, Secure-PLT by default for FreeBSD 13 and higher

    Summary:
    In https://svnweb.freebsd.org/changeset/base/349351, FreeBSD 13 and
    higher transitioned to Secure-PLT for PowerPC.  This part contains the
    changes in clang's PPC architecture defaults.

    Reviewers: emaste, jhibbits, hfinkel

    Reviewed By: jhibbits

    Subscribers: wuzish, nemanjai, krytarowski, kbarton, MaskRay, jsji, shchenz, steven.zhang, cfe-commits

    Tags: #clang

    Differential Revision: https://reviews.llvm.org/D67119 (detail/ViewSVN)
    by dim
  53. On PowerPC, Secure-PLT by default for FreeBSD 13 and higher

    Summary:
    In https://svnweb.freebsd.org/changeset/base/349351, FreeBSD 13 and
    higher transitioned to Secure-PLT for PowerPC.  This part contains the
    changes in llvm's PPC subtarget.

    Reviewers: emaste, jhibbits, hfinkel

    Reviewed By: jhibbits

    Subscribers: wuzish, nemanjai, krytarowski, kbarton, MaskRay, jsji, shchenz, steven.zhang, llvm-commits

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D67118 (detail/ViewSVN)
    by dim
  54. [DAGCombine][ARM][X86] (sub Carry, X)  ->  (addcarry (sub 0, X), 0, Carry)  fold

    Summary:
    `DAGCombiner::visitADDLikeCommutative()` already has a sibling fold:
    `(add X, Carry) -> (addcarry X, 0, Carry)`

    This fold, as suggested by @efriedma, helps recover from //some//
    of the regressions of D62266

    Reviewers: efriedma, deadalnix

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

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D62392 (detail/ViewSVN)
    by lebedevri
  55. [CodeGen][X86][NFC] Tests for (sub Carry, X) -> (addcarry (sub 0, X), 0, Carry) fold (D62392) (detail/ViewSVN)
    by lebedevri
  56. [InstCombine] foldUnsignedUnderflowCheck(): handle last few cases (PR43251)

    Summary:
    I don't have a direct motivational case for this,
    but it would be good to have this for completeness/symmetry.

    This pattern is basically the motivational pattern from
    https://bugs.llvm.org/show_bug.cgi?id=43251
    but with different predicate that requires that the offset is non-zero.

    The completeness bit comes from the fact that a similar pattern (offset != zero)
    will be needed for https://bugs.llvm.org/show_bug.cgi?id=43259,
    so it'd seem to be good to not overlook very similar patterns..

    Proofs: https://rise4fun.com/Alive/21b

    Also, there is something odd with `isKnownNonZero()`, if the non-zero
    knowledge was specified as an assumption, it didn't pick it up (PR43267)

    With this, i see no other missing folds for
    https://bugs.llvm.org/show_bug.cgi?id=43251

    Reviewers: spatel, nikic, xbolva00

    Reviewed By: spatel

    Subscribers: hiraditya, llvm-commits

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D67412 (detail/ViewSVN)
    by lebedevri
  57. [AArch64] Don't implicitly enable global isel on Darwin if code-model==large.

    Summary:
    AArch64 GlobalISel doesn't support MachO's large code model, so this patch
    adds a check for that combination before implicitly enabling it.

    Reviewers: paquette

    Subscribers: kristof.beyls, ributzka, llvm-commits

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D67724 (detail/ViewSVN)
    by Lang Hames
  58. [SimplifyCFG] mergeConditionalStoreToAddress(): consider cost, not instruction count

    Summary:
    As it can be see in the changed test, while `div` is really costly,
    we were speculating it. This does not seem correct.

    Also, the old code would run for every single insturuction in BB,
    instead of eagerly bailing out as soon as there are too many instructions.

    This function still has a problem that `PHINodeFoldingThreshold` is
    per-basic-block, while it should be for all the basic blocks.

    Reviewers: efriedma, craig.topper, dmgreen, jmolloy

    Reviewed By: jmolloy

    Subscribers: xbolva00, hiraditya, llvm-commits

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D67315 (detail/ViewSVN)
    by lebedevri
  59. [MIPS] For vectors, select `add %x, C` as `sub %x, -C` if it results in inline immediate

    Summary:
    As discussed in https://reviews.llvm.org/D62341#1515637,
    for MIPS `add %x, -1` isn't optimal. Unlike X86 there
    are no fastpaths to matearialize such `-1`/`1` vector constants,
    and `sub %x, 1` results in better codegen,
    so undo canonicalization

    Reviewers: atanasyan, Petar.Avramovic, RKSimon

    Reviewed By: atanasyan

    Subscribers: sdardis, arichardson, hiraditya, jrtc27, llvm-commits

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D66805 (detail/ViewSVN)
    by lebedevri
  60. [CodeGen][MIPS][NFC] Some standalone tests for D66805 "or vectors, select `add %x, C` as `sub %x, -C` if it results in inline immediate" (detail/ViewSVN)
    by lebedevri
  61. [OPENMP]Fix for PR43349: Crash for privatized loop bound.

    If the variable, used in the loop boundaries, is not captured in the
    construct, this variable must be considered as undefined if it was
    privatized. (detail/ViewSVN)
    by abataev
  62. [mips] Expand 'lw/sw' instructions for 32-bit GOT

    In case of using 32-bit GOT access to the table requires two instructions
    with attached %got_hi and %got_lo relocations. This patch implements
    correct expansion of 'lw/sw' instructions in that case.

    Differential Revision: https://reviews.llvm.org/D67705 (detail/ViewSVN)
    by atanasyan
  63. actually also compile output in tests for -frewrite-includes

    Checking that the created output matches something is nice, but
    this should also check whether the output makes sense.

    Differential Revision: https://reviews.llvm.org/D63979 (detail/ViewSVN)
    by llunak
  64. [clang-format][PR41899] PointerAlignment: Left leads to useless space in lambda intializer expression

    Summary:
    https://bugs.llvm.org/show_bug.cgi?id=41899

    ```auto lambda = [&a = a]() { a = 2; };```

    is formatted as

    ```auto lambda = [& a = a]() { a = 2; };```

    With an extra space if PointerAlignment is set to Left

    > The space "& a" looks strange when there is no type in the lambda's intializer expression. This can be worked around with by setting "PointerAlignment: Right", but ideally "PointerAlignment: Left" would not add a space in this case.

    Reviewers: klimek, owenpan, krasimir, timwoj

    Reviewed By: klimek

    Subscribers: cfe-commits

    Tags: #clang-tools-extra, #clang

    Differential Revision: https://reviews.llvm.org/D67718 (detail/ViewSVN)
    by paulhoad
  65. make -frewrite-includes also rewrite conditions in #if/#elif

    Those conditions may use __has_include, which needs to be rewritten.
    The existing code has already tried to rewrite just __has_include,
    but it didn't work with macro expansion, so e.g. Qt's
    "#define QT_HAS_INCLUDE(x) __has_include(x)" didn't get handled
    properly. Since the preprocessor run knows what each condition evaluates
    to, just rewrite the entire condition. This of course requires that
    the -frewrite-include pass has the same setup as the following
    compilation, but that has always been the requirement.

    Differential Revision: https://reviews.llvm.org/D63508 (detail/ViewSVN)
    by llunak
  66. [Sema] Suppress -Wformat diagnostics for bool types when printed using %hhd

    Also, add a diagnostic under -Wformat for printing a boolean value as a
    character.

    rdar://54579473

    Differential revision: https://reviews.llvm.org/D66856 (detail/ViewSVN)
    by epilk
  67. [clang-format][PR41964] Fix crash with SIGFPE when TabWidth is set to 0 and line starts with tab

    Summary:
    clang-format 8.0 crashes with SIGFPE (floating point exception) when formatting following file:
    app.cpp:
    void a() {
    //line starts with '\t'
    }

    $ clang-format -style='{TabWidth: 0}' app.cpp

    Reviewers: owenpan, klimek, russellmcc, timwoj

    Reviewed By: klimek

    Subscribers: cfe-commits

    Tags: #clang-tools-extra, #clang

    Differential Revision: https://reviews.llvm.org/D67670 (detail/ViewSVN)
    by paulhoad
  68. [InstCombine] dropRedundantMaskingOfLeftShiftInput(): some cleanup before upcoming patch (detail/ViewSVN)
    by lebedevri
  69. [NFC][InstCombine] More tests for PR42563 "Dropping pointless masking before left shift"

    For patterns c/d/e we too can deal with the pattern even if we can't
    just drop the mask, we can just apply it afterwars:
       https://rise4fun.com/Alive/gslRa (detail/ViewSVN)
    by lebedevri
  70. Fix compile-time regression caused by rL371928

    Summary:
    Also fixup rL371928 for cases that occur on our out-of-tree backend

    There were still quite a few intermediate APInts and this caused the
    compile time of MCCodeEmitter for our target to jump from 16s up to
    ~5m40s. This patch, brings it back down to ~17s by eliminating pretty
    much all of them using two new APInt functions (extractBitsAsZExtValue(),
    insertBits() but with a uint64_t). The exact conditions for eliminating
    them is that the field extracted/inserted must be <=64-bit which is
    almost always true.

    Note: The two new APInt API's assume that APInt::WordSize is at least
    64-bit because that means they touch at most 2 APInt words. They
    statically assert that's true. It seems very unlikely that someone
    is patching it to be smaller so this should be fine.

    Reviewers: jmolloy

    Reviewed By: jmolloy

    Subscribers: hiraditya, dexonsmith, llvm-commits

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D67686 (detail/ViewSVN)
    by dsanders
  71. Revert "Revert "Implement std::condition_variable via pthread_cond_clockwait() where available""

    With the fix for non-Linux.

    This reverts commit c1c519d2f1a66dd2eeaa4c321d8d7b50f623eb71. (detail/ViewSVN)
    by danalbert
  72. [DDG] Break a cyclic dependency from Analysis to ScalarOpts (detail/ViewSVN)
    by d0k
  73. gn build: Merge r372238 (detail/ViewSVN)
    by gnsyncbot
  74. Data Dependence Graph Basics

    Summary:
    This is the first patch in a series of patches that will implement data dependence graph in LLVM. Many of the ideas used in this implementation are based on the following paper:
    D. J. Kuck, R. H. Kuhn, D. A. Padua, B. Leasure, and M. Wolfe (1981). DEPENDENCE GRAPHS AND COMPILER OPTIMIZATIONS.
    This patch contains support for a basic DDGs containing only atomic nodes (one node for each instruction). The edges are two fold: def-use edges and memory-dependence edges.
    The implementation takes a list of basic-blocks and only considers dependencies among instructions in those basic blocks. Any dependencies coming into or going out of instructions that do not belong to those basic blocks are ignored.

    The algorithm for building the graph involves the following steps in order:

      1. For each instruction in the range of basic blocks to consider, create an atomic node in the resulting graph.
      2. For each node in the graph establish def-use edges to/from other nodes in the graph.
      3. For each pair of nodes containing memory instruction(s) create memory edges between them. This part of the algorithm goes through the instructions in lexicographical order and creates edges in reverse order if the sink of the dependence occurs before the source of it.

    Authored By: bmahjour

    Reviewer: Meinersbur, fhahn, myhsu, xtian, dmgreen, kbarton, jdoerfert

    Reviewed By: Meinersbur, fhahn, myhsu

    Subscribers: ychen, arphaman, simoll, a.elovikov, mgorny, hiraditya, jfb, wuzish, llvm-commits, jsji, Whitney, etiotto

    Tag: #llvm

    Differential Revision: https://reviews.llvm.org/D65350 (detail/ViewSVN)
    by bmahjour
  75. [c++20] P1331R2: Allow transient use of uninitialized objects in
    constant evaluation. (detail/ViewSVN)
    by rsmith
  76. [InstSimplify] add tests for fma/fmuladd; NFC (detail/ViewSVN)
    by spatel
  77. [OPENMP5.0]Allow multiple context selectors in the context selector
    sets.

    According to OpenMP 5.0, context selector set might include several
    context selectors, separated with commas. Patch fixes this problem. (detail/ViewSVN)
    by abataev
  78. [Alignment][NFC] Align(1) to Align::None() conversions

    Summary:
    This is patch is part of a series to introduce an Alignment type.
    See this thread for context: http://lists.llvm.org/pipermail/llvm-dev/2019-July/133851.html
    See this patch for the introduction of the type: https://reviews.llvm.org/D64790

    Reviewers: courbet

    Subscribers: hiraditya, llvm-commits

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D67715 (detail/ViewSVN)
    by gchatelet
  79. [SampleFDO] Minimize performance impact when profile-sample-accurate
    is enabled.

    We can save memory and reduce binary size significantly by enabling
    ProfileSampleAccurate. However when ProfileSampleAccurate is true,
    function without sample will be regarded as cold and this could
    potentially cause performance regression.

    To minimize the potential negative performance impact, we want to be
    a little conservative here saying if a function shows up in the profile,
    no matter as outline instance, inline instance or call targets, treat
    the function as not being cold. This will handle the cases such as most
    callsites of a function are inlined in sampled binary (thus outline copy
    don't get any sample) but not inlined in current build (because of source
    code drift, imprecise debug information, or the callsites are all cold
    individually but not cold accumulatively...), so that the outline function
    showing up as cold in sampled binary will actually not be cold after current
    build. After the change, such function will be treated as not cold even
    profile-sample-accurate is enabled.

    At the same time we lower the hot criteria of callsiteIsHot check when
    profile-sample-accurate is enabled. callsiteIsHot is used to determined
    whether a callsite is hot and qualified for early inlining. When
    profile-sample-accurate is enabled, functions without profile will be
    regarded as cold and much less inlining will happen in CGSCC inlining pass,
    so we can worry less about size increase and be aggressive to allow more
    early inlining to happen for warm callsites and it is helpful for performance
    overall.

    Differential Revision: https://reviews.llvm.org/D67561 (detail/ViewSVN)
    by wmi
  80. [Alignment][NFC] Remove LogAlignment functions

    Summary:
    This is patch is part of a series to introduce an Alignment type.
    See this thread for context: http://lists.llvm.org/pipermail/llvm-dev/2019-July/133851.html
    See this patch for the introduction of the type: https://reviews.llvm.org/D64790

    Reviewers: courbet

    Subscribers: arsenm, sdardis, nemanjai, jvesely, nhaehnle, hiraditya, kbarton, jrtc27, MaskRay, atanasyan, jsji, llvm-commits

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D67620 (detail/ViewSVN)
    by gchatelet
  81. [Alignment][NFC] Use Align::None instead of 1

    Summary:
    This is patch is part of a series to introduce an Alignment type.
    See this thread for context: http://lists.llvm.org/pipermail/llvm-dev/2019-July/133851.html
    See this patch for the introduction of the type: https://reviews.llvm.org/D64790

    Reviewers: courbet

    Subscribers: sdardis, nemanjai, hiraditya, kbarton, jrtc27, MaskRay, atanasyan, jsji, llvm-commits

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D67704 (detail/ViewSVN)
    by gchatelet
  82. Recommit -r372180

    Commit message below, original caused the sphinx build bot to fail, this
    one should fix it.

    Create UsersManual section entitled 'Controlling Floating Point
    Behavior'

    Create a new section for documenting the floating point options. Move
    all the floating point options into this section, and add new entries
    for the floating point options that exist but weren't previously
    described in the UsersManual.

    Patch By: mibintc
    Differential Revision: https://reviews.llvm.org/D67517 (detail/ViewSVN)
    by erichkeane
  83. Revert "[AArch64][DebugInfo] Do not recompute CalleeSavedStackSize"

    Summary:
    This reverts commit r372204.

    This change causes build bot failures under msan:
    http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-fast/builds/35236/steps/check-llvm%20msan/logs/stdio:

    ```
    FAIL: LLVM :: DebugInfo/AArch64/asan-stack-vars.mir (19531 of 33579)
    ******************** TEST 'LLVM :: DebugInfo/AArch64/asan-stack-vars.mir' FAILED ********************
    Script:
    --
    : 'RUN: at line 1';   /b/sanitizer-x86_64-linux-fast/build/llvm_build_msan/bin/llc -O0 -start-before=livedebugvalues -filetype=obj -o - /b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/test/DebugInfo/AArch64/asan-stack-vars.mir | /b/sanitizer-x86_64-linux-fast/build/llvm_build_msan/bin/llvm-dwarfdump -v - | /b/sanitizer-x86_64-linux-fast/build/llvm_build_msan/bin/FileCheck /b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/test/DebugInfo/AArch64/asan-stack-vars.mir
    --
    Exit Code: 2

    Command Output (stderr):
    --
    ==62894==WARNING: MemorySanitizer: use-of-uninitialized-value
        #0 0xdfcafb in llvm::AArch64FrameLowering::resolveFrameOffsetReference(llvm::MachineFunction const&, int, bool, unsigned int&, bool, bool) const /b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/lib/Target/AArch64/AArch64FrameLowering.cpp:1658:3
        #1 0xdfae8a in resolveFrameIndexReference /b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/lib/Target/AArch64/AArch64FrameLowering.cpp:1580:10
        #2 0xdfae8a in llvm::AArch64FrameLowering::getFrameIndexReference(llvm::MachineFunction const&, int, unsigned int&) const /b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/lib/Target/AArch64/AArch64FrameLowering.cpp:1536
        #3 0x46642c1 in (anonymous namespace)::LiveDebugValues::extractSpillBaseRegAndOffset(llvm::MachineInstr const&) /b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/lib/CodeGen/LiveDebugValues.cpp:582:21
        #4 0x4647cb3 in transferSpillOrRestoreInst /b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/lib/CodeGen/LiveDebugValues.cpp:883:11
        #5 0x4647cb3 in process /b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/lib/CodeGen/LiveDebugValues.cpp:1079
        #6 0x4647cb3 in (anonymous namespace)::LiveDebugValues::ExtendRanges(llvm::MachineFunction&) /b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/lib/CodeGen/LiveDebugValues.cpp:1361
        #7 0x463ac0e in (anonymous namespace)::LiveDebugValues::runOnMachineFunction(llvm::MachineFunction&) /b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/lib/CodeGen/LiveDebugValues.cpp:1415:18
        #8 0x4854ef0 in llvm::MachineFunctionPass::runOnFunction(llvm::Function&) /b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/lib/CodeGen/MachineFunctionPass.cpp:73:13
        #9 0x53b0b01 in llvm::FPPassManager::runOnFunction(llvm::Function&) /b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1648:27
        #10 0x53b15f6 in llvm::FPPassManager::runOnModule(llvm::Module&) /b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1685:16
        #11 0x53b298d in runOnModule /b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1750:27
        #12 0x53b298d in llvm::legacy::PassManagerImpl::run(llvm::Module&) /b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1863
        #13 0x905f21 in compileModule(char**, llvm::LLVMContext&) /b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/tools/llc/llc.cpp:601:8
        #14 0x8fdc4e in main /b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/tools/llc/llc.cpp:355:22
        #15 0x7f67673632e0 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x202e0)
        #16 0x882369 in _start (/b/sanitizer-x86_64-linux-fast/build/llvm_build_msan/bin/llc+0x882369)

    MemorySanitizer: use-of-uninitialized-value /b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/lib/Target/AArch64/AArch64FrameLowering.cpp:1658:3 in llvm::AArch64FrameLowering::resolveFrameOffsetReference(llvm::MachineFunction const&, int, bool, unsigned int&, bool, bool) const
    Exiting
    error: -: The file was not recognized as a valid object file
    FileCheck error: '-' is empty.
    FileCheck command line:  /b/sanitizer-x86_64-linux-fast/build/llvm_build_msan/bin/FileCheck /b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/test/DebugInfo/AArch64/asan-stack-vars.mir
    ```

    Reviewers: bkramer

    Reviewed By: bkramer

    Subscribers: sdardis, aprantl, kristof.beyls, jrtc27, atanasyan, llvm-commits

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D67710 (detail/ViewSVN)
    by krasimir
  84. [SimplifyLibCalls] fix crash with empty function name (PR43347)

    ...and improve some variable names while here.

    https://bugs.llvm.org/show_bug.cgi?id=43347 (detail/ViewSVN)
    by spatel
  85. Follow-up to r372209: Use single quotes for host_ldflags in the lit config

    HOST_LDFLAGS is now using double quotes, and that would break the lit
    config file. (detail/ViewSVN)
    by hans
  86. Revert r372082 "[Clang] Pragma vectorize_width() implies vectorize(enable)"

    This broke the Chromium build. Consider the following code:

      float ScaleSumSamples_C(const float* src, float* dst, float scale, int width) {
        float fsum = 0.f;
        int i;
      #if defined(__clang__)
      #pragma clang loop vectorize_width(4)
      #endif
        for (i = 0; i < width; ++i) {
          float v = *src++;
          fsum += v * v;
          *dst++ = v * scale;
        }
        return fsum;
      }

    Compiling at -Oz, Clang  now warns:

      $ clang++ -target x86_64 -Oz -c /tmp/a.cc
      /tmp/a.cc:1:7: warning: loop not vectorized: the optimizer was unable to
      perform the requested transformation; the transformation might be disabled or
      specified as part of an unsupported transformation ordering
      [-Wpass-failed=transform-warning]

    this suggests it's not actually enabling vectorization hard enough.

    At -Os it asserts instead:

      $ build.release/bin/clang++ -target x86_64 -Os -c /tmp/a.cc
      clang-10: /work/llvm.monorepo/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp:2734: void
      llvm::InnerLoopVectorizer::emitMemRuntimeChecks(llvm::Loop*, llvm::BasicBlock*): Assertion `
      !BB->getParent()->hasOptSize() && "Cannot emit memory checks when optimizing for size"' failed.

    Of course neither of these are what the developer expected from the pragma.

    > Specifying the vectorization width was supposed to implicitly enable
    > vectorization, except that it wasn't really doing this. It was only
    > setting the vectorize.width metadata, but not vectorize.enable.
    >
    > This should fix PR27643.
    >
    > Differential Revision: https://reviews.llvm.org/D66290 (detail/ViewSVN)
    by hans
  87. [SDA] Don't stop divergence propagation at the IPD.

    Summary:
    This fixes B42473 and B42706.

    This patch makes the SDA propagate branch divergence until the end of the RPO traversal. Before, the SyncDependenceAnalysis propagated divergence only until the IPD in rpo order. RPO is incompatible with post dominance in the presence of loops. This made the SDA crash because blocks were missed in the propagation.

    Reviewers: foad, nhaehnle

    Reviewed By: foad

    Subscribers: jvesely, llvm-commits

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D65274 (detail/ViewSVN)
    by foad
  88. [mips] Pass "xgot" flag as a subtarget feature

    We need "xgot" flag in the MipsAsmParser to implement correct expansion
    of some pseudo instructions in case of using 32-bit GOT (XGOT).
    MipsAsmParser does not have reference to MipsSubtarget but has a
    reference to "feature bit set". (detail/ViewSVN)
    by atanasyan
  89. [mips] Mark tests for lw/sw expansion in PIC by a separate "check prefix". NFC

    That simplify adding XGOT tests later. (detail/ViewSVN)
    by atanasyan
  90. [mips] Reduce code duplication in the `loadAndAddSymbolAddress`. NFC (detail/ViewSVN)
    by atanasyan
  91. [AST] CommentLexer - Remove (optional) Invalid parameter from getSpelling.

    The static analyzer noticed that we were dereferencing it even when the default null value was being used. Further investigation showed that we never explicitly set the parameter so I've just removed it entirely. (detail/ViewSVN)
    by rksimon
  92. Fix -Wdocumentation warning. NFCI. (detail/ViewSVN)
    by rksimon
  93. Fix -Wdocumentation "empty paragraph passed to '\brief'" warning. NFCI. (detail/ViewSVN)
    by rksimon
  94. Fix -Wdocumentation "@returns in a void function" warning. NFCI. (detail/ViewSVN)
    by rksimon
  95. Fix -Wdocumentation "Unknown param" warning. NFCI. (detail/ViewSVN)
    by rksimon
  96. [cmake] Changes to get Windows self-host working with PGO

    Fixes quoting of profile arguments to work on Windows
    Suppresses adding profile arguments to linker flags when using lld-link
    Avoids -fprofile-instr-use being added to rc.exe flags
    Removes duplicated adding of -fprofile-instr-use to linker flags (since
    r355541)
    Move handling LLVM_PROFDATA_FILE to HandleLLVMOptions.cmake

    Differential Revision: https://reviews.llvm.org/D62063 (detail/ViewSVN)
    by russell_gallop
  97. [AMDGPU] Allow FP inline constant in v_madak_f16 and v_fmaak_f16

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

    Change-Id: Ic38f47cb2079c2c1070a441b5943854844d80a7c (detail/ViewSVN)
    by tpr
  98. [Alignment] Add a None() member function

    Summary:
    This will allow writing `if(A != llvm::Align::None())` which is clearer than `if(A > llvm::Align(1))`

    This is patch is part of a series to introduce an Alignment type.
    See this thread for context: http://lists.llvm.org/pipermail/llvm-dev/2019-July/133851.html
    See this patch for the introduction of the type: https://reviews.llvm.org/D64790

    Reviewers: courbet

    Subscribers: llvm-commits

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D67697 (detail/ViewSVN)
    by gchatelet
  99. [clang-tidy] Fix a potential infinite loop in readability-isolate-declaration check.

    Reviewers: ilya-biryukov

    Subscribers: xazax.hun, cfe-commits

    Tags: #clang

    Differential Revision: https://reviews.llvm.org/D67654 (detail/ViewSVN)
    by hokein
  100. tsan: allow the Go runtime to return multiple stack frames for a single PC

    This fix allows tsan to report stack traces correctly even in the
    presence of mid-stack inlining by the Go compiler.

    See https://go-review.googlesource.com/c/go/+/195781 for the Go runtime side of this change.

    Author: randall77 (Keith Randall)
    Reviewed: https://reviews.llvm.org/D67671 (detail/ViewSVN)
    by dvyukov
  101. [AArch64][DebugInfo] Do not recompute CalleeSavedStackSize

    This patch fixes a bug exposed by D65653 where a subsequent invocation
    of `determineCalleeSaves` ends up with a different size for the callee
    save area, leading to different frame-offsets in debug information.

    In the invocation by PEI, `determineCalleeSaves` tries to determine
    whether it needs to spill an extra callee-saved register to get an
    emergency spill slot. To do this, it calls 'estimateStackSize' and
    manually adds the size of the callee-saves to this. PEI then allocates
    the spill objects for the callee saves and the remaining frame layout
    is calculated accordingly.

    A second invocation in LiveDebugValues causes estimateStackSize to return
    the size of the stack frame including the callee-saves. Given that the
    size of the callee-saves is added to this, these callee-saves are counted
    twice, which leads `determineCalleeSaves` to believe the stack has
    become big enough to require spilling an extra callee-save as emergency
    spillslot. It then updates CalleeSavedStackSize with a larger value.

    Since CalleeSavedStackSize is used in the calculation of the frame
    offset in getFrameIndexReference, this leads to incorrect offsets for
    variables/locals when this information is recalculated after PEI.

    Reviewers: omjavaid, eli.friedman, thegameg, efriedma

    Reviewed By: efriedma

    Differential Revision: https://reviews.llvm.org/D66935 (detail/ViewSVN)
    by s.desmalen
  102. [lldb] Print better diagnostics for user expressions and modules

    Summary:
    Currently our expression evaluators only prints very basic errors that are not very useful when writing complex expressions.

    For example, in the expression below the user made a type error, but it's not clear from the diagnostic what went wrong:
    ```
    (lldb) expr printf("Modulos are:", foobar%mo1, foobar%mo2, foobar%mo3)
    error: invalid operands to binary expression ('int' and 'double')
    ```

    This patch enables full Clang diagnostics in our expression evaluator. After this patch the diagnostics for the expression look like this:

    ```
    (lldb) expr printf("Modulos are:", foobar%mo1, foobar%mo2, foobar%mo3)
    error: <user expression 1>:1:54: invalid operands to binary expression ('int' and 'float')
    printf("Modulos are:", foobar%mo1, foobar%mo2, foobar%mo3)
                                                   ~~~~~~^~~~
    ```

    To make this possible, we now emulate a user expression file within our diagnostics. This prevents that the user is exposed to
    our internal wrapper code we inject.

    Note that the diagnostics that refer to declarations from the debug information (e.g. 'note' diagnostics pointing to a called function)
    will not be improved by this as they don't have any source locations associated with them, so caret or line printing isn't possible.
    We instead just suppress these diagnostics as we already do with warnings as they would otherwise just be a context message
    without any context (and the original diagnostic in the user expression should be enough to explain the issue).

    Fixes rdar://24306342

    Reviewers: JDevlieghere, aprantl, shafik, #lldb

    Reviewed By: JDevlieghere, #lldb

    Subscribers: usaxena95, davide, jingham, aprantl, arphaman, kadircet, lldb-commits

    Tags: #lldb

    Differential Revision: https://reviews.llvm.org/D65646 (detail/ViewSVN)
    by Raphael Isemann
  103. Revert "r372201: [Support] Replace function with function_ref in writeFileAtomically. NFC"

    function_ref causes calls to the function to be ambiguous, breaking
    compilation.

    Reverting for now. (detail/ViewSVN)
    by ibiryukov
  104. [Support] Replace function with function_ref in writeFileAtomically. NFC

    Summary:
    The latter is slightly more efficient and communicates the intent of the
    API: writeFileAtomically does not own or copy the callback, it merely
    calls it at some point.

    Reviewers: jkorous

    Reviewed By: jkorous

    Subscribers: hiraditya, dexonsmith, jfb, llvm-commits, cfe-commits

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D67584 (detail/ViewSVN)
    by ibiryukov
  105. [X86] Break non-power of 2 vXi1 vectors into scalars for argument passing with avx512.

    This generates worse code, but matches what is done for avx2 and
    prevents crashes when more arguments are passed than we have
    registers for. (detail/ViewSVN)
    by ctopper
  106. [X86] Add test case for passing a v17i1 vector with avx512 (detail/ViewSVN)
    by ctopper
  107. [BPF] Permit all user instructed offset relocatiions

    Currently, not all user specified relocations
    (with clang intrinsic __builtin_preserve_access_index())
    will turn into relocations.

    In the current implementation, a __builtin_preserve_access_index()
    chain is turned into relocation only if the result of the clang
    intrinsic is used in a function call or a nonzero offset computation
    of getelementptr. For all other cases, the relocatiion request
    is ignored and the __builtin_preserve_access_index() is turned
    into regular getelementptr instructions.
    The main reason is to mimic bpf_probe_read() requirement.

    But there are other use cases where relocatable offset is
    generated but not used for bpf_probe_read(). This patch
    relaxed previous constraints when to generate relocations.
    Now, all user __builtin_preserve_access_index() will have
    relocations generated.

    Differential Revision: https://reviews.llvm.org/D67688 (detail/ViewSVN)
    by yhs

Started by upstream project Clang Stage 2: cmake, R -g Tsan, using Stage 1 RA build number 18348
originally caused by:

Started by upstream project Clang Stage 2: cmake, R -g Tsan, using Stage 1 RA build number 18349
originally caused by:

This run spent:

  • 14 hr waiting;
  • 17 hr build duration;
  • 1 day 8 hr total from scheduled to completion.

Identified problems

Ninja target failed

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

Regression test failed

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

Missing test results

The test result file Jenkins is looking for does not exist after the build.
Indication 3

Compile Error

This build failed because of a compile error. Below is a list of all errors in the build log:
Indication 4