Test Result: 0 tests failing out of a total of 1,667 tests.100
Build stability: No recent builds failed.100
Build History
 Identified problems
 Identified problems
 Identified problems
 Identified problems
 Identified problems
 Identified problems
 Identified problems
 xIdentified problems


#2974 (Aug 9, 2019 5:00:27 AM)

  1. [MCA] Add flag -show-encoding to llvm-mca.

    Flag -show-encoding enables the printing of instruction encodings as part of the
    the instruction info view.

    Example (with flags -mtriple=x86_64--  -mcpu=btver2):

    Instruction Info:
    [1]: #uOps
    [2]: Latency
    [3]: RThroughput
    [4]: MayLoad
    [5]: MayStore
    [6]: HasSideEffects (U)
    [7]: Encoding Size

    [1]    [2]    [3]    [4]    [5]    [6]    [7]    Encodings:     Instructions:
    1      2     1.00                         4     c5 f0 59 d0    vmulps   %xmm0, %xmm1, %xmm2
    1      4     1.00                         4     c5 eb 7c da    vhaddps  %xmm2, %xmm2, %xmm3
    1      4     1.00                         4     c5 e3 7c e3    vhaddps  %xmm3, %xmm3, %xmm4

    In this example, column Encoding Size is the size in bytes of the instruction
    encoding. Column Encodings reports the actual instruction encodings as byte
    sequences in hex (objdump style).

    The computation of encodings is done by a utility class named mca::CodeEmitter.

    In future, I plan to expose the CodeEmitter to the instruction builder, so that
    information about instruction encoding sizes can be used by the simulator. That
    would be a first step towards simulating the throughput from the decoders in the
    hardware frontend.

    Differential Revision: — adibiagio / detail
  2. [AArch64] Set pref. func. align to 8 bytes on Neoverse E1 & Cortex-A65

    The Arm Neoverse E1 and Cortex-A65 Software Optimization Guide [1][2],
    Section "4.7 Branch instruction alignment" state:

    "It is preferable for branch targets, including subroutine entry points,
    to be placed on aligned 64-bit boundaries to maximize instruction fetch

    This patch sets the preferred function alignment on Neoverse E1 and
    Cortex-A65 to 2^3=8B. This was already the case in some Cortex-A CPUs
    such as Cortex-A53.


    Reviewers: dmgreen, fhahn, samparker

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

    Tags: #llvm

    Differential Revision: — pabbar01 / detail
  3. [llvm-readobj] - Remove `error(llvm::Expected<T> &&E)`

    This is a bit strange method. It works like a unwrapOrError,
    but named error. It does not report an Input name.
    I removed it.

    Differential revision: — grimar / detail
  4. [llvm-readobj] - Remove deprecated unwrapOrError(Expected<T> EO).

    This patch changes the code to use a modern unwrapOrError(StringRef Input, Expected<T> EO)
    version that contains the input source name and removes the deprecated version.

    Differential revision: — grimar / detail
  5. [lldb][NFC] Unify InstrList typedef in IRForTarget — Raphael Isemann / detail
  6. [lldb][NFC] Fix warning about missing switch cases

    These types were recently added in D62960 but it seems the patch didn't
    consider LLDB which causes a bunch of compiler warnings about
    missing enum values. It seems this feature isn't fully implemented yet,
    so I don't think we can write any test for this. For now lets just add
    the missing types to our usual list of unsupported types. — Raphael Isemann / detail
  7. AArch64: support TLS on Darwin platforms in GlobalISel.

    All TLS access on Darwin is in the "general dynamic" form where we call
    a function to resolve the address, so implementation is pretty simple. — Tim Northover / detail
  8. [lldb] Refactor guard variable checks in IRForTarget

    Not NFC as this will probably fix a wrong guard variable check
    on Windows. Not sure though what Windows test can now be safely
    enabled. — Raphael Isemann / detail
  9. Minidump/Windows: Fix module lookup

    When opening a minidump, we were failing to find an executable because
    we were searching for i386-unknown-windows, whereas we recognize the
    pe/coff files as i386-pc-windows. This fixes the triple computation code
    in the minidump parser to match pe/coff, and adds an appropriate test.

    NB: I'm not sure setting the vendor to "pc" is really correct for
    arm(64) windows, but right now that seems to match what we do in the
    pe/coff case (ArchSpec.cpp:935).

    Reviewers: clayborg, amccarth

    Subscribers: javed.absar, kristof.beyls, rnk, markmentovai, lldb-commits

    Differential Revision: — labath / detail
  10. [lldb][NFC] Clean up logging in IRForTarget — Raphael Isemann / detail
  11. Add SVE opaque built-in types

    This patch adds the SVE built-in types defined by the Procedure Call
    Standard for the Arm Architecture:

    It handles the types in all relevant places that deal with built-in types.
    At the moment, some of these places bail out with an error, including:

       (1) trying to generate LLVM IR for the types
       (2) trying to generate debug info for the types
       (3) trying to mangle the types using the Microsoft C++ ABI
       (4) trying to @encode the types in Objective C

    (1) and (2) are fixed by follow-on patches but (unlike this patch)
    they deal mostly with target-specific LLVM details, so seemed like
    a logically separate change.  There is currently no spec for (3) and
    (4), so reporting an error seems like the correct behaviour for now.

    The intention is that the types will become sizeless types:

    The main purpose of the sizeless type extension is to diagnose
    impossible or dangerous uses of the types, such as any that would
    require sizeof to have a meaningful defined value.

    Until then, the patch sets the alignments of the types to the values
    specified in the link above.  It also sets the sizes of the types to
    zero, which is chosen to be consistently wrong and shouldn't affect
    correctly-written code (i.e. code that would compile even with the
    sizeless type extension).

    The patch adds the common subset of functionality needed to test the
    sizeless type extension on the one hand and to provide SVE intrinsic
    functions on the other.  After this patch, the two pieces of work are
    essentially independent.

    The patch is based on one by Graham Hunter:

    Differential Revision: — rsandifo / detail
  12. [llvm-readobj] - Remove unwrapOrError(ErrorOr<T> EO) helper.

    It is outdated. Using of Expected<> is preferred, also it does
    not provide a way to report a file name.

    I updated the code to use the modern version of unwrapOrError instead.

    Differential revision: — grimar / detail
  13. GlobalISel: pack various parameters for lowerCall into a struct.

    I've now needed to add an extra parameter to this call twice recently. Not only
    is the signature getting extremely unwieldy, but just updating all of the
    callsites and implementations is a pain. Putting the parameters in a struct
    sidesteps both issues. — Tim Northover / detail
  14. [lldb][NFC] Remove last C string uses from IRForTarget — Raphael Isemann / detail
  15. [lldb][NFC] Use range-based for-loops in IRForTarget — Raphael Isemann / detail
  16. [ARM][ParallelDSP] Replace SExt uses

    As loads are combined and widened, we replaced their sext users
    operands whereas we should have been replacing the uses of the sext.
    I've added a load of tests, with only a few of them originally
    causing assertion failures, the rest improve pattern coverage.

    Differential Revision: — sam_parker / detail
  17. [AST] No longer visiting CXXMethodDecl bodies created by compiler when method was default created.

    Clang generates function bodies and puts them in the AST for default methods if it is defaulted outside the class definition.

    struct A {
       A &operator=(A &&O);

    A &A::operator=(A &&O) = default;

    This will generate a function body for the `A &A::operator=(A &&O)` and put it in the AST. This body should not be visited if implicit code is not visited as it is implicit.

    This was causing SemanticHighlighting in clangd to generate duplicate tokens and putting them in weird places.

    Reviewers: hokein, ilya-biryukov, gribozavr

    Subscribers: mgorny, jkorous, arphaman, kadircet, cfe-commits

    Tags: #clang

    Differential Revision: — jvikstrom / detail
  18. [InstSimplify] Report "Changed" also when only deleting dead instructions

    Make sure that we report that changes has been made
    by InstSimplify also in situations when only trivially
    dead instructions has been removed. If for example a call
    is removed the call graph must be updated.

    Bug seem to have been introduced by llvm-svn r367173
    (commit 02b9e45a7e4b81), since the code in question
    was rewritten in that commit.

    Reviewers: spatel, chandlerc, foad

    Reviewed By: spatel

    Subscribers: hiraditya, llvm-commits

    Tags: #llvm

    Differential Revision: — bjope / detail
  19. [X86] Remove code that expands truncating stores from combineStore.

    We shouldn't form trunc stores that need to be expanded now that
    we are using widening legalization. — ctopper / detail
  20. Use ASSERT_THAT_ERROR instead of logAllUnhandledErrors/exit

    Summary: ASSERT_THAT_ERROR looks like the intended helper for use in tests.

    Reviewers: plotfi, jkorous, compnerd

    Subscribers: mgorny, dexonsmith, cfe-commits

    Tags: #clang

    Differential Revision: — gribozavr / detail
  21. Fix rpath for MacOS/iOS

    Summary: libs can be installed to ../lib64.

    Subscribers: mgorny, llvm-commits

    Tags: #llvm

    Differential Revision: — hhb / detail
  22. [X86] Remove stale FIXME from combineMaskedStore. NFC

    I believe PR34584 was tracking that FIXME, but its since been
    closed and a test case was added. — ctopper / detail
  23. [X86] Remove DAG combine expansion of extending masked load and truncating masked store.

    The only way to generate these was through promoting legalization
    of narrow vectors, but we widen those types now. So we shouldn't
    produce these nodes. — ctopper / detail

#2973 (Aug 8, 2019 10:44:07 PM)

  1. [X86] Remove handler for (U/S)(ADD/SUB)SAT from ReplaceNodeResults. Remove TypeWidenVector check from code that handles X86ISD::VPMADDWD and X86ISD::AVG.

    More unneeded code since we now legalize narrow vectors by widening. — ctopper / detail
  2. [X86] Remove ISD::SETCC handling from ReplaceNodeResults.

    This is no longer needed since we widen v2i32 instead of promoting. — ctopper / detail
  3. [clang][NFC] Consolidating usage of "FinalPhase" in Driver::BuildActions.

    I am working to remove this concept of the "FinalPhase" in the clang driver,
    but it is used in a lot of different places to do argument handling for
    different combinations of phase pipelines and arguments. I am trying to
    consolidate most of the uses of "FinalPhase" into its own separate scope.
    Eventually, in a subsequent patch I will move all of this stuff to a separate
    function, and have more of the complication phase list construction setup into

    Differential Revision: — zer0 / detail
  4. [PowerPC] [Clang] Port SSE3, SSSE3 and SSE4 intrinsics to PowerPC

    Port existing headers which include x86 intrinsics implementation to
    PowerPC platform (using Altivec), along with tests. Also, tests about
    including these intrinsic headers are combined.

    The headers are mainly developed by Steven Munroe, with contributions
    from Paul Clarke, Bill Schmidt, Jinsong Ji and Zixuan Wu.

    Reviewed By: Jinsong Ji

    Differential Revision: — chaofan / detail
  5. [X86] Simplify ISD::LOAD handling in ReplaceNodeResults and ISD::STORE handling in LowerStore now that v2i32 is widened to v4i32. — ctopper / detail
  6. [X86] Merge v2f32 and v2i32 gather/scatter handling in ReplaceNodeResults/LowerMSCATTER now that v2i32 is also widened like v2f32. — ctopper / detail
  7. [X86] Now unreachable handling for f64->v2i32/v4i16/v8i8 bitcasts from ReplaceNodeResults.

    We rely on the generic type legalizer for this now. — ctopper / detail
  8. [X86] Simplify ReplaceNodeResults handling for FP_TO_SINT/UINT for vectors to only handle widening. — ctopper / detail
  9. [X86] Simplify ReplaceNodeResults handling for SIGN_EXTEND/ZERO_EXTEND/TRUNCATE for vectors to only handle widening. — ctopper / detail
  10. [X86] Simplify ReplaceNodeResults handling for UDIV/UREM/SDIV/SREM for vectors to only handle widening. — ctopper / detail
  11. [X86] Remove vector promotion handling from the ReplaceNodeResults ISD::MUL handling code.

    We now widen illegal vector types so we don't need this anymore. — ctopper / detail
  12. [analyzer] CastValueChecker: Model castAs(), getAs()

    Summary: Thanks to Kristóf Umann for the great idea!

    Reviewed By: NoQ

    Differential Revision: — charusso / detail
  13. [analyzer] ConditionBRVisitor: Fix HTML PathDiagnosticPopUpPieces

    A condition could be a multi-line expression where we create the highlight
    in separated chunks. PathDiagnosticPopUpPiece is not made for that purpose,
    it cannot be added to multiple lines because we have only one ending part
    which contains all the notes. So that it cannot have multiple endings and
    therefore this patch narrows down the ranges of the highlight to the given
    interesting variable of the condition. It prevents HTML-breaking injections.

    Reviewed By: NoQ

    Differential Revision: — charusso / detail
  14. [clang-scan-deps] Add minimizer support for C++20 modules.

    This only adds support to the minimizer, it doesn't actually capture the dependencies yet. — mspencer / detail
  15. DebugInfo/DWARF: Provide some (pretty half-hearted) error handling access when parsing units

    This isn't the most robust error handling API, but does allow clients to
    opt-in to getting Errors they can handle. I suspect the long-term
    solution would be to move away from the lazy unit parsing and have an
    explicit step that parses the unit and then allows access to the other
    APIs that require a parsed unit.

    llvm-dwarfdump could be expanded to use this (or newer/better API) to
    demonstrate the benefit of it - but for now lld will use this in a
    follow-up cl which ensures lld can exit non-zero on errors like this (&
    provide more descriptive diagnostics including which object file the
    error came from).

    (error access to later errors when parsing nested DIEs would be good too
    - but, again, exposing that without it being a hassle for every consumer
    may be tricky) — dblaikie / detail
  16. Change the return type of UpgradeARCRuntimeCalls to void

    Nothing is using the function return. — ahatanak / detail
  17. Remove else-after-return — dblaikie / detail
  18. Fix -DBUILD_SHARED_LIBS=ON build after rL368358

    Differential Revision: — sbc / detail
  19. Fix llvm.aarch64.irg properties.

    IRG does not access any memory.
    Replace IntrInaccessibleMemOnly with IntrNoMem | IntrHasSideEffects.

    Reviewers: chill

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

    Tags: #llvm

    Differential Revision: — eugenis / detail
  20. [InstCombine][NFC] Added comments about constants in tests for pow->exp2 fold — xbolva00 / detail
  21. [lldb][NFC] Modernize IRForTarget::CreateResultVariable — Raphael Isemann / detail
  22. Added Delta IR Reduction Tool

    Summary: Tool parses input IR file, and runs the delta debugging algorithm to reduce the functions inside the input file.

    Reviewers: alexshap, chandlerc

    Subscribers: mgorny, llvm-commits

    Tags: #llvm

    Differential Revision:

    llvm-svn: 368071 — diegotf30 / detail
  23. Linker: Add support for GlobalIFunc.

    GlobalAlias and GlobalIFunc ought to be treated the same by the IR
    linker, so we can generalize the code to be in terms of their common
    base class GlobalIndirectSymbol.

    Differential Revision: — pcc / detail
  24. Mark clang-scan-deps test as requiring thread support

    Otherwise the test calls a pure virtual method and crashes. Perhaps this
    could be improved. — rnk / detail
  25. [lldb][NFC] Move to StringRef in some places in IRForTarget — Raphael Isemann / detail

    This test doesn't make sense. Change to be consistent with what we did
    in GDBRemoteCommunication.cpp.

    Reviewers: labath

    Subscribers: lldb-commits

    Tags: #lldb

    Differential Revision: — hhb / detail
  27. [LICM] Support unary FNeg in LICM

    Differential Revision: — mcinally / detail
  28. [X86] Improve codegen of v8i64->v8i16 and v16i32->v16i8 truncate with avx512vl, avx512bw, min-legal-vector-width<=256 and prefer-vector-width=256

    Under this configuration we'll want to split the v8i64 or v16i32 into two vectors. The default legalization will try to truncate each of those 256-bit pieces one step to 128-bit, concatenate those, then truncate one more time from the new 256 to 128 bits.

    With this patch we now truncate the two splits to 64-bits then concatenate those. We have to do this two different ways depending on whether have widening legalization enabled. Without widening legalization we have to manually construct X86ISD::VTRUNC to prevent the ISD::TRUNCATE with a narrow result being promoted to 128 bits with a larger element type than what we want followed by something like a pshufb to grab the lower half of each element to finish the job. With widening legalization we just get the right thing. When we switch to widening by default we can just delete the other code path.

    Differential Revision: — ctopper / detail
  29. Fix up fd limit diagnosis code

    Apparently Windows returns the "invalid argument" error code when the
    path contains invalid characters such as '<'. The
    test/Preprocessor/include-likely-typo.c test does this, so it was
    failing after r368322.

    Also, the diagnostic requires two arguments, so add the filename. — rnk / detail
  30. [lldb][NFC] Directly use StringRef instead of temporary std::string — Raphael Isemann / detail
  31. SymbolFileDWARF: Unconditionally scan through clang modules. NFCish

    When looking up a type by name, also scan through any referenced Clang
    modules regardsless of whether a type with this name has been
    found. This is NFCish (= a potential performance regression) for Clang
    projects, but necessary in mixed Swift and Objective-C projects (and
    tested in swift-lldb).

    This only affects projects compiled with -gmodules that were not run
    through dsymutil. — Adrian Prantl / detail
  32. [SelectionDAG][X86] Move setcc mask splitting for mload/mstore/mgather/mscatter from DAGCombiner to the type legalizer.

    We may be able to look to how VSELECT is handled to further
    improve this, but this appears to be neutral or an improvement
    on the test cases we have. — ctopper / detail
  33. [LegalizeTypes] Remove SplitVSETCC helper and just call SplitVecRes_SETCC. — ctopper / detail
  34. [Attributor][NFC] Include only what is needed — jdoerfert / detail
  35. Fix a comment which was incorrect. — jingham / detail
  36. [MBP] Disable aggressive loop rotate in plain mode

    Patch introduced more aggressive loop layout optimization which depends on profile information. If profile information is not available, the statically estimated profile information(generated by BranchProbabilityInfo.cpp) is used. If user program doesn't behave as BranchProbabilityInfo.cpp expected, the layout may be worse.

    To be conservative this patch restores the original layout algorithm in plain mode. But user can still try the aggressive layout optimization with -force-precise-rotation-cost=true.

    Differential Revision: — carrot / detail
  37. [analyzer] Fix scan-build's plist output in plist-html mode.

    r366941 accidentally made it delete all plist files
    as soon as they're produced. — dergachev / detail
  38. [clang] add REQUIRES: linux to driver test case

    The test case explicitly leverages linux, so should include it as
    a test requirement. — bcain / detail
  39. gn build: Merge r368331. — pcc / detail
  40. [clang] add REQUIRES to driver test case

    The test case explicitly leverages x86, so should include it as
    a test requirement. — bcain / detail
  41. Remove unused and undocumented data_offset parameter (NFC)

    Value::GetValueAsData() takes an undocumented parameter called
    data_offset that is always 0.

    Differential Revision: — Adrian Prantl / detail
  42. lit: Bump version to 0.10.0

    Reviewers: hans

    Subscribers: hans, delcypher, llvm-commits

    Tags: #llvm

    Differential Revision: — tstellar / detail
  43. [clang] Add no-warn support for Wa — bcain / detail
  44. [llvm-mc] Add reportWarning() to MCContext

    Adding reportWarning() to MCContext, so that it can be used from
    the Hexagon assembler backend. — bcain / detail
  45. [clang][NFC] Move matcher ignoringElidableConstructorCall's tests to appropriate file.

    `ignoringElidableConstructorCall` is a traversal matcher, but its tests are
    grouped with narrowing-matcher tests. This revision moves them to the correct

    Reviewers: gribozavr

    Subscribers: cfe-commits

    Tags: #clang

    Differential Revision: — ymandel / detail
  46. [X86] Make CMPXCHG16B feature imply CMPXCHG8B feature.

    This fixes znver1 so that it properly enables CMPXHG8B. We can
    probably remove explicit CMPXCHG8B from CPUs that also have
    CMPXCHG16B, but keeping this simple to allow cherry pick to 9.0.

    Fixes PR42935. — ctopper / detail
  47. Recommit Devirtualize destructor of final class.

    Original patch commited as r364100, reverted as r364359, recommitted as r365509,
    reverted as r365850. — yamauchi / detail
  48. clang: Diag running out of file handles while looking for files

    clang would only print "file not found" when it's unable to find a
    header file.  If the reason for that is a file handle leak, that's not a
    very useful error message.  For errors that aren't in a small whitelist
    ("file not found", "file is directory"), print an error with the
    strerror() output.

    This changes behavior in corner cases: If clang was out of file handles
    while looking in one -I dir but then suddenly wasn't when looking in the
    next -I dir, and both directories contained a file with the desired
    name, previously we'd silently return the file from the second
    directory. For this reason, it's important to ignore "is a directory"
    for this new diag: if a file foo/foo exists and -I -Ifoo are passed, an
    include of "foo" should successfully open file "foo" in directory "foo/"
    instead of complaining that "./foo" is a directory.

    No test since we mostly hit this when there's a handle leak somewhere,
    and currently there isn't one. I manually tested this with the repro
    steps in comment 2 on the bug below.

    Fixes PR42524.

    Differential Revision: — nico / detail
  49. [globalisel][legalizer] Attempt to write down the minimal legalization rules

    There aren't very many requirements on the legalization rules but we should
    document them.

    Reviewers: aditya_nandakumar, volkan, bogner, paquette, aemerson, rovka, arsenm, Petar.Avramovic

    Subscribers: wdng, kristof.beyls, llvm-commits

    Tags: #llvm

    Differential Revision:

    # Conflicts:
    # llvm/docs/GlobalISel.rst — dsanders / detail
  50. [AArch64] Do not emit '#' before immediates in inline asm

    The A64 assembly language does not require the '#' character to
    introduce constant immediate operands.  Avoid the '#' since the AArch64
    asm parser does not accept '#' before the lane specifier and rejects the
      __asm__ ("fmla v2.4s, v0.4s, v1.s[%0]" :: "I"(0x1))

    Fix a test to not expect the '#' and add a new test case with the above


    Reviewers: peter.smith, kristof.beyls

    Subscribers: javed.absar, hiraditya, llvm-commits, srhines

    Tags: #llvm

    Differential Revision: — pirama / detail
  51. [clang] Update `ignoringElidableConstructorCall` matcher to ignore `ExprWithCleanups`.

    The `ExprWithCleanups` node is added to the AST along with the elidable
    CXXConstructExpr.  If it is the outermost node of the node being matched, ignore
    it as well.

    Reviewers: gribozavr

    Subscribers: cfe-commits

    Tags: #clang

    Differential Revision: — ymandel / detail
  52. Re-commit "[PowerPC][NFC][MachinePipeliner] Add some regression testcases""

    Remove sms-cpy1.ll first while I investigate the problem. — jsji / detail
  53. [libc++] Fix environment variable passing in libc++'s `SSHExecutor` `lit` utility

    Quote the value of environment variables when passing them to the SSH
    client in SSHExecutor in libc++'s lit utilities. Without the quotes,
    an environment variable like FOO="buzz bar" gets passed incorrectly
    like this, ssh env FOO=buzz bar, which causes bar to be treated as a
    command to run, not part of the environment variable value.

    We ran into this when using SSHExecutor to do bringup of our CUDA
    libcu++ port on an embedded aarch64 system.

    Patch by Bryce Adelstein Lelbach.

    Differential Revision: — Louis Dionne / detail
  54. lit: Use a License classifier that pypi will accept

    'OSI Approved :: Apache-2.0 with LLVM exception' is not a valid
    classifier.  'OSI Approved :: Apache Software License' is the closest
    fit for the new license, so we've decided to use this one.

    The classifiers seem to only be used for searching on the pypi website,
    so this does not actually change the license of the code.
    We still pass 'Apache-2.0 with LLVM exception' as the license to setup(),
    and this appears alongside the classifier on the pypi webpage for lit.

    Reviewers: chandlerc, ddunbar, joerg

    Reviewed By: joerg

    Subscribers: delcypher, llvm-commits

    Tags: #llvm

    Differential Revision: — tstellar / detail
  55. [ObjC][ARC] Upgrade calls to ARC runtime functions to intrinsic calls if
    the bitcode has the arm64 retainAutoreleasedReturnValue marker

    The ARC middle-end passes stopped optimizing or transforming bitcode
    that has been compiled with old compilers after we started emitting
    calls to ARC runtime functions as intrinsic calls instead of normal
    function calls in the front-end and made changes to teach the ARC
    middle-end passes about those intrinsics (see r349534). This patch
    converts calls to ARC runtime functions that are not intrinsic functions
    to intrinsic function calls if the bitcode has the arm64
    retainAutoreleasedReturnValue marker. Checking for the presence of the
    marker is necessary to make sure we aren't changing ARC function calls
    that were originally MRR message sends (see r349952).


    Differential Revision: — ahatanak / detail
  56. [lldb][NFC] Simplify return in MaybeHandleVariable

    This function anyway returns true, no need to do this extra work. — Raphael Isemann / detail
  57. [X86] XFormVExtractWithShuffleIntoLoad - handle shuffle mask scaling

    If the target shuffle mask is from a wider type, attempt to scale the mask so that the extraction can attempt to peek through.

    Fixes the regression mentioned in rL368307 — rksimon / detail
  58. [X86] SimplifyDemandedVectorElts - attempt to recombine target shuffle using DemandedElts mask

    If we don't demand all elements, then attempt to combine to a simpler shuffle.

    At the moment we can only do this if Depth == 0 as combineX86ShufflesRecursively uses Depth to track whether the shuffle has really changed or not - we'll need to change this before we can properly start merging combineX86ShufflesRecursively into SimplifyDemandedVectorElts.

    The insertps-combine.ll regression is because XFormVExtractWithShuffleIntoLoad can't see through shuffles of different widths - this will be fixed in a follow-up commit. — rksimon / detail
  59. Enable assembly output of local commons for AIX

    This patch enable assembly output of local commons for AIX using .lcomm
    directives. Adds a EmitXCOFFLocalCommonSymbol to MCStreamer so we can emit the
    AIX version of .lcomm assembly directives which include a csect name. Handle the
    case of BSS locals in PPCAIXAsmPrinter by using EmitXCOFFLocalCommonSymbol. Adds
    a test for generating .lcomm on AIX Targets.

    Reviewers: cebowleratibm, hubert.reinterpretcast, Xiangling_L, jasonliu, sfertile

    Reviewed By: sfertile

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

    Tags: #llvm

    Differential Revision: — daltenty / detail
  60. [ARM] Add support for MVE pre and post inc loads and stores

    This adds pre- and post- increment and decrements for MVE loads and stores. It
    uses the builtin pre and post load/store detection, unlike Neon. Loads are
    selected with the code in tryT2IndexedLoad, stores are selected with tablegen
    patterns. The immediates have a +/-7bit range, multiplied by the size of the

    Differential Revision: — dmgreen / detail
  61. [ARM] MVE big endian loads/stores

    This adds some missing patterns for big endian loads/stores, allowing unaligned
    loads/stores to also be selected with an extra VREV, which produces better code
    than aligning through a stack. Also moves VLDR_P0 to not be LE only, and
    adjusts some of the tests to show all that working.

    Differential Revision: — dmgreen / detail
  62. [RISCV] Allow ABI Names in Inline Assembly Constraints

    Clang will replace references to registers using ABI names in inline
    assembly constraints with references to architecture names, but other
    frontends do not. LLVM uses the regular assembly parser to parse inline asm,
    so inline assembly strings can contain references to registers using their
    ABI names.

    This patch adds support for parsing constraints using either the ABI name or
    the architectural register name. This means we do not need to implement the
    ABI name replacement code in every single frontend, especially those like
    Rust which are a very thin shim on top of LLVM IR's inline asm, and that
    constraints can more closely match the assembly strings they refer to.

    Reviewers: asb, simoncook

    Reviewed By: simoncook

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

    Tags: #llvm

    Differential Revision: — lenary / detail
  63. [FIX][NFC] Update clang sema test

    Try to fix Sema test for default alignment for when
    compiling to ARM, but not to android, due
    r9427aa2d543b — dnsampaio / detail
  64. [RISCV] Minimal stack realignment support

    Currently the RISC-V backend does not realign the stack. This can be an issue even for the RV32I/RV64I ABIs (where the stack is 16-byte aligned), though is rare. It will be much more comment with RV32E (though the alignment requirements for common data types remain under-documented...).

    This patch adds minimal support for stack realignment. It should cope with large realignments. It will error out if the stack needs realignment and variable sized objects are present.

    It feels like a lot of the code like getFrameIndexReference and determineFrameLayout could be refactored somehow, as right now it feels fiddly and brittle. We also seem to allocate a lot more memory than GCC does for equivalent C code.

    Reviewers: asb

    Reviewed By: asb

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

    Tags: #llvm

    Differential Revision: — lenary / detail
  65. Implement hh_mm_ss from P1466R3. Reviewed as — marshall / detail
  66. [FileCheck] Add missing includes in header

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

    Subscribers: hiraditya, llvm-commits

    Tags: #llvm

    Differential Revision: — thopre / detail
  67. Add llvm.licm.disable metadata

    For some targets the LICM pass can result in sub-optimal code in some
    cases where it would be better not to run the pass, but it isn't
    always possible to suppress the transformations heuristically.

    Where the front-end has insight into such cases it is beneficial
    to attach loop metadata to disable the pass - this change adds the
    llvm.licm.disable metadata to enable that.

    Differential Revision: — timcorringham / detail
  68. [OPENMP]Add support for analysis of linear variables and step.

    Added support for basic analysis of the linear variables and linear step
    expression. Linear loop iteration variables must be excluded from this
    analysis, only non-loop iteration variables must be analyzed.

    Reviewers: NoQ

    Subscribers: guansong, cfe-commits, caomhin, kkwli0

    Tags: #clang

    Differential Revision: — abataev / detail
  69. [lldb][CMake] Disable modules in Xcode projects

    Summary: Apparently, module-enabled builds clash with Xcode's analysis.

    Reviewers: aprantl, jingham, davide, teemperor

    Reviewed By: davide

    Subscribers: mgorny, lldb-commits, #lldb

    Tags: #lldb

    Differential Revision: — stefan.graenitz / detail
  70. [X86][SSE] matchBinaryPermuteShuffle - split INSERTPS combines

    We need to prefer INSERTPS with zeros over SHUFPS, but fallback to INSERTPS if that fails. — rksimon / detail
  71. [Reassociate] add more tests with negative FP constants; NFC — spatel / detail
  72. ObjectFileELF: Convert a unit test to a lit test

    It is much easier to test this functionality via lldb-test. — labath / detail
  73. [ARM] Set default alignment to 64bits

    The maximum alignment used by ARM arch
    is 64bits, not 128.

    This could cause overaligned memory
    access for 128 bit neon vector that
    have unpredictable behaviour.

    This fixes:

    Reviewers: ostannard, dmgreen, srhines, danalbert, pirama, peter.smith

    Reviewed By: pirama, peter.smith

    Subscribers: phosek, thegameg, thakis, llvm-commits, carwil, peter.smith, javed.absar, kristof.beyls, cfe-commits

    Tags: #clang, #llvm

    Differential Revision: — dnsampaio / detail
  74. [pstl] Add a __pstl_config_site header to record the CMake configuration

    This commit adds a __pstl_config_site header that contains the value of
    macros specified at CMake configuration time. It works similarly to
    libc++'s __config_site header, except we always include it as a separate
    file instead of concatenating it to the main configuration header.

    It is necessary to thread the includes for that header into libc++'s
    lit configuration, otherwise we'd be requiring an installation step
    prior to running the test suite. — Louis Dionne / detail
  75. Fix check in tools/gold/X86/strip_names.ll regarding unnamed args

    After r367755 value numbers are printed for unnamed
    function arguments. The tools/gold/X86/strip_names.ll
    was not updated in that commit, so this patch can be
    seen as a follow up to r367755. — bjope / detail
  76. [clang-format] fix crash involving invalid preprocessor line

    This (invalid) fragment is crashing clang-format:
    #if 1
    int x;
    int y;

    The reason being that the parser expects a token after `#elif`, and the
    subsequent parsing of the next line does not check if `CurrentToken` is null.

    Reviewers: gribozavr

    Reviewed By: gribozavr

    Subscribers: cfe-commits

    Tags: #clang

    Differential Revision: — krasimir / detail
  77. Fix LLDB_CONFIGURATION_DEBUG builds for the GetSymbolVendor removal

    fix one usage that is ifdefed-out in non-debug builds. — labath / detail
  78. [X86][SSE] Add x64 load use test case — rksimon / detail
  79. [TargetLowering] SimplifyDemandedBits - call SimplifyMultipleUseDemandedBits for ISD::EXTRACT_VECTOR_ELT

    This patch attempts to peek through vectors based on the demanded bits/elt of a particular ISD::EXTRACT_VECTOR_ELT node, allowing us to avoid dependencies on ops that have no impact on the extract.

    In particular this helps remove some unnecessary scalar->vector->scalar patterns.

    The wasm shift patterns are annoying - @tlively has indicated that the wasm vector shift codegen are to be refactored in the near-term and isn't considered a major issue.

    Differential Revision: — rksimon / detail
  80. [MCA] Remove dependency from InstrBuilder in mca::Context. NFC

    InstrBuilder is not required to construct the default pipeline. — adibiagio / detail
  81. [MIPS GlobalISel] Select jump_table and brjt

    G_JUMP_TABLE and G_BRJT appear from translation of switch statement.
    Select these two instructions for MIPS32, both pic and non-pic.

    Differential Revision: — petar.avramovic / detail
  82. [llcm-readobj] - Fix BB after t368272.

    Seems I forgot to update this test case. — grimar / detail
  83. [yaml2obj/obj2yaml] - Add a basic support for extended section indexes.

    In some cases a symbol might have section index == SHN_XINDEX.
    This is an escape value indicating that the actual section header index
    is too large to fit in the containing field.
    Then the SHT_SYMTAB_SHNDX section is used. It contains the 32bit values
    that stores section indexes.

    ELF gABI says that there can be multiple SHT_SYMTAB_SHNDX sections,
    i.e. for example one for .symtab and one for .dynsym

    In this patch I am only supporting a single SHT_SYMTAB_SHNDX associated
    with a .symtab. This is a more or less common case which is used a few tests I saw in LLVM.

    I decided not to create the SHT_SYMTAB_SHNDX section as "implicit",
    but implement is like a kind of regular section for now.
    i.e. tools do not recreate this section or its content, like they do for
    symbol table sections, for example. That should allow to write all kind of
    possible broken test cases for our needs and keep the output closer to requested.

    Differential revision: — grimar / detail
  84. Add a missing include to SymbolFilePDBTests.cpp

    This should _really_ fix the pdb unit tests. — labath / detail
  85. [Extract] Fixed SemicolonExtractionPolicy for SwitchStmt and SwitchCase

    Reviewers: arphaman, sammccall

    Subscribers: dexonsmith, cfe-commits

    Tags: #clang

    Differential Revision: — sureyeaah / detail
  86. Remove xcode-specific Config.h

    Now that the xcode project is removed, we no longer need/use the
    hand-maintained Config.h file, as everything is configured through

    This patch deletes that file and reverts some of the changes from
    r300372, which were made to support this use case.

    Reviewers: sgraenitz, beanz

    Subscribers: mgorny, lldb-commits

    Differential Revision: — labath / detail
  87. Fix PDB unit tests for the GetSymbolVendor deletion — labath / detail
  88. [ARM] Select VFMA — samtebbs / detail
  89. Remove Module::GetSymbolVendor

    This patch removes the GetSymbolVendor function, and the various
    mentions of the SymbolVendor in the Module class. The implementation of
    GetSymbolVendor is "inlined" into the GetSymbolFile class which I
    created earlier.

    After this patch, the SymbolVendor class still exists inside the Module
    object, but only as an implementation detail -- a fancy holder for the
    SymbolFile. That will be removed in the next patch.

    Reviewers: clayborg, JDevlieghere, jingham, jdoerfert

    Subscribers: jfb, lldb-commits

    Differential Revision: — labath / detail
  90. [ELF] - An attemp to fix builld bit after r368260


    The error is:
    error: 'static' function 'defaultWarningHandler' declared in header file should be declared 'static inline' [-Werror,-Wunneeded-internal-declaration]
    static Error defaultWarningHandler(const Twine &Msg) { return createError(Msg); }
                 ^ — grimar / detail
  91. [llvm-readobj/libObject] - Introduce a custom warning handler for `ELFFile<ELFT>` methods.

    Currently, we have a code duplication in llvm-readobj which was introduced in D63266.
    The duplication was introduced to allow llvm-readobj to dump the partially
    broken object. Methods in ELFFile<ELFT> perform a strict validation of the inputs,
    what is itself good, but not for dumper tools, that might want to dump the information,
    even if some pieces are broken/unexpected.

    This patch introduces a warning handler which can be passed to ELFFile<ELFT> methods
    and can allow skipping the non-critical errors when needed/possible.

    For demonstration, I removed the duplication from llvm-readobj and implemented a warning using
    the new custom warning handler. It also deduplicates the strings printed, making the output less verbose.

    Differential revision: — grimar / detail
  92. [diagtool] Use `operator<<(Colors)` to print out colored output.

    r368131 introduced this new API to print out messages in colors.
    If the colored output is disabled, `operator<<(Colors)` becomes nop.
    No functionality change intended.

    Differential Revision: — ruiu / detail
  93. [X86] Remove -x86-experimental-vector-widening-legalization command line option and all its uses.

    This option is now defaulted to true and we don't want to support
    turning it off so remove the option. — ctopper / detail
  94. [ARM] Tighten up VLDRH.32 with low alignments

    VLDRH needs to have an alignment of at least 2, including the
    widening/narrowing versions. This tightens up the ISel patterns for it and
    alters allowsMisalignedMemoryAccesses so that unaligned accesses are expanded
    through the stack. It also fixed some incorrect shift amounts, which seemed to
    be passing a multiple not a shift.

    Differential Revision: — dmgreen / detail

#2972 (Aug 7, 2019 11:18:57 PM)

  1. [ARM] Rejig MVE load store tests. NFC

    This adjusts the load/store tests for better testing of alignments. It also
    adds some extra alignment 1 tests, useful for future commits. — dmgreen / detail
  2. Revert "Temporarily bump minimum compiler version"

    It's been in for more than 30 min and no bots have complained. Let's see if some
    slow ones catch up. I'll do another manual pass on bots later (in case some that
    were down are back up), and then turn this on permanently through a regular
    review. — jfb / detail
  3. Temporarily bump minimum compiler version

    It's pretty hard to find a reliable list of which bots use which compiler version... so I'm going to commit this change which allows us to mandate the compilers required for C++14. This bump is what we've already agreed to do, so I'll use the list of failures to figure out which bots need to bump their compiler version. I'll revert the change in a few minutes.

    The last discussion of this is here: — jfb / detail
  4. [Driver] Delete XFAIL: windows-msvc after D65880/r368245

    `-target %itanium_abi_triple` fixed the problem. — maskray / detail
  5. [X86] Add CMOV_FR32X and CMOV_FR64X to the isCMOVPseudo function. — ctopper / detail

