Started 4 mo 5 days ago
Took 24 min

Success Build clang-r363501-t57508-b57508.tar.gz (Jun 15, 2019 4:04:03 PM)

Issues

No known issues detected

Build Log

Revision: 362564
Changes
  1. [lldb-cmake-standalone] Ninja verbose flag is -v (detail)
    by stefan.graenitz
  2. [lldb-cmake-standalone] Remove note about Xcode generator

    This was fixed with https://reviews.llvm.org/rGa0781b6e3a3a (detail)
    by stefan.graenitz
  3. [lldb-cmake-standalone] Enable tests for CMake-generated Xcode project (detail)
    by stefan.graenitz
Revision: 362564
Changes
  1. [X86] CombineShuffleWithExtract - assert all src ops types are multiples of rootsize. NFCI. (detail)
    by rksimon
  2. [X86][AVX] Handle lane-crossing shuffle(extract_subvector(x,c1),extract_subvector(y,c2),m1) shuffles

    Pull out the existing (non)lane-crossing fold into a helper lambda and use for lane-crossing unary shuffles as well.

    Fixes PR34380 (detail)
    by rksimon
  3. [X86][AVX] Decode constant bits from insert_subvector(c1, c2, c3)

    This mostly happens due to SimplifyDemandedVectorElts reducing a vector to insert_subvector(undef, c1, 0) (detail)
    by rksimon
  4. [NFC][MCA][X86] Add one more 'clear super register' pattern - movss/movsd load clears high XMM bits (detail)
    by lebedevri
  5. [NFC][MCA][X86] Add baseline test coverage for AMD Barcelona (aka K10, fam10h)

    Looking into sched model for that CPU ... (detail)
    by lebedevri
  6. [Clang] Harmonize Split DWARF options with llc

    Summary:
    With Split DWARF the resulting object file (then called skeleton CU)
    contains the file name of another ("DWO") file with the debug info.
    This can be a problem for remote compilation, as it will contain the
    name of the file on the compilation server, not on the client.

    To use Split DWARF with remote compilation, one needs to either

    * make sure only relative paths are used, and mirror the build directory
      structure of the client on the server,
    * inject the desired file name on the client directly.

    Since llc already supports the latter solution, we're just copying that
    over. We allow setting the actual output filename separately from the
    value of the DW_AT_[GNU_]dwo_name attribute in the skeleton CU.

    Fixes PR40276.

    Reviewers: dblaikie, echristo, tejohnson

    Reviewed By: dblaikie

    Differential Revision: https://reviews.llvm.org/D59673 (detail)
    by aaronpuchert
  7. [PowerPC] Set the innermost hot loop to align 32 bytes

    Summary:
    If the nested loop is an innermost loop, prefer to a 32-byte alignment, so that
    we can decrease cache misses and branch-prediction misses. Actual alignment of
    the loop will depend on the hotness check and other logic in alignBlocks.

    The old code will only align hot loop to 32 bytes when the LoopSize larger than
    16 bytes and smaller than 32 bytes, this patch will align the innermost hot loop
    to 32 bytes not only for the hot loop whose size is 16~32 bytes.

    Reviewed By: steven.zhang, jsji

    Differential Revision: https://reviews.llvm.org/D61228 (detail)
    by zhangkang
  8. [clang] Add storage for APValue in ConstantExpr

    Summary:
    When using ConstantExpr we often need the result of the expression to be kept in the AST. Currently this is done on a by the node that needs the result and has been done multiple times for enumerator, for constexpr variables... . This patch adds to ConstantExpr the ability to store the result of evaluating the expression. no functional changes expected.

    Changes:
    - Add trailling object to ConstantExpr that can hold an APValue or an uint64_t. the uint64_t is here because most ConstantExpr yield integral values so there is an optimized layout for integral values.
    - Add basic* serialization support for the trailing result.
    - Move conversion functions from an enum to a fltSemantics from clang::FloatingLiteral to llvm::APFloatBase. this change is to make it usable for serializing APValues.
    - Add basic* Import support for the trailing result.
    - ConstantExpr created in CheckConvertedConstantExpression now stores the result in the ConstantExpr Node.
    - Adapt AST dump to print the result when present.

    basic* : None, Indeterminate, Int, Float, FixedPoint, ComplexInt, ComplexFloat,
    the result is not yet used anywhere but for -ast-dump.

    Reviewers: rsmith, martong, shafik

    Reviewed By: rsmith

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

    Tags: #clang, #llvm

    Differential Revision: https://reviews.llvm.org/D62399 (detail)
    by tyker
  9. [BranchProbability] Delete a redundant overflow check (detail)
    by maskray
  10. [SCEV] Use unsigned/signed intersection type in SCEV

    Based on D59959, this switches SCEV to use unsigned/signed range
    intersection based on the sign hint. This will prefer non-wrapping
    ranges in the relevant domain. I've left the one intersection in
    getRangeForAffineAR() to use the smallest intersection heuristic,
    as there doesn't seem to be any obvious preference there.

    Differential Revision: https://reviews.llvm.org/D60035 (detail)
    by nikic
  11. [SimplifyIndVar] Simplify non-overflowing saturating add/sub

    If we can detect that saturating math that depends on an IV cannot
    overflow, replace it with simple math. This is similar to the CVP
    optimization from D62703, just based on a different underlying
    analysis (SCEV vs LVI) that catches different cases.

    Differential Revision: https://reviews.llvm.org/D62792 (detail)
    by nikic
  12. [RISCV] Regenerate remat.ll and atomic-rmw.ll after D43256 (detail)
    by maskray
  13. [RISCV] Simplify RISCVAsmBackend::writeNopData(). NFC (detail)
    by maskray
  14. [objcopy] Error when --preserve-dates is specified with standard streams

    Summary: llvm-objcopy/strip now error when -p is specified when reading from stdin or writing to stdout

    Reviewers: jhenderson, rupprecht, espindola, alexshap

    Reviewed By: jhenderson, rupprecht

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

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D63090 (detail)
    by abrachet
  15. adding more fmf propagation for selects plus updated tests (detail)
    by mcberg2017
  16. Revert "adding more fmf propagation for selects plus tests"

    This reverts rL363474. -debug-only=isel was added to some tests that
    don't specify `REQUIRES: asserts`. This causes failures on
    -DLLVM_ENABLE_ASSERTIONS=off builds.

    I chose to revert instead of fixing the tests because I'm not sure
    whether we should add `REQUIRES: asserts` to more tests. (detail)
    by maskray
  17. [InstCombine] Add tests to show missing fold opportunity for "icmp and shift" (nfc).

    Summary:
    For icmp pred (and (sh X, Y), C), 0

      When C is signbit, expect to fold (X << Y) & signbit ==/!= 0 into (X << Y) >=/< 0,
      rather than (X & (signbit >> Y)) != 0.

      When C+1 is power of 2, expect to fold (X << Y) & ~C ==/!= 0 into (X << Y) </>= C+1,
      rather than (X & (~C >> Y)) == 0.

    For icmp pred (and X, (sh signbit, Y)), 0

      Expect to fold (X & (signbit l>> Y)) ==/!= 0 into (X << Y) >=/< 0
      Expect to fold (X & (signbit << Y)) ==/!= 0 into (X l>> Y) >=/< 0

      Reviewers: lebedev.ri, efriedma, spatel, craig.topper

      Reviewed By: lebedev.ri

      Subscribers: llvm-commits

      Tags: #llvm

      Differential Revision: https://reviews.llvm.org/D63025 (detail)
    by huihuiz
  18. Reapply "GlobalISel: Avoid producing Illegal copies in RegBankSelect"

    This reapplies r363410, avoiding null dereference if there is no
    AltRegBank. (detail)
    by arsenm
  19. Add a map_range function for applying map_iterator to a range.

    In preparation for use in Clang. (detail)
    by rsmith
  20. Revert "GlobalISel: Avoid producing Illegal copies in RegBankSelect"

    This patch breaks UBSan build bots. See
    https://github.com/google/sanitizers/wiki/SanitizerBotReproduceBuild for
    a guide as to how to reproduce the error.

    This reverts commit c2864c0de07efb5451d32d27a7d4ff2984830929.
    This reverts rL363410. (detail)
    by hctim
  21. adding more fmf propagation for selects plus tests (detail)
    by mcberg2017
  22. [MBP] Move a latch block with conditional exit and multi predecessors to top of loop

    Current findBestLoopTop can find and move one kind of block to top, a latch block has one successor. Another common case is:

        * a latch block
        * it has two successors, one is loop header, another is exit
        * it has more than one predecessors

    If it is below one of its predecessors P, only P can fall through to it, all other predecessors need a jump to it, and another conditional jump to loop header. If it is moved before loop header, all its predecessors jump to it, then fall through to loop header. So all its predecessors except P can reduce one taken branch.

    Differential Revision: https://reviews.llvm.org/D43256 (detail)
    by carrot
  23. [ObjC][ARC] Delete ObjC runtime calls on global variables annotated
    with 'objc_arc_inert'

    Those calls are no-ops, so they can be safely deleted.

    rdar://problem/49839633

    Differential Revision: https://reviews.llvm.org/D62433 (detail)
    by ahatanak
  24. AMDGPU: Avoid most waitcnts before calls

    Currently you get extra waits, because waits are inserted for the
    register dependencies of the call, and the function prolog waits on
    everything.

    Currently waits are still inserted on returns. It may make sense to
    not do this, and wait in the caller instead. (detail)
    by arsenm
  25. Add --print-supported-cpus flag for clang.

    This patch allows clang users to print out a list of supported CPU models using
    clang [--target=<target triple>] --print-supported-cpus

    Then, users can select the CPU model to compile to using
    clang --target=<triple> -mcpu=<model> a.c

    It is a handy feature to help cross compilation. (detail)
    by ziangwan725
  26. [Remarks][NFC] Improve testing and documentation of -foptimization-record-passes

    This adds:

    * documentation to the user manual
    * nicer error message
    * test for the error case
    * test for the gold plugin (detail)
    by thegameg
  27. SROA: Allow eliminating addrspacecasted allocas

    There is a circular dependency between SROA and InferAddressSpaces
    today that requires running both multiple times in order to be able to
    eliminate all simple allocas and addrspacecasts. InferAddressSpaces
    can't remove addrspacecasts when written to memory, and SROA helps
    move pointers out of memory.

    This should avoid inserting new commuting addrspacecasts with GEPs,
    since there are unresolved questions about pointer wrapping between
    different address spaces.

    For now, don't replace volatile operations that don't match the alloca
    addrspace, as it would change the address space of the access. It may
    be still OK to insert an addrspacecast from the new alloca, but be
    more conservative for now. (detail)
    by arsenm
  28. [PowerPC][NFC] Comments update and remove some unused def (detail)
    by jsji
  29. SROA: Add baseline test for addrspacecast changes (detail)
    by arsenm
  30. AMDGPU: Fix capitalized register names in asm constraints

    This was a workaround a long time ago, but the canonical lower case
    names work now. (detail)
    by arsenm
  31. AMDGPU: Fix dropping memref for ds append/consume

    The way SelectionDAG treats memory operands is very frustrating, and
    by default drops them unless a property is set on the pattern. There
    is no pattern for manually selected instructions, so this requires
    manually setting them. (detail)
    by arsenm
  32. AMDGPU: Set isTrap on S_TRAP

    This seems to only be used for generating some kind
    of documentation, but might as well set it. (detail)
    by arsenm
  33. AMDGPU: Add baseline test for call waitcnt insertion (detail)
    by arsenm
  34. UpdateTestChecks: Consider .section as end of function for AMDGPU

    Kernels seem to go directly to a section switch instead of emitting
    .Lfunc_end. This fixes including all of the kernel metadata in the
    check lines, which is undesirable most of the time. (detail)
    by arsenm
  35. [x86] add test for 256-bit blendv with AVX targets; NFC

    This is a reduction of the pattern seen in D63233. (detail)
    by spatel
  36. [JITLink] Move JITLinkMemoryManager into its own header. (detail)
    by Lang Hames
  37. build: extract LLVM distribution target handling

    This extracts the LLVM distribution target handling into a support module.
    Extraction will enable us to restructure the builds to support multiple
    distribution configurations (e.g. developer and user) to permit us to build the
    development package and the user package at once. (detail)
    by Saleem Abdulrasool
  38. [Remarks] Use the RemarkSetup error in setupOptimizationRemarks

    Added the errors in r363415 but they were not used in the
    RemarkStreamer. (detail)
    by thegameg
  39. gn build: Add NVPTX target

    The NVPTX target is a bit unusual in that it's the only target without a
    disassembler, and one of three targets without an asm parser (and the
    first one of those three in the gn build). NVPTX doesn't have those
    because it's not a binary format.

    The CMake build checks for the existence of
    {AsmParser,Disassembler}/CMakeLists.txt when setting
    LLVM_ENUM_ASM_PARSERS / LLVM_ENUM_DISASSEBLERS
    (http://llvm-cs.pcc.me.uk/CMakeLists.txt#744). The GN build doesn't want
    to hit the disk for things like this, so instead I'm adding explicit
    `targets_with_asm_parsers` and `targets_with_disassemblers` lists. Since
    both are needed rarely, they are defined in their own gni files.

    Differential Revision: https://reviews.llvm.org/D63210 (detail)
    by nico
  40. gn build: Simplify Target build files

    Now that the cycle between MCTargetDesc and TargetInfo is gone
    (see revisions 360709 360718 360722 360724 360726 360731 360733 360735 360736),
    remove the dependency from TargetInfo on MCTargetDesc:tablegen. In most
    targets, this makes MCTargetDesc:tablegen have just a single use, so
    inline it there.

    For AArch64, ARM, and RISCV there's still a similar cycle between
    MCTargetDesc and Utils, so the MCTargetDesc:tablegen indirection is
    still needed there.

    Differential Revision: https://reviews.llvm.org/D63200 (detail)
    by nico
  41. [GlobalISel] Add a G_BRJT opcode.

    This is a branch opcode that takes a jump table pointer, jump table index and an
    index into the table to do an indirect branch.

    We pass both the table pointer and JTI to allow targets like ARM64 to more
    easily use the existing jump table compression optimization without having to
    walk up the block to find a paired G_JUMP_TABLE.

    Differential Revision: https://reviews.llvm.org/D63159 (detail)
    by aemerson
  42. Revert Fix a bug w/inbounds invalidation in LFTR

    Reverting because it breaks a green dragon build:
        http://green.lab.llvm.org/green/job/clang-stage2-Rthinlto/18208

    This reverts r363289 (git commit eb88badff96dacef8fce3f003dec34c2ef6900bf) (detail)
    by fhahn
  43. Revert [LFTR] Stylistic cleanup as suggested in last review comment of D62939 [NFC]

    Reverting because it depends on r363289, which breaks a green dragon build:
        http://green.lab.llvm.org/green/job/clang-stage2-Rthinlto/18208

    This reverts r363292 (git commit 42a3fc133d3544b5c0c032fe99c6e8a469a836c2) (detail)
    by fhahn
  44. Revert [LFTR] Rename variable to minimize confusion [NFC]

    Reverting because it depends on r363289, which breaks a green dragon
    build:
        http://green.lab.llvm.org/green/job/clang-stage2-Rthinlto/18208

    This reverts r363293 (git commit c37be29634214fb1cb4c823840bffc31e5ebfe40) (detail)
    by fhahn
  45. [GISel]: Fix pattern matcher for m_OneUse

    https://reviews.llvm.org/D63302 (detail)
    by aditya_nandakumar
  46. [PowerPC][NFC] Format comments in P9InstrResrouce.td (detail)
    by jsji
  47. [SimpligyCFG] NFC intended, remove GCD that was only used for powers of two

    and replace with an equilivent countTrailingZeros.

    GCD is much more expensive than this, with repeated division.

    This depends on D60823

    Differential Revision: https://reviews.llvm.org/D61151 (detail)
    by shawnl
  48. build: don't attempt to run config.guess on Windows

    When cross-compiling LLVM to android from Windows (for LLVMSupport), we would
    attempt to execute `config.guess` to determine the host triple since
    `CMAKE_SYSTEM_NAME` is not Windows and `CMAKE_C_COMPILER` will be set to GNU or
    Clang.  This will fail as `config.guess` is a shell script which cannot be
    executed on Windows.  Simply log a warning instead.  The user can specify the
    value for this instead in those cases. (detail)
    by Saleem Abdulrasool
  49. [AMDGPU] Don't constrain callees with inlinehint from inlining on MaxBB check

    Summary: Function bodies marked inline in an opencl source are eliminated but MaxBB check may prevent inlining them leaving undefined references.

    Reviewers: rampitec, arsenm

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

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D63337 (detail)
    by vpykhtin
  50. [FPEnv] Lower STRICT_FP_EXTEND and STRICT_FP_ROUND nodes in preprocess phase of ISelLowering to mirror non-strict nodes on x86.

    I recently discovered a bug on the x86 platform: The fp80 type was not handled well by x86 for constrained floating point nodes, as their regular counterparts are replaced by extending loads and truncating stores during the preprocess phase. Normally, platforms don't have this issue, as they don't typically attempt to perform such legalizations during instruction selection preprocessing. Before this change, strict_fp nodes survived until they were mutated to normal nodes, which happened shortly after preprocessing on other platforms. This modification lowers these nodes at the same phase while properly utilizing the chain.5

    Submitted by: Drew Wock <drew.wock@sas.com>
    Reviewed by: Craig Topper, Kevin P. Neal
    Approved by: Craig Topper
    Differential Revision: https://reviews.llvm.org/D63271 (detail)
    by kpn
  51. [AMDGPU] gfx1010 BoolReg definition. NFC.

    Earlier commit has added AMDGPUOperand::isBoolReg(). Turns out
    gcc issues warning about unused function since D63204 is not
    yet submitted.

    Added NFC part of D63204 to have a use of that function and
    mute the warning. (detail)
    by rampitec
  52. Reland: [Remarks] Refactor optimization remarks setup

    * Add a common function to setup opt-remarks
    * Rename common options to the same names
    * Add error types to distinguish between file errors and regex errors (detail)
    by thegameg
  53. [x86] move vector shift tests for PR37428; NFC

    As suggested in the post-commit thread for rL363392 - it's
    wasteful to have so many runs for larger tests. AVX1/AVX2
    is what shows the diff and probably what matters most going
    forward. (detail)
    by spatel
  54. GlobalISel: Avoid producing Illegal copies in RegBankSelect

    Avoid producing illegal register bank copies for reg_sequence and
    phi. The default implementation assumes it is possible to pick any
    operand's bank and use that for the result, introducing a copy for
    operands with a different bank. This does not check for illegal
    copies. It is not legal to introduce a VGPR->SGPR copy, so any VGPR
    operand requires the result to be a VGPR.

    The changes in getInstrMappingImpl aren't strictly necessary, since
    AMDGPU now just bypasses this for reg_sequence/phi. This could be
    replaced with an assert in case other targets run into this. It is
    currently responsible for producing the error for unsatisfiable
    copies, but this will be better served with a verifier check.

    For phis, for now assume any undetermined operands must be
    VGPRs. Eventually, this needs to be able to defer mapping these
    operations. This also does not yet have a way to check for whether the
    block is in a divergent region. (detail)
    by arsenm
  55. [CodeGenPrepare] propagate debuginfo when copying a shuffle (detail)
    by spatel
  56. [Attributor] Disable the Attributor by default and fix a comment (detail)
    by jdoerfert
  57. [Attributor] Introduce bit-encodings for abstract states

    Summary:
    The IntegerState, and its sepecialization BooleanState, can be used to
    simplify the implementation of abstract attributes. The two abstract
    state implementations provide storage and helpers to deal with bit-wise
    encoded state.

    Subscribers: hiraditya, bollu, llvm-commits

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D60012 (detail)
    by jdoerfert
  58. AMDGPU: Fold readlane intrinsics of constants

    I'm not 100% sure about this, since I'm worried about IR transforms
    that might end up introducing divergence downstream once replaced with
    a constant, but I haven't come up with an example yet. (detail)
    by arsenm
  59. [ARM] Add MVE horizontal accumulation instructions

    This is the family of vector instructions that combine all the lanes
    in their input vector(s), and output a value in one or two GPRs.

    Differential Revision: https://reviews.llvm.org/D62670 (detail)
    by miyuki
  60. Revert "Revert r363377: [yaml2obj] - Allow setting custom section types for implicit sections."

    LLD test case will be fixed in a following commit.

    Original commit message:

    [yaml2obj] - Allow setting custom section types for implicit sections.

    We were hardcoding the final section type for sections that
    are usually implicit. The patch fixes that.

    This also fixes a few issues in existent test cases and removes
    one precompiled object.

    Differential revision: https://reviews.llvm.org/D63267 (detail)
    by grimar
  61. Revert r363377: [yaml2obj] - Allow setting custom section types for implicit sections.

    This reverts commit r363377 because lld's ELF/invalid/undefined-local-symbol-in-dso.test
    test started failing after this commit. (detail)
    by ruiu
  62. Fix failing test on ARM buildbot

    r363261 caused test failure on 32-bit ARM buildbot,
    because of unsigned integer overflow. This patch
    fixes it changing offset type from size_t to uint64_t. (detail)
    by evgeny777
  63. [x86] add test for original example in PR37428; NFC

    The reduced case may avoid complications seen in this larger function. (detail)
    by spatel
  64. RegBankSelect: Remove checks for invalid mappings

    Avoid a check for valid and a set of redundant asserts. The place
    InstructionMapping is constructed asserts all of the default fields
    are passed anyway for an invalid mapping, so don't overcomplicate
    this. (detail)
    by arsenm
  65. AMDGPU: Fix input chain when gluing copies to m0

    I don't think this was causing any observable issues, but was making
    reading the DAG dump confusing. (detail)
    by arsenm
  66. [lit] Fix UnicodeEncodeError when test commands contain non-ASCII chars

    Ensure that the bash script written by lit TestRunner is open with UTF-8
    encoding when using Python 3.  Otherwise, attempt to write non-ASCII
    characters causes UnicodeEncodeError.  This happened e.g. with
    the following LLD test:

    UNRESOLVED: lld :: ELF/format-binary-non-ascii.s (657 of 2119)
    ******************** TEST 'lld :: ELF/format-binary-non-ascii.s' FAILED ********************
    Exception during script execution:
    Traceback (most recent call last):
      File "/home/mgorny/llvm-project/llvm/utils/lit/lit/worker.py", line 63, in _execute_test
        result = test.config.test_format.execute(test, lit_config)
      File "/home/mgorny/llvm-project/llvm/utils/lit/lit/formats/shtest.py", line 25, in execute
        self.execute_external)
      File "/home/mgorny/llvm-project/llvm/utils/lit/lit/TestRunner.py", line 1644, in executeShTest
        res = _runShTest(test, litConfig, useExternalSh, script, tmpBase)
      File "/home/mgorny/llvm-project/llvm/utils/lit/lit/TestRunner.py", line 1590, in _runShTest
        res = executeScript(test, litConfig, tmpBase, script, execdir)
      File "/home/mgorny/llvm-project/llvm/utils/lit/lit/TestRunner.py", line 1157, in executeScript
        f.write('{ ' + '; } &&\n{ '.join(commands) + '; }')
    UnicodeEncodeError: 'ascii' codec can't encode character '\xa3' in position 274: ordinal not in range(128)

    Differential Revision: https://reviews.llvm.org/D63254 (detail)
    by mgorny
  67. [MCA] Ignore invalid processor resource writes of zero cycles. NFCI

    In debug mode, the tool also raises a warning and prints out a message which
    helps identify the problematic MCWriteProcResEntry from the scheduling class.
    This message would have been useful to have when triaging PR42282. (detail)
    by adibiagio
  68. Fix not calling TargetCustom PSVs printer

    If the enum value was greater than the starting target custom value,
    the custom printer wasn't called. (detail)
    by arsenm
  69. AMDGPU: Refactor to prepare for manually selecting more intrinsics (detail)
    by arsenm
  70. AMDGPU: Fix printing trailing whitespace after s_endpgm (detail)
    by arsenm
  71. AMDGPU: Fix missing const (detail)
    by arsenm
  72. [docs][llvm-dwarfdump] Make the --show-parents and --show-children help text and docs more consistent and correct

    The docs and help text for --show-parents and --show-children were a bit
    inconsistent. The help text claimed they had an effect when "=<offset>"
    was used, whereas the doc said it had an effect when "--find" or
    "--name" were used. This change changes the doc to mention "=<offset>"
    and removes this reference from the help text, to avoid having a very
    long description in the help text (it still says "when selectively
    printing entries").

    Reviewed by: JDevlieghere, aprantl

    Differential Revision: https://reviews.llvm.org/D63275 (detail)
    by jhenderson
  73. Revert r363298 "[lit] Disable test on darwin when building shared libs."

    It broke running check-lld on mac, see https://reviews.llvm.org/D61697 (detail)
    by nico
  74. gn build: Merge r363376 (detail)
    by nico
  75. [yaml2obj] - Allow setting custom section types for implicit sections.

    We were hardcoding the final section type for sections that
    are usually implicit. The patch fixes that.

    This also fixes a few issues in existent test cases and removes
    one precompiled object.

    Differential revision: https://reviews.llvm.org/D63267 (detail)
    by grimar
  76. [llvm-readobj] Don't abort printing of dynamic table if string reference is invalid

    If dynamic table is missing, output "dynamic strtab not found'. If the index is
    out of range, output "Invalid Offset<..>".

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

    Reviewed by: jhenderson, grimar, MaskRay

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

    Patch by Yuanfang Chen. (detail)
    by jhenderson
  77. [llvm-readobj] - Do not fail to dump the object which has wrong type of .shstrtab.

    Imagine we have object that has .shstrtab with type != SHT_STRTAB.
    In this case, we fail to dump the object, though GNU readelf dumps it without
    any issues and warnings.

    This patch fixes that. It adds a code to ELFDumper.cpp which is based on the implementation of getSectionName from the ELF.h:

    https://github.com/llvm-mirror/llvm/blob/master/include/llvm/Object/ELF.h#L608
    https://github.com/llvm-mirror/llvm/blob/master/include/llvm/Object/ELF.h#L431
    https://github.com/llvm-mirror/llvm/blob/master/include/llvm/Object/ELF.h#L539

    The difference is that all non critical errors are ommitted what allows us to
    improve the dumping on a tool side. Also, this opens a road for a follow-up that
    should allow us to dump the section headers, but drop the section names in case if .shstrtab is completely absent and/or broken.

    Differential revision: https://reviews.llvm.org/D63266 (detail)
    by grimar
  78. [ARM] MVE VPT Block Pass

    Initial commit of a new pass to create vector predication blocks, called VPT
    blocks, that are supported by the Armv8.1-M MVE architecture.

    This is a first naive implementation. I.e., for 2 consecutive predicated
    instructions I1 and I2, for example, it will generate 2 VPT blocks:

    VPST
    I1
    VPST
    I2

    A more optimal implementation would obviously put instructions in the same VPT
    block when they are predicated on the same condition and when it is allowed to
    do this:

    VPTT
    I1
    I2

    We will address this optimisation with follow up patches when the groundwork is
    in. Creating VPT Blocks is very similar to IT Blocks, which is the reason I
    added this to Thumb2ITBlocks.cpp. This allows reuse of the def use analysis
    that we need for the more optimal implementation.

    VPT blocks cannot be nested in IT blocks, and vice versa, and so these 2 passes
    cannot interact with each other. Instructions allowed in VPT blocks must
    be MVE instructions that are marked as VPT compatible.

    Differential Revision: https://reviews.llvm.org/D63247 (detail)
    by sjoerdmeijer
  79. [yaml2obj] - Allow setting the custom Address for .strtab

    Despite the fact that .strtab is non-allocatable,
    there is no reason to disallow setting the custom address
    for it.

    The patch also adds a test case showing we can set any address
    we want for other implicit sections.

    Differential revision: https://reviews.llvm.org/D63137 (detail)
    by grimar
  80. [yaml2obj] - Allow setting cutom Flags for implicit sections.

    With this patch we get ability to set any flags we want
    for implicit sections defined in YAML.

    Differential revision: https://reviews.llvm.org/D63136 (detail)
    by grimar
  81. [SCEV] Pass NoWrapFlags when expanding an AddExpr

    InsertBinop now accepts NoWrapFlags, so pass them through when
    expanding a simple add expression.

    This is the first re-commit of the functional changes from rL362687,
    which was previously reverted.

    Differential Revision: https://reviews.llvm.org/D61934 (detail)
    by sam_parker
  82. [llvm-objcopy][IHEX] Improve test case formatting. NFC

    Differential revision: https://reviews.llvm.org/D63258 (detail)
    by evgeny777
  83. Move commentary on opcode translation for code16 mov instructions
    to segment registers closer to the segment register check for when
    we add further optimizations. (detail)
    by echristo
  84. [llvm-objcopy] Remove no-op flush of errs

    Reviewers: alexshap, rupprecht, jhenderson

    Subscribers: jakehehrlich, llvm-commits

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D63313 (detail)
    by abrachet
  85. gn build: Merge r363204 (clang-scan-deps) (detail)
    by nico
  86. [llvm-objcopy] Changed command line parsing errors

    Summary: Tidied up errors during command line parsing to be more consistent with the rest of llvm-objcopy errors.

    Reviewers: jhenderson, rupprecht, espindola, alexshap

    Reviewed By: jhenderson, rupprecht

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

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D62973 (detail)
    by abrachet
  87. DebugInfo: Include enumerators in pubnames

    This is consistent with GCC's behavior (which is the defacto standard
    for pubnames). Though I find the presence of enumerators from enum
    classes to be a bit confusing, possibly a bug on GCC's end (since they
    can't be named unqualified, unlike the other names - and names nested in
    classes don't go in pubnames, for instance - presumably because one must
    name the class first & that's enough to limit the scope of the search) (detail)
    by dblaikie
  88. [X86] Add target triple for live-debug-values-fragments.mir (detail)
    by timshen
  89. Add REQUIRES: zlib to test added in r363325 as the profile uses zlib compression. (detail)
    by dyung
  90. [AMDGPU] gfx1011/gfx1012 targets

    Differential Revision: https://reviews.llvm.org/D63307 (detail)
    by rampitec
  91. Revert "[Remarks] Refactor optimization remarks setup"

    This reverts commit 6e6e3af55bb97e1a4c97375c15a2b0099120c5a7.

    This breaks greendragon. (detail)
    by thegameg
  92. [Coverage] Speculative fix for r363325 for an older compiler

    It looks like an older version of gcc can't figure out that it needs to
    move a unique_ptr while implicitly constructing an Expected object. (detail)
    by Vedant Kumar
  93. [AMDGPU] gfx1010 wave32 icmp/fcmp intrinsic changes for wave32

    Differential Revision: https://reviews.llvm.org/D63301 (detail)
    by rampitec
  94. [llvm-objcopy] Fix sparc target endianness

    Summary: AFAIK, the "sparc" target is big endian and the target for 32-bit little-endian SPARC is denoted as "sparcel". This patch fixes the endianness of "sparc" target and adds "sparcel" target for 32-bit little-endian SPARC.

    Reviewers: espindola, alexshap, rupprecht, jhenderson

    Reviewed By: jhenderson

    Subscribers: jyknight, emaste, arichardson, fedor.sergeev, jakehehrlich, MaskRay, llvm-commits

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D63251 (detail)
    by seiya
  95. Use fully qualified name when printing S_CONSTANT records

    Summary:
    Before it was using the fully qualified name only for static data members.
    Now it does for all variable names to match MSVC.

    Reviewers: rnk

    Subscribers: hiraditya, llvm-commits

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D63012 (detail)
    by akhuang
  96. Symbolize: Remove dead code. NFCI.

    The only caller of SymbolizableObjectFile::create passes a non-null
    DebugInfoContext and asserts that they do so. Move the assert into
    SymbolizableObjectFile::create and remove null checks.

    Differential Revision: https://reviews.llvm.org/D63298 (detail)
    by pcc
  97. [AMDGPU] gfx10 documentation update. NFC. (detail)
    by rampitec
  98. [GlobalISel][IRTranslator] Add debug loc with line 0 to constants emitted into the entry block.

    Constants, including G_GLOBAL_VALUE, are all emitted into the entry block which
    lets us use the vreg def assuming it dominates all other users. However, it can
    cause jumpy debug behaviour since the DebugLoc attached to these MIs are from
    a user instruction that could be in a different block.

    Fixes PR40887.

    Differential Revision: https://reviews.llvm.org/D63286 (detail)
    by aemerson
  99. [X86Disassembler] Unify the EVEX and VEX code in emitContextTable. Merge the ATTR_VEXL/ATTR_EVEXL bits. NFCI

    Merging the two bits shrinks the context table from 16384 bytes to 8192 bytes.

    Remove the ATTRIBUTE_BITS macro and just create an enum directly. Then fix the ATTR_max define to be 8192 to reflect the table size so we stop hardcoding it separately. (detail)
    by ctopper
  100. [MachinePiepliner] Don't check boundary node in checkValidNodeOrder

    This was exposed by PowerPC target enablement.

    In ScheduleDAG, if we haven't seen any uses in this scheduling region,
    we will create a dependence edge to ExitSU to model the live-out latency.
    This is required for vreg defs with no in-region use, and prefetches with
    no vreg def.

    When we build NodeOrder in Scheduler, we ignore these boundary nodes.
    However, when we check Succs in checkValidNodeOrder, we did not skip
    them, so we still assume all the nodes have been sorted and in order in
    Indices array. So when we call lower_bound() for ExitSU, it will return
    Indices.end(), causing memory issues in following Node access.

    Differential Revision: https://reviews.llvm.org/D63282 (detail)
    by jsji
  101. [Remarks] Refactor optimization remarks setup

    * Add a common function to setup opt-remarks
    * Rename common options to the same names
    * Add error types to distinguish between file errors and regex errors (detail)
    by thegameg
  102. [Coverage] Load code coverage data from archives

    Support loading code coverage data from regular archives, thin archives,
    and from MachO universal binaries which contain archives.

    Testing: check-llvm, check-profile (with {A,UB}San enabled)

    rdar://51538999

    Differential Revision: https://reviews.llvm.org/D63232 (detail)
    by Vedant Kumar
  103. gn build: Merge r363242 (detail)
    by nico
  104. [AMDGPU] gfx1010 AMDGPUSetCCOp definition

    It was missing from D63293 and breaks in a debug tablegen w/o
    this part. (detail)
    by rampitec
  105. [ORC] Rename MaterializationResponsibility resolve and emit methods to
    notifyResolved/notifyEmitted.

    The 'notify' prefix better describes what these methods do: they update the JIT
    symbol states and notify any pending queries that the 'resolved' and 'emitted'
    states have been reached (rather than actually performing the resolution or
    emission themselves). Since new states are going to be introduced in the near
    future (to track symbol registration/initialization) it's worth changing the
    convention pre-emptively to avoid further confusion. (detail)
    by Lang Hames
  106. [LangRef] Clarify poison semantics

    I find the current documentation of poison somewhat confusing,
    mainly because its use of "undefined behavior" doesn't seem to
    align with our usual interpretation (of immediate UB). Especially
    the sentence "any instruction that has a dependence on a poison
    value has undefined behavior" is very confusing.

    Clarify poison semantics by:

    * Replacing the introductory paragraph with the standard rationale
       for having poison values.
    * Spelling out that instructions depending on poison return poison.
    * Spelling out how we go from a poison value to immediate undefined
       behavior and give the two examples we currently use in ValueTracking.
    * Spelling out that side effects depending on poison are UB.

    Differential Revision: https://reviews.llvm.org/D63044 (detail)
    by nikic
  107. [SimplifyCFG] NFC, update Switch tests as a baseline.

    Also add baseline tests to show effect of later patches.

    There were a couple of regressions here that were never caught,
    but my patch set that this is a preparation to will fix them.

    This is the third attempt to land this patch.

    Differential Revision: https://reviews.llvm.org/D61150 (detail)
    by shawnl
  108. Add a clarifying comment about branching on poison

    I recently got this wrong (again), and I'm sure I'm not the only one.  Put a comment in the logical place someone would look to "fix" the obvious "missed optimization" which arrises based on the common misunderstanding.  Hopefully, this will save others time.  :) (detail)
    by reames
  109. Revert "[NFC][CodeGen] Add unary fneg tests to fp-fast.ll fp-fold.ll fp-in-intregs.ll fp-stack-compare-cmov.ll fp-stack-compare.ll fsxor-alignment.ll"

    This reverts commit 1d85a7518c6b660a85caabd580b632f9abd5a8ab. (detail)
    by mcinally
  110. Revert "[NFC][CodeGen] Add unary fneg tests to fmul-combines.ll fnabs.ll"

    This reverts commit 5c0114058126757ce21e546997121afffc8119cd. (detail)
    by mcinally
  111. Revert "[NFC][CodeGen] Add unary fneg tests to X86/fma_patterns_wide.ll"

    This reverts commit f1b8c6ac4f9d31899a2bc128f8a37b5a1c3e1f77. (detail)
    by mcinally
  112. Revert "[NFC][CodeGen] Add unary fneg tests to X86/fma_patterns.ll"

    This reverts commit 06de52674da73f30751f3ff19fdf457f87077c65. (detail)
    by mcinally
  113. Revert "[NFC][CodeGen] Add unary fneg tests to X86/fma4-fneg-combine.ll"

    This reverts commit f288a0685f874d2b965db25a16b9c44f78c55b12. (detail)
    by mcinally
  114. Revert "[NFC][CodeGen] Add unary fneg tests to X86/fma-scalar-combine.ll"

    This reverts commit 3d2ee0053aa2576fd19cd169798c496199f0a29b. (detail)
    by mcinally
  115. Revert "[NFC][CodeGen] Add unary fneg tests to X86/fma-intrinsics-x86.ll"

    This reverts commit 169fc2b0209d5574fca0927a707706ea2d5f5a09. (detail)
    by mcinally
  116. Revert "[NFC][CodeGen] Add unary fneg tests to X86/fma4-intrinsics-x86.ll"

    This reverts commit 66f286845cad73a280617a606e29c9009bb4da87. (detail)
    by mcinally
  117. Revert "[NFC][CodeGen] Add unary FNeg tests to some X86/ and XCore/ tests."

    This reverts commit 4f3cf3853e1145e3e08fb42ace79ba3e4e268540. (detail)
    by mcinally
  118. Revert "[NFC][CodeGen] Add unary FNeg tests to X86/fma-intrinsics-canonical.ll"

    This reverts commit ee5881a88cbe148bb64d14b8a5b31a314ee22343. (detail)
    by mcinally
  119. Revert "[NFC][CodeGen] Forgot 2 unary FNeg tests in X86/fma-intrinsics-canonical.ll"

    This reverts commit 5f39a3096f8e7b09bd1645f4e4ca66343066a6e1. (detail)
    by mcinally
  120. Revert "[NFC][CodeGen] Add unary fneg tests to X86/fma-fneg-combine.ll"

    This reverts commit 10c085554215e84831d272f2e6a93b7c70d143bf. (detail)
    by mcinally
  121. Revert "[NFC][CodeGen] Add unary FNeg tests to X86/combine-fcopysign.ll X86/dag-fmf-cse.ll X86/fast-isel-fneg.ll X86/fdiv.ll"

    This reverts commit e04c4b6af81d6142c4ff8dd9d00f44a27e9a66eb. (detail)
    by mcinally
  122. Revert "[NFC][CodeGen] Add unary FNeg tests to X86/avx512vl-intrinsics-fast-isel.ll X86/combine-fabs.ll"

    This reverts commit 6fe46ec25d849a9fd5be25acf0ee77e3c06c0786. (detail)
    by mcinally
  123. Revert "[NFC][CodeGen] Add unary FNeg tests to X86/avx512vl-intrinsics-fast-isel.ll"

    This reverts commit 2aa5ada267d268fec2b1e90efeae1ddee24617be. (detail)
    by mcinally
  124. Revert "[NFC][CodeGen] Add unary FNeg tests to X86/avx512vl-intrinsics-fast-isel.ll"

    This reverts commit 27a5db9de57d13d44c7a7704e06d8ba69ec8b4af. (detail)
    by mcinally
  125. Revert "[NFC][CodeGen] Add unary FNeg tests to X86/avx512-intrinsics-fast-isel.ll"

    This reverts commit 41e0b9f2803089155536bdec7cbea6b82680a727. (detail)
    by mcinally
  126. Revert "[NFC][CodeGen] Add unary FNeg tests to X86/avx512-intrinsics-fast-isel.ll"

    This reverts commit aeb89f8b33d8fca4e819ba41267093699a7e4885. (detail)
    by mcinally
  127. [AMDGPU] gfx1010 base changes for wave32

    Differential Revision: https://reviews.llvm.org/D63293 (detail)
    by rampitec
  128. [lit] Disable test on darwin when building shared libs.

    Summary:
    This test fails to link shared libraries because tries to run
    a copied version of clang-check to see if the mock version of libcxx
    in the same directory can be loaded dynamically.  Since the test is
    specifically designed not to look in the default just-built lib
    directory, it must be disabled when building with
    BUILD_SHARED_LIBS=ON.

    Currently only disabling it on Darwin and basing it on the
    enable_shared flag.

    Reviewed By: ilya-biryukov

    Tags: #clang, #llvm

    Differential Revision: https://reviews.llvm.org/D61697 (detail)
    by dhinton
  129. [AMDGPU] gfx1010: small test change for wave32. NFC (detail)
    by rampitec
  130. [docs] Fix TableGen/LangRef typos

    This fixes:
    - `Pred` -> `Prep`
    - `IfDef` -> `Ifdef` (rst is case sensitive here) (detail)
    by rupprecht
  131. [LFTR] Rename variable to minimize confusion [NFC]

    As pointed out by Nikita in D62625, BackedgeTakenCount is generally used to refer to the backedge taken count of the loop.  A conditional backedge taken count - one which only applies if a particular exit is taken - is called a ExitCount in SCEV code, so be consistent here. (detail)
    by reames
  132. [LFTR] Stylistic cleanup as suggested in last review comment of D62939 [NFC] (detail)
    by reames
  133. [InstCombine] add test for failed libfunction prototype matching; NFC (detail)
    by spatel
  134. Fix a bug w/inbounds invalidation in LFTR

    This contains fixes for two cases where we might invalidate inbounds and leave it stale in the IR (a miscompile). Case 1 is when switching to an IV with no dynamically live uses, and case 2 is when doing pre-to-post conversion on the same pointer type IV.

    The basic scheme used is to prove that using the given IV (pre or post increment forms) would have to already trigger UB on the path to the test we're modifying.  As such, our potential UB triggering use does not change the semantics of the original program.

    As was pointed out in the review thread by Nikita, this is defending against a separate issue from the hasConcreteDef case. This is about poison, that's about undef. Unfortunately, the two are different, see Nikita's comment for a fuller explanation, he explains it well.

    (Note: I'm going to address Nikita's last style comment in a separate commit just to minimize chance of subtle bugs being introduced due to typos.)

    Differential Revision: https://reviews.llvm.org/D62939 (detail)
    by reames
  135. [clang][NewPM] Fix broken -O0 test from missing assumptions

    Add an AssumptionCache callback to the InlineFuntionInfo used for the
    AlwaysInlinerPass to match codegen of the AlwaysInlinerLegacyPass to generate
    llvm.assume. This fixes CodeGen/builtin-movdir.c when new PM is enabled by
    default.

    Differential Revision: https://reviews.llvm.org/D63170 (detail)
    by leonardchan
  136. [InstCombine] auto-generate complete test checks; NFC (detail)
    by spatel
  137. [NFC] Updated testcase for D54411/rL363284 (detail)
    by xbolva00
  138. [Codegen] Merge tail blocks with no successors after block placement

    Summary:
    I found the following case having tail blocks with no successors merging opportunities after block placement.

    Before block placement:

    bb0:
        ...
        bne a0, 0, bb2:

    bb1:
        mv a0, 1
        ret

    bb2:
        ...

    bb3:
        mv a0, 1
        ret

    bb4:
        mv a0, -1
        ret

    The conditional branch bne in bb0 is opposite to beq.

    After block placement:

    bb0:
        ...
        beq a0, 0, bb1

    bb2:
        ...

    bb4:
        mv a0, -1
        ret

    bb1:
        mv a0, 1
        ret

    bb3:
        mv a0, 1
        ret

    After block placement, that appears new tail merging opportunity, bb1 and bb3 can be merged as one block. So the conditional constraint for merging tail blocks with no successors should be removed. In my experiment for RISC-V, it decreases code size.


    Author of original patch: Jim Lin

    Reviewers: haicheng, aheejin, craig.topper, rnk, RKSimon, Jim, dmgreen

    Reviewed By: Jim, dmgreen

    Subscribers: xbolva00, dschuff, javed.absar, sbc100, jgravelle-google, aheejin, kito-cheng, dmgreen, PkmX, llvm-commits

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D54411 (detail)
    by xbolva00
  139. [AMDGPU] ImmArg and SourceOfDivergence for permlane/dpp

    Added missing ImmArg and SourceOfDivergence to the crosslane
    intrinsics.

    Differential Revision: https://reviews.llvm.org/D63216 (detail)
    by rampitec
  140. [NFC][CodeGen] Add unary FNeg tests to X86/avx512-intrinsics-fast-isel.ll

    Patch 2 of n. (detail)
    by mcinally
  141. [EarlyCSE] Ensure equal keys have the same hash value

    Summary:
    The logic in EarlyCSE that looks through 'not' operations in the
    predicate recognizes e.g. that `select (not (cmp sgt X, Y)), X, Y` is
    equivalent to `select (cmp sgt X, Y), Y, X`.  Without this change,
    however, only the latter is recognized as a form of `smin X, Y`, so the
    two expressions receive different hash codes.  This leads to missed
    optimization opportunities when the quadratic probing for the two hashes
    doesn't happen to collide, and assertion failures when probing doesn't
    collide on insertion but does collide on a subsequent table grow
    operation.

    This change inverts the order of some of the pattern matching, checking
    first for the optional `not` and then for the min/max/abs patterns, so
    that e.g. both expressions above are recognized as a form of `smin X, Y`.

    It also adds an assertion to isEqual verifying that it implies equal
    hash codes; this fires when there's a collision during insertion, not
    just grow, and so will make it easier to notice if these functions fall
    out of sync again.  A new flag --earlycse-debug-hash is added which can
    be used when changing the hash function; it forces hash collisions so
    that any pair of values inserted which compare as equal but hash
    differently will be caught by the isEqual assertion.

    Reviewers: spatel, nikic

    Reviewed By: spatel, nikic

    Subscribers: lebedev.ri, arsenm, craig.topper, efriedma, hiraditya, llvm-commits

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D62644 (detail)
    by josepht
  142. Fix GCC compiler warning. NFC. (detail)
    by hliao
  143. [X86] Use fresh MemOps when emitting VAARG64

    Previously it copied over MachineMemOperands verbatim which caused MOV32rm to have store flags set, and MOV32mr to have load flags set. This fixes some assertions being thrown with EXPENSIVE_CHECKS on.

    Committed on behalf of @luke (Luke Lau)

    Differential Revision: https://reviews.llvm.org/D62726 (detail)
    by rksimon
  144. Remove ';' after namespace's closing bracket [NFC] (detail)
    by dstenb
  145. [docs][llvm-symbolizer] Fix formatting issue with --functions

    Reviewed by: rupprecht

    Differential Revision: https://reviews.llvm.org/D63195 (detail)
    by jhenderson
  146. [FIX] Forces shrink wrapping to consider any memory access as aliasing with the stack

    Summary:
    Relate bug: https://bugs.llvm.org/show_bug.cgi?id=37472

    The shrink wrapping pass prematurally restores the stack, at a point where the stack might still be accessed.
    Taking an exception can cause the stack to be corrupted.

    As a first approach, this patch is overly conservative, assuming that any instruction that may load or store could access
    the stack.

    Reviewers: dmgreen, qcolombet

    Reviewed By: qcolombet

    Subscribers: simpal01, efriedma, eli.friedman, javed.absar, llvm-commits, eugenis, chill, carwil, thegameg

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D63152 (detail)
    by dnsampaio
  147. [docs][llvm-dwarfdump] Add missing options and behaviour to documentation

    This fixes https://bugs.llvm.org/show_bug.cgi?id=42185.

    llvm-dwarfdump's documentation was missing a number of options and other
    behaviours. This change tries to fix up the documentation by adding
    these missing items.

    Reviewed by: JDevlieghere

    Differential Revision: https://reviews.llvm.org/D63217 (detail)
    by jhenderson
  148. Extra error checking to ARMAttributeParser

    The patch checks for subsection length as discussed in D63191 (detail)
    by evgeny777
  149. [NFC] Sink a function call into LiveDebugValues::process

    This was requested in D62904, which I successfully missed. This is just
    a refactor and shouldn't change any behaviour. (detail)
    by jmorse
  150. [ARM] Set up infrastructure for MVE vector instructions.

    This commit prepares the way to start adding the main collection of
    MVE instructions, which operate on the 128-bit vector registers.

    The most obvious thing that's needed, and the simplest, is to add the
    MQPR register class, which is like the existing QPR except that it has
    fewer registers in it.

    The more complicated part: MVE defines a system of vector predication,
    in which instructions operating on 128-bit vector registers can be
    constrained to operate on only a subset of the lanes, using a system
    of prefix instructions similar to the existing Thumb IT, in that you
    have one prefix instruction which designates up to 4 following
    instructions as subject to predication, and within that sequence, the
    predicate can be inverted by means of T/E suffixes ('Then' / 'Else').

    To support instructions of this type, we've added two new Tablegen
    classes `vpred_n` and `vpred_r` for standard clusters of MC operands
    to add to a predicated instruction. Both include a flag indicating how
    the instruction is predicated at all (options are T, E and 'not
    predicated'), and an input register field for the register controlling
    the set of active lanes. They differ from each other in that `vpred_r`
    also includes an input operand for the previous value of the output
    register, for instructions that leave inactive lanes unchanged.
    `vpred_n` lacks that extra operand; it will be used for instructions
    that don't preserve inactive lanes in their output register (either
    because inactive lanes are zeroed, as the MVE load instructions do, or
    because the output register isn't a vector at all).

    This commit also adds the family of prefix instructions themselves
    (VPT / VPST), and all the machinery needed to work with them in
    assembly and disassembly (e.g. generating the 't' and 'e' mnemonic
    suffixes on disassembled instructions within a predicated block)

    I've added a couple of demo instructions that derive from the new
    Tablegen base classes and use those two operand clusters. The bulk of
    the vector instructions will come in followup commits small enough to
    be manageable. (One exception is that I've added the full version of
    `isMnemonicVPTPredicable` in the AsmParser, because it seemed
    pointless to carefully split it up.)

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

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

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D62669 (detail)
    by statham
  151. [CodeGen] Add getMachineMemOperand + MachineMemOperand::Flags allocator helper wrapper. NFCI.

    Pre-commit for D62726 on behalf of @luke (Luke Lau) (detail)
    by rksimon
  152. [DebugInfo] Honour variable fragments in LiveDebugValues

    This patch makes the LiveDebugValues pass consider fragments when propagating
    DBG_VALUE insts between blocks, fixing PR41979. Fragment info for a variable
    location is added to the open-ranges key, which allows distinct fragments to be
    tracked separately. To handle overlapping fragments things become slightly
    funkier. To avoid excessive searching for overlaps in the data-flow part of
    LiveDebugValues, this patch:
    * Pre-computes pairings of fragments that overlap, for each DILocalVariable
    * During data-flow, whenever something happens that causes an open range to
       be terminated (via erase), any fragments pre-determined to overlap are
       also terminated.

    The effect of which is that when encountering a DBG_VALUE fragment that
    overlaps others, the overlapped fragments do not get propagated to other
    blocks. We still rely on later location-list building to correctly handle
    overlapping fragments within blocks.

    It's unclear whether a mixture of DBG_VALUEs with and without fragmented
    expressions are legitimate. To avoid suprises, this patch interprets a
    DBG_VALUE with no fragment as overlapping any DBG_VALUE _with_ a fragment.

    Differential Revision: https://reviews.llvm.org/D62904 (detail)
    by jmorse
  153. [AMDGPU][MC] Enabled constant expressions as operands of s_getreg/s_setreg

    See bug 40820: https://bugs.llvm.org/show_bug.cgi?id=40820

    Reviewers: artem.tamazov, arsenm

    Differential Revision: https://reviews.llvm.org/D61125 (detail)
    by dpreobra
  154. [ThinLTO][Bitcode] Add 'entrycount' to FS_COMBINED_PROFILE. NFC

    Differential revision: https://reviews.llvm.org/D63078 (detail)
    by evgeny777
  155. [X86][AVX] Add broadcast(v4f64 hadd) test (detail)
    by rksimon
  156. [X86][SSE] Avoid assert for broadcast(horiz-op()) cases for non-f64 cases.

    Based on fuzz test from @craig.topper (detail)
    by rksimon
  157. [X86][SSE] Add tests for underaligned nt stores

    Test both 'unaligned' (which we should scalarize) and 'subvector aligned' (which we should split) (detail)
    by rksimon
  158. [llvm-nm] Additional lit tests for command line options

        Differential Revision: https://reviews.llvm.org/D62955 (detail)
    by chrisj
  159. [X86][SSE] Add SSE4A nt store tests on X86 as well as X64

    We should be able to use MOVNTSD (f64) instead of MOVNTI (i32) to reduce the number of ops 32-bit targets

    Pulled out of D63246 (detail)
    by rksimon
  160. [DebugInfo] Move Value struct out of DebugLocEntry as DbgValueLoc (NFC)

    Since the DebugLocEntry::Value is used as part of DwarfDebug and
    DebugLocEntry make it as the separate class.

    Reviewers: aprantl, dstenb

    Reviewed By: aprantl

    Differential Revision: https://reviews.llvm.org/D63213 (detail)
    by nikolaprica
  161. [DebugInfo] Use FrameDestroy to extend stack locations to end-of-function

    We aim to ignore changes in variable locations during the prologue and
    epilogue of functions, to avoid using space documenting location changes
    that aren't visible. However in D61940 / r362951 this got ripped out as
    the previous implementation was unsound.

    Instead, use the FrameDestroy flag to identify when we're in the epilogue
    of a function, and ignore variable location changes accordingly. This fits
    in with existing code that examines the FrameSetup flag.

    Some variable locations get shuffled in modified tests as they now cover
    greater ranges, which is what would be expected. Some additional
    single-location variables are generated too. Two tests are un-xfailed,
    they were only xfailed due to r362951 deleting functionality they depended
    on.

    Apparently some out-of-tree backends don't accurately maintain FrameDestroy
    flags -- if you're an out-of-tree maintainer and see changes in variable
    locations disappear due to a faulty FrameDestroy flag, it's safe to back
    this change out. The impact is just slightly more debug info than necessary.

    Differential Revision: https://reviews.llvm.org/D62314 (detail)
    by jmorse
  162. [ARM] Refactor handling of IT mask operands.

    During assembly, the mask operand to an IT instruction (storing the
    sequence of T/E for 'Then' and 'Else') is parsed out of the mnemonic
    into a representation that encodes 'Then' and 'Else' in the same way
    regardless of the condition code. At some point during encoding it has
    to be converted into the instruction encoding used in the
    architecture, in which the mask encodes a sequence of replacement
    low-order bits for the condition code, so that which bit value means
    'then' and which 'else' depends on whether the original condition code
    had its low bit set.

    Previously, that transformation was done by processInstruction(), half
    way through assembly. So an MCOperand storing an IT mask would
    sometimes store it in one format, and sometimes in the other,
    depending on where in the assembly pipeline you were. You can see this
    in diagnostics from `llvm-mc -debug -triple=thumbv8a -show-inst`, for
    example: if you give it an instruction such as `itete eq`, you'd see
    an `<MCOperand Imm:5>` in a diagnostic become `<MCOperand Imm:11>` in
    the final output.

    Having the same data structure store values with time-dependent
    semantics is confusing already, and it will get more confusing when we
    introduce the MVE VPT instruction which reuses the Then/Else bitmask
    idea in a different context. So I'm refactoring: now, all `ARMOperand`
    and `MCOperand` representations of an IT mask work exactly the same
    way, namely, 0 means 'Then' and 1 means 'Else', regardless of what
    original predicate is being referred to. The architectural encoding of
    IT that depends on the original condition is now constructed at the
    point when we turn the `MCOperand` into the final instruction bit
    pattern, and decoded similarly in the disassembler.

    The previous condition-independent parse-time format used 0 for Else
    and 1 for Then. I've taken the opportunity to flip the sense of it
    while I'm changing all of this anyway, because it seems to me more
    natural to use 0 for 'leave the starting condition unchanged' and 1
    for 'invert it', as if those bits were an XOR mask.

    Reviewers: ostannard

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

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D63219 (detail)
    by statham
  163. [llvm-objcopy] Implement IHEX reader

    This is the final part of IHEX format support in llvm-objcopy
    Differential revision: https://reviews.llvm.org/D62583 (detail)
    by evgeny777
  164. Improve reduction intrinsics by overloading result value.

    This patch uses the mechanism from D62995 to strengthen the
    definitions of the reduction intrinsics by letting the scalar
    result/accumulator type be overloaded from the vector element type.

    For example:

      ; The LLVM LangRef specifies that the scalar result must equal the
      ; vector element type, but this is not checked/enforced by LLVM.
      declare i32 @llvm.experimental.vector.reduce.or.i32.v4i32(<4 x i32> %a)

    This patch changes that into:

      declare i32 @llvm.experimental.vector.reduce.or.v4i32(<4 x i32> %a)

    Which has the type-constraint more explicit and causes LLVM to check
    the result type with the vector element type.

    Reviewers: RKSimon, arsenm, rnk, greened, aemerson

    Reviewed By: arsenm

    Differential Revision: https://reviews.llvm.org/D62996 (detail)
    by s.desmalen
  165. Revert [llvm-ar][test] Add to MRI test coverage

    This reverts 363232 due to mru-utf8.test buildbot test failure

    Differential Revision: https://reviews.llvm.org/D63197 (detail)
    by gbreynoo
  166. [NFC] Simplify Call query

    Use getIntrinsicID() directly from IntrinsicInst. (detail)
    by sam_parker
  167. [ARM][TTI] Scan for existing loop intrinsics

    TTI should report that it's not profitable to generate a hardware loop
    if it, or one of its child loops, has already been converted.

    Differential Revision: https://reviews.llvm.org/D63212 (detail)
    by sam_parker
  168. [IntrinsicEmitter] Extend argument overloading with forward references.

    Extend the mechanism to overload intrinsic arguments by using either
    backward or forward references to the overloadable arguments.

    In for example:

      def int_something : Intrinsic<[LLVMPointerToElt<0>],
                                    [llvm_anyvector_ty], []>;

    LLVMPointerToElt<0> is a forward reference to the overloadable operand
    of type 'llvm_anyvector_ty' and would allow intrinsics such as:

      declare i32* @llvm.something.v4i32(<4 x i32>);
      declare i64* @llvm.something.v2i64(<2 x i64>);

    where the result pointer type is deduced from the element type of the
    first argument.

    If the returned pointer is not a pointer to the element type, LLVM will
    give an error:

      Intrinsic has incorrect return type!
      i64* (<4 x i32>)* @llvm.something.v4i32

    Reviewers: RKSimon, arsenm, rnk, greened

    Reviewed By: arsenm

    Differential Revision: https://reviews.llvm.org/D62995 (detail)
    by s.desmalen
  169. [llvm-ar][test] Add to MRI test coverage

    This change adds tests to cover existing MRI script functionality.

    Differential Revision: https://reviews.llvm.org/D63197 (detail)
    by gbreynoo
  170. [X86] Correct instruction operands in evex-to-vex-compress.mir to be closer to real instructions.

    $noreg was being used way more than it should have. We also had
    xmm registers in addressing modes.

    Mostly found by hacking the machine verifier to do some stricter
    checking that happened to work for this test, but not sure if
    generally applicable for other tests or other targets. (detail)
    by ctopper
  171. [SimplifyCFG] reverting preliminary Switch patches again

    This reverts 363226 and 363227, both NFC intended

    I swear I fixed the test case that is failing, and ran
    the tests, but I will look into it again. (detail)
    by shawnl
  172. [SimpligyCFG] NFC intended, remove GCD that was only used for powers of two

    and replace with an equilivent countTrailingZeros.

    GCD is much more expensive than this, with repeated division.

    This depends on D60823

    Differential Revision: https://reviews.llvm.org/D61151 (detail)
    by shawnl
  173. [SimplifyCFG] NFC, update Switch tests to better examine successive patches

    Also add baseline tests to show effect of later patches.

    There were a couple of regressions here that were never caught,
    but my patch set that this is a preparation to will fix them.

    Differential Revision: https://reviews.llvm.org/D61150 (detail)
    by shawnl
Revision: 362564
Changes
  1. [Clang] Harmonize Split DWARF options with llc

    Summary:
    With Split DWARF the resulting object file (then called skeleton CU)
    contains the file name of another ("DWO") file with the debug info.
    This can be a problem for remote compilation, as it will contain the
    name of the file on the compilation server, not on the client.

    To use Split DWARF with remote compilation, one needs to either

    * make sure only relative paths are used, and mirror the build directory
      structure of the client on the server,
    * inject the desired file name on the client directly.

    Since llc already supports the latter solution, we're just copying that
    over. We allow setting the actual output filename separately from the
    value of the DW_AT_[GNU_]dwo_name attribute in the skeleton CU.

    Fixes PR40276.

    Reviewers: dblaikie, echristo, tejohnson

    Reviewed By: dblaikie

    Differential Revision: https://reviews.llvm.org/D59673 (detail)
    by aaronpuchert
  2. [Clang] Rename -split-dwarf-file to -split-dwarf-output

    Summary:
    This is the first in a series of changes trying to align clang -cc1
    flags for Split DWARF with those of llc. The unfortunate side effect of
    having -split-dwarf-output for single file Split DWARF will disappear
    again in a subsequent change.

    The change is the result of a discussion in D59673.

    Reviewers: dblaikie, echristo

    Reviewed By: dblaikie

    Differential Revision: https://reviews.llvm.org/D63130 (detail)
    by aaronpuchert
  3. [clang] Add storage for APValue in ConstantExpr

    Summary:
    When using ConstantExpr we often need the result of the expression to be kept in the AST. Currently this is done on a by the node that needs the result and has been done multiple times for enumerator, for constexpr variables... . This patch adds to ConstantExpr the ability to store the result of evaluating the expression. no functional changes expected.

    Changes:
    - Add trailling object to ConstantExpr that can hold an APValue or an uint64_t. the uint64_t is here because most ConstantExpr yield integral values so there is an optimized layout for integral values.
    - Add basic* serialization support for the trailing result.
    - Move conversion functions from an enum to a fltSemantics from clang::FloatingLiteral to llvm::APFloatBase. this change is to make it usable for serializing APValues.
    - Add basic* Import support for the trailing result.
    - ConstantExpr created in CheckConvertedConstantExpression now stores the result in the ConstantExpr Node.
    - Adapt AST dump to print the result when present.

    basic* : None, Indeterminate, Int, Float, FixedPoint, ComplexInt, ComplexFloat,
    the result is not yet used anywhere but for -ast-dump.

    Reviewers: rsmith, martong, shafik

    Reviewed By: rsmith

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

    Tags: #clang, #llvm

    Differential Revision: https://reviews.llvm.org/D62399 (detail)
    by tyker
  4. [analyzer] ReturnVisitor: Bypass everything to see inlined calls

    Summary:
    When we traversed backwards on ExplodedNodes to see where processed the
    given statement we `break` too early. With the current approach we do not
    miss the CallExitEnd ProgramPoint which stands for an inlined call.

    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: https://reviews.llvm.org/D62926 (detail)
    by charusso
  5. [clang] perform semantic checking in constant context

    Summary:
    Since the addition of __builtin_is_constant_evaluated the result of an expression can change based on whether it is evaluated in constant context. a lot of semantic checking performs evaluations with out specifying context. which can lead to wrong diagnostics.
    for example:
    ```
    constexpr int i0 = (long long)__builtin_is_constant_evaluated() * (1ll << 33); //#1
    constexpr int i1 = (long long)!__builtin_is_constant_evaluated() * (1ll << 33); //#2
    ```
    before the patch, #2 was diagnosed incorrectly and #1 wasn't diagnosed.
    after the patch #1 is diagnosed as it should and #2 isn't.

    Changes:
    - add a flag to Sema to passe in constant context mode.
    - in SemaChecking.cpp calls to Expr::Evaluate* are now done in constant context when they should.
    - in SemaChecking.cpp diagnostics for UB are not checked for in constant context because an error will be emitted by the constant evaluator.
    - in SemaChecking.cpp diagnostics for construct that cannot appear in constant context are not checked for in constant context.
    - in SemaChecking.cpp diagnostics on constant expression are always emitted because constant expression are always evaluated.
    - semantic checking for initialization of constexpr variables is now done in constant context.
    - adapt test that were depending on warning changes.
    - add test.

    Reviewers: rsmith

    Reviewed By: rsmith

    Subscribers: cfe-commits

    Tags: #clang

    Differential Revision: https://reviews.llvm.org/D62009 (detail)
    by tyker
  6. Fixed the --print-supported-cpus test

    Add constraints for the test that require specific backend targets
    to be registered.

    Remove trailing whitespace in the doc.

    Differential Revision: https://reviews.llvm.org/D63105 (detail)
    by ziangwan725
  7. [X86] Add checks that immediate for reducesd/ss fits in 8-bits. (detail)
    by ctopper
  8. [CodeGen][ObjC] Annotate retain-agnostic ObjC globals with attribute
    'objc_arc_inert'

    The attribute enables the ARC optimizer to delete ObjC ARC runtime calls
    on the annotated globals (see https://reviews.llvm.org/D62433). We
    currently only annotate global variables for string literals and global
    blocks with the attribute.

    rdar://problem/49839633

    Differential Revision: https://reviews.llvm.org/D62831 (detail)
    by ahatanak
  9. Add --print-supported-cpus flag for clang.

    This patch allows clang users to print out a list of supported CPU models using
    clang [--target=<target triple>] --print-supported-cpus

    Then, users can select the CPU model to compile to using
    clang --target=<triple> -mcpu=<model> a.c

    It is a handy feature to help cross compilation. (detail)
    by ziangwan725
  10. [Remarks][NFC] Improve testing and documentation of -foptimization-record-passes

    This adds:

    * documentation to the user manual
    * nicer error message
    * test for the error case
    * test for the gold plugin (detail)
    by thegameg
  11. [OpenMP] Add target task alloc function with device ID

    Summary: Add a new call to Clang to perform task allocation for the target.

    Reviewers: ABataev, AlexEichenberger, caomhin

    Reviewed By: ABataev, AlexEichenberger

    Subscribers: openmp-commits, Hahnfeld, guansong, jdoerfert, cfe-commits

    Tags: #clang, #openmp

    Differential Revision: https://reviews.llvm.org/D63009 (detail)
    by gbercea
  12. Use unsigned for bitfields to avoid sign extension (detail)
    by rnk
  13. PR42071: Reject weird names for non-type template parameters.

    Also reject default arguments appearing in invalid locations. (detail)
    by rsmith
  14. Use getOperatorSpelling to get the spelling of an overloaded operator
    rather than duplicating operator name tables in multiple places. (detail)
    by rsmith
  15. [OpenMP] Avoid emitting maps for target link variables when unified memory is used

    Summary: This patch avoids the emission of maps for target link variables when unified memory is present.

    Reviewers: ABataev, caomhin

    Reviewed By: ABataev

    Subscribers: guansong, jdoerfert, cfe-commits

    Tags: #clang

    Differential Revision: https://reviews.llvm.org/D60883 (detail)
    by gbercea
  16. Remove unused SK_LValueToRValue initialization step.

    In addition to being unused and duplicating code, this was also wrong
    (it didn't properly mark the operand as being potentially not odr-used).

    This reinstates r363340, reverted in r363352. (detail)
    by rsmith
  17. PR23833, DR2140: an lvalue-to-rvalue conversion on a glvalue of type
    nullptr_t does not access memory.

    We now reuse CK_NullToPointer to represent a conversion from a glvalue
    of type nullptr_t to a prvalue of nullptr_t where necessary.

    This reinstates r363337, reverted in r363352. (detail)
    by rsmith
  18. C++ DR712 and others: handle non-odr-use resulting from an lvalue-to-rvalue conversion applied to a member access or similar not-quite-trivial lvalue expression.

    Summary:
    When a variable is named in a context where we can't directly emit a
    reference to it (because we don't know for sure that it's going to be
    defined, or it's from an enclosing function and not captured, or the
    reference might not "work" for some reason), we emit a copy of the
    variable as a global and use that for the known-to-be-read-only access.

    This reinstates r363295, reverted in r363352, with a fix for PR42276:
    we now produce a proper name for a non-odr-use reference to a static
    constexpr data member. The name <mangled-name>.const is used in that
    case; such names are reserved to the implementation for cases such as
    this and should demangle nicely.

    Reviewers: rjmccall

    Subscribers: jdoerfert, cfe-commits

    Tags: #clang

    Differential Revision: https://reviews.llvm.org/D63157 (detail)
    by rsmith
  19. Reland: [Remarks] Refactor optimization remarks setup

    * Add a common function to setup opt-remarks
    * Rename common options to the same names
    * Add error types to distinguish between file errors and regex errors (detail)
    by thegameg
  20. [AMDGPU] Enable the implicit arguments for HIP (CLANG)

    Enable 48-bytes of implicit arguments for HIP as well. Earlier it was enabled for OpenCL. This code is specific to AMDGPU target.

    Differential Revision: https://reviews.llvm.org/D62244 (detail)
    by yaxunl
  21. AMDGPU: Use AMDGPU toolchain for other OSes

    This would need more work to actually support them, but this is less
    wrong than the default. (detail)
    by arsenm
  22. Revert r363298 "[lit] Disable test on darwin when building shared libs."

    It broke running check-lld on mac, see https://reviews.llvm.org/D61697 (detail)
    by nico
  23. Revert "[OpenCL] Move OpenCLBuiltins.td and remove unused include"

    This reverts commit r363242 as it broke some builds with

      make[2]: *** No rule to make target 'ClangOpenCLBuiltinsImpl', needed by
      'tools/clang/lib/Sema/CMakeFiles/obj.clangSema.dir/SemaLookup.cpp.o'. (detail)
    by svenvh
  24. add a missing parenthese in the clang doc (detail)
    by sylvestre
  25. [C++20] add Basic consteval specifier

    Summary:
    this revision adds Lexing, Parsing and Basic Semantic for the consteval specifier as specified by http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1073r3.html

    with this patch, the consteval specifier is treated as constexpr but can only be applied to function declaration.

    Changes:
    - add the consteval keyword.
    - add parsing of consteval specifier for normal declarations and lambdas expressions.
    - add the whether a declaration is constexpr is now represented by and enum everywhere except for variable because they can't be consteval.
    - adapt diagnostic about constexpr to print constexpr or consteval depending on the case.
    - add tests for basic semantic.

    Reviewers: rsmith, martong, shafik

    Reviewed By: rsmith

    Subscribers: eraman, efriedma, rnkovacs, cfe-commits

    Tags: #clang

    Differential Revision: https://reviews.llvm.org/D61790 (detail)
    by tyker
  26. [clang] Fixing incorrect implicit deduction guides (PR41549)

    Summary:
    [[ https://bugs.llvm.org/show_bug.cgi?id=41549 | bug report ]]

    Before this patch, implicit deduction guides were generated from the first declaration found by lookup.
    With this patch implicit deduction guides are generated from the definition of the class template.
    Also added test that was previously failing.

    Reviewers: rsmith

    Reviewed By: rsmith

    Subscribers: cfe-commits, Quuxplusone

    Tags: #clang

    Differential Revision: https://reviews.llvm.org/D63072 (detail)
    by tyker
  27. [clang] Don't segfault on incorrect using directive (PR41400)

    Summary:
    this is a bugfixe for [[ https://bugs.llvm.org/show_bug.cgi?id=41400 | PR41400 ]]

    added nullptr check at the relevent place and test

    Reviewers: rsmith, riccibruno

    Reviewed By: rsmith

    Subscribers: jkooker, jkorous, riccibruno, cfe-commits

    Tags: #clang

    Differential Revision: https://reviews.llvm.org/D60523 (detail)
    by tyker
  28. Revert 363295, it caused PR42276. Also revert follow-ups 363337, 363340.

    Revert 363340 "Remove unused SK_LValueToRValue initialization step."
    Revert 363337 "PR23833, DR2140: an lvalue-to-rvalue conversion on a glvalue of type"
    Revert 363295 "C++ DR712 and others: handle non-odr-use resulting from an lvalue-to-rvalue conversion applied to a member access or similar not-quite-trivial lvalue expression." (detail)
    by nico
  29. [Targets] Move soft-float-abi filtering to `initFeatureMap`

    ARM has a special target feature called soft-float-abi. This feature is
    special, since we get it passed to us explicitly in the frontend, but
    filter it out before it can land in any target feature strings in LLVM
    IR.

    __attribute__((target(""))) doesn't quite filter these features out
    properly, so today, we get warnings about soft-float-abi being an
    unknown feature from the backend.

    This CL has us filter soft-float-abi out at a slightly different point,
    so we don't end up passing these invalid features to the backend.

    Differential Revision: https://reviews.llvm.org/D61750 (detail)
    by George Burgess IV
  30. [AMDGPU] gfx1011/gfx1012 clang support

    Differential Revision: https://reviews.llvm.org/D63308 (detail)
    by rampitec
  31. Revert "[Remarks] Refactor optimization remarks setup"

    This reverts commit 6e6e3af55bb97e1a4c97375c15a2b0099120c5a7.

    This breaks greendragon. (detail)
    by thegameg
  32. [AMDGPU] gfx1010 wave32 clang support

    Differential Revision: https://reviews.llvm.org/D63209 (detail)
    by rampitec
  33. Remove unused SK_LValueToRValue initialization step.

    In addition to being unused and duplicating code, this was also wrong
    (it didn't properly mark the operand as being potentially not odr-used). (detail)
    by rsmith
  34. PR23833, DR2140: an lvalue-to-rvalue conversion on a glvalue of type
    nullptr_t does not access memory.

    We now reuse CK_NullToPointer to represent a conversion from a glvalue
    of type nullptr_t to a prvalue of nullptr_t where necessary.

    This reinstates r345562, reverted in r346065, now that CodeGen's
    handling of non-odr-used variables has been fixed. (detail)
    by rsmith
  35. Use fully qualified name when printing S_CONSTANT records

    Summary:
    Before it was using the fully qualified name only for static data members.
    Now it does for all variable names to match MSVC.

    Reviewers: rnk

    Subscribers: hiraditya, llvm-commits

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D63012 (detail)
    by akhuang
  36. [Remarks] Refactor optimization remarks setup

    * Add a common function to setup opt-remarks
    * Rename common options to the same names
    * Add error types to distinguish between file errors and regex errors (detail)
    by thegameg
  37. [lit] Disable test on darwin when building shared libs.

    Summary:
    This test fails to link shared libraries because tries to run
    a copied version of clang-check to see if the mock version of libcxx
    in the same directory can be loaded dynamically.  Since the test is
    specifically designed not to look in the default just-built lib
    directory, it must be disabled when building with
    BUILD_SHARED_LIBS=ON.

    Currently only disabling it on Darwin and basing it on the
    enable_shared flag.

    Reviewed By: ilya-biryukov

    Tags: #clang, #llvm

    Differential Revision: https://reviews.llvm.org/D61697 (detail)
    by dhinton
  38. C++ DR712 and others: handle non-odr-use resulting from an lvalue-to-rvalue conversion applied to a member access or similar not-quite-trivial lvalue expression.

    Summary:
    When a variable is named in a context where we can't directly emit a
    reference to it (because we don't know for sure that it's going to be
    defined, or it's from an enclosing function and not captured, or the
    reference might not "work" for some reason), we emit a copy of the
    variable as a global and use that for the known-to-be-read-only access.

    Reviewers: rjmccall

    Subscribers: jdoerfert, cfe-commits

    Tags: #clang

    Differential Revision: https://reviews.llvm.org/D63157 (detail)
    by rsmith
  39. PR42182: Allow thread-local to use __cxa_thread_atexit when
    -fno-use-cxx-atexit is used

    This matches the GCC behavior, __cxa_thread_atexit should be permissible
    even though cxa_atexit is disabled.

    Differential Revision: https://reviews.llvm.org/D63283/ (detail)
    by erichkeane
  40. [clang][NewPM] Fix broken -O0 test from missing assumptions

    Add an AssumptionCache callback to the InlineFuntionInfo used for the
    AlwaysInlinerPass to match codegen of the AlwaysInlinerLegacyPass to generate
    llvm.assume. This fixes CodeGen/builtin-movdir.c when new PM is enabled by
    default.

    Differential Revision: https://reviews.llvm.org/D63170 (detail)
    by leonardchan
  41. [clang][NewPM] Fix split debug test

    This contains the part of D62225 which fixes CodeGen/split-debug-single-file.c
    by not placing .dwo sections when using -enable-split-dwarf=split.

    Differential Revision: https://reviews.llvm.org/D63168 (detail)
    by leonardchan
  42. [clang][NewPM] Fix broken profile test

    This contains the part of D62225 which fixes Profile/gcc-flag-compatibility.c
    by adding the pass that allows default profile generation to work under the new
    PM. It seems that ./default.profraw was not being generated with new PM enabled.

    Differential Revision: https://reviews.llvm.org/D63155 (detail)
    by leonardchan
  43. [clang][NewPM] Fix broken -O0 test from the AlwaysInliner

    This contains the part of D62225 which prevents insertion of lifetime
    intrinsics when creating the AlwaysInliner. This fixes the following tests
    when the new PM is enabled by default:

    Clang :: CodeGen/aarch64-neon-across.c
    Clang :: CodeGen/aarch64-neon-fcvt-intrinsics.c
    Clang :: CodeGen/aarch64-neon-fma.c
    Clang :: CodeGen/aarch64-neon-perm.c
    Clang :: CodeGen/aarch64-neon-tbl.c
    Clang :: CodeGen/aarch64-poly128.c
    Clang :: CodeGen/aarch64-v8.2a-neon-intrinsics.c
    Clang :: CodeGen/arm-neon-fma.c
    Clang :: CodeGen/arm-neon-numeric-maxmin.c
    Clang :: CodeGen/arm-neon-vcvtX.c
    Clang :: CodeGen/avx-builtins.c
    Clang :: CodeGen/builtins-ppc-p9vector.c
    Clang :: CodeGen/builtins-ppc-vsx.c
    Clang :: CodeGen/lifetime.c
    Clang :: CodeGen/sse-builtins.c
    Clang :: CodeGen/sse2-builtins.c

    Differential Revision: https://reviews.llvm.org/D63153 (detail)
    by leonardchan
  44. Added AST matcher for ignoring elidable constructors

    Summary: Added AST matcher for ignoring elidable move constructors

    Reviewers: hokein, gribozavr

    Reviewed By: hokein, gribozavr

    Subscribers: cfe-commits

    Tags: #clang

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

    Patch by Johan Vikström. (detail)
    by gribozavr
  45. [OpenCL] Move OpenCLBuiltins.td and remove unused include

    Patch by Pierre Gondois.

    Differential revision: https://reviews.llvm.org/D62849 (detail)
    by svenvh
  46. [WebAssembly] Modernize include path handling

    Move include path construction from
    InitHeaderSearch::AddDefaultIncludePaths in the Driver which appears
    to be the more modern/correct way of doing things.

    Differential Revision: https://reviews.llvm.org/D63030 (detail)
    by sbc
  47. [clang-scan-deps] Fix -DBUILD_SHARED_LIBS=ON build

    The -DBUILD_SHARED_LIBS=ON build was broken in rL363204

    Differential Revision: https://reviews.llvm.org/D63245 (detail)
    by sbc
  48. clang-format extension: Widen the supported versions range

    So that it covers also the latest VS 2019 version.

    By Antonio Maiorano! (detail)
    by hans
Revision: 362564
Changes
  1. [clangd] Index API and implementations for relations

    Summary:
    This builds on the relations support added in D59407, D62459,
    and D62471 to expose relations in SymbolIndex and its
    implementations.

    Reviewers: kadircet

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

    Tags: #clang

    Differential Revision: https://reviews.llvm.org/D62839 (detail)
    by nridge
  2. [clangd] Bump vscode-clangd v0.0.14

    CHANGELOG:
    - use the vscode-buildin feature to detect language (rather than using
      file extensions), this fixes the extension not working on
      non-standard C++ files (e.g. via files.associations) (detail)
    by hokein
  3. [clangd] Don't maintain a list of c-family extensions in vscode extension.

    Summary:
    There is no need to maintain this list by ourself, vscode already
    provides this feature.

    Reviewers: kadircet

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

    Tags: #clang

    Differential Revision: https://reviews.llvm.org/D63323 (detail)
    by hokein
  4. Test commit (detail)
    by sureyeaah
  5. [clang-tidy] Make ClangTidyCheck::OptionsView public.

    Summary: The `OptionsView` class is currently protected. This constraint prevents tidies from passing the OptionsView to, for example, a helper function. Similarly, TransformerClangTidyCheck cannot pass the `OptionsView` object to functions that generate `tooling::RewriteRule`s.  The latter is needed to allow the definition of such rules to depend on the clang-tidy options, as demonstrated in the child revision.

    Reviewers: gribozavr

    Subscribers: xazax.hun, cfe-commits

    Tags: #clang

    Differential Revision: https://reviews.llvm.org/D63287 (detail)
    by ymandel
  6. [clang-tidy] Made abseil-faster-strsplit-delimiter tests pass on C++17

    Reviewers: hokein, gribozavr

    Reviewed By: hokein, gribozavr

    Subscribers: xazax.hun, cfe-commits

    Tags: #clang

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

    Patch by Johan Vikström. (detail)
    by gribozavr
  7. [clang-tidy] Fixed abseil-time-subtraction to work on C++17

    Summary: Fixed abseil-time-subtraction to work on C++17

    Reviewers: hokein, gribozavr

    Subscribers: xazax.hun, cfe-commits

    Tags: #clang

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

    Patch by Johan Vikström. (detail)
    by gribozavr
  8. [clang-tidy] Made abseil-upgrade-duration-conversions tests pass on c++17

    Summary: Made abseil-upgrade-duration-conversions tests pass on c++17

    Reviewers: hokein, gribozavr

    Reviewed By: gribozavr

    Subscribers: xazax.hun, cfe-commits

    Tags: #clang

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

    Patch by Johan Vikström. (detail)
    by gribozavr
  9. [clang-tidy] Fixed abseil-duration-unnecessary-conversion tests for c++17

    Summary: Fixed abseil-duration-unnecessary-conversion tests for c++17

    Reviewers: hokein, gribozavr

    Reviewed By: gribozavr

    Subscribers: xazax.hun, cfe-commits

    Tags: #clang

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

    Patch by Johan Vikström. (detail)
    by gribozavr
  10. [Clangd] Fixed clangd diagnostics priority

    Summary:
    - Fixed diagnostics where zero width inserted ranges were being used instead of the whole token
    - Added unit tests

    Patch by @SureYeaah !

    Reviewers: sammccall, kadircet

    Reviewed By: kadircet

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

    Tags: #clang-tools-extra, #clang

    Differential Revision: https://reviews.llvm.org/D63222 (detail)
    by kadircet
  11. [clangd] Treat lambdas as functions when preparing hover response

    Reviewers: sammccall, ilya-biryukov

    Subscribers: MaskRay, jkorous, arphaman, cfe-commits

    Tags: #clang

    Differential Revision: https://reviews.llvm.org/D62814 (detail)
    by kadircet
Revision: 362564
Changes
  1. [compiler-rt] Respect CMAKE_NM

    The default nm executable may not be able to handle the architecture
    we're building the sanitizers for. Respect CMAKE_NM if it's set to
    ensure we're using the correct nm tool. Preserve the existing NM
    environment variable override to not break its users.

    Differential Revision: https://reviews.llvm.org/D63368 (detail)
    by smeenai
  2. Improve error message when '=' is missing in  {ASAN,...}_OPTIONS.

    Summary:
    It's handling isses as described here:
    https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89832

    Patch by Martin Liška.

    Reviewers: kcc, vitalybuka

    Reviewed By: vitalybuka

    Subscribers: cryptoad, kubamracek

    Differential Revision: https://reviews.llvm.org/D59876 (detail)
    by Vitaly Buka
  3. [libFuzzer] in autofocus mode, give more weight to functions with DFT (detail)
    by kcc
  4. [libFuzzer] implement a better queue for the fork mode. Add an internal flag -stop_file to allow graceful shutdown of fuzzing. Enhance the logging in the fork mode (detail)
    by kcc
  5. [libFuzzer] fix -Werror build (detail)
    by kcc
  6. [libFuzzer] simplify the DFT trace collection using the new faster DFSan mode that traces up to 16 labels at a time and never runs out of labels. Second attempt. This time with a fix for windows (putenv instead of setenv)) (detail)
    by kcc
  7. [libFuzzer] Disable len_control by default if LLVMFuzzerCustomMutator is used.

    Summary:
    Some custom mutators may not peform well when size restriction is
    enforced by len_control. Because of that, it's safer to disable len_control
    by default in such cases, but still allow users to enable it manually.
    Bug example: https://bugs.chromium.org/p/chromium/issues/detail?id=919530.

    Tested manually with LPM-based and regular fuzz targets.

    Reviewers: kcc, vitalybuka, metzman

    Reviewed By: kcc, metzman

    Subscribers: delcypher, #sanitizers, llvm-commits

    Tags: #llvm, #sanitizers

    Differential Revision: https://reviews.llvm.org/D63334 (detail)
    by dor1s
  8. Revert r363326 "[libFuzzer] simplify the DFT trace collection using the new faster DFSan mode that traces up to 16 labels at a time and never runs out of labels."

    It broke the Windows build:

    C:\b\s\w\ir\cache\builder\src\third_party\llvm\compiler-rt\lib\fuzzer\FuzzerDataFlowTrace.cpp(243): error C3861: 'setenv': identifier not found

    This also reverts the follow-up r363327. (detail)
    by hans
  9. fix whitespaces (detail)
    by kcc
  10. [libFuzzer] simplify the DFT trace collection using the new faster DFSan mode that traces up to 16 labels at a time and never runs out of labels. (detail)
    by kcc
  11. [dfsan] Introduce dfsan_flush().

    Summary:
    dfsan_flush() allows to restart tain tracking from scratch in the same process.
    The primary purpose right now is to allow more efficient data flow tracing
    for DFT fuzzing: https://github.com/google/oss-fuzz/issues/1632

    Reviewers: pcc

    Reviewed By: pcc

    Subscribers: delcypher, #sanitizers, llvm-commits

    Tags: #llvm, #sanitizers

    Differential Revision: https://reviews.llvm.org/D63037 (detail)
    by kcc
Revision: 362564
Changes
  1. attempt to unbreak buildbots (detail)
    by ericwf
  2. [libcxx] Add XFAIL for facet test when back-deploying to older macOS (detail)
    by Louis Dionne
  3. [libc++] Keep __regex_word in sync with ctype_base

    Summary:
    The class ctype_base in the header <__locale> contains masks for
    character classification functions, which are kept in sync with
    platform's C library, hence it contains many special cases.
    The value of the bit mask __regex_word in the header <regex> must not
    clash with those bit masks.

    Currently the default case (i.e. unknown platform/C library) is
    handled incorrectly: the __regex_word clashes with ctype_base::punct.

    To avoid replicating the whole list of platforms in <regex> this patch
    defines __regex_word in <__locale>, so that it is always kept in sync
    with other masks.

    Reviewers: ldionne, mclow.lists, EricWF

    Reviewed By: ldionne

    Subscribers: krytarowski, christof, dexonsmith, pbarrio, simon_tatham, libcxx-commits

    Tags: #libc

    Differential Revision: https://reviews.llvm.org/D63284 (detail)
    by miyuki
  4. [libc++] Fix build with gcc 4.8

    gcc 4.8.4 (but not 5.4.0 or 7.3.0) has trouble initializing errc with {}, giving
    the error in [1]. This CL switches to explicitly using errc(0), which gcc 4.8
    accepts.

    [1] https://bugs.chromium.org/p/chromium/issues/detail?id=973723

    Differential Revision: https://reviews.llvm.org/D63296 (detail)
    by thomasanderson
  5. [libc++] Add missing #include in <cwchar> tests

    Thanks to Mikhail Maltsev for the patch.
    Differential Revision: https://reviews.llvm.org/D63289 (detail)
    by Louis Dionne

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

This run spent:

  • 17 min waiting;
  • 24 min build duration;
  • 24 min total from scheduled to completion.