1. Feb 25, 2020
    • Hans Wennborg's avatar
    • Calixte Denizet's avatar
      [profile] gcov_mutex must be static · 62c7d840
      Calixte Denizet authored
      Summary: Forget static keyword for gcov_mutex in https://reviews.llvm.org/D74953 and that causes test failure on mac.
      
      Reviewers: erik.pilkington, vsk
      
      Reviewed By: vsk
      
      Subscribers: vsk, dexonsmith, #sanitizers, llvm-commits
      
      Tags: #sanitizers, #llvm
      
      Differential Revision: https://reviews.llvm.org/D75080
      62c7d840
    • Jay Foad's avatar
    • Jay Foad's avatar
      dc781908
    • Jan Vesely's avatar
      libclc: cmake configure should depend on file list · 814fb658
      Jan Vesely authored
      This makes sure targets are rebuilt if a file is added or removed.
      Reviewer: tstellar
      Differential Revision: https://reviews.llvm.org/D74662
      814fb658
    • Raphael Isemann's avatar
      [lldb][NFC] Move namespace lookup in ClangASTSource to own function. · 05d174d3
      Raphael Isemann authored
      Beside being cleaner we can probably reuse that logic elsewhere.
      05d174d3
    • Kang Zhang's avatar
      27c89ced
    • Pavel Labath's avatar
      [lldb] s/CHECK-NEXT/CHECK-DAG in dwp-debug-types.s · eefbff00
      Pavel Labath authored
      These can come out nondeterministically for two reasons:
      - sorting based on ConstStringified pointer values
      - different relative speeds of the indexing threads
      
      Making these nondeterministic without incurring performance penalties is
      hard, so I just make the test expect them in any order (the order is not
      important in this test anyway.
      eefbff00
    • Raphael Isemann's avatar
      [lldb][NFC] Make ArrayRef initialization more obvious in lldb-test.cpp · ea6b95dc
      Raphael Isemann authored
      Seems like this code raised some alarm bells as it looks like an ArrayRef
      to a temporary initializer list, but it's actually just calling the ArrayRef(T*, T*)
      constructor. Let's clarify this and directly call the right ArrayRef constructor here.
      
      Fixes rdar://problem/59176052
      ea6b95dc
    • Alex Brachet's avatar
      [libc] [UnitTest] Give UnitTest gtest like colors · 29e2cb87
      Alex Brachet authored
      Summary:
      This is a quality of life change to make it a little nicer to look at, NFC.
      This patch makes the RUN and OK lines green and FAILED lines red to match gtest's output.
      
      Reviewers: sivachandra, gchatelet, PaulkaToast
      
      Reviewed By: gchatelet
      
      Subscribers: MaskRay, tschuett, libc-commits
      
      Differential Revision: https://reviews.llvm.org/D75103
      29e2cb87
    • Craig Topper's avatar
      [X86] Pass parameters into selectVectorAddr to remove dependency on X86MaskedGatherScatterSDNode. · 89ba4aca
      Craig Topper authored
      Might be able to get rid of X86ISD::SCATTER and some uses of
      X86ISD::GATHER. Which require isel to use ISD::SCATTER and
      ISD::GATHER as well.
      89ba4aca
    • Craig Topper's avatar
      [X86] Remove mask output from X86 gather/scatter ISD opcodes. · 9238dfb4
      Craig Topper authored
      Instead add it when we make the machine nodes during instruction
      selections.
      
      This makes this ISD node closer to ISD::MGATHER. Trying to see
      if we remove the X86 specific ones.
      9238dfb4
    • Nathan James's avatar
      [ASTMatchers] Adds a matcher called `hasAnyOperatorName` · 6a0c066c
      Nathan James authored
      Summary:
      Acts on `BinaryOperator` and `UnaryOperator` and functions the same as `anyOf(hasOperatorName(...), hasOperatorName(...), ...)`
      
      Documentation generation isn't perfect but I feel that the python doc script needs updating for that
      
      Reviewers: aaron.ballman, gribozavr2
      
      Reviewed By: aaron.ballman, gribozavr2
      
      Subscribers: cfe-commits
      
      Tags: #clang
      
      Differential Revision: https://reviews.llvm.org/D75040
      6a0c066c
    • Nathan James's avatar
      [ASTMatchers] Matcher macros with params move params instead of copying · 3e9a7b2b
      Nathan James authored
      Summary: Use move semantics instead of copying for AST Matchers with parameters
      
      Reviewers: aaron.ballman, gribozavr2
      
      Reviewed By: gribozavr2
      
      Subscribers: cfe-commits
      
      Tags: #clang
      
      Differential Revision: https://reviews.llvm.org/D75096
      3e9a7b2b
    • Raphael Isemann's avatar
      [lldb] Fix that a crashing test is marked as unsupported when it prints UNSUPPORTED before crashing · 55d4b0d7
      Raphael Isemann authored
      Summary:
      I added an `abort()` call to some code and noticed that the test suite was still passing and it just marked my test as "UNSUPPORTED".
      
      It seems the reason for that is that we expect failing tests to print "FAIL:" which doesn't happen when we crash. If we then also
      have an unsupported because we skipped some debug information in the output, we just mark the test passing because it is unsupported
      on the current platform.
      
      This patch marks any test that has a non-zero exit code as failing even if it doesn't print "FAIL:" (e.g., because it crashed).
      
      Reviewers: labath, JDevlieghere
      
      Reviewed By: labath, JDevlieghere
      
      Subscribers: aprantl, lldb-commits
      
      Tags: #lldb
      
      Differential Revision: https://reviews.llvm.org/D75031
      55d4b0d7
    • Pavel Labath's avatar
      [lldb] Mark ObjectFileBreakpad test inputs as non-text · c08a1c70
      Pavel Labath authored
      These are technically text files, but the object file layer treats them
      as binary, and the relevant tests verify the parsed contents byte for
      byte. Git's crlf conversion can make those tests fail. Marking the files
      as non-text disables that.
      c08a1c70
    • Jim Lin's avatar
      [Sparc][NFC] Remove trailing space · 84c3d3f3
      Jim Lin authored
      84c3d3f3
    • Jonas Devlieghere's avatar
      [lldb/Utility] Fix unspecified behavior. · 35a06145
      Jonas Devlieghere authored
      Order of evaluation of the operands of any C++ operator [...] is
      unspecified. This patch fixes the issue in Stream::Indent by calling the
      function consecutively.
      
      On my Windows setup, TestSettings.py fails because the function prints
      the value first, followed by the indentation.
      
      Expected result:
        MY_FILE=this is a file name with spaces.txt
      
      Actual result:
      MY_FILE  =this is a file name with spaces.txt
      35a06145
    • Hideto Ueno's avatar
    • Matt Arsenault's avatar
      GlobalISel: Remove unneeded initialiation · 1612d382
      Matt Arsenault authored
      Removes implicit unsigned->Register conversion.
      1612d382
    • Matt Arsenault's avatar
      AMDGPU/GlobalISel: Introduce post-legalize combiner · fee41517
      Matt Arsenault authored
      The current set of custom combines are only really useful after
      legalization, so move them there. There is a lot of overlap in the
      boilerplate here, but I think we do want a pretty different set of
      combines before and after legalize. I think we will want a lot of
      overlap between the post-legalize and a post-regbankselect combiner.
      fee41517
    • Jason Molenda's avatar
      Revert "Unwind past an interrupt handler correctly on arm or at pc==0" · 4fdd2edb
      Jason Molenda authored
      The aarcht64-ubuntu bot is showing a test failure in TestHandleAbort.py
      with this patch.  Adding some logging to that file, it looks like
      the saved register context above the trap handler does not have
      save state for $pc, but it does have it for $lr on that platform.
      I need to fall back to looking for $lr if the $pc cannot be retrieved.
      I'll update the patch and re-commit once that's fixed.
      
      This reverts commit edc4f4c9.
      4fdd2edb
    • Jason Molenda's avatar
      d5a4fa05
    • Roman Tereshin's avatar
      [MachineVerifier] Doing ::calcRegsPassed over faster sets: ~15-20% faster MV, NFC · b3bce6a3
      Roman Tereshin authored
      MachineVerifier still takes 45-50% of total compile time with
      -verify-machineinstrs, with calcRegsPassed dataflow taking ~50-60% of
      MachineVerifier.
      
      The majority of that time is spent in BBInfo::addPassed, mostly within
      DenseSet implementing the sets the dataflow is operating over.
      
      In particular, 1/4 of that DenseSet time is spent just iterating over it
      (operator++), 40-50% on insertions, and most of the rest in ::count.
      
      Given that, we're implementing custom sets just for this analysis here,
      focusing on cheap insertions and O(n) iteration time (as opposed to
      O(U), where U is the universe).
      
      As it's based _mostly_ on BitVector for sparse and SmallVector for
      dense, it may remotely resemble SparseSet. The difference is, our
      solution is a lot less clever, doesn't have constant time `clear` that
      we won't use anyway as reusing these sets across analyses is cumbersome,
      and thus more space efficient and safer (got a resizable Universe and a
      fallback to DenseSet for sparse if it gets too big).
      
      With this patch MachineVerifier gets ~15-20% faster, its contribution to
      total compile time drops from 45-50% to ~35%, while contribution of
      calcRegsPassed to MachineVerifier drops from 50-60% to ~35% as well.
      
      calcRegsPassed itself gets another 2x faster here.
      
      All measured on a large suite of shaders targeting a number of GPUs.
      
      Reviewers: bogner, stoklund, rudkx, qcolombet
      
      Reviewed By: rudkx
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D75033
      b3bce6a3
    • Bill Wendling's avatar
      Support output constraints on "asm goto" · 50cac248
      Bill Wendling authored
      Summary:
      Clang's "asm goto" feature didn't initially support outputs constraints. That
      was the same behavior as gcc's implementation. The decision by gcc not to
      support outputs was based on a restriction in their IR regarding terminators.
      LLVM doesn't restrict terminators from returning values (e.g. 'invoke'), so
      it made sense to support this feature.
      
      Output values are valid only on the 'fallthrough' path. If an output value's used
      on an indirect branch, then it's 'poisoned'.
      
      In theory, outputs *could* be valid on the 'indirect' paths, but it's very
      difficult to guarantee that the original semantics would be retained. E.g.
      because indirect labels could be used as data, we wouldn't be able to split
      critical edges in situations where two 'callbr' instructions have the same
      indirect label, because the indirect branch's destination would no longer be
      the same.
      
      Reviewers: jyknight, nickdesaulniers, hfinkel
      
      Reviewed By: jyknight, nickdesaulniers
      
      Subscribers: MaskRay, rsmith, hiraditya, llvm-commits, cfe-commits, craig.topper, rnk
      
      Tags: #clang, #llvm
      
      Differential Revision: https://reviews.llvm.org/D69876
      50cac248
    • Bill Wendling's avatar
      Allow "callbr" to return non-void values · 23c2a5ce
      Bill Wendling authored
      Summary:
      Terminators in LLVM aren't prohibited from returning values. This means that
      the "callbr" instruction, which is used for "asm goto", can support "asm goto
      with outputs."
      
      This patch removes all restrictions against "callbr" returning values. The
      heavy lifting is done by the code generator. The "INLINEASM_BR" instruction's
      a terminator, and the code generator doesn't allow non-terminator instructions
      after a terminator. In order to correctly model the feature, we need to copy
      outputs from "INLINEASM_BR" into virtual registers. Of course, those copies
      aren't terminators.
      
      To get around this issue, we split the block containing the "INLINEASM_BR"
      right before the "COPY" instructions. This results in two cheats:
      
        - Any physical registers defined by "INLINEASM_BR" need to be marked as
          live-in into the block with the "COPY" instructions. This violates an
          assumption that physical registers aren't marked as "live-in" until after
          register allocation. But it seems as if the live-in information only
          needs to be correct after register allocation. So we're able to get away
          with this.
      
        - The indirect branches from the "INLINEASM_BR" are moved to the "COPY"
          block. This is to satisfy PHI nodes.
      
      I've been told that MLIR can support this handily, but until we're able to
      use it, we'll have to stick with the above.
      
      Reviewers: jyknight, nickdesaulniers, hfinkel, MaskRay, lattner
      
      Reviewed By: nickdesaulniers, MaskRay, lattner
      
      Subscribers: rriddle, qcolombet, jdoerfert, MatzeB, echristo, MaskRay, xbolva00, aaron.ballman, cfe-commits, JonChesterfield, hiraditya, llvm-commits, rnk, craig.topper
      
      Tags: #llvm, #clang
      
      Differential Revision: https://reviews.llvm.org/D69868
      23c2a5ce
    • Sourabh Singh Tomar's avatar
      [DebugInfo]: Refactored Macinfo section consumption part to allow future · 226bddce
      Sourabh Singh Tomar authored
      macro section dumping.
      
      Summary: Previously macinfo infrastructure was using functions
      names that were ambiguous i.e `getMacro/getMacroDWO` in a sense
      of conveying stated intentions. This patch refactored them into more
      reasonable `getDebugMacinfo/getDebugMacinfoDWO` names thus making
      room for macro implementation.
      
      Reviewers: aprantl, probinson, jini.susan.george, dblaikie
      
      Reviewed By: dblaikie
      
      Differential Revision: https://reviews.llvm.org/D75037
      226bddce
    • Matt Arsenault's avatar
      AMDGPU/GlobalISel: Fix incorrect VOP3P fneg folding · 0b46b078
      Matt Arsenault authored
      We use some s32 values in VOP3P operands, and won't see any
      intervening casts from a 32-bit fneg. Make sure it's really a packed
      fneg before folding.
      0b46b078
    • Matt Arsenault's avatar
      GlobalISel: Reimplement fewerElementsVectorBasic · 11e3dde6
      Matt Arsenault authored
      Changes the handling of odd breakdowns, and avoids using
      G_EXTRACT/G_INSERT. Pad with undef to a wider size, and unmerge. Also
      avoid introducing instructions for the fully undef components.
      11e3dde6
    • Nathan James's avatar
      [NFC] Cleaned up ASTMatchersInternal Code · 5522e829
      Nathan James authored
      5522e829
    • Eli Friedman's avatar
      [AArch64] SVE implies fullfp16 · 248eaff8
      Eli Friedman authored
      This is explicitly guaranteed in ARMARM. And it makes reasoning about
      vectors easier: we can assume that if a vector operation is legal, the
      corresponding scalar operation is also legal.
      
      Differential Revision: https://reviews.llvm.org/D74993
      248eaff8
    • Jason Molenda's avatar
      My prevous commit to RegisterContextLLDB is causing a test fail · 082f1a3b
      Jason Molenda authored
      on aarch64-ubuntu - collect a little information about what
      is happening on this target before I revert my change; I don't
      have access to this target.
      082f1a3b
    • Eli Friedman's avatar
      [polly] Don't count scops in a global variable. · 888b12b2
      Eli Friedman authored
      This can cause issues with thread safety.
      
      Differential Revision: https://reviews.llvm.org/D75089
      888b12b2
    • Frank Laub's avatar
      [MLIR] Add std.atomic_rmw op · fe210a1f
      Frank Laub authored
      Summary:
      The RFC for this op is here: https://llvm.discourse.group/t/rfc-add-std-atomic-rmw-op/489
      
      The std.atmomic_rmw op provides a way to support read-modify-write
      sequences with data race freedom. It is intended to be used in the lowering
      of an upcoming affine.atomic_rmw op which can be used for reductions.
      
      A lowering to LLVM is provided with 2 paths:
      - Simple patterns: llvm.atomicrmw
      - Everything else: llvm.cmpxchg
      
      Differential Revision: https://reviews.llvm.org/D74401
      fe210a1f
    • Joerg Sonnenberger's avatar
      Prefer PATH_MAX to MAXPATHLEN · 4e45ef4d
      Joerg Sonnenberger authored
      The former is part of POSIX and requires less heavy headers. They are
      practically functionally equivalent.
      4e45ef4d
    • Joerg Sonnenberger's avatar
      Adjust max_align_t handling · 03dd205c
      Joerg Sonnenberger authored
      Depend on the compiler to provide a correct implementation of
      max_align_t. If __STDCPP_NEW_ALIGNMENT__ is missing and C++03 mode has
      been explicitly enabled, provide a minimal fallback in <new> as
      alignment of the largest primitive types.
      03dd205c
    • Shoaib Meenai's avatar
      [arcconfig] Delete subproject arcconfigs · e34ddc09
      Shoaib Meenai authored
      From https://secure.phabricator.com/book/phabricator/article/arcanist_new_project/:
      
      > An .arcconfig file is a JSON file which you check into your project's root.
      
      I've done some experimentation, and it looks like the subproject
      .arcconfigs just get ignored, as the documentation says. Given that
      we're fully on the monorepo now, it's safe to remove them.
      
      Differential Revision: https://reviews.llvm.org/D74996
      e34ddc09
    • Shoaib Meenai's avatar
      [arcconfig] Default base to previous revision · 915e7699
      Shoaib Meenai authored
      When you run `arc diff`, arc defaults to uploading all the changes you
      have against the upstream branch into a single patch. This is almost
      never what you want for stacked commits (patch series); you only want to
      submit the changes done by the current patch. It's also come up as a
      point of confusion in the Phabricator vs. GitHub PRs discussion, for
      example. Configure arc to only upload your current patch by default,
      which I think is a much more suitable default for LLVM developers.
      
      Differential Revision: https://reviews.llvm.org/D74990
      915e7699
    • Jason Molenda's avatar
      Unwind past an interrupt handler correctly on arm or at pc==0 · edc4f4c9
      Jason Molenda authored
      Fix RegisterContextLLDB::InitializeNonZerothFrame so that it
      will fetch a FullUnwindPlan instead of falling back to the
      architectural default unwind plan -- GetFullUnwindPlan knows
      how to spot a jmp 0x0 that results in a fault, which may be
      the case when we see a trap handler on the stack.
      
      Fix RegisterContextLLDB::SavedLocationForRegister so that when
      the pc value is requested from a trap handler frame, where we
      have a complete register context available to us, don't provide
      the Return Address register (lr) instead of the pc.  We have
      an actual pc value here, and it's pointing to the instruction
      that faulted.
      
      Differential revision: https://reviews.llvm.org/D75007
      <rdar://problem/59416588>
      edc4f4c9
    • Nathan James's avatar
      [docs] dump_ast_matchers strips internal::(Bindable)?Matcher from Result_type · e6f9cb02
      Nathan James authored
      Summary: Remove `internal::Matcher` and `internal::BindableMatcher` from Result Type when dumping AST Matchers
      
      Reviewers: joerg, gribozavr2, aaron.ballman
      
      Reviewed By: aaron.ballman
      
      Subscribers: cfe-commits
      
      Tags: #clang
      
      Differential Revision: https://reviews.llvm.org/D75046
      e6f9cb02