#2971 (Aug 7, 2019 9:24:18 PM)

  1. [Materializer] Remove wrong SetSizeAndAlignmentFromType().

    This function is unused.  It's also wrong, because it computes
    the size and the alignment of the type without asking the runtime,
    so it doesn't work for any language that has one (e.g. swift).

    One could consider re-implementing this passing an execution scope
    context, and modifying GetTypeBitAlign() to do the right thing,
    but given there are no uses, it's not really useful. — davide / detail

#2970 (Aug 7, 2019 7:38:29 PM)

  1. [GISel][NFC]: Make members of CombinerHelper accessible in derived classes

    Make some members protected to enable access in derived classes. — aditya_nandakumar / detail
  2. [Driver] Move LIBRARY_PATH before user inputs

    Fixes PR16786

    Currently, library paths specified by LIBRARY_PATH are placed after inputs: `inputs LIBRARY_PATH stdlib`
    In gcc, the order is: `LIBRARY_PATH inputs stdlib` if not cross compiling.
    (On Darwin targets, isCrossCompiling() always returns false.)

    This patch changes the behavior to match gcc.

    Reviewed By: hfinkel

    Differential Revision: — maskray / detail
  3. Inline diagnostic text into .td file.  NFC. — rtrieu / detail
  4. [Utility] Remove unused function 'GetMatchSpanningIndices' — Jonas Devlieghere / detail
  5. [llvm-strip] Support --strip-sections

    llvm-objcopy already supports --strip-sections. It is a good fit for its alias llvm-strip
    to support it as well.

    Reviewers: rupprecht, jhenderson

    Differential Revision: — wolfgangp / detail
  6. Revert "[libc++] Take 3: Do not cleverly link against libc++abi just because it happens to be there"

    This also reverts "[libc++] Remove temporary hack for D63883".
    Clearly, I don't understand how the Linux build bots are configured.

    Differential Revision: — Louis Dionne / detail
  7. Update fix-it hints for std::move warnings.

    Fix -Wpessimizing-move and -Wredundant-move when warning on initializer lists.
    The new fix-it hints for removing the std::move call will now also suggest
    removing the braces for the initializer list so that the resulting code will
    still be compilable.

    This fixes PR42832 — rtrieu / detail
  8. [llvm-lipo] Update llvm-lipo docs for -info -thin -create -replace -segalign flags

    The information for -info -thin -create -replace and -segalign flags are added to llvm-lipo.rst

    Test Plan:

    Reviewers: smeenai, alexshap, compnerd, mtrent

    Subscribers: llvm-commits

    Tags: #llvm

    Differential Revision: — anushabasana / detail
  9. [ScalarizeMaskedMemIntrin] Add test case for expanding scatter.

    This pass expands 6 intrinsics, but we only had test for 5 of
    them. — ctopper / detail
  10. [Docs] Fix (incorrect) code highlighting — Jonas Devlieghere / detail
  11. Recommit "[MS] Emit S_HEAPALLOCSITE debug info in Selection DAG"
    with a fix to clear the SDNode map when SelectionDAG is cleared. — akhuang / detail
  12. [Attributor][NFC] remove leftover and format code — jdoerfert / detail
  13. [Attributor][Stats] Locate statistics tracking with the attributes

    The ever growing switch required Attribute::AttrKind values but they
    might not be available for all abstract attributes we deduce. With the
    new method we track statistics at the abstract attribute level. The
    provided macros simplify the usage and make the messages uniform.

    Reviewers: sstefan1, uenoku

    Subscribers: hiraditya, bollu, llvm-commits

    Tags: #llvm

    Differential Revision: — jdoerfert / detail
  14. Adjust a ValueObjectChild's offset when the child is a bitfield

    If a bitfield doesn't fit into the child_byte_size'd window at
    child_byte_offset, move the window forward until it fits.  The problem
    here is that Value has no notion of bitfields and thus the Value's
    DataExtractor is sized like the bitfields CompilerType; a sequence of
    bitfields, however, can be larger than their underlying type.

    This was not in the big-endian-derived DWARF 2 bitfield attributes
    because their offsets were counted from the end of the window, so they
    always fit.


    Differential Revision: — Adrian Prantl / detail
  15. [Attributor][NFC] Code simplification and style normalization — jdoerfert / detail
  16. [Attributor] Introduce a state wrapper class

    The wrapper reduces boilerplate code and also provide a nice way to
    determine the state type used by an abstract attributes statically via

    This was already discussed as part of the review of D65711.

    Reviewers: sstefan1, uenoku

    Subscribers: hiraditya, bollu, llvm-commits

    Tags: #llvm

    Differential Revision: — jdoerfert / detail
  17. [Attributor][NFC] Avoid unnecessary liveness queries

    If we know everything is live there is no need to query for liveness.
    Indicating a pessimistic fixpoint will cause the state to be "invalid"
    which will cause the Attributor to not return the AAIsDead on request,
    which will prevent us from querying isAssumedDead(). — jdoerfert / detail

