Started 5 mo 11 days ago
Took 32 min

Success Build clang-r363215-t57470-b57470.tar.gz (Jun 12, 2019 4:44:22 PM)


No known issues detected

Build Log

Revision: 362564
  1. [lldb-cmake-standalone] Run check-lldb in TERM=vt100 (detail)
    by stefan.graenitz
  2. [lldb-cmake-standalone] Checkout libc++ the same way as other subprojects (detail)
    by stefan.graenitz
  3. [lldb-cmake-standalone] When invoking llmv-lit manually, make sure to build lldb-test-deps first (detail)
    by stefan.graenitz
  4. Add LLVM lab buildslaves for Windows (armv7 target).

    The ARMV7 buildslave configurations for a new hardware in LLVM lab.

    Requested for the production buildbot

    Patch by Vlad Vereschaka.

    Differential Revision: (detail)
    by gkistanova
Revision: 362564
  1. [NFC][CodeGen] Add unary FNeg tests to X86/avx512-intrinsics-fast-isel.ll

    Patch 1 of n. (detail)
    by mcinally
  2. [llvm] Expose DWARFDebugLine::LineTable::getFileNameEntry

    This is useful for scenarios where Prologue was directly used and DWARF
    5 awareness is required. The current alternative would be to either
    duplicate the logic in getFileNameEntry, or to use getFileNameByIndex.
    The latter isn't quite an in-place replacement - it performs some
    processing, and it produces a string instead of a StringRef, meaning
    the caller needs to handle its lifetime.

    Reviewers: tamur, dblaikie, JDevlieghere

    Reviewed By: tamur, JDevlieghere

    Subscribers: aprantl, llvm-commits

    Tags: #llvm, #debug-info

    Differential Revision: (detail)
    by mtrofin
  3. [x86] add tests for vector shifts; NFC (detail)
    by spatel
  4. Sanitize llvm-extract -help output

    Filter out irrelevant options

    New output:

        OVERVIEW: llvm extractor

        USAGE: llvm-extract [options] <input bitcode file>


        Generic Options:

          --help              - Display available options (--help-hidden for more)
          --help-list         - Display list of available options (--help-list-hidden for more)
          --version           - Display the version of this program

        llvm-extract Options:

          --alias=<alias>     - Specify alias to extract
          --bb=<function:bb>  - Specify <function, basic block> pairs to extract
          --delete            - Delete specified Globals from Module
          -f                  - Enable binary output on terminals
          --func=<function>   - Specify function to extract
          --glob=<global>     - Specify global to extract
          -o=<filename>       - Specify output filename
          --ralias=<ralias>   - Specify alias(es) to extract using a regular expression
          --recursive         - Recursively extract all called functions
          --rfunc=<rfunction> - Specify function(s) to extract using a regular expression
          --rglob=<rglobal>   - Specify global(s) to extract using a regular expression

    Differential Revision: (detail)
    by serge_sans_paille
  5. [NFC][CodeGen] Add unary FNeg tests to X86/avx512vl-intrinsics-fast-isel.ll

    Patch 3 of 3 for X86/avx512vl-intrinsics-fast-isel.ll (detail)
    by mcinally
  6. [llvm-readobj] Fix output interleaving issue caused by using multiple streams at the same time.

    Use llvm::fouts() as the default stream for outputing. No new stream
    should be constructed to output at the same time.

    Reviewers: jhenderson, grimar, MaskRay, phosek, rupprecht

    Reviewed By: rupprecht

    Subscribers: llvm-commits

    Tags: #llvm

    Differential Revision:

    Patch by Yuanfang Chen! (detail)
    by rupprecht
  7. [IndVars] Extend diagnostic -replexitval flag w/ability to bypass hard use hueristic

    Note: This does mean that "always" is now more powerful than it was. (detail)
    by reames
  8. [NFC][CodeGen] Add unary FNeg tests to X86/avx512vl-intrinsics-fast-isel.ll

    Patch 2 of 3 for X86/avx512vl-intrinsics-fast-isel.ll (detail)
    by mcinally
  9. [Tests] Autogen RLEV test and add tests for a future enhancement (detail)
    by reames
  10. [Tests] Add tests to highlight sibling loop optimization order issue for exit rewriting

    The issue addressed in r363180 is more broadly relevant.  For the moment, we don't actually get any of these cases because we a) restrict SCEV formation due to SCEExpander needing to preserve LCSSA, and b) don't iterate between loops. (detail)
    by reames
  11. [AMDGPU] more gfx1010 tests. NFC. (detail)
    by rampitec
  12. [llvm-ar][test] Relax lit directory assumptions in thin-archive.test

    Summary: thin-archive.test assumes the Output/<testname> structure that lit creates. Rewrite the test in a way that still tests the same thing (creating via relative path and adding via absolute path) but doesn't assume this specific lit structure, making it possible to run in a lit emulator.

    Reviewers: gbreynoo

    Reviewed By: gbreynoo

    Subscribers: llvm-commits, bkramer

    Tags: #llvm

    Differential Revision: (detail)
    by rupprecht
  13. [AMDGPU] gfx1010 dpp16 and dpp8

    Differential Revision: (detail)
    by rampitec
  14. [AMDGPU] gfx1010 premlane instructions

    Differential Revision: (detail)
    by rampitec
  15. [Mips] Add s.d instruction alias for Mips1

    Add support for s.d instruction for Mips1 which expands into two swc1

    Patch by Mirko Brkusanin.

    Differential Revision: (detail)
    by atanasyan
  16. [llvm-lipo] Update llvm-lipo docs for -archs flag

    The information for -archs flag is added to llvm-lipo.rst.

    Patch by Anusha Basana <>

    Differential Revision: (detail)
    by smeenai
  17. [X86][SSE] Avoid unnecessary stack codegen in NT merge-consecutive-stores codegen tests. (detail)
    by rksimon
  18. [SCEV] Teach computeSCEVAtScope benefit from one-input Phi. PR39673

    SCEV does not propagate arguments through one-input Phis so as to make it easy for the SCEV expander (and related code) to preserve LCSSA.  It's not entirely clear this restriction is neccessary, but for the moment it exists.   For this reason, we don't analyze single-entry phi inputs.  However it is possible that when an this input leaves the loop through LCSSA Phi, it is a provable constant.  Missing that results in an order of optimization issue in loop exit value rewriting where we miss some oppurtunities based on order in which we visit sibling loops.

    This patch teaches computeSCEVAtScope about this case. We can generalize it later, but so far we can only replace LCSSA Phis with their constant loop-exiting values.  We should probably also add similiar logic directly in the SCEV construction path itself.

    Patch by: mkazantsev (with revised commit message by me)
    Differential Revision: (detail)
    by reames
  19. [TargetLowering] Add MachineMemOperand::Flags to allowsMemoryAccess tests (PR42123)

    As discussed on D62910, we need to check whether particular types of memory access are allowed, not just their alignment/address-space.

    This NFC patch adds a MachineMemOperand::Flags argument to allowsMemoryAccess and allowsMisalignedMemoryAccesses, and wires up calls to pass the relevant flags to them.

    If people are happy with this approach I can then update X86TargetLowering::allowsMisalignedMemoryAccesses to handle misaligned NT load/stores.

    Differential Revision: (detail)
    by rksimon
  20. [X86][AVX] Fold concat(vpermilps(x,c),vpermilps(y,c)) -> vpermilps(concat(x,y),c)


    An extra AVX1 PSHUFD->VPERMILPS combine will be added in a future commit. (detail)
    by rksimon
  21. [InstCombine] add tests for fmin/fmax libcalls; NFC (detail)
    by spatel
  22. Revert rL363156.

    The patch was to fix buildbots, but rL363157 should now be fixing it
    in a cleaner way. (detail)
    by sam_parker
  23. [NFC[ Updated tests for D54411 (detail)
    by xbolva00
  24. gn build: Add SystemZ target (detail)
    by nico
  25. StackProtector: Use PointerMayBeCaptured

    This was using its own, outdated list of possible captures. This was
    at minimum not catching cmpxchg and addrspacecast captures.

    One change is now any volatile access is treated as capturing. The
    test coverage for this pass is quite inadequate, but this required
    removing volatile in the lifetime capture test.

    Also fixes some infrastructure issues to allow running just the IR

    Fixes bug 42238. (detail)
    by arsenm
  26. AMDGPU/GlobalISel: Fix using illegal situations in tests

    These were using illegal copies as the side effecting use, so make
    them legal. (detail)
    by arsenm
  27. [ARM] Fix compiler warning

    Without this fix clang 3.6 complains with:

    ../lib/Target/ARM/ARMAsmPrinter.cpp:1473:18: error: variable 'BranchTarget' is used uninitialized whenever 'if' condition is false [-Werror,-Wsometimes-uninitialized]
          } else if (MI->getOperand(1).isSymbol()) {
    ../lib/Target/ARM/ARMAsmPrinter.cpp:1479:22: note: uninitialized use occurs here
    ../lib/Target/ARM/ARMAsmPrinter.cpp:1473:14: note: remove the 'if' if its condition is always true
          } else if (MI->getOperand(1).isSymbol()) {
    ../lib/Target/ARM/ARMAsmPrinter.cpp:1465:33: note: initialize the variable 'BranchTarget' to silence this warning
          const MCExpr *BranchTarget;
                                     = nullptr
    1 error generated.

    Discussed here: (detail)
    by uabelho
  28. LoopVersioning: Respect convergent

    This changes the standalone pass only. Arguably the utility class
    itself should assert there are no convergent calls. However, a target
    pass with additional context may still be able to version a loop if
    all of the dynamic conditions are sufficiently uniform. (detail)
    by arsenm
  29. [MIR] Skip hoisting to basic block which may throw exception or return

    Fix hoisting to basic block which are not legal for hoisting cause
    it can be terminated by exception or it is return block.

    Reviewers: john.brawn, RKSimon, MatzeB

    Subscribers: hiraditya, llvm-commits

    Tags: #llvm

    Differential Revision: (detail)
    by anton-afanasyev
  30. [InstCombine] add tests for fcmp+select with FMF (minnum/maxnum); NFC (detail)
    by spatel
  31. LoopLoadElim: Respect convergent (detail)
    by arsenm
  32. [DebugInfo] Add a test that fell out of an earlier commit

    r362951 was supposed to contain this test, however it didn't get committed
    due to operator error. This was originally part of D59431. (detail)
    by jmorse
  33. LoopDistribute/LAA: Respect convergent

    This case is slightly tricky, because loop distribution should be
    allowed in some cases, and not others. As long as runtime dependency
    checks don't need to be introduced, this should be OK. This is further
    complicated by the fact that LoopDistribute partially ignores if LAA
    says that vectorization is safe, and then does its own runtime pointer
    legality checks.

    Note this pass still does not handle noduplicate correctly, as this
    should always be forbidden with it. I'm not going to bother trying to
    fix it, as it would require more effort and I think noduplicate should
    be removed. (detail)
    by arsenm
  34. gn build: Add Mips target (detail)
    by nico
  35. LoopDistribute/LAA: Add tests to catch regressions

    I broke 2 of these with a patch, but were not covered by existing
    tests. (detail)
    by arsenm
  36. [NFC] Add HardwareLoops lit.local.cfg file

    Set Transforms/HardwareLoops/ARM/ tests as unsupported if there isn't
    an arm target. (detail)
    by sam_parker
  37. Attempt to fix non-Arm buildbots

    Adding REQUIRES: arm to failing tests (detail)
    by sam_parker
  38. Fix a Wunused-lambda-capture warning.

    The capture was added in the first commit of
    when it was used. In the reland, the use was removed but the capture
    wasn't removed. (detail)
    by nico
  39. gn build: add RISCV target

    Patch from David L. Jones <>, with minor tweaks by me.

    Differential Revision: (detail)
    by nico
  40. [X86][AVX] Tests showing missing concat(shuffle,shuffle) -> shuffle(concat) folds. NFCI. (detail)
    by rksimon
  41. gn build: Merge r363122 (detail)
    by nico
  42. [Legacy LTO] Fix build bots: r363140: Fix export name (detail)
    by bd1976llvm
  43. [ARM] Implement TTI::isHardwareLoopProfitable
    Implement the backend target hook to drive the HardwareLoops pass.
    The low-overhead branch extension for Arm M-class cores is flexible
    enough that we don't have to ensure correctness at this point, except
    checking that the loop counter variable can be stored in LR - a
    32-bit register. For it to be profitable, we want to avoid loops that
    contain function calls, or any other instruction that alters the PC.
    This implementation uses TargetLoweringInfo, to query type and
    operation actions, looks at intrinsic calls and also performs some
    manual checks for remainder/division and FP operations.
    I think this should be a good base to start and extra details can be
    filled out later.

    Differential Revision: (detail)
    by sam_parker
  44. [bindings/go][NFC] Format code with go fmt

    Run go fmt (version 1.12) over the Go bindings. This cleans up lots of
    inconsistencies in the code, it does not change the code in a functional

    Differential Revision: (detail)
    by aykevl
  45. [NFC][SCEV] Add NoWrapFlag argument to InsertBinOp

    'Use wrap flags in InsertBinop' (rL362687) was reverted due to
    miscompiles. This patch introduces the previous change to pass
    no-wrap flags but now only FlagAnyWrap is passed.

    Differential Revision: (detail)
    by sam_parker
  46. [docs][llvm-symbolizer] Fix typo and grammar error (detail)
    by jhenderson
  47. Share /machine: handling code with llvm-cvtres too

    r363016 let lld-link and llvm-lib share the /machine: parsing code.
    This lets llvm-cvtres share it as well.

    Making llvm-cvtres depend on llvm-lib seemed a bit strange (it doesn't
    need llvm-lib's dependencies on BinaryFormat and BitReader) and I
    couldn't find a good place to put this code. Since it's just a few
    lines, put it in lib/Object for now.

    Differential Revision: (detail)
    by nico
  48. [DOC] Fix `load` instructions' syntax, function definition.

    Summary: In this patch, I updated `load` instruction syntax and fixed function definition. Besides, I re-named some variables to make them obey SSA rule.

    Reviewers: MaskRay

    Reviewed By: MaskRay

    Subscribers: llvm-commits

    Tags: #llvm

    Differential Revision: (detail)
    by Xing
  49. [XCore] CombineSTORE - Use allowsMemoryAccess wrapper. NFCI.

    Noticed in D63075 - there was a allowsMisalignedMemoryAccesses call to check for unaligned loads and a check for aligned legal type loads - which is exactly what allowsMemoryAccess does. (detail)
    by rksimon
  50. [ThinLTO]LTO]Legacy] Fix dependent libraries support by adding querying of the IRSymtab

    Dependent libraries support for the legacy api was committed in a
    broken state (see: This was missed
    due to the painful nature of having to integrate the changes into a
    linker in order to test. This change implements support for dependent
    libraries in the legacy LTO api:

    - I have removed the current api function, which returns a single
    string, and   added functions to access each dependent library
    specifier individually.

    - To reduce the testing pain, I have made the api functions as thin as
    possible to   maximize coverage from llvm-lto.

    - When doing ThinLTO the system linker will load the modules lazily
    when scanning   the input files. Unfortunately, when modules are
    lazily loaded there is no access   to module level named metadata. To
    fix this I have added api functions that allow   querying the IRSymtab
    for the dependent libraries. I hope to expand the api in the   future
    so that, eventually, all the information needed by a client linker
    during   scan can be retrieved from the IRSymtab.

    Differential Revision: (detail)
    by bd1976llvm
  51. [docs] Fix typo (detail)
    by jhenderson
  52. [XCore] LowerLOAD/LowerSTORE - Use allowsMemoryAccess wrapper. NFCI.

    Noticed in D63075 - there was a allowsMisalignedMemoryAccesses call to check for unaligned loads and a check for aligned legal type loads - which is exactly what allowsMemoryAccess does. (detail)
    by rksimon
  53. [llvm-nm] Fix docs and help text for --print-size

    The --print-size help text and documentation claimed that the size was
    printed instead of the address, but this is incorrect. It is printed as
    well as the address. This patch fixes this issue.

    Reviewed by: MaskRay, mtrent, ruiu

    Differential Revision: (detail)
    by jhenderson
  54. Revert "[DebugInfo@O2][LoopVectorize] pr39024: Vectorized code linenos step through loop even after completion"

    This reverts commit 1a0f7a2077b70c9864faa476e15b048686cf1ca7.
    See phabricator thread for D60831. (detail)
    by orlandoch
  55. [AVR] Fix the 'avr-tiny.ll' and 'avr25.ll' subtarget feature tests

    When these tests were originally written, the middle end would introduce
    an unnecessary copy from r24:r23->GPR16->r24:r23, and these tests
    mistakenly relied on it.

    The most optimal codegen for the functions in the test cases before this patch
    would be NOPs. This is because the first i16 argument always gets the same register
    allocation as an i16 return value in the AVR calling convention.

    These tests broke in r362963 when the codegen was improved and the
    redundant copy was eliminated. After this, the test functions
    were lowered to their optimal form - a 'ret' and nothing else.

    This patch prepends an extra i16 operand to each of the test functions
    so that a 16-bit copy must be inserted for the program to be correct. (detail)
    by dylanmckay
  56. [AArch64] Merge globals when optimising for size

    Extern global merging is good for code-size. There's definitely potential for
    performance too, but there's one regression in a benchmark that needs
    investigating, so that's why we enable it only when we optimise for size for

    Patch by Ramakota Reddy and Sjoerd Meijer.

    Differential Revision: (detail)
    by sjoerdmeijer
  57. gitignore: Ignore Qt Creator project configuration files. NFC (detail)
    by nik
  58. [X86] Add VCMPSSZrr_Intk and VCMPSDZrr_Intk to isNonFoldablePartialRegisterLoad.

    The non-masked versions are already in there. I'm having some
    trouble coming up with a way to test this right now. Most load
    folding should happen during isel so I'm not sure how to get
    peephole pass to do it. (detail)
    by ctopper
  59. [RISCV] Fix inline-asm.ll test by adding nounwind attribute

    This test failed since CFI directive support was added in r361320. (detail)
    by asb
  60. [RISCV] Add CFI directives for RISCV prologue/epilog.

    In order to generate correct debug frame information, it needs to
    generate CFI information in prologue and epilog.

    Differential Revision: (detail)
    by hsiangkai
  61. [NFC] Correct comments in RegisterCoalescer.

    Differential Revision: (detail)
    by hsiangkai
  62. [PowerPC][NFC] Added test for sext/shl combination after isel. (detail)
    by lkail
  63. [NFC][CodeGen] Add unary FNeg tests to X86/avx512vl-intrinsics-fast-isel.ll X86/combine-fabs.ll

    X86/avx512vl-intrinsics-fast-isel.ll is only partially complete. (detail)
    by mcinally
  64. Fix a bug in getSCEVAtScope w.r.t. non-canonical loops

    The issue is that if we have a loop with multiple predecessors outside the loop, the code was expecting to merge them and only return if equal, but instead returned the first one seen.

    I have no idea if this actually tripped anywhere.  I noticed it by accident when reading the code and have no idea how to go about constructing a test case. (detail)
    by reames
  65. Generalize icmp matching in IndVars' eliminateTrunc

    We were only matching RHS being a loop invariant value, not the inverse. Since there's nothing which appears to canonicalize loop invariant values to RHS, this means we missed cases.

    Differential Revision: (detail)
    by reames
  66. [Analysis] add isSplatValue() for vectors in IR

    We have the related getSplatValue() already in IR (see code just above the proposed addition).
    But sometimes we only need to know that the value is a splat rather than capture the splatted
    scalar value. Also, we have an isSplatValue() function already in SDAG.

    Motivation - recent bugs that would potentially benefit from improved splat analysis in IR:

    Differential Revision: (detail)
    by spatel
  67. [PowerPC][NFC]Remove sms-simple.ll test temporarily.

    Looks like a MachinePipeliner algorithm problem found by
    I will backout this test first while investigating the problem to
    unblock buildbot.

    ==49637==ERROR: AddressSanitizer: heap-buffer-overflow on address
    0x614000002e08 at pc 0x000004364350 bp 0x7ffe228a3bd0 sp 0x7ffe228a3bc8
    READ of size 4 at 0x614000002e08 thread T0
        #0 0x436434f in
    8u> const&) const
        #1 0x4342cd0 in llvm::SwingSchedulerDAG::schedule()
        #2 0x434042d in
        #3 0x433eb90 in
        #4 0x428b7ea in
        #5 0x4d1a913 in llvm::FPPassManager::runOnFunction(llvm::Function&)
        #6 0x4d1b192 in llvm::FPPassManager::runOnModule(llvm::Module&)
        #7 0x4d1c06d in runOnModule
        #8 0x4d1c06d in llvm::legacy::PassManagerImpl::run(llvm::Module&)
        #9 0xa48ca3 in compileModule(char**, llvm::LLVMContext&)
        #10 0xa4270f in main
        #11 0x7fec902572e0 in __libc_start_main
        #12 0x971b69 in _start
    (/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan/bin/llc+0x971b69) (detail)
    by jsji
  68. [docs] Add "GNU binutils Replacements" section to command guide

    This splits out a section in the command guide for llvm tools that can be used as replacements for GNU tools. For pages that didn't exist, I added stub pages that can be individually filled in by followup patches.

    Tested by running `ninja docs-llvm-html` and inspecting locally.

    Reviewers: jhenderson, MaskRay, grimar, alexshap

    Reviewed By: jhenderson, MaskRay, grimar

    Subscribers: smeenai, arphaman, llvm-commits

    Tags: #llvm

    Differential Revision: (detail)
    by rupprecht
  69. [GlobalISel] Add a G_JUMP_TABLE opcode.

    This opcode generates a pointer to the address of the jump table
    specified by the source operand, which is a jump table index.

    It will be used in conjunction with an upcoming G_BRJT opcode to support
    jump table codegen with GlobalISel.

    Differential Revision: (detail)
    by aemerson
  70. [MemorySSA] When applying updates, clean unnecessary Phis.

    Summary: After applying a set of insert updates, there may be trivial Phis left over. Clean them up.

    Reviewers: george.burgess.iv

    Subscribers: jlebar, Prazek, llvm-commits

    Tags: #llvm

    Differential Revision: (detail)
    by asbirlea
  71. [NFC][CodeGen] Add unary FNeg tests to X86/combine-fcopysign.ll X86/dag-fmf-cse.ll X86/fast-isel-fneg.ll X86/fdiv.ll (detail)
    by mcinally
  72. Only passes that preserve MemorySSA must mark it as preserved.

    The method `getLoopPassPreservedAnalyses` should not mark MemorySSA as
    preserved, because it's being called in a lot of passes that do not
    preserve MemorySSA.
    Instead, mark the MemorySSA analysis as preserved by each pass that does
    preserve it.
    These changes only affect the new pass mananger.

    Reviewers: chandlerc

    Subscribers: mehdi_amini, jlebar, Prazek, george.burgess.iv, llvm-commits

    Tags: #llvm

    Differential Revision: (detail)
    by asbirlea
  73. Deduplicate S_CONSTANTs in LLD.

    Summary: Deduplicate S_CONSTANTS when linking, if they have the same value.

    Reviewers: rnk

    Subscribers: hiraditya, llvm-commits

    Tags: #llvm

    Differential Revision: (detail)
    by akhuang
  74. [PowerPC] Enable MachinePipeliner for P9 with -ppc-enable-pipeliner

    Implement necessary target hooks to enable MachinePipeliner for P9 only.
    The pass is off by default, can be enabled with -ppc-enable-pipeliner for P9.

    Differential Revision: (detail)
    by jsji
  75. [NFC][CodeGen] Add unary fneg tests to X86/fma-fneg-combine.ll (detail)
    by mcinally
  76. [Path] Set FD to -1 in moved-from TempFile

    When moving a temp file, explicitly set the file descriptor to -1 so we
    can never accidentally close the moved-from TempFile.

    Differential revision: (detail)
    by Jonas Devlieghere
  77. [InstCombine] Handle -(X-Y) --> (Y-X) for unary fneg when NSZ

    Differential Revision: (detail)
    by mcinally
  78. [docs][llvm-nm] Add darwin as --format option (detail)
    by jhenderson
  79. [InstCombine] Update fptrunc (fneg x)) -> (fneg (fptrunc x) for unary FNeg

    Differential Revision: (detail)
    by mcinally
  80. Fix docs build issue introduced by r363035

    Replacing '.. code-block:: llvm' by '::' is a quick fix to the
    build warning/error: Could not lex literal_block as "llvm". (detail)
    by s.desmalen
  81. lld-link: Reject more than one resource .obj file

    Users are exepcted to pass all .res files to the linker, which then
    merges all the resource in all .res files into a tree structure and then
    converts the final tree structure to a .obj file with .rsrc$01 and
    .rsrc$02 sections and then links that.

    If the user instead passes several .obj files containing such resources,
    the correct thing to do would be to have custom code to merge the trees
    in the resource sections instead of doing normal section merging -- but
    link.exe rejects if multiple resource obj files are passed in with
    LNK4078, so let lld-link do that too instead of silently writing broken
    .rsrc sections in that case.

    The only real way to run into this is if users manually convert .res
    files to .obj files by running cvtres and then handing the resulting
    .obj files to lld-link instead, which in practice likely never happens.

    (lld-link is slightly stricter than link.exe now: If link.exe is passed
    one .obj file created by cvtres, and a .res file, for some reason it
    just emits a warning instead of an error and outputs strange looking
    data. lld-link now errors out on mixed input like this.)

    One way users could accidentally run into this is the following
    scenario: If a .res file is passed to lib.exe, then lib.exe calls
    cvtres.exe on the .res file before putting it in the output .lib.
    (llvm-lib currently doesn't do this.)
    link.exe's /wholearchive seems to only add obj files referenced from the
    static library index, but lld-link current really adds all files in the
    archive. So if lld-link /wholearchive is used with .lib files produced
    by lib.exe and .res files were among the files handed to lib.exe, we
    previously silently produced invalid output, but now we error out.

    link.exe's /wholearchive semantics on the other hand mean that it
    wouldn't load the resource object files from the .lib file at all.
    Since this scenario is probably still an unlikely corner case,
    the difference in behavior here seems fine -- and lld-link might have to
    change to use link.exe's /wholearchive semantics in the future anyways.

    Vaguely related to PR42180.

    Differential Revision: (detail)
    by nico
  82. [X86] Regenerate CmpISel test for future patch (detail)
    by rksimon
  83. [docs][llvm-nm] Make --help help text consistent with other options (detail)
    by jhenderson
  84. [llvm-dwarfdump] Simplify --ignore-case help text and documentation

    There was a typo in the --ignore-case help text that was copied into the
    llvm-dwarfdump command-guide. Additionally, this patch simplifies the
    wording, since it was unnecessarily verbose: the switch applies for
    searching in general and doesn't need explicitly stating different
    search modes (which might go out-of-date as options are added or

    Reviwed by: JDevlieghere

    Differential Revision: (detail)
    by jhenderson
  85. [docs][llvm-nm] Fix documentation regarding llvm-nm reading stdin

    llvm-nm reads a.out NOT stdin when no input file is specified. This
    patch fixes the doc accordingly, and rephrases the surrounding sentence

    Reviewed by: grimar

    Differential Revision: (detail)
    by jhenderson
  86. [ARM] Fix a typo in the test from r363039 (detail)
    by ibiryukov
  87. [RISCV] Add lowering of addressing sequences for PIC

    This patch allows lowering of PIC addresses by using PC-relative
    addressing for DSO-local symbols and accessing the address through the
    global offset table for non-DSO-local symbols.

    Differential Revision: (detail)
    by lewis-revill
  88. [RISCV][NFC] Add missing test file for D54093 (detail)
    by lewis-revill
  89. [RISCV] Lower inline asm constraints I, J & K for RISC-V

    This validates and lowers arguments to inline asm nodes which have the
    constraints I, J & K, with the following semantics (equivalent to GCC):

    I: Any 12-bit signed immediate.
    J: Immediate integer zero only.
    K: Any 5-bit unsigned immediate.

    Differential Revision: (detail)
    by lewis-revill
  90. [ARM] First MVE instructions: scalar shifts.

    This introduces a new decoding table for MVE instructions, and starts
    by adding the family of scalar shift instructions that are part of the
    MVE architecture extension: saturating shifts within a single GPR, and
    long shifts across a pair of GPRs (both saturating and normal).

    Some of these shift instructions have only 3-bit register fields in
    the encoding, with the low bit fixed. So they can only address an odd
    or even numbered GPR (depending on the operand), and therefore I add
    two new register classes, GPREven and GPROdd.

    Differential Revision:

    Change-Id: Iad95d5f83d26aef70c674027a184a6b1e0098d33 (detail)
    by miyuki
  91. Let writeWindowsResourceCOFF() take a TimeStamp parameter

    For lld, pass in Config->Timestamp (which is set based on lld's
    /timestamp: and /Brepro flags). Since the writeWindowsResourceCOFF()
    data is only used in-memory by LLD and the obj's timestamp isn't used
    for anything in the output, this doesn't change behavior.

    For llvm-cvtres, add an optional /timestamp: parameter, and use the
    current behavior of calling time() if the parameter is not passed in.

    This doesn't really change observable behavior (unless someone passes
    /timestamp: to llvm-cvtres, which wasn't possible before), but it
    removes the last unqualified call to time() from llvm/lib, which seems
    like a good thing.

    Differential Revision: (detail)
    by nico
  92. [NFC] Fixed arm/aarch64 test (detail)
    by xbolva00
  93. [TargetLowering] Add allowsMemoryAccess(MachineMemOperand) helper wrapper. NFCI.

    As suggested by @arsenm on D63075 - this adds a TargetLowering::allowsMemoryAccess wrapper that takes a Load/Store node's MachineMemOperand to handle the AddressSpace/Alignment arguments and will also implicitly handle the MachineMemOperand::Flags change in D63075. (detail)
    by rksimon
  94. [DebugInfo@O2][LoopVectorize] pr39024: Vectorized code linenos step through loop even after completion


    The bug reports that a vectorized loop is stepped through 4 times and each step through the loop seemed to show a different path. I found two problems here:

    A) An incorrect line number on a preheader block (for.body.preheader) instruction causes a step into the loop before it begins.
    B) Instructions in the middle block have different line numbers which give the impression of another iteration.

    In this patch I give all of the middle block instructions the line number of the scalar loop latch terminator branch. This seems to provide the smoothest debugging experience because the vectorized loops will always end on this line before dropping into the scalar loop. To solve problem A I have altered llvm::SplitBlockPredecessors to accommodate loop header blocks.

    I have set up a separate review D61933 for a fix which is required for this patch.

    Reviewers: samsonov, vsk, aprantl, probinson, anemet, hfinkel, jmorse

    Reviewed By: hfinkel, jmorse

    Subscribers: jmorse, javed.absar, eraman, kcc, bjope, jmellorcrummey, hfinkel, gbedwell, hiraditya, zzheng, llvm-commits

    Tags: #llvm, #debug-info

    Differential Revision: (detail)
    by orlandoch
  95. [llvm-readobj] - Do not use precompiled binary in elf-broken-dynsym-link.test

    Now we can remove the "TODO" since
    was fixed. (detail)
    by grimar
  96. [llvm-dwarfdump] Add -o to help text and remove --out-file from doc

    -o is in the documentation, but not in the llvm-dwarfdump help text.
    This patch adds it by inverting the -o and --out-file aliasing. It also
    removes --out-file from the documentation, since we don't really want
    people to be using this switch in practice.

    Reviewed by: aprantl, JDevlieghere, dblaikie

    Differential Revision: (detail)
    by jhenderson
  97. [ARM] Fix unused-variable warning in rL363039.

    The variable `OffsetMask` is currently only used in an assertion, so
    if assertions are compiled out and -Werror is enabled, it becomes a
    build failure. (detail)
    by statham
  98. [yaml2elf] - Check we are able to set custom sh_link for .symtab/.dynsym

    Allow using both custom numeric and string values for Link field of the
    dynamic and regular symbol tables.

    Differential revision: (detail)
    by grimar
  99. [DAGCombine] GetNegatedExpression - constant float vector support (PR42105)

    Add support for negation of constant build vectors.

    Differential Revision: (detail)
    by rksimon
  100. [ARM] Add the non-MVE instructions in Arm v8.1-M.

    This adds support for the new family of conditional selection /
    increment / negation instructions; the low-overhead branch
    instructions (e.g. BF, WLS, DLS); the CLRM instruction to zero a whole
    list of registers at once; the new VMRS/VMSR and VLDR/VSTR
    instructions to get data in and out of 8.1-M system registers,
    particularly including the new VPR register used by MVE vector

    To support this, we also add a register name 'zr' (used by the CSEL
    family to force one of the inputs to the constant 0), and operand
    types for lists of registers that are also allowed to include APSR or
    VPR (used by CLRM). The VLDR/VSTR instructions also need a new
    addressing mode.

    The low-overhead branch instructions exist in their own separate
    architecture extension, which we treat as enabled by default, but you
    can say -mattr=-lob or equivalent to turn it off.

    Reviewers: dmgreen, samparker, SjoerdMeijer, t.p.northover

    Reviewed By: samparker

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

    Tags: #llvm

    Differential Revision: (detail)
    by statham
  101. Change semantics of fadd/fmul vector reductions.

    This patch changes how LLVM handles the accumulator/start value
    in the reduction, by never ignoring it regardless of the presence of
    fast-math flags on callsites. This change introduces the following
    new intrinsics to replace the existing ones:

      llvm.experimental.vector.reduce.fadd -> llvm.experimental.vector.reduce.v2.fadd
      llvm.experimental.vector.reduce.fmul -> llvm.experimental.vector.reduce.v2.fmul

    and adds functionality to auto-upgrade existing LLVM IR and bitcode.

    Reviewers: RKSimon, greened, dmgreen, nikic, simoll, aemerson

    Reviewed By: nikic

    Differential Revision: (detail)
    by s.desmalen
  102. [X86] Add load folding isel patterns to scalar_math_patterns and AVX512_scalar_math_fp_patterns.

    Also add a FIXME for the peephole pass not being able to handle this. (detail)
    by ctopper
  103. Revert CMake: Make most target symbols hidden by default

    This reverts r362990 (git commit 374571301dc8e9bc9fdd1d70f86015de198673bd)

    This was causing linker warnings on Darwin:

    ld: warning: direct access in function 'llvm::initializeEvexToVexInstPassPass(llvm::PassRegistry&)'
    from file '../../lib/libLLVMX86CodeGen.a(X86EvexToVex.cpp.o)' to global weak symbol
    'void std::__1::__call_once_proxy<std::__1::tuple<void* (&)(llvm::PassRegistry&),
    std::__1::reference_wrapper<llvm::PassRegistry>&&> >(void*)' from file '../../lib/libLLVMCore.a(Verifier.cpp.o)'
    means the weak symbol cannot be overridden at runtime. This was likely caused by different translation
    units being compiled with different visibility settings. (detail)
    by tstellar
  104. Symbolize: Make DWPName a symbolizer option instead of an argument to symbolize{,Inlined}Code.

    This makes the interface simpler and more consistent with the interface for
    .dSYM files and fixes a bug where llvm-symbolizer would not read the dwp if
    it was asked to symbolize data before symbolizing code.

    Differential Revision: (detail)
    by pcc
  105. Symbolize: Replace the Options constructor with in-class initialization. NFCI.

    This is not only less code but also clearer at the use site.

    Differential Revision: (detail)
    by pcc
  106. AtomicExpand: Don't crash on non-0 alloca

    This now produces garbage on AMDGPU with a call to an nonexistent,
    anonymous libcall but won't assert. (detail)
    by arsenm
  107. AMDGPU: Expand < 32-bit atomics

    Also fix AtomicExpand asserting on atomicrmw fadd/fsub. (detail)
    by arsenm
  108. gn build: Merge r362939 (detail)
    by nico
  109. gn build: Merge r362972 (detail)
    by nico
  110. llvm-lib: Implement /machine: argument

    And share some code with lld-link.

    While here, also add a FIXME about PR42180 and merge r360150 to llvm-lib.

    Differential Revision: (detail)
    by nico
  111. Setup testing target dependencies for default runtimes

    Summary: The default runtimes targets aren't getting their dependencies configured correctly which results in check-runtimes failing when built from a clean build.

    Reviewers: phosek, compnerd

    Reviewed By: phosek

    Subscribers: mgorny, llvm-commits

    Tags: #llvm

    Differential Revision: (detail)
    by cbieneman
  112. [AArch64] Add more CPUs to host detection

    Returns "cortex-a73" for 3rd and 4th gen Kryo; not precisely correct,
    but close enough.

    Differential Revision: (detail)
    by kongyi
  113. [MIR-Canon] Fixing non-determinism that was breaking bots (NFC).

    An earlier fix of a subtle iterator invalidation bug had uncovered a
    nondeterminism that was present in the MultiUsers bag. Problem was that
    MultiUsers was being looked up using pointers.

    This patch is an NFC change that numbers each multiuser and processes each in
    numbered order. This fixes the test failure on netbsd and will likely fix the
    green-dragon bot too. (detail)
    by zer0
  114. Break a couple more false dependencies on target libraries

    Summary: Repeat r361567 for a few more tools.

    Reviewers: bogner

    Reviewed By: bogner

    Subscribers: mgorny, llvm-commits

    Tags: #llvm

    Differential Revision: (detail)
    by dsanders
  115. [dsymutil] Remove stale comment (NFC)

    The comment was no longer relevant after r362621. (detail)
    by Jonas Devlieghere
  116. [Support] Explicitly detect recursive response files

    Previous detection relied upon an arbitrary hard coded limit of 21
    response files, which some code bases were running up against.

    The new detection maintains a stack of processing response files and
    explicitly checks if a newly encountered file is in the current stack.
    Some bookkeeping data is necessary in order to detect when to pop the

    Patch by Chris Glover.

    Differential Revision: (detail)
    by smeenai
  117. [PGO] Fix the buildbot failure in r362995

    Fixed one unused variable warning. (detail)
    by xur
  118. [Tests] Adjust LFTR dead-iv tests to bypass undef cases

    As pointed out by Nikita in review, undef and poison need to be handled separately.  Since we're no longer expecting any test improvements - just fixes for miscompiles - update the tests to bypass the existing undef check. (detail)
    by reames
  119. [NFC][CodeGen] Forgot 2 unary FNeg tests in X86/fma-intrinsics-canonical.ll

    Follow-up to r362999. (detail)
    by mcinally
  120. [NFC][CodeGen] Add unary FNeg tests to X86/fma-intrinsics-canonical.ll (detail)
    by mcinally
  121. Fix typo from r362990 to fix Windows builds (detail)
    by tstellar
  122. [PGO] Handle cases of non-instrument BBs

    As shown in PR41279, some basic blocks (such as catchswitch) cannot be
    instrumented. This patch filters out these BBs in PGO instrumentation.
    It also sets the profile count to the fail-to-instrument edge, so that we
    can propagate the counts in the CFG.

    Differential Revision: (detail)
    by xur
  123. [Tests] Split an LFTR dead-iv case

    There are two interesting sub-cases here.  1) Switching IVs is legal, but only in pre-increment form.  and 2) Switching IVs is legal, and so is post-increment form. (detail)
    by reames
  124. CMake: Make most target symbols hidden by default

    this change makes all symbols in the target specific libraries hidden
    by default.

    A new macro called LLVM_EXTERNAL_VISIBILITY has been added to mark symbols in these
    libraries public, which is mainly needed for the definitions of the
    LLVMInitialize* functions.

    This patch reduces the number of public symbols in by about
    25%.  This should improve load times for the dynamic library and also
    make abi checker tools, like abidiff require less memory when analyzing

    One side-effect of this change is that for builds with
    access symbols that are no longer public will need to be statically linked.

    Before and after public symbol counts (using gcc 8.2.1, ld.bfd 2.31.1):
    nm before/ | grep ' [A-Zuvw] ' | wc -l
    nm after/ | grep ' [A-Zuvw] ' | wc -l

    Reviewers: chandlerc, beanz, mgorny, rnk, hans

    Reviewed By: rnk, hans

    Subscribers: Jim, hiraditya, michaelplatings, chapuni, jholewinski, arsenm, dschuff, jyknight, dylanmckay, sdardis, nemanjai, jvesely, nhaehnle, javed.absar, sbc100, jgravelle-google, aheejin, kbarton, fedor.sergeev, asb, rbar, johnrusso, simoncook, apazos, sabuasal, niosHD, jrtc27, zzheng, edward-jones, mgrang, atanasyan, rogfer01, MartinMosbeck, brucehoult, the_o, PkmX, jocewei, kristina, jsji, llvm-commits

    Tags: #llvm

    Differential Revision: (detail)
    by tstellar
  125. [GlobalISel] Translate memset/memmove/memcpy from undef ptrs into nops

    If the source is undef, then just don't do anything.

    This matches SelectionDAG's behaviour in SelectionDAG.cpp.

    Also add a test showing that we do the right thing here.

    Differential Revision: (detail)
    by paquette
  126. [NFC][CodeGen] Add unary FNeg tests to some X86/ and XCore/ tests. (detail)
    by mcinally
  127. [demangle] Vendor extended types shouldn't be considered substitution candidates (detail)
    by epilk
  128. Factor out a helper function for readability and reuse in a future patch [NFC] (detail)
    by reames
  129. [Docs] [llvm-mca] Point out a caveat for using llvm-mca markers in source code.

    Summary: See:

    Reviewers: andreadb, mattd, RKSimon, spatel

    Reviewed By: andreadb

    Subscribers: tschuett, gbedwell, llvm-commits, andreadb

    Tags: #llvm

    Patch by Max Marrone (maxpm)! Thanks!

    Differential Revision: (detail)
    by mattd
