Started 10 hr ago
Build has been executing for 10 hr on green-dragon-09

Progress:
In progress Build #5546 (Oct 17, 2019 3:37:33 PM)

Revisions
  • http://llvm.org/svn/llvm-project/llvm/trunk : 375180
  • http://llvm.org/svn/llvm-project/cfe/trunk : 375179
  • http://llvm.org/svn/llvm-project/compiler-rt/trunk : 375166
  • http://llvm.org/svn/llvm-project/debuginfo-tests/trunk : 364589
  • http://llvm.org/svn/llvm-project/libcxx/trunk : 374854
  • http://llvm.org/svn/llvm-project/clang-tools-extra/trunk : 375117
Changes
  1. DebugInfo: Remove unused parameter (from DwarfDebug.cpp:emitListsTableHeaderStart) (detail/ViewSVN)
    by dblaikie
  2. [ARM] Fix arm_neon.h with -flax-vector-conversions=none, part 3

    It's completely impossible to check that I've actually found all the
    issues, due to the use of macros in arm_neon.h, but hopefully this time
    it'll take more than a few hours for someone to find another issue.

    I have no idea why, but apparently there's a rule that some, but not
    all, builtins which should take an fp16 vector actually take an int8
    vector as an argument.  Fix this, and add test coverage.

    Differential Revision: https://reviews.llvm.org/D68838 (detail/ViewSVN)
    by efriedma
  3. Reland [llvm-objdump] Use a counter for llvm-objdump -h instead of the section index.

    This relands r374931 (reverted in r375088). It fixes 32-bit builds by using the right format string specifier for uint64_t (PRIu64) instead of `%d`.

    Original description:

    When listing the index in `llvm-objdump -h`, use a zero-based counter instead of the actual section index (e.g. shdr->sh_index for ELF).

    While this is effectively a noop for now (except one unit test for XCOFF), the index values will change in a future patch that filters certain sections out (e.g. symbol tables). See D68669 for more context. Note: the test case in `test/tools/llvm-objdump/X86/section-index.s` already covers the case of incrementing the section index counter when sections are skipped.

    Reviewers: grimar, jhenderson, espindola

    Reviewed By: grimar

    Subscribers: emaste, sbc100, arichardson, aheejin, arphaman, seiya, llvm-commits, MaskRay

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D68848 (detail/ViewSVN)
    by rupprecht
  4. [clang-offload-wrapper][NFC] Use captured name of the entry type in LIT test

    Differential Revision: https://reviews.llvm.org/D69140 (detail/ViewSVN)
    by sdmitriev
  5. [Error] Make llvm::cantFail include the original error messages

    Summary:
    The current implementation eats the current errors and just outputs
    the message parameter passed to llvm::cantFail.  This change appends
    the original error message(s), so the user can see exactly why
    cantFail failed.  New logic is conditional on NDEBUG.

    Reviewed By: lhames

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D69057 (detail/ViewSVN)
    by dhinton
  6. [AMDGPU] drop getIsFP td helper

    We already have isFloatType helper, and they are out of sync.
    Drop one and merge the type list.

    Differential Revision: https://reviews.llvm.org/D69138 (detail/ViewSVN)
    by rampitec
  7. [lit] Move computation of deadline up into base class (detail/ViewSVN)
    by yln
  8. [llvm-objcopy] Add support for shell wildcards

    Summary: GNU objcopy accepts the --wildcard flag to allow wildcard matching on symbol-related flags. (Note: it's implicitly true for section flags).

    The basic syntax is to allow *, ?, \, and [] which work similarly to how they work in a shell. Additionally, starting a wildcard with ! causes that wildcard to prevent it from matching a flag.

    Use an updated GlobPattern in libSupport to handle these patterns. It does not fully match the `fnmatch` used by GNU objcopy since named character classes (e.g. `[[:digit:]]`) are not supported, but this should support most existing use cases (mostly just `*` is what's used anyway).

    Reviewers: jhenderson, MaskRay, evgeny777, espindola, alexshap

    Reviewed By: MaskRay

    Subscribers: nickdesaulniers, emaste, arichardson, hiraditya, jakehehrlich, abrachet, seiya, llvm-commits

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D66613 (detail/ViewSVN)
    by rupprecht
  9. [OPENMP]Dow not emit warnings for uninitialized loop counters.

    In OpenMP constructs all counters are initialized and we should not emit
    warnings about uninitialized privatized loop control variables. (detail/ViewSVN)
    by abataev
  10. libhwasan initialisation include kernel syscall ABI relaxation

    Summary:
    Until now AArch64 development has been on patched kernels that have an always
    on relaxed syscall ABI where tagged pointers are accepted.
    The patches that have gone into the mainline kernel rely on each process opting
    in to this relaxed ABI.

    This commit adds code to choose that ABI into __hwasan_init.

    The idea has already been agreed with one of the hwasan developers
    (http://lists.llvm.org/pipermail/llvm-dev/2019-September/135328.html).

    The patch ignores failures of `EINVAL` for Android, since there are older versions of the Android kernel that don't require this `prctl` or even have the relevant values.  Avoiding EINVAL will let the library run on them.

    I've tested this on an AArch64 VM running a kernel that requires this
    prctl, having compiled both with clang and gcc.

    Patch by Matthew Malcomson.

    Reviewers: eugenis, kcc, pcc

    Reviewed By: eugenis

    Subscribers: srhines, kristof.beyls, #sanitizers, llvm-commits

    Tags: #sanitizers, #llvm

    Differential Revision: https://reviews.llvm.org/D68794 (detail/ViewSVN)
    by eugenis
  11. Reland "[lit] Synthesize artificial deadline"

    We always want to use a deadline when calling `result.await`.  Let's
    synthesize an artificial deadline (now plus one year) to simplify code
    and do less busy waiting.

    Thanks to Reid Kleckner for diagnosing that a deadline for of "positive
    infinity" does not work with Python 3 anymore.  See commit:
    4ff1e34b606d9a9fcfd8b8b5449a558315af94e5

    I tested this patch with Python 2 and Python 3. (detail/ViewSVN)
    by yln
  12. [Builtins] Downgrade duplicate source file warning from a fatal error to a warning.

    This is a follow up to r375150 to unbreak the `clang-ppc64be-linux` bot.
    The commit caused running the tests to fail due to

    ```
    llvm-lit:
    /home/buildbots/ppc64be-clang-multistage-test/clang-ppc64be-multistage/llvm/projects/compiler-rt/test/builtins/Unit/lit.cfg.py:116:
    fatal: builtins_source_features contains duplicates:
    ['librt_has_divtc3']
    ```

    This commit should be reverted once the build system bug for powerpc is
    fixed. (detail/ViewSVN)
    by delcypher
  13. [x86] add test for setcc to shift transform; NFC (detail/ViewSVN)
    by spatel
  14. [cmake] Pass external project source directories to sub-configures

    We're passing LLVM_EXTERNAL_PROJECTS to cross-compilation configures, so
    we also need to pass the source directories of those projects, otherwise
    configuration can fail from not finding them.

    Differential Revision: https://reviews.llvm.org/D69076 (detail/ViewSVN)
    by smeenai
  15. [Object] Fix the return type of getOffset/getSize

    Header64.offset/Header64.size are uint64_t, thus we should not
    truncate them to unit32_t. Moreover, there are a number of places
    where we sum the offset and the size (e.g. in various checks in MachOUniversal.cpp),
    the truncation causes issues since the offset/size can perfectly fit into uint32_t,
    while the sum overflows.

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

    Test plan: make check-all (detail/ViewSVN)
    by alexshap
  16. [NFC][InstCombine] Some more preparatory cleanup for dropRedundantMaskingOfLeftShiftInput() (detail/ViewSVN)
    by lebedevri
  17. [PowerPC] Turn on CR-Logical reducer pass

    Quite a while ago, we implemented a pass that will reduce the number of
    CR-logical operations we emit. It does so by converting a CR-logical operation
    into a branch. We have kept this off by default because it seemed to cause a
    significant regression with one benchmark.
    However, that regression turned out to be due to a completely unrelated
    reason - AADB introducing a self-copy that is a priority-setting nop and it was
    just exacerbated by this pass.

    Now that we understand the reason for the only degradation, we can turn this
    pass on by default. We have long since fixed the cause for the degradation.

    Differential revision: https://reviews.llvm.org/D52431 (detail/ViewSVN)
    by nemanjai
  18. [Builtins] Provide a mechanism to selectively disable tests based on whether an implementation is provided by a builtin library.

    Summary:
    If a platform removes some builtin implementations (e.g. via the
    Darwin-excludes mechanism) then this can lead to test failures because
    the test expects an implementation to be available.

    To solve this lit features are added for each configuration based
    on which sources are included in the builtin library. The features
    are of the form `librt_has_<name>` where `<name>` is the name of the
    source file with the file extension removed. This handles C and
    assembly sources.

    With the lit features in place it is possible to make certain tests
    require them.

    Example:

    ```
    REQUIRES: librt_has_comparedf2
    ```

    All top-level tests in `test/builtins/Unit` (i.e. not under
    `arm`, `ppc`, and `riscv`) have been annotated with the appropriate
    `REQUIRES: librt_has_*` statement.

    rdar://problem/55520987

    Reviewers: beanz, steven_wu, arphaman, dexonsmith, phosek, thakis

    Subscribers: mgorny, #sanitizers, llvm-commits

    Tags: #llvm, #sanitizers

    Differential Revision: https://reviews.llvm.org/D68064 (detail/ViewSVN)
    by delcypher
  19. Reapply r375051: [support] GlobPattern: add support for `\` and `[!...]`, and allow `]` in more places

    Reland r375051 (reverted in r375052) after fixing lld tests on Windows in r375126 and r375131.

    Original description: Update GlobPattern in libSupport to handle a few more cases. It does not fully match the `fnmatch` used by GNU objcopy since named character classes (e.g. `[[:digit:]]`) are not supported, but this should support most existing use cases (mostly just `*` is what's used anyway).

    This will be used to implement the `--wildcard` flag in llvm-objcopy to be more compatible with GNU objcopy.

    This is split off of D66613 to land the libSupport changes separately. The llvm-objcopy part will land soon.

    Reviewers: jhenderson, MaskRay, evgeny777, espindola, alexshap

    Reviewed By: MaskRay

    Subscribers: nickdesaulniers, emaste, arichardson, hiraditya, jakehehrlich, abrachet, seiya, llvm-commits

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D66613 (detail/ViewSVN)
    by rupprecht
  20. NFC: Fix variable only used in asserts by propagating the value.

    Summary:
    This fixes builds with assertions disabled that would otherwise
    fail with unused variable warnings

    Subscribers: nemanjai, hiraditya, kbarton, MaskRay, jsji, llvm-commits

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D69123 (detail/ViewSVN)
    by saugustine
  21. [asan] Update Windows test expectations for LLVM's MS demangler

    After r375041 llvm-symbolizer uses it for demangling instead of
    UnDecorateSymbolName. LLVM puts spaces after commas while Microsoft does
    not. (detail/ViewSVN)
    by rnk
  22. Revert [lit] Synthesize artificial deadline

    Python on Windows raises this OverflowError:
          gotit = waiter.acquire(True, timeout)
      OverflowError: timestamp too large to convert to C _PyTime_t

    So it seems this API behave the same way on every OS.

    Also reverts the dependent commit a660dc590a5e8dafa1ba6ed56447ede151d17bd9. (detail/ViewSVN)
    by rnk
  23. [PowerPC] add tests for popcount with zext; NFC (detail/ViewSVN)
    by spatel
  24. [IndVars] Split loop predication out of optimizeLoopExits [NFC]

    In the process of writing D69009, I realized we have two distinct sets of invariants within this single function, and basically no shared logic.  The optimize loop exit transforms (including the new one in D69009) only care about *analyzeable* exits.  Loop predication, on the other hand, has to reason about *all* exits.  At the moment, we have the property (due to the requirement for an exact btc) that all exits are analyzeable, but that will likely change in the future as we add widenable condition support. (detail/ViewSVN)
    by reames
  25. [codeview] Workaround for PR43479, don't re-emit instr labels

    Summary:
    In the long run we should come up with another mechanism for marking
    call instructions as heap allocation sites, and remove this workaround.
    For now, we've had two bug reports about this, so let's apply this
    workaround. SLH (the other client of instruction labels) probably has
    the same bug, but the solution there is more likely to be to mark the
    call instruction as not duplicatable, which doesn't work for debug info.

    Reviewers: akhuang

    Subscribers: aprantl, hiraditya, aganea, chandlerc, llvm-commits

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D69068 (detail/ViewSVN)
    by rnk
  26. Revert [Sanitizers] Add support for RISC-V 64-bit

    This reverts r375132 (git commit 00bbe990c5d4472d5413479a539b3d6edbb3ca7a) (detail/ViewSVN)
    by lenary
  27. [NFC][InstCombine] Tests for "fold variable mask before variable shift-of-trunc" (PR42563)

    https://bugs.llvm.org/show_bug.cgi?id=42563 (detail/ViewSVN)
    by lebedevri
  28. [OPENMP]Improve use of the global tid parameter.

    If we can determined, that the global tid parameter can be used in the
    function, better to use it rather than calling __kmpc_global_thread_num
    function. (detail/ViewSVN)
    by abataev
  29. [IndVars] Factor out a helper function for readability [NFC] (detail/ViewSVN)
    by reames
  30. [Sanitizers] Add support for RISC-V 64-bit

    Summary:
    This has been tested with gcc trunk on openSUSE Tumbleweed on the HiFive Unleashed.

    Patch by Andreas Schwab (schwab)

    Reviewers: luismarques

    Reviewed By: luismarques

    Subscribers: mhorne, emaste, luismarques, asb, mgorny, fedor.sergeev, simoncook, kito-cheng, shiva0217, rogfer01, rkruppe, lenary, s.egerton, #sanitizers, llvm-commits

    Tags: #llvm, #sanitizers

    Differential Revision: https://reviews.llvm.org/D66870 (detail/ViewSVN)
    by lenary
  31. [lit] Move computation of deadline up into base class (detail/ViewSVN)
    by yln
  32. [lit] Synthesize artificial deadline

    We always want to use a deadline when calling `result.await`.  Let's
    synthesize an artificial deadline (positive infinity) to simplify code
    and do less busy waiting. (detail/ViewSVN)
    by yln
  33. [lit] Create derived classes for serial/parallel test runs

    The hope is that with a little OO we can nicely factor out the
    differences. (detail/ViewSVN)
    by yln
  34. [ObjC] Diagnose implicit type coercion from ObjC 'Class' to object
    pointer types.

    For example, in Objective-C mode, the initialization of 'x' in:
    ```
      @implementation MyType
      + (void)someClassMethod {
        MyType *x = self;
      }
      @end
    ```
    is correctly diagnosed with an incompatible-pointer-types warning, but
    in Objective-C++ mode, it is not diagnosed at all -- even though
    incompatible pointer conversions generally become an error in C++.

    This patch fixes that oversight, allowing implicit conversions
    involving Class only to/from unqualified-id, and between qualified and
    unqualified Class, where the protocols are compatible.

    Note that this does change some behaviors in Objective-C, as well, as
    shown by the modified tests.

    Of particular note is that assignment from from 'Class<MyProtocol>' to
    'id<MyProtocol>' now warns. (Despite appearances, those are not
    compatible types. 'Class<MyProtocol>' is not expected to have instance
    methods defined by 'MyProtocol', while 'id<MyProtocol>' is.)

    Differential Revision: https://reviews.llvm.org/D67983 (detail/ViewSVN)
    by jyknight
  35. [ObjC] Add some additional test cases around pointer conversions.

    This is especially important for Objective-C++, which is entirely
    missing this testing at the moment.

    This annotates with "FIXME" the cases which I change in the next
    patch -- I primarily wanted to document the current state of things so
    that the effect of the code change is made clear.

    Differential Revision: https://reviews.llvm.org/D67982 (detail/ViewSVN)
    by jyknight
  36. Revert r375114: "[lit] Make internal diff work in pipelines"

    This series of patches still breaks a Windows bot. (detail/ViewSVN)
    by jdenny
  37. Revert r375116: "[lit] Extend internal diff to support `-` argument"

    This series of patches still breaks a Windows bot. (detail/ViewSVN)
    by jdenny
  38. [OPENMP]Fix thread id passed to outlined region in sequential parallel
    regions.

    The real global thread id must be passed to the outlined region instead
    of the zero thread id. (detail/ViewSVN)
    by abataev
  39. [OpenCL] Preserve addrspace in CGClass (PR43145)

    PR43145 revealed two places where Clang was attempting to create a
    bitcast without considering the address space of class types during
    C++ class code generation.

    Differential Revision: https://reviews.llvm.org/D68403 (detail/ViewSVN)
    by svenvh
  40. [clangd] Use our own relation kind.

    Summary:
    Move the RelationKind from Serialization.h to Relation.h. This patch doesn't
    introduce any breaking changes.

    Reviewers: kadircet

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

    Tags: #clang

    Differential Revision: https://reviews.llvm.org/D68981 (detail/ViewSVN)
    by hokein
  41. [lit] Extend internal diff to support `-` argument

    When using lit's internal shell, RUN lines like the following
    accidentally execute an external `diff` instead of lit's internal
    `diff`:

    ```
    # RUN: program | diff file -
    ```

    Such cases exist now, in `clang/test/Analysis` for example.  We are
    preparing patches to ensure lit's internal `diff` is called in such
    cases, which will then fail because lit's internal `diff` doesn't
    recognize `-` as a command-line option.  This patch adds support for
    `-` to mean stdin.

    Reviewed By: probinson, rnk

    Differential Revision: https://reviews.llvm.org/D67643 (detail/ViewSVN)
    by jdenny
  42. [lit] Make internal diff work in pipelines

    When using lit's internal shell, RUN lines like the following
    accidentally execute an external `diff` instead of lit's internal
    `diff`:

    ```
    # RUN: program | diff file -
    # RUN: not diff file1 file2 | FileCheck %s
    ```

    Such cases exist now, in `clang/test/Analysis` for example.  We are
    preparing patches to ensure lit's internal `diff` is called in such
    cases, which will then fail because lit's internal `diff` cannot
    currently be used in pipelines and doesn't recognize `-` as a
    command-line option.

    To enable pipelines, this patch moves lit's `diff` implementation into
    an out-of-process script, similar to lit's `cat` implementation.  A
    follow-up patch will implement `-` to mean stdin.

    Reviewed By: probinson, stella.stamenova

    Differential Revision: https://reviews.llvm.org/D66574 (detail/ViewSVN)
    by jdenny
  43. [AIX] TOC pseudo expansion for 64bit large + 64bit small + 32bit large models

    This patch provides support for peudo ops including ADDIStocHA8, ADDIStocHA, LWZtocL,
    LDtoc, LDtocL for AIX, lowering them from MIR to assembly.

    Differential Revision: https://reviews.llvm.org/D68341 (detail/ViewSVN)
    by xiangling_liao
  44. [OpenCL] Add doc to describe OpenCL support

    The idea of this page is to document work in progress functionality
    and also describe the plan of future development work.

    Patch by Anastasia Stulova.

    Differential Revision: https://reviews.llvm.org/D69072 (detail/ViewSVN)
    by svenvh
  45. [mips] [builtins] Remove clear_mips_cache
    Differential Revision: https://reviews.llvm.org/D69021 (detail/ViewSVN)
    by zjovanovic
  46. [AMDGPU] Improve code size cost model

    Summary:
    Added estimation for zero size insertelement, extractelement
    and llvm.fabs operators.
    Updated inline/unroll parameters default values.

    Reviewers: rampitec, arsenm

    Reviewed By: arsenm

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

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D68881 (detail/ViewSVN)
    by dfukalov
  47. [ARM][MVE] Enable truncating masked stores

    Allow us to generate truncating masked store which take v4i32 and
    v8i16 vectors and can store to v4i8, v4i16 and v8i8 and memory.
    Removed support for unaligned masked stores.

    Differential Revision: https://reviews.llvm.org/D68461 (detail/ViewSVN)
    by sam_parker
  48. [docs][llvm-ar] Fix option:: O after r375106

    docs-llvm-html fails => unknown option: O

    There are lots of formatting issues in the file but they will be fixed by D68998. (detail/ViewSVN)
    by maskray
  49. [llvm-ar] Implement the O modifier: display member offsets inside the archive

    Since GNU ar 2.31, the 't' operation prints member offsets beside file
    names if the 'O' modifier is specified. 'O' is ignored for thin
    archives.

    Reviewed By: gbreynoo, ruiu

    Differential Revision: https://reviews.llvm.org/D69087 (detail/ViewSVN)
    by maskray
  50. [llvm-objcopy] --add-symbol: fix crash if SHT_SYMTAB does not exist

    Exposed by D69041. If SHT_SYMTAB does not exist, ELFObjcopy.cpp:handleArgs will crash due
    to a null pointer dereference.

      for (const NewSymbolInfo &SI : Config.ELF->SymbolsToAdd) {
        ...
        Obj.SymbolTable->addSymbol(

    Fix this by creating .symtab and .strtab on demand in ELFBuilder<ELFT>::readSections,
    if --add-symbol is specified.

    Reviewed By: grimar

    Differential Revision: https://reviews.llvm.org/D69093 (detail/ViewSVN)
    by maskray
  51. Include leading attributes in DeclStmt's SourceRange

    Differential Revision: https://reviews.llvm.org/D68581 (detail/ViewSVN)
    by sberg
  52. JumpThreadingPass::UnfoldSelectInstr - silence static analyzer dyn_cast<> null dereference warning. NFCI.

    The static analyzer is warning about a potential null dereference, but we should be able to use cast<> directly and if not assert will fire for us. (detail/ViewSVN)
    by rksimon
  53. clang-tidy - silence static analyzer getAs<> null dereference warnings. NFCI.

    The static analyzer is warning about potential null dereferences, but in these cases we should be able to use castAs<> directly and if not assert will fire for us. (detail/ViewSVN)
    by rksimon
  54. SemaExprCXX - silence static analyzer getAs<> null dereference warnings. NFCI.

    The static analyzer is warning about potential null dereferences, but in these cases we should be able to use castAs<> directly and if not assert will fire for us. (detail/ViewSVN)
    by rksimon
  55. [LoopIdiom] BCmp: check, not assert that loop exits exit out of the loop (PR43687)

    We can't normally stumble into that assertion because a tautological
    *conditional* `br` in loop body is required, one that always
    branches to loop latch. But that should have been always folded
    to an unconditional branch before we get it.
    But that is not guaranteed if the pass is run standalone.
    So let's just promote the assertion into a proper check.

    Fixes https://bugs.llvm.org/show_bug.cgi?id=43687 (detail/ViewSVN)
    by lebedevri
  56. SemaDeclObjC - silence static analyzer getAs<> null dereference warnings. NFCI.

    The static analyzer is warning about potential null dereferences, but in these cases we should be able to use castAs<> directly and if not assert will fire for us. (detail/ViewSVN)
    by rksimon
  57. [llvm-readobj] - Refine the LLVM-style output to be consistent.

    Our LLVM-style output was inconsistent.
    This patch changes the output in the following way:

    SHT_GNU_verdef { -> VersionDefinitions [
    SHT_GNU_verneed { -> VersionRequirements [
    Version symbols [ -> VersionSymbols [
    EH_FRAME Header [ -> EHFrameHeader {

    Differential revision: https://reviews.llvm.org/D68636 (detail/ViewSVN)
    by grimar
  58. Reland: Dead Virtual Function Elimination

    Remove dead virtual functions from vtables with
    replaceNonMetadataUsesWith, so that CGProfile metadata gets cleaned up
    correctly.

    Original commit message:

    Currently, it is hard for the compiler to remove unused C++ virtual
    functions, because they are all referenced from vtables, which are referenced
    by constructors. This means that if the constructor is called from any live
    code, then we keep every virtual function in the final link, even if there
    are no call sites which can use it.

    This patch allows unused virtual functions to be removed during LTO (and
    regular compilation in limited circumstances) by using type metadata to match
    virtual function call sites to the vtable slots they might load from. This
    information can then be used in the global dead code elimination pass instead
    of the references from vtables to virtual functions, to more accurately
    determine which functions are reachable.

    To make this transformation safe, I have changed clang's code-generation to
    always load virtual function pointers using the llvm.type.checked.load
    intrinsic, instead of regular load instructions. I originally tried writing
    this using clang's existing code-generation, which uses the llvm.type.test
    and llvm.assume intrinsics after doing a normal load. However, it is possible
    for optimisations to obscure the relationship between the GEP, load and
    llvm.type.test, causing GlobalDCE to fail to find virtual function call
    sites.

    The existing linkage and visibility types don't accurately describe the scope
    in which a virtual call could be made which uses a given vtable. This is
    wider than the visibility of the type itself, because a virtual function call
    could be made using a more-visible base class. I've added a new
    !vcall_visibility metadata type to represent this, described in
    TypeMetadata.rst. The internalization pass and libLTO have been updated to
    change this metadata when linking is performed.

    This doesn't currently work with ThinLTO, because it needs to see every call
    to llvm.type.checked.load in the linkage unit. It might be possible to
    extend this optimisation to be able to use the ThinLTO summary, as was done
    for devirtualization, but until then that combination is rejected in the
    clang driver.

    To test this, I've written a fuzzer which generates random C++ programs with
    complex class inheritance graphs, and virtual functions called through object
    and function pointers of different types. The programs are spread across
    multiple translation units and DSOs to test the different visibility
    restrictions.

    I've also tried doing bootstrap builds of LLVM to test this. This isn't
    ideal, because only classes in anonymous namespaces can be optimised with
    -fvisibility=default, and some parts of LLVM (plugins and bugpoint) do not
    work correctly with -fvisibility=hidden. However, there are only 12 test
    failures when building with -fvisibility=hidden (and an unmodified compiler),
    and this change does not cause any new failures for either value of
    -fvisibility.

    On the 7 C++ sub-benchmarks of SPEC2006, this gives a geomean code-size
    reduction of ~6%, over a baseline compiled with "-O2 -flto
    -fvisibility=hidden -fwhole-program-vtables". The best cases are reductions
    of ~14% in 450.soplex and 483.xalancbmk, and there are no code size
    increases.

    I've also run this on a set of 8 mbed-os examples compiled for Armv7M, which
    show a geomean size reduction of ~3%, again with no size increases.

    I had hoped that this would have no effect on performance, which would allow
    it to awlays be enabled (when using -fwhole-program-vtables). However, the
    changes in clang to use the llvm.type.checked.load intrinsic are causing ~1%
    performance regression in the C++ parts of SPEC2006. It should be possible to
    recover some of this perf loss by teaching optimisations about the
    llvm.type.checked.load intrinsic, which would make it worth turning this on
    by default (though it's still dependent on -fwhole-program-vtables).

    Differential revision: https://reviews.llvm.org/D63932 (detail/ViewSVN)
    by ostannard
  59. Try to fix the assert in Alignment::alignAddr to work on 32-bit

    Hopefully fixing the AlignmentDeathTest.AlignAddr failures (e.g. at
    http://lab.llvm.org:8011/builders/clang-cmake-armv7-quick/builds/10925) (detail/ViewSVN)
    by hans
  60. [Analysis] Don't assume that unsigned overflow can't happen in EmitGEPOffset (PR42699)

    Summary:
    Currently when computing a GEP offset using the function EmitGEPOffset
    for the following instruction

      getelementptr inbounds i32, i32* %p, i64 %offs

    we get

      mul nuw i64 %offs, 4

    Unfortunately we cannot assume that unsigned wrapping won't happen
    here because %offs is allowed to be negative.

    Making such assumptions can lead to miscompilations: see the new test
    test24_neg_offs in InstCombine/icmp.ll. Without the patch InstCombine
    would generate the following comparison:

       icmp eq i64 %offs, 4611686018427387902; 0x3ffffffffffffffe

    Whereas the correct value to compare with is -2.

    This patch replaces the NUW flag with NSW in the multiplication
    instructions generated by EmitGEPOffset and adjusts the test suite.

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

    Reviewers: chandlerc, craig.topper, ostannard, lebedev.ri, spatel, efriedma, nlopes, aqjune

    Reviewed By: lebedev.ri

    Subscribers: reames, lebedev.ri, hiraditya, llvm-commits

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D68342 (detail/ViewSVN)
    by miyuki
  61. Revert r374931 "[llvm-objdump] Use a counter for llvm-objdump -h instead of the section index."

    This broke llvm-objdump in 32-bit builds, see e.g.
    http://lab.llvm.org:8011/builders/clang-cmake-armv7-quick/builds/10925

    > Summary:
    > When listing the index in `llvm-objdump -h`, use a zero-based counter instead of the actual section index (e.g. shdr->sh_index for ELF).
    >
    > While this is effectively a noop for now (except one unit test for XCOFF), the index values will change in a future patch that filters certain sections out (e.g. symbol tables). See D68669 for more context. Note: the test case in `test/tools/llvm-objdump/X86/section-index.s` already covers the case of incrementing the section index counter when sections are skipped.
    >
    > Reviewers: grimar, jhenderson, espindola
    >
    > Reviewed By: grimar
    >
    > Subscribers: emaste, sbc100, arichardson, aheejin, arphaman, seiya, llvm-commits, MaskRay
    >
    > Tags: #llvm
    >
    > Differential Revision: https://reviews.llvm.org/D68848 (detail/ViewSVN)
    by hans
  62. [ARM][MVE] Change VPST to use, not def, VPR

    Unlike VPT, VPST just uses the current value of VPR.P0.

    Differential Revision: https://reviews.llvm.org/D69037 (detail/ViewSVN)
    by sam_parker
  63. [DFAPacketizer] Use DFAEmitter. NFC.

    Summary:
    This is a NFC change that removes the NFA->DFA construction and emission logic from DFAPacketizerEmitter and instead uses the generic DFAEmitter logic. This allows DFAPacketizer to use the Automaton class from Support and remove a bunch of logic there too.

    After this patch, DFAPacketizer is mostly logic for grepping Itineraries and collecting functional units, with no state machine logic. This will allow us to modernize by removing the 16-functional-unit limit and supporting non-itinerary functional units. This is all for followup patches.

    Subscribers: hiraditya, llvm-commits

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D68992 (detail/ViewSVN)
    by jamesm
  64. [DAGCombine][ARM] Enable extending masked loads

    Add generic DAG combine for extending masked loads.

    Allow us to generate sext/zext masked loads which can access v4i8,
    v8i8 and v4i16 memory to produce v4i32, v8i16 and v4i32 respectively.

    Differential Revision: https://reviews.llvm.org/D68337 (detail/ViewSVN)
    by sam_parker
  65. [Alignment][NFC] Use Align for TargetFrameLowering/Subtarget

    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: jholewinski, arsenm, dschuff, jyknight, dylanmckay, sdardis, nemanjai, jvesely, nhaehnle, sbc100, jgravelle-google, hiraditya, aheejin, kbarton, fedor.sergeev, asb, rbar, johnrusso, simoncook, apazos, sabuasal, niosHD, jrtc27, MaskRay, zzheng, edward-jones, atanasyan, rogfer01, MartinMosbeck, brucehoult, the_o, PkmX, jocewei, jsji, Jim, lenary, s.egerton, pzheng, llvm-commits

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D68993 (detail/ViewSVN)
    by gchatelet
  66. [ThinLTO] Import virtual method with single implementation in hybrid mode

    Differential revision: https://reviews.llvm.org/D68782 (detail/ViewSVN)
    by evgeny777
  67. [llvm-ar] Simplify and make two global variables static. NFC (detail/ViewSVN)
    by maskray
  68. Revert "Include sanitize blacklist and other extra deps as part of scan-deps output"

    This test is failing on Windows bots, revert for now (will check the right fix and retry the patch).

    Summary: This reverts commit 962ca076e51c25a7a08f4e0d329c65328a635bdb.

    Reviewers: Bigcheese, jkorous, arphaman

    Subscribers: dexonsmith, cfe-commits

    Tags: #clang

    Differential Revision: https://reviews.llvm.org/D69079 (detail/ViewSVN)
    by kousikk

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

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

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

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

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

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

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

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

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

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

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

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

This run spent 17 hr waiting in the queue.