#2969 (Aug 7, 2019 3:32:51 PM)

  1. [Attributor] Provide easier checkForallReturnedValues functionality

    So far, whenever one wants to look at returned values, one had to deal
    with the AAReturnedValues and potentially with the AAIsDead attribute.
    In the same spirit as other checkForAllXXX methods, we add this
    functionality now to the Attributor. By adopting the use sites we got
    better results when return instructions were dead.

    Reviewers: sstefan1, uenoku

    Subscribers: hiraditya, bollu, llvm-commits

    Tags: #llvm

    Differential Revision: — jdoerfert / detail
  2. [llvm-readobj][test] Add baseline tests for FreeBSD/AMD/AMDGPU note printing — rupprecht / detail
  3. Revert Added Delta IR Reduction Tool

    This reverts r368071 (git commit a2584978f5bb41973d65a145b0d9459b81e3ac6d) — diegotf30 / detail
  4. [libc++] Remove temporary hack for D63883

    This should fix the build bots, who now specify explicitly that they're
    building against libc++abi. — Louis Dionne / detail
  5. [LoopVectorize][X86] Clamp interleave factor if we have a known constant trip count that is less than VF*interleave

    If we know the trip count, we should make sure the interleave factor won't cause the vectorized loop to exceed it.

    Improves one of the cases from PR42674

    Differential Revision: — ctopper / detail
  6. Added Delta IR Reduction Tool

    Summary: Tool parses input IR file, and runs the delta debugging algorithm to reduce the functions inside the input file.

    Reviewers: alexshap, chandlerc

    Subscribers: mgorny, llvm-commits

    Tags: #llvm

    Differential Revision:

    llvm-svn: 368071 — diegotf30 / detail
  7. [libc++] Take 3: Do not cleverly link against libc++abi just because it happens to be there

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

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

    This is a re-application of r365222 that had been reverted in r365233
    and then r365359 because it broke the build bots. The build bots
    should now specify explicitly what ABI library they want to use
    (libc++abi), so this commit should now be OK to merge. It takes a while
    for build bots to pick up configuration changes, which is why this failed
    the last time around.

    Differential Revision: — Louis Dionne / detail
  8. DebugInfo/DWARF: Remove unused return type from DWARFUnit::extractDIEsIfNeeded — dblaikie / detail
  9. [NFC][LICM] Pre-commit test for unary FNeg support in LICM. — mcinally / detail
  10. [X86] Allow pack instructions to be used for 512->256 truncates when -mprefer-vector-width=256 is causing 512-bit vectors to be split

    If we're splitting the 512-bit vector anyway and we have zero/sign bits, then we might as well use pack instructions to concat and truncate at once.

    Differential Revision: — ctopper / detail