Revision: 362564
  1. [clang-scan-deps] Include <mutex> in ClangScanDeps.cpp to ensure it
    builds on all platforms (detail)
    by arphaman
  2. NFC, Update the ClangScanDeps.cpp file's license comment

    The file ClangScanDeps.cpp from r363204 had the old outdated LLVM
    license comment at the top of the file that I committed by accident. (detail)
    by arphaman
  3. NFC, fixup indentation in CMakeLists.txt from r363204 as requested
    in the review.

    I missed that review comment from in the original
    commit. (detail)
    by arphaman
  4. [clang-scan-deps] initial outline of the tool that runs preprocessor to find
    dependencies over a JSON compilation database

    This commit introduces an outline for the clang-scan-deps tool that will be
    used to implement fast dependency discovery phase using implicit modules for
    explicit module builds.

    The initial version of the tool works by computing non-modular header dependencies
    for files in the compilation database without any optimizations
    (i.e. without source minimization from r362459).
    The tool spawns a number of worker threads to run the clang compiler workers in parallel.

    The immediate goal for clang-scan-deps is to create a ClangScanDeps library
    which will be used to build up this tool to use the source minimization and
    caching multi-threaded filesystem to implement the optimized non-incremental
    dependency scanning phase for a non-modular build. This will allow us to do
    benchmarks and comparisons for performance that the minimization and caching give us

    Differential Revision: (detail)
    by arphaman
  5. [test] Reinstate the assignment to the diagnostic log in the unittest
    from r363009

    The diagnostic log is now set to "-" which forces it to use STDERR
    instead of the filesystem. A new comment is added to explain why
    the assignment is needed in the test. (detail)
    by arphaman
  6. Add comment to r363191 code as requested in code review (detail)
    by rnk
  7. [MS] Pretend constexpr variable template specializations are inline

    Fixes link errors with clang and the latest Visual C++ 14.21.27702
    headers, which was reported as PR42027.

    I chose to intentionally make these things linkonce_odr, i.e.
    discardable, so that we don't emit definitions of these things in every
    translation unit that includes STL headers.

    Note that this is *not* what MSVC does: MSVC has not yet implemented C++
    DR2387, so they emit fully specialized constexpr variable templates with
    static / internal linkage.

    Reviewers: rsmith

    Differential Revision: (detail)
    by rnk
  8. PR42220: take into account the possibility of aggregates with base
    classes when checking an InitListExpr for lifetime extension. (detail)
    by rsmith
  9. [analyzer] ProgramPoint: more explicit printJson()

    Summary: Now we print out every possible kinds of ProgramPoints.

    Reviewers: NoQ, xazax.hun, ravikandhadai, baloghadamsoftware, Szelethus

    Reviewed By: NoQ

    Subscribers: szepet, rnkovacs, a.sidorin, mikhail.ramalho, donat.nagy,
                 dkrupp, cfe-commits

    Tags: #clang

    Differential Revision: (detail)
    by charusso
  10. [NFC] Test commit (detail)
    by nik
  11. [PowerPC] [Clang] Port SSE2 intrinsics to PowerPC

    Port emmintrin.h which include Intel SSE2 intrinsics implementation to PowerPC platform (using Altivec).

    The new headers containing those implemenations are located into a directory named ppc_wrappers
    which has higher priority when the platform is PowerPC on Linux. They are mainly developed by Steven Munroe,
    with contributions from Paul Clarke, Bill Schmidt, Jinsong Ji and Zixuan Wu.

    It's a follow-up patch of D62121.

    Patched by: Qiu Chaofan <>

    Differential Revision: (detail)
    by wuzish
  12. [X86] [ABI] Fix i386 ABI "__m64" type bug

    According to System V i386 ABI: the  __m64 type paramater and return
    value are passed by MMX registers. But current implementation treats
    __m64 as i64 which results in parameter passing by stack and returning
    by EDX and EAX.

    This patch fixes the bug (
    for Linux and NetBSD.

    Patch by Wei Xiao (wxiao3)

    Differential Revision: (detail)
    by pengfei
  13. Mark declarations as referenced by a default argument in a
    potentially-evaluated context.

    This applies even if the use of the default argument is within an
    unevaluated context. (detail)
    by rsmith
  14. Remove redundant check for whether a DeclRefExpr that names a capture
    constitutes an odr-use.

    We now track this accurately on the DeclRefExpr. (detail)
    by rsmith
  15. For DR712: store on a MemberExpr whether it constitutes an odr-use. (detail)
    by rsmith
  16. For DR712: store on a DeclRefExpr whether it constitutes an odr-use.

    Begin restructuring to support the forms of non-odr-use reference
    permitted by DR712. (detail)
    by rsmith
  17. Revert r344630 Disable code object version 3 for HIP toolchain.

    Remove the workaround so that by default code object v3 is enabled. (detail)
    by yaxunl
  18. Fix for r42230, MSVC test failure in DependencyDirectivesSourceMinimizerTest.cpp

    r362459 introduced DependencyDirectivesSourceMinimizerTest.cpp, which
    hits an MSVC bug:

    This only happens when the parameter to a macro is stringified in the
    macro.  This patch removes the string from the assert so that the
    warning no longer happens. (detail)
    by erichkeane
  19. [NFC][PowerPC] Header-dependent test requires "native"

    Two recently added tests mention complications for cross-compile, but
    they do not actually enforce native compilation. This patch makes them
    require native compilation to avoid the complications they mention. (detail)
    by hubert.reinterpretcast
  20. Reapply r362994 & co "[analyzer][tests] Add normalize_plist to replace diff_plist"

    Following r363007, which reverted r362998, r362996, and r362994,
    reapply with adjustments for the CRLF differences encountered with
    Windows. Namely, the `-b` option of `diff` is employed, and the `grep`
    patterns have `$` replaced with `[[:space:]]*$`. (detail)
    by hubert.reinterpretcast
  21. [libclang] Allow skipping warnings from all included files

    Depending on the included files and the used warning flags, e.g. -
    Weverything, a huge number of warnings can be reported for included
    files. As processing that many diagnostics comes with a performance
    impact and not all clients are interested in those diagnostics, add a
    flag to skip them.

    Differential Revision: (detail)
    by nik
  22. [ASTImporter] Fix unhandled cases in ASTImporterLookupTable

    In most cases the FriendDecl contains the declaration of the befriended
    class as a child node, so it is discovered during the recursive
    visitation. However, there are cases when the befriended class is not a
    child, thus it must be fetched explicitly from the FriendDecl, and only
    then can we add it to the lookup table.
    (Note, this does affect only CTU and does not affect LLDB, because we
    cannot and do not use the ASTImporterLookupTable in LLDB.)

    Reviewers: a_sidorin, a.sidorin, shafik

    Subscribers: rnkovacs, dkrupp, Szelethus, gamesh411, cfe-commits

    Tags: #clang

    Differential Revision: (detail)
    by martong
  23. [RISCV][NFC] Add missing test files for D54091 (detail)
    by lewis-revill
  24. [RISCV] Add inline asm constraints I, J & K for RISC-V

    This allows the constraints I, J & K to be used in inline asm for
    RISC-V, with the following semantics (equivalent to GCC):

    I: Any 12-bit signed immediate.
    J: Integer zero only.
    K: Any 5-bit unsigned immediate.

    See the GCC definitions here:

    Differential Revision: (detail)
    by lewis-revill
  25. Make sure a test from r363036 does not write into a working directory

    It breaks if build directory is not writable. This change is required
    to fix our integrate.

    Also add a flush() call, otherwise time trace option does not produce
    the full output. (detail)
    by ibiryukov
  26. [Frontend] Avoid creating auxilary files during a unit test. NFC

    A test added in r363009 logs diagnostics into a file inside current
    working directory. This breaks when the directory is not writable.

    This looks like a debugging output in the first place, the test passes
    without it anyway. (detail)
    by ibiryukov
  27. [Support][Test] Time profiler: add regression test

    Add output to `llvm::errs()` when `-ftime-trace` option is enabled,
    add regression test checking this option works as expected.

    Reviewers: thakis, aganea

    Subscribers: cfe-commits, llvm-commits

    Tags: #clang, #llvm

    This is recommit of r362821

    Differential Revision: (detail)
    by anton-afanasyev
  28. [X86] Enable intrinsics that convert float and bf16 data to each other

    Scalar version :
    _mm_cvtsbh_ss , _mm_cvtness_sbh

    Vector version:
    _mm512_cvtpbh_ps , _mm256_cvtpbh_ps
    _mm512_maskz_cvtpbh_ps , _mm256_maskz_cvtpbh_ps
    _mm512_mask_cvtpbh_ps , _mm256_mask_cvtpbh_ps

    Patch by Shengchen Kan (skan)

    Differential Revision: (detail)
    by pengfei
  29. [Frontend] SetUpDiagnosticLog should handle unowned diagnostic consumer
    in the compiler

    The function SetUpDiagnosticLog that was called from createDiagnostics didn't
    handle the case where the diagnostics engine didn't own the diagnostics consumer.
    This is a potential problem for a clang tool, in particular some of the follow-up
    patches for clang-scan-deps will need this fix.

    Differential Revision: (detail)
    by arphaman
  30. Revert r362994 & co "[analyzer][tests] Add normalize_plist to replace diff_plist"

    Reverts r362998, r362996, and r362994 because the tests do not pass on
    Windows due to CRLF changes. Adding back `-w` to diff is not enough, the
    new grep substitution doesn't work on Windows, and fixing it is
    non-trivial. (detail)
    by rnk
  31. Require stdcall etc parameters to be complete on ODR use

    Functions using stdcall, fastcall, or vectorcall with C linkage mangle
    in the size of the parameter pack. Calculating the size of the pack
    requires the parameter types to complete, which may require template

    Previously, we would crash during IRgen when requesting the size of
    incomplete or uninstantiated types, as in this reduced example:
      struct Foo;
      void __fastcall bar(struct Foo o);
      void (__fastcall *fp)(struct Foo) = &bar;

    Reported in Chromium here:

    Differential Revision: (detail)
    by rnk
  32. [analyzer][tests] Use normalize_plist in place of diff_plist (`tail` cases)

    The `%diff_plist` lit substitution invokes `diff` with a non-portable
    `-I` option. The intended effect can be achieved by normalizing the
    inputs to `diff` beforehand. Such normalization can be done with
    `grep -Ev`, which is also used by other tests.

    This patch applies the change (adjusted for review comments) described
    mechanically to the cases where the output file is piped to
    `%diff_plist` via `tail`. `%diff_plist` is then, being unused, removed.

    The changes were applied via a script.

    Reviewers: NoQ, sfertile, xingxue, jasonliu, daltenty

    Subscribers: xazax.hun, baloghadamsoftware, szepet, a.sidorin, mikhail.ramalho, Szelethus, donat.nagy, dkrupp, Charusso, jsji, cfe-commits

    Tags: #clang

    Differential Revision: (detail)
    by hubert.reinterpretcast
  33. [analyzer][tests] Use normalize_plist in place of diff_plist (`cat` cases)

    The `%diff_plist` lit substitution invokes `diff` with a non-portable
    `-I` option. The intended effect can be achieved by normalizing the
    inputs to `diff` beforehand. Such normalization can be done with
    `grep -Ev`, which is also used by other tests.

    This patch applies the change (adjusted for review comments) described
    mechanically to the cases where the output file is piped to
    `%diff_plist` via `cat`.

    The changes were applied via a script, except that
    `clang/test/Analysis/NewDelete-path-notes.cpp` and
    `clang/test/Analysis/plist-macros-with-expansion.cpp` were each adjusted
    for the line-continuation on the relevant `RUN` step.

    Reviewers: NoQ, sfertile, xingxue, jasonliu, daltenty

    Subscribers: xazax.hun, baloghadamsoftware, szepet, a.sidorin, mikhail.ramalho, Szelethus, donat.nagy, dkrupp, Charusso, jsji, cfe-commits

    Tags: #clang

    Differential Revision: (detail)
    by hubert.reinterpretcast
  34. [analyzer][tests] Add normalize_plist to replace diff_plist

    The `%diff_plist` lit substitution invokes `diff` with a non-portable
    `-I` option. The intended effect can be achieved by normalizing the
    inputs to `diff` beforehand. Such normalization can be done with
    `grep -Ev`, which is also used by other tests.

    This patch applies the change (adjusted for review comments) described
    in to the
    specific case shown in the list message. Mechanical changes to the other
    affected files will follow in later patches.

    Reviewers: NoQ, sfertile, xingxue, jasonliu, daltenty

    Reviewed By: NoQ

    Subscribers: xazax.hun, baloghadamsoftware, szepet, a.sidorin, mikhail.ramalho, Szelethus, donat.nagy, dkrupp, Charusso, jsji, cfe-commits

    Tags: #clang

    Differential Revision: (detail)
    by hubert.reinterpretcast
  35. [PlistSupport] Produce a newline to end plist output files

    As suggested in the review of D62949, this patch updates the plist
    output to have a newline at the end of the file. This makes it so that
    the plist output file qualifies as a POSIX text file, which increases
    the consumability of the generated plist file in relation to various

    Reviewers: NoQ, sfertile, xingxue, jasonliu, daltenty

    Reviewed By: NoQ, xingxue

    Subscribers: jsji, cfe-commits

    Tags: #clang

    Differential Revision: (detail)
    by hubert.reinterpretcast
  36. [CUDA] Fix grep pattern in

    vertical-line is not a BRE special character.

    POSIX.1-2017 XBD Section 9.3.2 indicates that the interpretation of `\|`
    is undefined. This patch uses EREs instead.

    Additionally, the pattern is further fixed so that `SIZEOF` and `WIDTH`
    macros are checked.

    Reviewers: jlebar, daltenty, xingxue, jasonliu, tra

    Reviewed By: tra

    Subscribers: jfb, jsji, cfe-commits

    Tags: #clang

    Differential Revision: (detail)
    by hubert.reinterpretcast
Revision: 362564
  1. [clangd] Return TextEdits from ClangdServer::applyTweak

    Instead of `tooling::Replacements`. So that embedders do not need to store
    the contents of the file.

    This also aligns better with `ClangdServer::rename`.

    Reviewers: kadircet, hokein

    Reviewed By: hokein

    Subscribers: MaskRay, jkorous, arphaman, cfe-commits

    Tags: #clang

    Differential Revision: (detail)
    by ibiryukov
  2. [clangd] Fix typo in GUARDED_BY()

    Reviewers: ilya-biryukov, kadircet, sammccall

    Subscribers: javed.absar, MaskRay, jkorous, arphaman, cfe-commits

    Tags: #clang

    Differential Revision: (detail)
    by nik
  3. Fixed a crash in misc-redundant-expression ClangTidy checker

    Summary: It was trying to pass a dependent expression into constant evaluator.

    Reviewers: ilya-biryukov

    Subscribers: cfe-commits

    Tags: #clang

    Differential Revision: (detail)
    by gribozavr
  4. [clang-tidy] Fix invalid read on destruction case the clang tidy plugin is linked into the clang binary.

    Valgrind's memcheck reports:

    8949== Invalid read ==8866== Invalid read of size 4
    8866== at 0x164D248B: fetch_sub (atomic_base.h:524)
    8866== by 0x164D248B: llvm::ThreadSafeRefCountedBase<clang::ast_matchers::internal::DynMatcherInterface>::Release() const (IntrusiveRefCntPtr.h:98)
    8866== by 0x164CE16C: llvm::IntrusiveRefCntPtrInfo<clang::ast_matchers::internal::DynMatcherInterface>::release(clang::ast_matchers::internal::DynMatcherInterface*) (IntrusiveRefCntPtr.h:127)
    8866== by 0x164C8D5C: llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface>::release() (IntrusiveRefCntPtr.h:190)
    8866== by 0x164C3B87: llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface>::~IntrusiveRefCntPtr() (IntrusiveRefCntPtr.h:157)
    8866== by 0x164BB4F1: clang::ast_matchers::internal::DynTypedMatcher::~DynTypedMatcher() (ASTMatchersInternal.h:341)
    8866== by 0x164BB529: clang::ast_matchers::internal::Matcher<clang::QualType>::~Matcher() (ASTMatchersInternal.h:496)
    8866== by 0xD7AE614: __cxa_finalize (cxa_finalize.c:83)
    8866== by 0x164B3082: ??? (in /d2/llvm/8/qtc/builds/DebugShared/lib/
    8866== by 0x4010B72: _dl_fini (dl-fini.c:138)
    8866== by 0xD7AE040: __run_exit_handlers (exit.c:108)
    8866== by 0xD7AE139: exit (exit.c:139)
    8866== by 0xD78CB9D: (below main) (libc-start.c:344)
    8866== Address 0x19dd9bc8 is 8 bytes inside a block of size 16 free'd
    8866== at 0x4C3123B: operator delete(void*) (in /usr/lib/valgrind/
    8866== by 0x1469BB99: clang::ast_matchers::internal::(anonymous namespace)::TrueMatcherImpl::~TrueMatcherImpl() (ASTMatchersInternal.cpp:126)
    8866== by 0x1469BBC5: llvm::object_deleter<clang::ast_matchers::internal::(anonymous namespace)::TrueMatcherImpl>::call(void*) (ManagedStatic.h:30)
    8866== by 0x9ABFF26: llvm::ManagedStaticBase::destroy() const (ManagedStatic.cpp:72)
    8866== by 0x9ABFF94: llvm::llvm_shutdown() (ManagedStatic.cpp:84)
    8866== by 0x9A65232: llvm::InitLLVM::~InitLLVM() (InitLLVM.cpp:52)
    8866== by 0x14B0C8: main (driver.cpp:323)
    8866== Block was alloc'd at
    8866== at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/
    8866== by 0x1469BB36: llvm::object_creator<clang::ast_matchers::internal::(anonymous namespace)::TrueMatcherImpl>::call() (ManagedStatic.h:24)
    8866== by 0x9ABFD99: llvm::ManagedStaticBase::RegisterManagedStatic(void* (*)(), void (*)(void*)) const (ManagedStatic.cpp:42)
    8866== by 0x1469B5DF: llvm::ManagedStatic<clang::ast_matchers::internal::(anonymous namespace)::TrueMatcherImpl, llvm::object_creator<clang::ast_matchers::internal::(anonymous namespace)::TrueMatcherImpl>, llvm::object_deleter<clang::ast_matchers::internal::(anonymous namespace)::TrueMatcherImpl> >::operator*() (ManagedStatic.h:67)
    8866== by 0x14698F9D: clang::ast_matchers::internal::DynTypedMatcher::trueMatcher(clang::ast_type_traits::ASTNodeKind) (ASTMatchersInternal.cpp:195)
    8866== by 0x164C9D3B: _ZNK5clang12ast_matchers8internal11TrueMatchercvNS1_7MatcherIT_EEINS_8QualTypeEEEv (ASTMatchersInternal.h:1247)
    8866== by 0x16501458: __static_initialization_and_destruction_0(int, int) (LoopConvertCheck.cpp:48)
    8866== by 0x16501976: _GLOBAL__sub_I_LoopConvertCheck.cpp (LoopConvertCheck.cpp:920)
    8866== by 0x4010732: call_init (dl-init.c:72)
    8866== by 0x4010732: _dl_init (dl-init.c:119)
    8866== by 0x40010C9: ??? (in /lib/x86_64-linux-gnu/

    Differential Revision: (detail)
    by nik
  5. [clang-tidy] Fix typo in bugprone-string-constructor.

    s/bigger then/bigger than/ (detail)
    by courbet
  6. Fixed google-readability-casting test to work in c++17

    Summary: Fixed google-readability-casting.cpp to get tests working in c++17

    Reviewers: gribozavr, hokein

    Reviewed By: gribozavr

    Subscribers: cfe-commits

    Tags: #clang

    Differential Revision:

    Patch by Shaurya Gupta. (detail)
    by gribozavr
  7. [clangd] Add missing header guard. (detail)
    by hokein
  8. [clangd] Fix gcc warning by removing extra ";" (detail)
    by uabelho
  9. [clangd] Remove old hidden -use-dex-index flag (detail)
    by sammccall
Revision: 362564
  1. [compiler-rt] Fix test on Overlay2 (for Docker)

    This patch aims to fix the test case, that fails on Docker.

    Overlay2 on Docker does not support the current check for the name_to_handle_at()
    function call of the test case. The proposed fix is to check for /dev/null in
    the test instead, as this check is supported. Checking for /dev/null has been
    utilized in the past for other test cases, as well.

    Differential Revision: (detail)
    by amyk
  2. Revert r362676 "[Profile]: Add runtime interface to specify file handle for profile data."

    This caused instrumented Clang to become crashy. See llvm-commits thread
    for repro steps.

    This also reverts follow-up r362716 which added test cases.

    > Author: Sajjad Mirza
    > Differential Revision: (detail)
    by hans
  3. [Sanitizers] Add case MACOS_VERSION_CATALINA

    Reviewed By: delcypher

    Differential Revision: (detail)
    by yln
  4. [scudo][standalone] Unmap memory in tests

    The more tests are added, the more we are limited by the size of the
    address space on 32-bit. Implement `unmapTestOnly` all around (like it
    is in sanitzer_common) to be able to free up some memory.
    This is not intended to be a proper "destructor" for an allocator, but
    allows us to not fail due to having no memory left.

    Reviewers: morehouse, vitalybuka, eugenis, hctim

    Reviewed By: morehouse

    Subscribers: delcypher, jfb, #sanitizers, llvm-commits

    Tags: #llvm, #sanitizers

    Differential Revision: (detail)
    by cryptoad
  5. Add FuzzedDataProvider helper class / single header library.

    This class is useful for writing fuzz target that have multiple inputs.

    Current CL imports the existing `FuzzedDataProvider` from Chromium
    without any modifications. Feel free to review it thoroughly, if you're
    interested, but I'd prefer changing the class in a follow up CL.

    The CL also introduces an exhaustive test for the library, as the behavior
    of `FuzzedDataProvider` must not change over time.

    In follow up CLs I'm planning on changing some implementation details
    (I can share a doc with some comments to be addressed). After that, we
    will document how `FuzzedDataProvider` should be used.

    I have tested this on Linux, Windows and Mac platforms.

    Reviewers: morehouse, metzman, kcc

    Reviewed By: morehouse

    Subscribers: metzman, thakis, rnk, mgorny, ormris, delcypher, #sanitizers, llvm-commits

    Tags: #llvm, #sanitizers

    Differential Revision: (detail)
    by dor1s
  6. [compiler-rt] Update comments in asan header to doxygen format; NFC.

    Add description to undocumented functions.
    Improve spelling, grammar and formatting.

    Patch by: Craig Flores, Filipe Cabecinhas, Pierre Gousseau

    Reviewed By: Johannes Doerfert

    Differential Revision: (detail)
    by pgousseau
Revision: 362564
  1. [libcxx] XFAIL set/multiset CTAD tests on Apple Clang 10 (detail)
    by Louis Dionne
  2. [libcxx] XFAIL some CTAD tests on AppleClang 10

    AppleClang 10 doesn't contain some changes that are required for this
    test to give the right error message. (detail)
    by Louis Dionne
  3. Apply [[nodebug]] to typedefs throughout the STL.

    When applied to a typedef or alias template, the [[nodebug]] attribute
    makes the typedef transparent to the debugger, so instead of seeing
    allocator<remove_reference<void(&)()>, void()>::_Target` you see
    `void(&)()` as the type of the variable in your debugger.

    Removing all this SFINAE noise from debug info has huge binary size
    wins, in addition to improving the readability.

    For now this change is on by default. Users can override it by
    specifying -D_LIBCPP_NODEBUG_TYPE= (detail)
    by ericwf
  4. Move libc++ specific tests for std::function out of the std directory (detail)
    by ericwf
  5. Add documentation and tests for Clangs C++11 extensions in C++03.

    As we gear up to drop support for GCC in C++03, we should make clear
    what our C++03 mode is, the C++11 extensions it provides,
    and the C++11 extensions it depends on.

    The section of this document discussing user-facing extensions has
    been left blank while the community discusses new directions. For now
    it's just a warning to users.

    Additionally, the document contains examples of how these extensions
    should be used and why. For example, using alias templates over class
    templates. (detail)
    by ericwf
  6. [libcxx] Mark CTAD tests for set and multiset as unsupported on older Apple Clangs

    Those fail on Green Dragon. (detail)
    by Louis Dionne
  7. Mark CTAD fail tests for set/multiset as XFAIL for older compilers that give different error messages (detail)
    by marshall
  8. XFAIL a couple of tests on apple-clang-9.1, which is a compiler that I didn't know existed (detail)
    by marshall
  9. Check in test that demonstrates ABI break for std::function.

    Our C++03 and C++11 implementations of function are not ABI
    compatible. I've added a "test" that demonstrates this. (detail)
    by ericwf
  10. [libc++] Implement deduction guides for <set>

    This is part of C++17's P0433.

    Thanks to Arthur O'Dwyer for the patch.

    Differential Revision: (detail)
    by Louis Dionne
  11. [libcxx] Make std::tuple<> trivially constructible

    This is not mandated by the Standard, but it's nonetheless a nice
    property to have, especially since it's so easy to implement. It
    also shrinks our bug list!


    Reviewers: mclow.lists, EricWF

    Subscribers: christof, jkorous, dexonsmith, libcxx-commits

    Tags: #libc

    Differential Revision: (detail)
    by Louis Dionne
  12. [libcxx] Slightly improved policy for handling experimental features

    Following the discussion on the libcxx-dev mailing list
    this implements the new policy for handling experimental features and
    their deprecation. We basically add a deprecation warning for
    std::experimental::filesystem, and we remove a bunch of <experimental/*>
    headers that were now empty.

    Reviewers: mclow.lists, EricWF

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

    Tags: #libc

    Differential Revision: (detail)
    by Louis Dionne
  13. Add a test for is_base_of and incomplete types. Because this trait uses a compiler intrinsic which was broken in many clangs, have lots of XFAILs. (detail)
    by marshall
  14. XFAIL a couple of CTAD tests on clang-6; it gives different error messages than clang 7/8/9 (detail)
    by marshall
  15. Recommit r362649, which was reverted in r262680 because of bugs in std::to_chars (which have now been fixed). Speedup to_string and to_wstring for integers using stack buffer and SSO (detail)
    by marshall
  16. Implement deduction guides for map/multimap. Reviewed as Thanks to Quuxplusone for the submission. (detail)
    by marshall

Started by upstream project relay-lnt-ctmark build number 8594
originally caused by:

This run spent:

  • 23 min waiting;
  • 32 min build duration;
  • 32 min total from scheduled to completion.