#2968 (Aug 7, 2019 2:17:05 PM)

  1. [CommandObject] Remove unused function — Jonas Devlieghere / detail
  2. [X86] Add test cases for missed opportunities to use pack instructions for 512->256 truncates with prefer-vector-width=256

    If the 512-bit vectors are going to be split anyway, then we are
    better off using pack to implicitly concatenate the 256 bit pieces. — ctopper / detail
  3. [Symbol] Remove commented out code from CompileUnit — xiaobai / detail
  4. Revert r367501 "Create unique, but identically-named ELF sections..."

    This reverts commit fbc563e2cb6c5f1d0200b390513506b6aca4d2e9 "Create
    unique, but identically-named ELF sections for explicitly-sectioned
    functions and globals when using -function-sections and

    Reason for revert: sections are created with potentially wrong
    attributes. — inglorion / detail
  5. Add target requirements for those bots which don't handle x86. — void / detail
  6. [NFC] Fixed newly added tests — xbolva00 / detail
  7. [NFC] Added tests for x/fabs(X) fold — xbolva00 / detail
  8. Add support for deterministically linked binaries on macOS to lldb.

    When ld64 links a binary deterministically using the flag ZERO_AR_DATE,
    it sets a timestamp of 0 for N_OSO members in the symtab section, rather
    than the usual last modified date of the object file. Prior to this
    patch, lldb would compare the timestamp from the N_OSO member against
    the last modified date of the object file, and skip loading the object
    file if there was a mismatch. This patch updates the logic to ignore the
    timestamp check if the N_OSO member has timestamp 0.

    The original logic was added in as a
    safety check to avoid problems when debugging if the object file was out
    of date. This was prior to the introduction of deterministic build in
    ld64. lld still doesn't support deterministic build.

    Other code in llvm already relies on and uses the assumption that a
    timestamp of 0 means deterministic build. For example, commit
    9ccfddc39d4d27f9b16fcc72ab30d483151d6d08 adds similar timestamp checking
    logic to dsymutil, but special cases timestamp 0. Likewise, commit
    0d1bb79a0413f221432a7b1d0d2d10c84c4bbb99 adds a long comment describing
    deterministic archive, which mostly uses timestamp 0 for determinism.

    Patch from Erik Chen <>!

    Differential Revision: — nico / detail

#2967 (Aug 7, 2019 12:22:08 PM)

  1. Fix indentation — dblaikie / detail
  2. [LoopVectorize][X86] Add test case for missed vectorization from PR42674.

    We do end vectorizing the code, but use an interleave factor that
    is too high and causes the vector code to be dead. — ctopper / detail
  3. [Tooling] Expose ExecutorConcurrency option.

    D65628 requires a flag to specify the number of threads for a clang-doc step. It would be good to use ExecutorConcurrency after exposing it instead of creating a new one that has the same purpose.

    Differential Revision: — diegoastiazaran / detail
  4. [ValueTracking] When calculating known bits for integer abs, make sure we're looking at a negate and not just any instruction with the nsw flag set.

    The matchSelectPattern code can match patterns like (x >= 0) ? x : -x
    for absolute value. But it can also match ((x-y) >= 0) ? (x-y) : (y-x).
    If the latter form was matched we can only use the nsw flag if its
    set on both subtracts.

    This match makes sure we're looking at the former case only.

    Differential Revision: — ctopper / detail
  5. [Attributor] Introduce checkForAllReadWriteInstructions(...).

    Summary: Similarly to D65731 `Attributor::checkForAllReadWriteInstructions` is introduced.

    Reviewers: jdoerfert, uenoku

    Subscribers: hiraditya, jfb, llvm-commits

    Tags: #llvm

    Differential Revision: — sstefan / detail
  6. [SCEV] Return zero from computeConstantDifference(X, X)

    Without this patch computeConstantDifference returns None for cases like

      computeConstantDifference(%x, %x)
      computeConstantDifference({%x,+,16}, {%x,+,16})

    Differential Revision: — n.bozhenov / detail

#2966 (Aug 7, 2019 10:38:09 AM)

  1. [DataLayout] Check StackNatural and FunctionPtr alignments.

    MaybeAlignment asserts that the passed in value is == 0 or a power of 2.


    Reviewers: michaelplatings, gchatelet, jakehehrlich, jfb

    Reviewed By: gchatelet

    Tags: #llvm

    Differential Revision: — fhahn / detail
  2. DebugInfo/DWARF: Normalize DWARFObject members on the DWARF spec section names

    Some of these names were abbreviated, some were not, some pluralised,
    some not. Made the API difficult to use - since it's an exact 1:1
    mapping to the DWARF sections - use those names (changing underscore
    separation for camel casing). — dblaikie / detail
  3. [clang][NFC] Fix typo in matcher comment

    Also updates corresponding html doc. — ymandel / detail
  4. Support: Remove needless allocation when getMainExecutable() calls readlink()

    We built a StringRef from a string literal which we then converted to a
    std::string to call c_str().  Just use a pointer to the string literal
    instead of a StringRef.

    No behavior change.

    Differential Revision: — nico / detail
  5. Recommit r368081 "[X86] Add more extract subvector cost model tests for smaller element sizes and smaller than 128-bit vectors." — ctopper / detail
  6. Recommit r368079 "[X86] Remove uses of the -x86-experimental-vector-widening-legalization flag from test/CodeGen/X86/" — ctopper / detail
  7. Recommit r367901 "[X86] Enable -x86-experimental-vector-widening-legalization by default."

    The assert that caused this to be reverted should be fixed now.

    Original commit message:

    This patch changes our defualt legalization behavior for 16, 32, and
    64 bit vectors with i8/i16/i32/i64 scalar types from promotion to
    widening. For example, v8i8 will now be widened to v16i8 instead of
    promoted to v8i16. This keeps the elements widths the same and pads
    with undef elements. We believe this is a better legalization strategy.
    But it carries some issues due to the fragmented vector ISA. For
    example, i8 shifts and multiplies get widened and then later have
    to be promoted/split into vXi16 vectors.

    This has the potential to cause regressions so we wanted to get
    it in early in the 10.0 cycle so we have plenty of time to
    address them.

    Next steps will be to merge tests that explicitly test the command
    line option. And then we can remove the option and its associated
    code. — ctopper / detail
  8. [Driver] Expand the executable path in the target create output

    Resolve the path in the target create output. This is nice when passing
    relative paths to the lldb command line driver.

      $ lldb ./binary
      (lldb) target create "./binary"
      Current executable set to '/absolute/path/to/binary' (x86_64).

    This change only affects the target create output and does not change
    the debugger's behavior. It doesn't resolve symbolic links so it won't
    cause confusing when debugging something like clang++ that's symlinked
    to clang.

    Differential revision: — Jonas Devlieghere / detail
  9. [ExecutionContext] Return the target/process byte order.

    Currently ExecutionContext::GetByteOrder() always returns the host byte
    order. This seems like a simple mistake: the return keyword appears to
    have been omitted by accident. This patch fixes that and adds a unit


    Differential revision: — Jonas Devlieghere / detail
  10. [ARM] Expand CTPOP intrinsic for MVE — oliverlars / detail
  11. gn build: Merge r368158 — nico / detail
  12. gn build: Merge r368119 — nico / detail
  13. [InstCombine] Add a TODO comment — foad / detail
  14. [InstCombine] Propagate fast math flags through selects

    In SimplifySelectsFeedingBinaryOp, propagate fast math flags from the
    outer op into both arms of the new select, to take advantage of
    simplifications that require fast math flags.

    Reviewers: mcberg2017, majnemer, spatel, arsenm, xbolva00

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

    Tags: #llvm

    Differential Revision: — foad / detail
  15. [UpdateTestChecks] Update tests option

    Port of new feature introduced to other update scripts.

    - update_* add an alias -u for --update-only
    - port --update-only to other update_* scripts
    - update script aborts if the test file was generated by another update_* utility

    Reviewers: lebedev.ri, RKSimon, MaskRay, reames, gbedwell

    Reviewed By: MaskRay

    Subscribers: llvm-commits

    Tags: #llvm

    Differential Revision: — xbolva00 / detail
  16. Remove LLVM mutexes from clang in favor of std::mutex

    None of those need to be recursive mutexes. No functionality change
    intended. — d0k / detail
  17. [OPENMP]Set default version to OpenMP 4.5.

    Since clang fully supports OpenMP 4.5, set the default version to 4.5
    instead of 3.1. — abataev / detail
  18. [EarlyCSE] Add support for unary FNeg to EarlyCSE

    Differential Revision: — mcinally / detail
  19. [OPENMP]Add standard macro value _OPENMP for OpenMP 5.0.

    According to the OpenMP standard, compiler must define _OPENMP macro,
    which has value in format yyyymm, where yyyy is the year of the standard
    and mm is the month of the standard. For OpenMP 5.0 this value must be
    set to 201811. — abataev / detail
  20. ProcessElfCore: Remove linux and freebsd NT_*** constants

    These are already defined in llvm/BinaryFormat/ELF.h. Leaving the NetBSD
    and OpenBSD constants as-is, as they have no llvm counterparts. — labath / detail
  21. [RISCV][NFC] Document RISC-V-specific assembly constraints — lenary / detail
  22. GlobalISel: factor common code from translateCall and translateInvoke. NFC. — Tim Northover / detail
  23. [X86] EltsFromConsecutiveLoads - early out for non-byte sized memory (PR42909)

    Don't attempt to merge loads for types that aren't modulo 8-bits. — rksimon / detail
  24. [AArch64][WinCFI] Do not pair callee-save instructions in LoadStoreOptimizer

    Prevent the LoadStoreOptimizer from pairing any load/store instructions with
    instructions from the prologue/epilogue if the CFI information has encoded the
    operations as separate instructions.  This would otherwise lead to a mismatch
    of the actual prologue size from the size as recorded in the Windows CFI.

    Reviewers: efriedma, mstorsjo, ssijaric

    Reviewed By: efriedma

    Differential Revision: — s.desmalen / detail
  25. [ASTImporter] Do not import FunctionTemplateDecl in record twice.

    For functions there is a check to not duplicate the declaration if it is in a
    record (class). For function templates there was no similar check, if a
    template (in the same class) was imported multiple times the
    FunctionTemplateDecl was created multiple times with the same templated
    FunctionDecl. This can result in problems with the declaration chain.

    Reviewers: martong, a.sidorin, shafik, a_sidorin

    Reviewed By: a_sidorin

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

    Tags: #clang

    Differential Revision: — balazske / detail
  26. [mips] Make a couple of class methods plain static functions. NFC — atanasyan / detail
  27. [mips] Use isMicroMips() function to check enabled feature flag. NFC — atanasyan / detail
  28. [Mips] Instruction `sc` now accepts symbol as an argument

    Function MipsAsmParser::expandMemInst() did not properly handle
    instruction `sc` with a symbol as an argument because first argument
    would be counted twice. We add additional checks and handle this case

    Patch by Mirko Brkusanin.

    Differential Revision: — atanasyan / detail
  29. ObjectFileELF: Remove NT_*** constants

    llvm now has definitions of those in BinaryFormat/ELF.h. Use those
    instead. — labath / detail
  30. [Support] Base SmartMutex on std::recursive_mutex

    - Remove support for non-recursive mutexes. This was unused.
    - The std::recursive_mutex is now created/destroyed unconditionally.
      Locking is still only done if threading is enabled.
    - Alias SmartScopedLock to std::lock_guard.

    This should make no semantic difference on the existing APIs. — d0k / detail
  31. Replace non-recursive sys::Mutex users with std::mutex

    Also remove a use of sys::MutexImpl, that's just evil. No functionality
    change intended. — d0k / detail
  32. Remove support for 32-bit offsets in utility classes (5/5)

    Differential Revision: — ikudrin / detail
  33. [TargetLowering] SimplifyDemandedBits - call SimplifyMultipleUseDemandedBits for ISD::VECTOR_SHUFFLE

    In particular this helps the SSE vector shift cvttps2dq+add+shl pattern by avoiding the need for zeros in shuffle style extensions to vXi32 types as we'll be shifting out those bits anyway — rksimon / detail
  34. A more robust way of testing debug_line parser near the end of module

    While removing -z separate-code makes lld produce place the code at the
    end of a segment right now, it's possible that future changes to the
    linker will change that, thereby removing the coverage for the changes
    in r367983. This patch adds a linker script to one of the line table
    tests, which ensures that the code (and its line table) will be placed
    at the very end of a module.

    Reviewers: MaskRay

    Subscribers: lldb-commits

    Differential Revision: — labath / detail
  35. [clang] Fix mismatched args constructing AddressSpaceAttr.

    Differential Revision: — antonbikineev / detail
  36. [lldb][CMake] Workaround debugserver code-signing issue in generated Xcode project

    Explicitly code-sign the LLDB.framework copy of debugserver in the build-tree. This is necessary, because the Xcode-specific logic in `llvm_codesign` [1] has the side-effect that Xcode code-signs after post-build steps (here: after copying debugserver over into the framework). The special case for Xcode was necessary to avoid double-signing errors in the past (see D55116 and D55816).


    Reviewers: jingham, davide, JDevlieghere, teemperor

    Reviewed By: JDevlieghere

    Subscribers: beanz, mgorny, lldb-commits, #lldb

    Tags: #lldb

    Differential Revision: — stefan.graenitz / detail
  37. [lldb][NFC] Remove commented out code in ClangASTContext::AddMethodToCXXRecordType — Raphael Isemann / detail
  38. Replace llvm::MutexGuard/UniqueLock with their standard equivalents

    All supported platforms have <mutex> now, so we don't need our own
    copies any longer. No functionality change intended. — d0k / detail
  39. [lldb][CMake] Fix one more detail in r368066

    Differential Revision: — stefan.graenitz / detail
  40. gsl::Owner/gsl::Pointer: Add implicit annotations for some std types

    Hard code gsl::Owner/gsl::Pointer for std types. The paper mentions
    some types explicitly. Generally, all containers and their iterators are
    covered. For iterators, we cover both the case that they are defined
    as an nested class or as an typedef/using. I have started to test this
    implementation against some real standard library implementations, namely
    libc++ 7.1.0, libc++ 8.0.1rc2, libstdc++ 4.6.4, libstdc++ 4.8.5,
    libstdc++ 4.9.4, libstdc++ 5.4.0, libstdc++ 6.5.0, libstdc++ 7.3.0,
    libstdc++ 8.3.0 and libstdc++ 9.1.0.

    The tests are currently here
    I think due to their dependency on a standard library, they are not a good fit
    for clang/test/. Where else could I put them?

    Reviewers: gribozavr, xazax.hun

    Subscribers: rnkovacs, cfe-commits

    Tags: #clang

    Differential Revision: — mgehre / detail
  41. [ARM] Generate MVE VHADDs/VHSUBs — oliverlars / detail
  42. [lldb][NFC] Fix typo in 368066

    Differential Revision: — stefan.graenitz / detail
  43. [InstCombine] Recommit: Shift amount reassociation: shl-trunc-shl pattern

    This was initially committed in r368059 but got reverted in r368084
    because there was a faulty logic in how the shift amounts type mismatch
    was being handled (it simply wasn't).

    I've added an explicit bailout before we SimplifyAddInst() - i don't think
    it's designed in general to handle differently-typed values, even though
    the actual problem only comes from ConstantExpr's.

    I have also changed the common type deduction, to not just blindly
    look past zext, but try to do that so that in the end types match.

    Differential Revision: — lebedevri / detail
  44. [obj2yaml] - MIPS: move and improve testing of the e_flags

    Mips/elf-flags.yaml and Mips/elf-abi.yaml are tests that intention was to
    show that yaml2obj/obj2yaml are able to read/dump MIPS specific e_flags.

    They were not complete, contained an excessive YAML parts and were placed
    at a wrong location.

    I removed them and created the obj2yaml/elf-mips-eflags.yaml instead.

    Differential revision: — grimar / detail
  45. [ELF.h] - Check the case when e_shstrndx=SHN_XINDEX, but the corresponding sh_link is broken.

    When e_shstrndx is equal to SHN_XINDEX,
    the index of the section string table section should
    be taken from the sh_link field of the section
    header at index 0.

    If sh_link is broken, e.g. contains an index that is
    larger than number of sections, then error is reported.

    This error message was untested before.

    Differential revision: — grimar / detail
  46. [llvm-readelf] --notes: move 'Data size' column left by 1

    readelf -n:

    // "Data size" is not left justified
      Owner                 Data size       Description
      GNU                  0x00000010       NT_GNU_ABI_TAG (ABI version tag)

    llvm-readelf -n (before):
    // "Data size" column shifted by 1
      Owner                 Data size        Description
      GNU                   0x00000010       NT_GNU_ABI_TAG (ABI version tag)

    llvm-readelf -n (after):
      Owner                Data size        Description
      GNU                  0x00000010       NT_GNU_ABI_TAG (ABI version tag)

    This change is made to reduce the diff with readelf -n, so that it is
    slightly easier to check what features readelf implements but we don't.

    Reviewed By: grimar, jhenderson

    Differential Revision: — maskray / detail
  47. [unittests] Mark private gmock headers with IWYU pragmas. NFC

    Summary: To prevent clangd from adding #include of those headers.

    Reviewers: gribozavr

    Reviewed By: gribozavr

    Subscribers: kadircet, llvm-commits, cfe-commits

    Tags: #llvm

    Differential Revision: — ibiryukov / detail
  48. Remove inclusion of a private gmock header from a test — gribozavr / detail
  49. Re-submit r367649: Improve raw_ostream so that you can "write" colors using operator<<

    The original patch broke buildbots, perhaps because it changed the
    default setting whether colors are enabled or not. — ruiu / detail
  50. [ARM][LowOverheadLoops] Revert after read/write
    Currently we check whether LR is stored/loaded to/from inbetween the
    loop decrement and loop end pseudo instructions. There's two problems
    - It relies on all load/store instructions being labelled as such in
    - Actually any use of loop decrement is troublesome because the value
      doesn't exist!
    So we need to check for any read/write of LR that occurs between the
    two instructions and revert if we find anything.

    Differential Revision: — sam_parker / detail
  51. Force check prof branch_weights consistency in SwitchInstProfUpdateWrapper

    This patch turns on the prof branch_weights metadata consistency
    check in SwitchInstProfUpdateWrapper.

    If this patch causes a failure then please before reverting do report
    the IR that hits the assertion and try identifying the pass that
    introduces the inconsistency. We have to fix all such passes.

    See also the upcoming change
    in the Verifier.

    Reviewers: davidx, nikic, eraman, reames, chandlerc
    Reviewed By: davidx
    Differential Revision: — yrouban / detail
  52. [RISCV] Remove duplicated logic when determining the target ABI

    We were calculating twice ilp32/lp64. Do this in one place instead.

    Differential Revision: — rogfer01 / detail
  53. [X86] Allow any 8-bit immediate to be used with bt/btc/btr/bts memory aliases.

    We have aliases that disambiguate memory forms of bt/btc/btr/bts
    without suffixes to the 32-bit form. These aliases should have
    been updated when the instructions were updated in r356413. — ctopper / detail
  54. [X86] Use isInt<8> to simplify some code. NFC — ctopper / detail
  55. Detect HAVE_SYS_TYPES_H in lldb

    After rL368069 I noticed that HAVE_SYS_TYPES_H is not defined in
    Platform.h, or anywhere else in lldb. This change fixes that.

    Reviewers: labath

    Subscribers: mgorny, lldb-commits

    Tags: #lldb

    Differential Revision: — hhb / detail
  56. [MachineCSE][NFC] Use 'profitable' rather than 'beneficial' to name method. — lkail / detail
  57. [X86] Limit vpermil2pd/vpermil2ps immediates to 4 bits in the assembly parser.

    The upper 4 bits of the immediate byte are used to encode a
    register. We need to limit the explicit immediate to fit in the
    remaining 4 bits.

    Fixes PR42899. — ctopper / detail
  58. Reverts commit r368117, r368115 and r368112

    This reverts commits:

      "Added Delta IR Reduction Tool"
      "[Bugpoint redesign] Added Pass to Remove Global Variables"
      "Added Tool as Dependency to tests & fixed warnings"

    Reduce/remove-funcs.ll is failing on bots. — phosek / detail

#2951 (Aug 5, 2019 7:20:21 AM)

  1. Changing representation of .cv_def_range directives in Codeview debug info assembly format for better readability — nilanjana_basu / detail
  2. [Driver] Properly use values-X[ca].o, values-xpg[46].o on Solaris

    Builtins-*-sunos :: compiler_rt_logbf_test.c currently FAILs on Solaris, both SPARC and
    x86, 32 and 64-bit.

    It turned out that this is due to different behaviour of logb depending on the C
    standard compiled for, as documented on logb(3M):

             Upon successful completion, these functions return the exponent of x.
             If x is subnormal:
                 o      For SUSv3-conforming applications compiled with the c99 com-
                        piler  driver  (see standards(7)), the exponent of x as if x
                        were normalized is returned.
                 o      Otherwise, if compiled with the cc compiler  driver,  -1022,
                        -126,  and  -16382  are  returned  for  logb(), logbf(), and
                        logbl(), respectively.

    Studio c99 and gcc control this by linking with the appropriate version of values-xpg[46].o, but clang uses neither of those.

    The following patch fixes this by following what gcc does, as corrected some time ago in

      Fix use of Solaris values-Xc.o (PR target/40411) and

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

    Differential Revision: — ro / detail
  3. [lldb][clang] Reflect LangStandard.h move to clang/Basic

    D65562 <> moves LangStandard.h from clang/Frontend to clang/Basic.  This patch
    adjusts the single file in lldb that uses it to match.

    Tested on x86_64-pc-linux-gnu.

    Differential Revision: — ro / detail
  4. Move LangStandard*, InputKind::Language to Basic

    This patch is a prerequisite for using LangStandard from Driver in

    It moves LangStandard* and InputKind::Language to Basic.  It is mostly
    mechanical, with only a few changes of note:

    - enum Language has been changed into enum class Language : uint8_t to
      avoid a clash between OpenCL in enum Language and OpenCL in enum
      LangFeatures and not to increase the size of class InputKind.

    - Now that getLangStandardForName, which is currently unused, also checks
      both canonical and alias names, I've introduced a helper getLangKind
      which factors out a code pattern already used 3 times.

    The patch has been tested on x86_64-pc-solaris2.11, sparcv9-sun-solaris2.11,
    and x86_64-pc-linux-gnu.

    There's a companion patch for lldb which uses LangStandard.h

    While polly includes isl which in turn uses InputKind::C, that part of the
    code isn't even built inside the llvm tree.  I've posted a patch to allow
    for both InputKind::C and Language::C upstream

    Differential Revision: — ro / detail
  5. [yaml2obj][tests] Fix overly restrictive od output check

    rL364517 introduced further instances of `od` output checking of the
    kind previously corrected by rL363829. This patch corrects the issue by
    suppressing output of the input offset. The check remains sufficiently
    sensitive to test for the intended value of the specific byte since the
    relevant byte value is the only output we are expecting from `od`.

    Reviewers: grimar, xingxue, daltenty, jasonliu, jhenderson, MaskRay

    Reviewed By: grimar, MaskRay

    Subscribers: llvm-commits

    Tags: #llvm

    Differential Revision: — hubert.reinterpretcast / detail
  6. Revert "Changing representation of .cv_def_range directives in Codeview debug info assembly format for better readability"

    This reverts commit a885afa9fa8cab3b34f1ddf3d21535f88b662881. — nilanjana_basu / detail
  7. [yaml2obj] - Allow overriding sh_entsize for SHT_GNU_versym sections.

    This allows to write a test case for one of untested errors
    in llvm/Object/ELF.h.

    I did it in this patch to demonstrate.

    Differential revision: — grimar / detail
  8. [AArch64] Implement initial SVE calling convention support


    This patch adds initial support for the SVE calling convention such that
    SVE types can be passed as arguments and return values to/from a

    The SVE AAPCS states [1]:

        z0-z7 are used to pass scalable vector arguments to a subroutine,
        and to return scalable vector results from a function. If a
        subroutine takes arguments in scalable vector or predicate
        registers, or if it is a function that returns results in such
        registers, it must ensure that the entire contents of z8-z23 are
        preserved across the call. In other cases it need only preserve the
        low 64 bits of z8-z15, as described in §5.1.2.

        p0-p3 are used to pass scalable predicate arguments to a subroutine
        and to return scalable predicate results from a function. If a
        subroutine takes arguments in scalable vector or predicate
        registers, or if it is a function that returns results in these
        registers, it must ensure that p4-p15 are preserved across the call.
        In other cases it need not preserve any scalable predicate register

    SVE predicate and data registers are passed indirectly (i.e. spilled to the
    stack and pass the address) if they exceed the registers used for argument
    passing defined by the PCS referenced above.  Until SVE stack support is merged
    we can't spill SVE registers to the stack, so currently an llvm_unreachable is
    used where we will eventually handle this.


    Reviewed By: ostannard

    Differential Revision: — c-rhodes / detail
  9. [lldb][NFC] Fix documentation for ClangPersistentVariables::m_next_persistent_variable_id — Raphael Isemann / detail
  10. [MCA][doc] Add a section for the 'Bottleneck Analysis'.

    Also clarify the meaning of 'Block RThroughput' and 'RThroughput'. — adibiagio / detail
  11. [obj2yaml] - Teach tool to dump SHT_NULL sections.

    Recently an advanced support of SHT_NULL sections
    was implemented in yaml2obj.

    This patch adds a corresponding support to obj2yaml.

    Differential revision: — grimar / detail
  12. Changing representation of .cv_def_range directives in Codeview debug info assembly format for better readability — nilanjana_basu / detail
  13. Perform the sed substitution on both files (PR42739)

    The comparison would otherwise fail if Phase2 occurrs naturally in the
    object file. It would get replaced with Phase3 in the one .o, but not
    in the other.

    We were already running both files through sed to have them processed in
    this same way; this is a logical extension of that. — hans / detail
  14. Write the RequiredLibraries for 'all' in in a deterministic order (PR42739) — hans / detail
  15. gn build: Merge r367839 — nico / detail
  16. [lldb][NFC] Clang format GetNextPersistentVariableName signature — Raphael Isemann / detail
  17. [lldb] Move redundant persistent variable counter to ClangPersistentVariables

    Currently Target::m_next_persistent_variable_index is counting up
    for our persistent variables ($0, $1, ...) but we also have a
    unused counter that is supposed to do this in
    ClangPersistentVariables but that stays always at 0 (because
    we currently increase the target counter when we should increase
    that unused counter).

    This patch removes the counter in Target and lets the documented
    counter in ClangPersistentVariables do the variable counting.

    Patch *should* be NFC, but it might unexpectedly bring LLDB to
    new code paths that could contain exciting new bugs to fix. — Raphael Isemann / detail
  18. [clang][NFC] Remove unused private variable 'CI' in CrossTranslationUnit.h

    It seems because of the recent refactorings this variable has become unused
    and now we get this warning in the build logs:

    In file included from llvm/clang/lib/CrossTU/CrossTranslationUnit.cpp:12:
    llvm/clang/include/clang/CrossTU/CrossTranslationUnit.h:200:21: warning: private field 'CI' is not used [-Wunused-private-field]
      CompilerInstance &CI;

    I'll remove them for now to get the builds back to green. — Raphael Isemann / detail
  19. [AST] Fix RecursiveASTVisitor visiting implicit constructor initializers.

    Summary: RecursiveASTVisitor was visiting implcit constructor initializers. This caused semantic highlighting in clangd to emit error logs. Fixes this by checking if the constructor is written or if the visitor should visit implicit decls.

    Reviewers: hokein, ilya-biryukov

    Subscribers: kadircet, cfe-commits

    Tags: #clang

    Differential Revision: — jvikstrom / detail

#2950 (Aug 5, 2019 5:08:56 AM)

  1. Fix PDB tests after r367820

    The commit changed Module dumping code to call SymbolFile::Dump
    directly, which meant that we were no longer showing the plugin name in
    the output (as that was done in the SymbolVendor).

    This adds the plugin name printing code to the SymbolFile dump method,
    and tweak the assertions in the PDB tests to match it correctly. — labath / detail
  2. [DAGCombiner][x86] prevent infinite loop from truncate/extend transforms

    The test case is based on the example from the post-commit thread for:

    This replaces the x86-specific simple-type check from:
    with a check in the DAGCombiner. Adding the check isn't
    strictly necessary after the fix from:
    ...but it seems likely that we're heading for trouble if
    we are creating weird types in this transform.

    I combined the earlier legality check into the initial
    clause to simplify the code.

    So we should only try the trunc/sext transform at the
    earliest combine stage, but we limit the transform to
    simple types anyway because the TLI hook is probably
    too lax about what it considers a free truncate. — spatel / detail
  3. [llvm/Object] - Remove ELFFile<ELFT>::getSection(const StringRef SectionName). NFC.

    This method is dead. It was introduced in D47989,
    but now the logic from D63475 is used in llvm-readobj instead.
    Also it has a problem: it returns the first matching section,
    even if there are multiple sections with the same name.

    Differential revision: — grimar / detail
  4. [MVT][SVE] Map between scalable vector IR Type and VTs

    Adds a two way mapping between the scalable vector IR type and
    corresponding SelectionDAG ValueTypes.

    Reviewers: craig.topper, jeroen.dobbelaere, fhahn, rengolin, greened, rovka

    Reviewed By: greened

    Differential Revision: — huntergr / detail
  5. [AArch64] Skip isZIPMask check for masks with an odd number of elements.

    We process 2 elements at a time and expect the number of elements to be
    even. Similar to D60690.

    Reviewers: dmgreen, samparker, t.p.northover

    Reviewed By: dmgreen

    Differential Revision: — fhahn / detail
  6. [lldb][NFC] Remove unimplemented ClangExpressionSourceCode::GetNumBodyLines — Raphael Isemann / detail
  7. [CrossTU][NFCI] Refactor loadExternalAST function

    Refactor loadExternalAST method of CrossTranslationUnitContext in order to
    reduce maintenance burden and so that features are easier to add in the future.

    Reviewers: martong

    Subscribers: rnkovacs, dkrupp, Szelethus, cfe-commits

    Tags: #clang

    Differential Revision: — gamesh411 / detail
  8. [LLVM][Alignment] Introduce Alignment Type

    This is patch is part of a serie to introduce an Alignment type.
    See this thread for context:
    See this patch for the introduction of the type:

    Reviewers: courbet, jfb, jakehehrlich

    Reviewed By: jfb

    Subscribers: wuzish, jholewinski, arsenm, dschuff, nemanjai, jvesely, nhaehnle, javed.absar, sbc100, jgravelle-google, hiraditya, aheejin, kbarton, asb, rbar, johnrusso, simoncook, apazos, sabuasal, niosHD, jrtc27, MaskRay, zzheng, edward-jones, rogfer01, MartinMosbeck, brucehoult, the_o, dexonsmith, PkmX, jocewei, jsji, s.egerton, llvm-commits

    Tags: #llvm

    Differential Revision: — gchatelet / detail
  9. [TLI][NFC] Fixed typo — xbolva00 / detail

#2949 (Aug 5, 2019 3:13:18 AM)

  1. Sidestep false positive due to a matching git repository name

    I have failures in this test because the grep @b gets confused by the
    clang version including a repository name like this

    !1 = !{!"clang version 10.0.0 (git@build-machine:llvm/llvm-monorepo.git fe958c0e8c89ec663c8e551936778e2cbb460154)"}

    I considered something like grep -w but my understanding of the manpages
    was that that isn't super portable. So I think it is easier to make
    clang not to output that metadata using -fno-ident.

    Differential Revision: — rogfer01 / detail
  2. [InstCombine] Added mempcpy tests [NFC] — xbolva00 / detail
  3. ObjectFile[ELF]: Refactor gnu_debuglink interface

    The contents of the gnu_debuglink section were passed through the
    GetDebugSymbolFilePaths interface, which was more generic than needed.
    As the only class implementing this function is ObjectFileELF, we can
    modify the function to return just a single FileSpec (instead of a
    list). Also, since the SymbolVendorELF already assumes ELF object files,
    we don't have to make this method available on the generic ObjectFile
    interface -- instead we can put it on ObjectFileELF directly.

    This change also makes is so that if the Module has an explicit symbol
    file spec set, we disregard the value the value of the debug link
    (instead of doing a secondary lookup using that). I think it makes sense
    to honor the users wishes if he had explicitly set the symbol file spec,
    and this seems to be consistent with what SymbolVendorMacOSX is doing

    The main reason for making these changes is to make the treatment of
    build-ids and debug links simpler in the follow-up patch.

    Reviewers: clayborg, jankratochvil, mgorny, espindola

    Subscribers: emaste, arichardson, MaskRay, lldb-commits

    Differential Revision: — labath / detail
  4. [OpenCL] Fix vector literal test broken in rL367675.

    Avoid checking alignment unnecessary that is not portable
    among targets. — stulova / detail
  5. [LLVM][Alignment] Introduce Alignment In CallingConv

    This is patch is part of a serie to introduce an Alignment type.
    See this thread for context:
    See this patch for the introduction of the type:

    Subscribers: hiraditya, llvm-commits, courbet, jfb

    Tags: #llvm

    Differential Revision: — gchatelet / detail
  6. AMDGPU: add missing llvm.amdgcn.{raw,struct}.buffer.atomic.{inc,dec}

    Wrapping increment/decrement. These aren't exposed by many APIs...

    Change-Id: I1df25c7889de5a5ba76468ad8e8a2597efa9af6c

    Reviewers: arsenm, tpr, dstuttard

    Subscribers: kzhuravl, jvesely, wdng, yaxunl, t-tye, jfb, llvm-commits

    Tags: #llvm

    Differential Revision: — nha / detail
  7. Remove SymbolVendor::GetSymtab

    This patch removes the GetSymtab method from the SymbolVendor, which is
    a no-op as it's implementation just forwards to the relevant SymbolFile.
    Instead it creates a Module::GetSymtab, which calls the SymbolFile
    method directly.

    All callers have been updated to use the Module method directly instead
    of a two phase GetSymbolVendor->GetSymtab search, which leads to reduced
    intentation in a lot of deeply nested code.

    Reviewers: clayborg, JDevlieghere, jingham

    Subscribers: lldb-commits

    Differential Revision: — labath / detail
  8. Reland: Fix and test inter-procedural register allocation for ARM

    Add an explicit construction of the ArrayRef, gcc 5 and earlier don't
    seem to select the ArrayRef constructor which takes a C array when the
    construction is implicit.

    Original commit message:

    - Avoid a crash when IPRA calls ARMFrameLowering::determineCalleeSaves
      with a null RegScavenger. Simply not updating the register scavenger
      is fine because IPRA only cares about the SavedRegs vector, the acutal
      code of the function has already been generated at this point.
    - Add a new hook to TargetRegisterInfo to get the set of registers which
      can be clobbered inside a call, even if the compiler can see both
      sides, by linker-generated code.

    Differential revision: — ostannard / detail
  9. [LLVM][Alignment] Introduce Alignment Type in DataLayout

    This is patch is part of a serie to introduce an Alignment type.
    See this thread for context:
    See this patch for the introduction of the type:

    Reviewers: courbet, jfb, jakehehrlich

    Subscribers: hiraditya, dexonsmith, llvm-commits

    Tags: #llvm

    Differential Revision:

    Make getFunctionPtrAlign() return MaybeAlign — gchatelet / detail
  10. Revert "[llvm-objdump] Re-commit r367284."

    This reverts r367776 (git commit d34099926e909390cb0254bebb4b7f5cf15467c7).
    My changes to llvm-objdump tests caused them to fail on windows: — pozulp / detail
  11. build_llvm_package.bat: Set PYTHON_EXECUTABLE (PR42724) — hans / detail
  12. Remove usage of usleep in generic code

    This function is not portable, and there are only a handful of usages of
    it anyway. Replacing it with std::this_thread::sleep_for enables us to
    get rid of the compatibility code in PosixApi.h. — labath / detail

#2948 (Aug 5, 2019 1:13:44 AM)

  1. Adds a warning when an inline Doxygen comment has no argument

    It warns for for comments like
    /** \pre \em */

    where \em has no argument

    This warning is enabled with the -Wdocumentation option.

    Reviewers: gribozavr, rsmith

    Reviewed By: gribozavr

    Subscribers: cfe-commits

    Tags: #clang

    Differential Revision:

    Patch by Mark de Wever. — gribozavr / detail
  2. [Analyzer] Iterator Checkers - Fix for Crash on Iterator Differences

    Iterators differences were mistakenly handled as random decrements which
    causes an assertion. This patch fixes this. — baloghadamsoftware / detail
  3. [DWARF] Change DWARFDebugLoc::Entry::Loc from SmallVector<char, 4> to SmallString<4>

    SmallString has a conversion to StringRef, which can be leveraged to
    simplify two use sites. — maskray / detail

#2947 (Aug 4, 2019 11:24:55 PM)

  1. Rename F_{None,Text,Append} to OF_{None,Text,Append}. NFC

    F_{None,Text,Append} are kept for compatibility since r334221. — maskray / detail
  2. [Driver] Don't disable -fsanitizer-coverage for safe-stack or shadow-call-stack

    These "sanitizers" are hardened ABIs that are wholly orthogonal
    to the SanitizerCoverage instrumentation.

    Differential Revision: — phosek / detail

#2946 (Aug 4, 2019 9:22:58 PM)

  1. [X86] Fix a bad early out in combineExtInVec that prevented recursive shuffle combining from running with -x86-experimental-vector-widening-legalization. — ctopper / detail

#2945 (Aug 4, 2019 7:46:30 PM)

  1. [Driver] Derive Fuchsia Linker directly from Tool

    Fuchsia Linker tool doesn't need any of the GnuTool behavior. — phosek / detail

#2944 (Aug 4, 2019 6:29:12 PM)

  1. [Driver] Always use -z separate-code with lld on Fuchsia

    Previously -z separate-code was the default lld behavior, but now it
    has to be explicitly requested by specifying the flag. — phosek / detail

#2943 (Aug 4, 2019 5:49:40 PM)

  1. gn build: Merge r367756 — nico / detail

#2942 (Aug 4, 2019 4:19:23 PM)

  1. [Driver] Support for disabling sanitizer runtime linking

    This change introduces a pair of -fsanitize-link-runtime and
    -fno-sanitize-link-runtime flags which can be used to control linking of
    sanitizer runtimes. This is useful in certain environments like kernels
    where existing runtime libraries cannot be used.

    Differential Revision: — phosek / detail

#2940 (Aug 4, 2019 12:54:55 PM)

  1. [Attributor][NFC] Create some attributes earlier — jdoerfert / detail
  2. [Attributor][NFC] Improve debug output — jdoerfert / detail
  3. [Attributor][Fix] Resolve various liveness issues

    This contains various fixes:
      - Explicitly determine and return the next noreturn instruction.
      - If an invoke calls a noreturn function which is not nounwind we
        keep the unwind destination live. This also means we require an
        invoke. Though we can still add the unreachable to the normal
        destination block.
      - Check if the return instructions are dead after we look for calls
        to avoid triggering an optimistic fixpoint in the presence of
        assumed liveness information.
      - Make the interface work with "const" pointers.
      - Some simplifications

    While additional tests are included, full coverage is achieved only with

    Reviewers: sstefan1, uenoku

    Subscribers: hiraditya, bollu, llvm-commits

    Tags: #llvm

    Differential Revision: — jdoerfert / detail
  4. [Attributor][NFC] Simplify common pattern wrt. fixpoints

    When a fixpoint is indicated the change status is known due to the
    fixpoint kind. This simplifies a common code pattern by making the
    connection explicit. — jdoerfert / detail
  5. [Attributor][NFC] Invalid DerefState is at fixpoint

    If the DerefBytesState (and thereby the DerefState) is invalid, we
    reached a fixpoint for the whole DerefState as we will not
    manifest/provide information then.

    Reviewers: uenoku, sstefan1

    Subscribers: hiraditya, bollu, llvm-commits

    Tags: #llvm

    Differential Revision: — jdoerfert / detail

#2939 (Aug 4, 2019 10:34:50 AM)

  1. [TargetLowering][X86] Teach SimplifyDemandedVectorElts to replace the base vector of INSERT_SUBVECTOR with undef if none of the elements are demanded even if the node has other users.

    The SimplifyDemandedVectorElts function can replace with undef
    when no elements are demanded, but due to how it interacts with
    TargetLoweringOpts, it can only do this when the node has
    no other users.

    Remove a now unneeded DAG combine from the X86 backend.

    Reviewers: RKSimon, spatel

    Reviewed By: RKSimon

    Subscribers: hiraditya, llvm-commits

    Tags: #llvm

    Differential Revision: — ctopper / detail
  2. Regenerate test for an upcoming patch.

    I managed to use the update_llc_test_checks script for this, but had to set -asm-verbose=true and then manually tweak the result (PR42882) — rksimon / detail
  3. [UpdateTestChecks] Add end_function directive to regex matcher for wasm32 function body — rksimon / detail

#2938 (Aug 4, 2019 7:58:55 AM)

  1. [X86] lowerShuffleAsSpecificZeroOrAnyExtend - use undef PSHUFB mask indices for ANY_EXTEND shuffles — rksimon / detail

#2937 (Aug 4, 2019 5:50:44 AM)

  1. Fix signed/unsigned comparison warning. NFC. — rksimon / detail
  2. [X86] SimplifyMultipleUseDemandedBits - Add target shuffle support — rksimon / detail
  3. [ORC] Remove a layer of indirection when locking the mutex. NFCI. — d0k / detail

#2936 (Aug 4, 2019 3:44:34 AM)

  1. [ARM] MVE big endian bitcasts

    This adds big endian MVE patterns for bitcasts. They are defined in llvm as
    being the same as a store of the existing type and the load into the new. This
    means that they have to become a VREV between the two types, working in the
    same way that NEON works in big-endian. This also adds some example tests for
    bigendian, showing where code is and isn't different.

    The main difference, especially from a testing perspective is that vectors are
    passed as v2f64, and so are VREV into and out of call arguments, and the
    parameters are passed in a v2f64 format. Same happens for inline assembly where
    the register class is used, so it is VREV to a v16i8.

    So some of this is probably not correct yet, but it is (mostly) self-consistent
    and seems to be consistent with how llvm treats vectors. The rest we can
    hopefully fix later. More details about big endian neon can be found in

    Differential Revision: — dmgreen / detail
  2. [Parser] Emit descriptive diagnostic for misplaced pragma

    If a class or struct or union declaration contains a pragma that
    is not valid in this context, compiler issues generic error like
    "expected member name or ';' after declaration specifiers". With this
    change the error tells that this pragma cannot appear in this declaration.

    Differential Revision: — sepavloff / detail

#2934 (Aug 4, 2019 12:19:30 AM)

  1. Revert "Suppress -Wctad-maybe-unsupported on types w/o deduction guides."

    Some modules builds are issuing buggy diagnostics. The cause of which is

    This reverts commit r@367770. — ericwf / detail
  2. [llvm-objdump] Re-commit r367284.

    Add warning messages if disassembly + source for problematic inputs

    Summary: Addresses

    Reviewers: jhenderson, rupprecht, grimar

    Reviewed By: jhenderson, grimar

    Subscribers: hiraditya, llvm-commits

    Tags: #llvm

    Differential Revision: — pozulp / detail
  3. [X86] Consistently use MVT::i8 for the constant operand of BLENDI and INSERTPS nodes.

    This is the type listed in the type constraint for isel. But since
    we list a type there, it doesn't get checked during isel matching. — ctopper / detail

#2933 (Aug 3, 2019 10:25:41 PM)

  1. Revert "[OpenMP 5.0] Codegen support for user-defined mappers."

    This reverts commit r367773. The test case
    OpenMP/declare_mapper_codegen.cpp is failing. — meinersbur / detail
  2. [OpenMP 5.0] Codegen support for user-defined mappers.

    This patch implements the code generation for OpenMP 5.0 declare mapper
    (user-defined mapper) constructs. For each declare mapper, a mapper
    function is generated. These mapper functions will be called by the
    runtime and/or other mapper functions to achieve user defined mapping.

    The design slides can be found at

    Patch by Lingda Li <>

    Differential Revision: — meinersbur / detail

#2932 (Aug 3, 2019 9:05:36 PM)

  1. [SelectionDAG] Add node creation debug message to getMemIntrinsicNode. — ctopper / detail

#2930 (Aug 3, 2019 5:27:56 PM)

  1. Suppress -Wctad-maybe-unsupported on types w/o deduction guides.

    There are a handful of standard library types that are intended
    to support CTAD but don't need any explicit deduction guides to
    do so.

    This patch adds a dummy deduction guide to those types to suppress
    -Wctad-maybe-unsupported (which gets emitted in user code). — ericwf / detail
  2. [Transforms] Do not drop !preserve.access.index metadata

    Currently, when a GVN or CSE optimization happens,
    the llvm.preserve.access.index metadata is dropped.
    This caused a problem for BPF AbstructMemberOffset phase
    as it relies on the metadata (debuginfo types).

    This patch added proper hooks in lib/Transforms to
    preserve !preserve.access.index metadata. A test
    case is added to ensure metadata is preserved under CSE.

    Differential Revision: — yhs / detail
  3. [DAGCombiner] Prevent the combine added in r367710 from creating illegal types after type legalization.

    This is further fix for PR42880.

    Sanjay already disabled the X86 TLI hook for non-simple types,
    but we should really call isTypeLegal here if we're after type
    legalization. — ctopper / detail

#2929 (Aug 3, 2019 4:05:21 PM)

  1. [JITLink] Fix an overly-wide read in the MachO/x86-64 test case.

    This should fix the build failures on some of the 32-bit bots. — Lang Hames / detail
  2. [x86] change free truncate hook to handle only simple types (PR42880)

    This avoids the crash from:
    ...and I think it's a proper constraint for the TLI hook.

    But that example raises questions about what happens to get us
    into this situation (created i29 types) and what happens later
    (why does legalization die on those types), so I'm not sure if
    we will resolve the bug based on this change. — spatel / detail
  3. [WebAssembly] Fix allocsize attribute in sjlj lowering

    The allocsize attribute refers to call parameters by index.
    Thus, when we add the extra parameter in sjlj lowering, we
    need to increment the referenced paramater in the allocsize
    attribute to avoid angering the Verifier.

    Reviewed By: aheejin
    Differential Revision: — kfischer / detail

#2928 (Aug 3, 2019 1:59:04 PM)

  1. [JITLink] Add support for MachO/x86-64 UNSIGNED relocs with length=2.

    MachO/x86-64 UNSIGNED relocs are almost always 64-bit (length=3), but UNSIGNED
    relocs of length=2 are allowed if the target resides in the low 32-bits. This
    patch adds support for such relocations in JITLink (previously they would have
    triggered an unsupported relocation error). — Lang Hames / detail
  2. [JITLink] Fix error message formatting. — Lang Hames / detail
  3. Revert accidental change to __member_pointer_traits_imp.

    A previous patch accidentally made the primary template
    an incomplete type. This broke some C++03 constructs. — ericwf / detail
  4. Fixup r367321 "Ask confirmation when `git llvm push` will push multiple commits"

    I unfortunately commited an obsolete revision in r367321 that didn't
    have all the changes the reviewers suggested. — mehdi_amini / detail
  5. [yaml2obj][tests] Replace 8-byte `od` conversion with 1-byte conversion

    `od` on AIX does not seem to implement 8-byte integer conversions. Work
    around this by using 1-byte conversions, which can be used in this case
    since the value is byte-order insensitive.

    Reviewers: grimar, daltenty, xingxue, jasonliu, MaskRay

    Reviewed By: grimar, MaskRay

    Subscribers: MaskRay, llvm-commits

    Tags: #llvm

    Differential Revision: — hubert.reinterpretcast / detail

#2927 (Aug 3, 2019 11:18:37 AM)

  1. Use switch instead of series of comparisons

    This is style correction, no functional changes.

    Differential Revision: — sepavloff / detail
  2. IR: Cleanup after test to silence ASAN builds — Tim Northover / detail
  3. [Attributor][NFC] run clang-format on Attributor.cpp — sstefan / detail

#2926 (Aug 3, 2019 8:19:51 AM)

  1. Speculative Compilation

    [ORC] Remove Speculator Variants for Different Program Representations

    [ORC] Block Freq Analysis

    Speculative Compilation with Naive Block Frequency

    Add Applications to OrcSpeculation

    ORC v2 with Block Freq Query & Example

    Deleted BenchMark Programs

    Signed-off-by: preejackie <>

    ORCv2 comments resolved

    [ORCV2] NFC

    ORCv2 NFC

    [ORCv2] Speculative compilation - CFGWalkQuery

    ORCv2 Adapting IRSpeculationLayer to new locking scheme — pree-jackie / detail
  2. IR: print value numbers for unnamed function arguments

    For consistency with normal instructions and clarity when reading IR,
    it's best to print the %0, %1, ... names of function arguments in

    Also modifies the parser to accept IR in that form for obvious reasons. — Tim Northover / detail
  3. Finish moving TargetRegisterInfo::isVirtualRegister() and friends to llvm::Register as started by r367614. NFC — sylvestre / detail

#2922 (Aug 3, 2019 1:22:00 AM)

  1. [Thumb] Fix invalid symbol redefinition due to duplicated jumptable (PR42760)

    Fix for A tBR_JTr
    instruction is duplicated by tail duplication, which results in
    the same jumptable with the same label being emitted twice.

    Fix this by marking tBR_JTr as not duplicable. The corresponding
    ARM/Thumb instructions are already marked as not duplicable.
    Additionally also mark tTBB_JT and tTBH_JT to be consistent with
    Thumb2, even though this shouldn't be strictly necessary.

    Differential Revision: — nikic / detail

#2921 (Aug 2, 2019 11:39:49 PM)

  1. [lit] Print internal env commands

    Without this patch, the internal `env` command removes `env` and its
    args from the command line while parsing it.  This patch modifies a
    copy instead so that the original command line is printed.

    Reviewed By: stella.stamenova, rnk

    Differential Revision: — jdenny / detail
  2. [lit] Actually run tests for internal env command

    Put the main test script in the right directory, and fix a python bug
    in a local script.

    Reviewed By: stella.stamenova

    Differential Revision: — jdenny / detail
  3. Emit diagnostic if an inline asm constraint requires an immediate

    An inline asm call can result in an immediate after inlining. Therefore emit a
    diagnostic here if constraint requires an immediate but one isn't supplied.

    Reviewers: joerg, mgorny, efriedma, rsmith

    Reviewed By: joerg

    Subscribers: asb, rbar, johnrusso, simoncook, apazos, sabuasal, niosHD, zzheng, edward-jones, rogfer01, MartinMosbeck, brucehoult, the_o, PkmX, jocewei, s.egerton, MaskRay, jyknight, dylanmckay, javed.absar, fedor.sergeev, jrtc27, Jim, krytarowski, eraman, llvm-commits

    Tags: #llvm

    Differential Revision: — void / detail

#2920 (Aug 2, 2019 10:22:35 PM)

  1. Simplify <type_traits> implementations.

    This patch rewrites a number of old meta-function implementations
    that assumed const/volatile could not be safely applied to all types.
    This is no longer the case, though for some types (Ex function types),
    the const qualifier can be ignored.

    The largest improvement in this patch is the reduction of is_function.
    Thanks to Matt Calabrese for the improved implementation. — ericwf / detail
  2. [Attributor] Fix dereferenceable callsite argument initialization — uenoku / detail

#2919 (Aug 2, 2019 9:03:14 PM)

  1. [InstSimplify] Add test case to show bad sign bit handling for integer abs idiom in computeKnownBits.

    computeKnownBits will indicate the sign bit of abs is 0 if the
    the RHS operand returned by matchSelectPattern has the nsw flag set.
    For abs idioms like (X >= 0) ? X : -X, the RHS returns -X. But
    we can also match ((X-Y) >= 0 ? X-Y : Y-X as abs. In this case
    RHS will be the Y-X operand. According to Alive, the sign bit for
    this is only 0 if both the X-Y and Y-X operands have the nsw flag.
    But we're only checking the Y-X operand. — ctopper / detail
  2. MCRegister/Register: DenseMapInfo should take `const T &` — dsanders / detail

#2918 (Aug 2, 2019 6:57:54 PM)

  1. [ORC] Remove some old debugging output from a unit test. — Lang Hames / detail
  2. Temporarily Revert "[PowerPC][NFC][MachinePipeliner] Add some regression testcases"

    It's breaking a number of bots, e.g.:

    This reverts commit r367732. — echristo / detail
  3. Add brackets to remove warnings about ambiguous 'else's. — void / detail
  4. Re-commit "[GlobalISel] Add legalization support for non-power-2 loads and stores""

    This is an old commit that exposed a bug in the GISel importer, which caused
    non-truncating stores to be selected for truncating store patterns. Now that's
    been fixed in r367737 this can go back in. — Amara Emerson / detail
  5. [ScalarizeMaskedMemIntrin] Bitcast the mask to the scalar domain and use scalar bit tests for the branches for expandload/compressstore.

    Same as what was done for gather/scatter/load/store in r367489.
    Expandload/compressstore were delayed due to lack of constant
    masking handling that has since been fixed. — ctopper / detail
  6. [GlobalISel] Check LLT size matches memory size for non-truncating stores.

    This was causing a bug where non-truncating stores would be selected instead of truncating ones.

    Differential Revision: — Amara Emerson / detail
  7. [X86] Use the pointer VT for the Scale node when lowering x86 gather/scatter intrinsics.

    This is consistent with the target independent intrinsic handling.

    Not sure this really matters since we just pull the constant out
    using getZExtValue later. — ctopper / detail
  8. [BPF] Handling type conversions correctly for CO-RE

    With newly added debuginfo type
    metadata for preserve_array_access_index() intrinsic,
    this patch did the following two things:
    (1). checking validity before adding a new access index
          to the access chain.
    (2). calculating access byte offset in IR phase
          BPFAbstractMemberAccess instead of when BTF is emitted.

    For (1), the metadata provided by all preserve_*_access_index()
    intrinsics are used to check whether the to-be-added type
    is a proper struct/union member or array element.

    For (2), with all available metadata, calculating access byte
    offset becomes easier in BPFAbstractMemberAccess IR phase.
    This enables us to remove the unnecessary complexity in

    New tests are added for
      . user explicit casting to array/structure/union
      . global variable (or its dereference) as the source of base
      . multi demensional arrays
      . array access given a base pointer
      . cases where we won't generate relocation if we cannot find
        type name.

    Differential Revision: — yhs / detail
  9. Remove support for unsupported MSVC versions

    Re-land r367727 with the #if fixed.

    Reviewers: rnk, lebedev.ri

    Subscribers: hiraditya, jkorous, dexonsmith, lebedev.ri, llvm-commits

    Tags: #llvm

    Differential Revision: — jfb / detail
  10. The MinGW linker supports response files

    This affects both LLD and ld.bfd.

    This isn't testable with a normal driver test with -### because those
    command lines are printed before response file setup. I tested manually
    and confirmed it seems to do the right thing. — rnk / detail

#2917 (Aug 2, 2019 3:37:26 PM)

  1. [PowerPC][NFC][MachinePipeliner] Add some regression testcases

    Exposed by refactoring in — jsji / detail
  2. Revert Fix and test inter-procedural register allocation for ARM

    This reverts r367669 (git commit f6b00c279a5587a25876752a6ecd8da0bed959dc)

    This was breaking a build bot — dyung / detail
  3. [lit] Fix 42812: lit test suite can no longer be run stand-alone

    This change updates the lit.cfg file to use llvm_config when it is available, but when it is not, it directly modifies the config object. This makes it possible to run the lit tests standalone without having built llvm (as long as the correct binaries are present in the path such as FileCheck and not).

    Because the lit tests don't take a hard dependency on llvm_config, some features such as system-windows have to have definitions in lit's cfg file as well. This is a potential issue as the os features sometimes change names (for example, we went from windows to system-windows, etc.). This can cause drift between lit's tests and the rest of the llvm tests.

    Reviewers: probinson, mgorny

    Reviewed By: mgorny

    Subscribers: delcypher, llvm-commits, asmith

    Tags: #llvm

    Differential Revision: — stella.stamenova / detail
  4. Revert "Remove support for unsupported MSVC versions"

    Mismatched preprocessor, I'll fix in a follow-up. — jfb / detail
  5. Remove support for unsupported MSVC versions

    Reviewers: rnk, lebedev.ri

    Subscribers: hiraditya, jkorous, dexonsmith, lebedev.ri, llvm-commits

    Tags: #llvm

    Differential Revision: — jfb / detail
  6. Fix ClangASTContext::CreateParameterDeclaration to not call addDecl

    The change modified ClangASTContext::CreateParameterDeclaration to call decl_ctx->addDecl(decl); this caused a regression since the existing code in DWARFASTParserClang::ParseChildParameters is called with the containing DeclContext. So when end up with cases where we are parsing a parameter for a member function and the parameter is added to the CXXRecordDecl as opposed to the CXXMethodDecl. This example is given in the regression test which without this fix in a modules build leads to assert on setting a breakpoint in a member function with non primitive parameters. This scenario would be common when debugging LLDB or clang.

    Differential Revision: — shafik / detail
  7. [Attributor] Using liveness in other attributes.

    Modifying other AbstractAttributes to use Liveness AA and skip dead instructions.

    Reviewers: jdoerfert, uenoku

    Subscribers: hiraditya, llvm-commits

    Differential revision: — sstefan / detail
  8. [BPF] annotate DIType metadata for builtin preseve_array_access_index()

    Previously, debuginfo types are annotated to
    IR builtin preserve_struct_access_index() and
    preserve_union_access_index(), but not
    preserve_array_access_index(). The debug info
    is useful to identify the root type name which
    later will be used for type comparison.

    For user access without explicit type conversions,
    the previous scheme works as we can ignore intermediate
    compiler generated type conversions (e.g., from union types to
    union members) and still generate correct access index string.

    The issue comes with user explicit type conversions, e.g.,
    converting an array to a structure like below:
      struct t { int a; char b[40]; };
      struct p { int c; int d; };
      struct t *var = ...;
      ... __builtin_preserve_access_index(&(((struct p *)&(var->b[0]))->d)) ...
    Although BPF backend can derive the type of &(var->b[0]),
    explicit type annotation make checking more consistent
    and less error prone.

    Another benefit is for multiple dimension array handling.
    For example,
      struct p { int c; int d; } g[8][9][10];
      ... __builtin_preserve_access_index(&g[2][3][4].d) ...
    It would be possible to calculate the number of "struct p"'s
    before accessing its member "d" if array debug info is
    available as it contains each dimension range.

    This patch enables to annotate IR builtin preserve_array_access_index()
    with proper debuginfo type. The unit test case and language reference
    is updated as well.

    Signed-off-by: Yonghong Song <>

    Differential Revision: — yhs / detail
  9. [AArch64][GlobalISel] Eliminate redundant G_ZEXT when the source is implicitly zext-loaded.

    These cases can come up when the extending loads combiner doesn't combine a
    zext(load) to a zextload op, due to some other operation being in between, which
    then gets simplified at a later stage.

    Differential Revision: — Amara Emerson / detail
  10. Add benchmarks to test the cost of allocator — ericwf / detail
  11. [TargetLowering] SimplifyMultipleUseDemandedBits - don't assume INSERT_VECTOR_ELT value type is simple.

    Noticed by inspection - this was copied from the X86 target equivalent where we can assume its legal/simple. — rksimon / detail
  12. Use MCRegister in MCRegisterInfo's interfaces

    As part of this, define DenseMapInfo for MCRegister (and Register while I'm at it)

    Depends on D65599

    Reviewers: arsenm

    Subscribers: MatzeB, qcolombet, jvesely, wdng, nhaehnle, hiraditya, llvm-commits

    Tags: #llvm

    Differential Revision: — dsanders / detail
  13. [Statepoints] Fix overalignment of loads in no-realign-stack functions

    This really should have been part of 366765.  For some reason, I forgot to handle the corresponding load side, and the readable test cases (using deopt vs statepoints) turned out to be overly reduced.  Oops.

    As seen in the test change, the problem was that we were using a load with alignment expectations rather than the unaligned variant when the stack alignment was less than that prefered type alignment. — reames / detail
  14. hwasan: Remove unused field CurModuleUniqueId. NFCI. — pcc / detail
  15. [ORC] Remove a dead method. — Lang Hames / detail
  16. [ScalarizeMaskedMemIntrin] Add constant mask support to expandload and compressstore scalarization

    This adds support for generating all the loads or stores for a constant mask into a single basic block with no conditionals.

    Differential Revision: — ctopper / detail
  17. [Test] Demonstrate a realignment bug missed in r366765 — reames / detail
  18. [PowerPC][NFC] Enable ADT BitVectorTest

    Test on ppc64le passed.
    This fix — jsji / detail
  19. [ORC] Turn on symbol-flags overrides for LLJIT on Windows by default.

    libObject does not apply the Exported flag to symbols in COFF object files,
    which can lead to assertions when the symbol flags initially derived from
    IR added to the JIT clash with the flags seen by the JIT linker. Both
    RTDyldObjectLinkingLayer and ObjectLinkingLayer have a workaround for this:
    they can be told to override the flags seen by the linker with the flags
    attached to the materialization responsibility object that was passed down
    to the linker. This patch modifies LLJIT's setup code to enable this override
    by default on platforms where COFF is the default object format. — Lang Hames / detail
  20. Add MCRegister and use it in MCRegisterClass::contains()

    Register can cast to MCRegister and we may want to consider asserting
    !isValid() || isPhysical() when expensive checks are on.

    Depends on D65554

    Reviewers: arsenm

    Subscribers: wdng, llvm-commits

    Tags: #llvm

    Differential Revision: — dsanders / detail
  21. [DAGCombiner] try to convert opposing shifts to casts

    This reverses a questionable IR canonicalization when a truncate
    is free:

    sra (add (shl X, N1C), AddC), N1C -->
    sext (add (trunc X to (width - N1C)), AddC')

    More details in PR42644:

    I limited this to pre-legalization for code simplicity because that
    should be enough to reverse the IR patterns. I don't have any
    evidence (no regression test diffs) that we need to try this later.

    Differential Revision: — spatel / detail
  22. [Driver][test] Avoid undefined grep in darwin-ld.c

    question-mark is not a BRE special character.

    POSIX.1-2017 XBD Section 9.3.2 indicates that the interpretation of `\?`
    as used by rC366282 is undefined. This patch uses an ERE instead.

    Reviewers: rnk, daltenty, xingxue, jasonliu

    Reviewed By: rnk

    Subscribers: cfe-commits

    Tags: #clang

    Differential Revision: — hubert.reinterpretcast / detail
  23. Remove a dead diagnostic, NFC

    This was issued in Objective-C 1 mode, but we not longer support that, so this
    is just unreachable. — epilk / detail
  24. Temporarily Revert "Changing representation of cv_def_range directives in Codeview debug info assembly format for better readability"

    This is breaking bots and the author asked me to revert.

    This reverts commit 367704. — echristo / detail
  25. Use rip-relative addressing in asm test

    The absolute form is an error when targeting Darwin. — josepht / detail
  26. Changing representation of cv_def_range directives in Codeview debug info assembly format for better readability — nilanjana_basu / detail
  27. [NewPassManager] Resolve assertion in CGSCCPassManager when CallCounts change.

    If the CallCounts change after an iteration of the DevirtSCCRepeatedPass, this is not reflected in the local CallCounts structure triggering the assertion checking the before/after sizes.
    Since it is valid for the size to change and this only uses the CallCounts for the devirtualizing heuristic, keep a <Function*, CallCount> map instead, and make the devirtualizing decision using the counts for the functions that exist both before and after the pass.

    Resolves PR42726.

    Reviewers: chandlerc

    Subscribers: mehdi_amini, jlebar,, llvm-commits

    Tags: #llvm

    Differential Revision: — asbirlea / detail
  28. [llvm-objcopy] - Fix the strip-dwo-groups.test.

    It was reported (
    that this test fails if the compilation directory contain
    a "debug_" substring.

    This should fix it. — grimar / detail
  29. [Formatters] Temporarily disable libc++ std::function formatter due to performance issue

    Summary: We have been seeing increased reports of performance issue around large project and formatting std::function variables especially in functions signatures in back traces. There are some possible fixes but exploring those fixes may take time and it is better to temporarily disable the formatter due to its impact and re-enable it once we have a fix.

    Differential Revision: — shafik / detail
  30. [AArch64][GlobalISel] Support the neg_addsub_shifted_imm32 pattern

    Add an equivalent ComplexRendererFns function for SelectNegArithImmed. This
    allows us to select immediate adds of -1 by turning them into subtracts.

    Update select-binop.mir to show that the pattern works.

    Differential Revision: — paquette / detail
  31. [SimplifyCFG] Cleanup redundant conditions [NFC].

    Since the for loop iterates over BB's predecessors, the branch conditions found must have BB as one of the successors.
    For an unconditional branch the successor must be BB, added `assert`.
    For a conditional branch, one of the two successors must be BB, simplify `else if` to `else` and `assert`.
    Sink common instructions outside the if/else block.


    Subscribers: jlebar, llvm-commits

    Tags: #llvm

    Differential Revision: — asbirlea / detail
  32. [AMDGPU] Regenerated saddo.ll test file for D47927 — rksimon / detail
  33. Fix ARC after r367633 — dsanders / detail
  34. CodeGen: Don't follow aliases when extracting type info.

    This fixes a crash in the case where the type info object is an alias
    pointing to a non-zero offset within a global or is otherwise unanalyzable
    by the stripPointerCasts() function. Looking through the alias is not the
    right thing to do anyway for similar reasons as D65118.

    Differential Revision: — pcc / detail
  35. [InstCombine] fold cmp+select using select operand equivalence

    As discussed in PR42696:
    ...but won't help that case yet.

    We have an odd situation where a select operand equivalence fold was
    implemented in InstSimplify when it could have been done more generally
    in InstCombine if we allow dropping of {nsw,nuw,exact} from a binop operand.

    Here's an example:

      %cmp = icmp eq i32 %x, 2147483647
      %add = add nsw i32 %x, 1
      %sel = select i1 %cmp, i32 -2147483648, i32 %add
      %sel = add i32 %x, 1

    I've left the InstSimplify code in place for now, but my guess is that we'd
    prefer to remove that as a follow-up to save on code duplication and

    Differential Revision: — spatel / detail
  36. Fix git-llvm to not delete non-empty directories.

    Previously, if a directory contained only other sub-directories, one
    of which was being removed, git llvm would delete the parent and all
    its subdirs, even though only one should've been deleted.

    This error occurred in r366590, where the commit attempted to remove
    lldb/packages/Python/lldbsuite/test/tools/lldb-mi, but git-llvm
    erroneously removed the entire contents of

    This happened because "git apply" automatically removes empty
    directories locally, and the absence of a local directory was
    previously taken as an indication to call 'svn rm' on that
    directory. However, an empty local directory does not necessarily
    indicate that the directory is truly empty.

    Fix that by removing directories only when they're empty on the git

    Differential Revision: — jyknight / detail
  37. gn build: Merge r367667. — pcc / detail
  38. Fix PC adjustment in StackFrame::GetSymbolContext

    Update StackFrame::GetSymbolContext to mirror the logic in
    RegisterContextLLDB::InitializeNonZerothFrame that knows not to do the
    pc decrement when the given frame is a signal trap handler frame or the
    parent of one, because the pc may not follow a call in these frames.
    Accomplish this by adding a behaves_like_zeroth_frame field to
    lldb_private::StackFrame, set to true for the zeroth frame, for
    signal handler frames, and for parents of signal handler frames.

    Also add logic to propagate the signal handler flag from UnwindPlan to
    the FrameType on the RegisterContextLLDB it generates, and factor out a
    helper to resolve symbol and address range for an Address now that we
    need to invoke it in four places.

    Reviewers: jasonmolenda, clayborg, jfb

    Reviewed By: jasonmolenda

    Subscribers: labath, dexonsmith, lldb-commits

    Tags: #lldb

    Differential Revision: — josepht / detail
  39. [Sema] Disable -Wbitwise-op-parentheses and -Wlogical-op-parentheses by default

    The -Wparentheses warnings are enabled by default in clang but they are under
    -Wall in gcc (gcc/c-family/c.opt). Some of the operator precedence warnings are
    oftentimes criticized as noise (clang: default; gcc: -Wall). If a warning is
    very controversial, it is probably not a good idea to enable it by default.
    This patch disables the rather annoying ones:

    -Wbitwise-op-parentheses, e.g. i & i | i
    -Wlogical-op-parentheses, e.g. i && i || i

    After this change:

    * = enabled by default


    -Woverloaded-shift-op-parentheses is typically followed by overload
    resolution failure. We can instead improve the error message, and
    probably delete -Woverloaded-shift-op-parentheses in the future. Keep it
    for now because it gives some diagnostics.

    Reviewers: akyrtzi, jyknight, rtrieu, rsmith, aaron.ballman

    Reviewed By: aaron.ballman

    Subscribers: dexonsmith, cfe-commits

    Tags: #clang

    Differential Revision: — maskray / detail

#2916 (Aug 2, 2019 9:24:12 AM)

  1. [doc] Give a workaround for a FileCheck regex that ends in a brace.

    Addresses PR42864. — probinson / detail
  2. Use llvm-nm instead of nm in new test to unbreak Windows bot

    New test added in r367679 used nm and should use llvm-nm. — tejohnson / detail
  3. [ORC] Change the locking scheme for ThreadSafeModule.

    ThreadSafeModule/ThreadSafeContext are used to manage lifetimes and locking
    for LLVMContexts in ORCv2. Prior to this patch contexts were locked as soon
    as an associated Module was emitted (to be compiled and linked), and were not
    unlocked until the emit call returned. This could lead to deadlocks if
    interdependent modules that shared contexts were compiled on different threads:
    when, during emission of the first module, the dependence was discovered the
    second module (which would provide the required symbol) could not be emitted as
    the thread emitting the first module still held the lock.

    This patch eliminates this possibility by moving to a finer-grained locking
    scheme. Each client holds the module lock only while they are actively operating
    on it. To make this finer grained locking simpler/safer to implement this patch
    removes the explicit lock method, 'getContextLock', from ThreadSafeModule and
    replaces it with a new method, 'withModuleDo', that implicitly locks the context,
    calls a user-supplied function object to operate on the Module, then implicitly
    unlocks the context before returning the result.

    ThreadSafeModule TSM = getModule(...);
    size_t NumFunctions = TSM.withModuleDo(
        [](Module &M) { // <- context locked before entry to lambda.
          return M.size();

    Existing ORCv2 layers that operate on ThreadSafeModules are updated to use the
    new method.

    This method is used to introduce Module locking into each of the existing
    layers. — Lang Hames / detail
  4. [NFC] Test commit, corrected some spelling in comment

    Test commit, corrected some spelling in comment.

    Differential Revision: — dcandler / detail
  5. GlobalISel: support swiftself attribute — Tim Northover / detail
  6. Fix new test try 2

    Fix second (and last) instance of wrong Input file name in new test
    added in r367679. — tejohnson / detail
  7. Fix new test

    Thew new test added in r367679 was using the wrong copy of the Input
    file. — tejohnson / detail
  8. [ThinLTO] Implement index-based WPD

    This patch adds support to the WholeProgramDevirt pass to perform
    index-based WPD, which is invoked from ThinLTO during the thin link.

    The ThinLTO backend (WPD import phase) behaves the same regardless of
    whether the WPD decisions were made with the index-based or (the
    existing) IR-based analysis.

    Depends on D54815.

    Reviewers: pcc

    Subscribers: mehdi_amini, inglorion, eraman, steven_wu, dexonsmith, arphaman, dang, llvm-commits

    Differential Revision: — tejohnson / detail