1. Dec 18, 2019
    • Sam Clegg's avatar
      [WebAssembly] Convert MC tests to from bitcode to asm · 8aee6b41
      Sam Clegg authored
      Now that our `.s` format is stable(ish) and useable we should really
      convert all our MC and lld tests over to .s format to match other
      targets.
      
      This is a test PR that just converts 2 of our MC tests to see what
      it might look like.
      
      Differential Revision: https://reviews.llvm.org/D71506
      8aee6b41
    • Jonas Paulsson's avatar
      [Clang FE, SystemZ] Recognize -mpacked-stack CL option · 599d1cc0
      Jonas Paulsson authored
      Recognize -mpacked-stack from the command line and add a function attribute
      "mpacked-stack" when passed. This is needed for building the Linux kernel.
      
      If this option is passed for any other target than SystemZ, an error is
      generated.
      
      Review: Ulrich Weigand
      https://reviews.llvm.org/D71441
      599d1cc0
    • Dominic Chen's avatar
      llvm-diff: Perform structural comparison on GlobalVariables, if possible · 79b4c897
      Dominic Chen authored
      Summary: Names of GlobalVariables may not be preserved depending on compilation options, so prefer a structural diff
      
      Subscribers: llvm-commits
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D71582
      79b4c897
    • Pierre Habouzit's avatar
      [objc_direct] fix uniquing when re-declaring a readwrite-direct property · a4e1819c
      Pierre Habouzit authored
      ObjCMethodDecl::getCanonicalDecl() for re-declared readwrite properties,
      only looks in the ObjCInterface for the declaration of the setter
      method, which it won't find.
      
      When the method is a property accessor, we must look in extensions for a
      possible redeclaration.
      
      Radar-Id: rdar://problem/57991337
      
      Differential Revision: https://reviews.llvm.org/D71588
      a4e1819c
    • Jay Foad's avatar
      [AMDGPU] Fix typo in SIInstrInfo::memOpsHaveSameBasePtr · 0412f518
      Jay Foad authored
      Summary:
      The typo has been present since memOpsHaveSameBasePtr was introduced in
      r313208.
      
      It caused SIInstrInfo::shouldClusterMemOps to cluster more mem ops than
      it was supposed to.
      
      Subscribers: arsenm, kzhuravl, jvesely, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye, hiraditya, llvm-commits
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D71616
      0412f518
    • Sanjay Patel's avatar
      [SDAG] adjust isNegatibleForFree calculation to avoid crashing · 6a77e369
      Sanjay Patel authored
      This is an alternate fix for the bug discussed in D70595.
      This also includes minimal tests for other in-tree targets to show the problem more
      generally.
      
      We check the number of uses as a predicate for whether some value is free to negate,
      but that use count can change as we rewrite the expression in getNegatedExpression().
      So something that was marked free to negate during the cost evaluation phase becomes
      not free to negate during the rewrite phase (or the inverse - something that was not
      free becomes free). This can lead to a crash/assert because we expect that everything
      in an expression that is negatible to be handled in the corresponding code within
      getNegatedExpression().
      
      This patch adds a hack to work-around the case where we probably no longer detect
      that either multiply operand of an FMA isNegatibleForFree which is assumed to be
      true when we started rewriting the expression.
      
      Differential Revision: https://reviews.llvm.org/D70975
      6a77e369
    • Sanjay Patel's avatar
      Revert "[SDAG] remove use restriction in isNegatibleForFree() when called from... · 5b0251da
      Sanjay Patel authored
      Revert "[SDAG] remove use restriction in isNegatibleForFree() when called from getNegatedExpression()"
      
      This reverts commit 36b1232e.
      Need to adjust commit message - that was a leftover from the earlier version.
      5b0251da
    • Sanjay Patel's avatar
      [SDAG] remove use restriction in isNegatibleForFree() when called from getNegatedExpression() · 36b1232e
      Sanjay Patel authored
      This is an alternate fix for the bug discussed in D70595.
      This also includes minimal tests for other in-tree targets to show the problem more
      generally.
      
      We check the number of uses as a predicate for whether some value is free to negate,
      but that use count can change as we rewrite the expression in getNegatedExpression().
      So something that was marked free to negate during the cost evaluation phase becomes
      not free to negate during the rewrite phase (or the inverse - something that was not
      free becomes free). This can lead to a crash/assert because we expect that everything
      in an expression that is negatible to be handled in the corresponding code within
      getNegatedExpression().
      
      This patch adds a hack to work-around the case where we probably no longer detect
      that either multiply operand of an FMA isNegatibleForFree which is assumed to be
      true when we started rewriting the expression.
      
      Differential Revision: https://reviews.llvm.org/D70975
      36b1232e
    • Nico Weber's avatar
      Revert "[ASTImporter] Friend class decl should not be visible in its context" · 55c55f8e
      Nico Weber authored
      This reverts commit 4becf68c.
      Breaks building on Windows, see comments on D71020
      55c55f8e
    • Alex Lorenz's avatar
      [driver][darwin] Pass -platform_version flag to the linker instead of the... · 25ce33a6
      Alex Lorenz authored
      [driver][darwin] Pass -platform_version flag to the linker instead of the -<platform>_version_min flag
      
      In Xcode 11, ld added a new flag called -platform_version that can be used instead of the old -<platform>_version_min flags.
      The new flag allows Clang to pass the SDK version from the driver to the linker.
      This patch adopts the new -platform_version flag in Clang, and starts using it by default,
      unless a linker version < 520 is passed to the driver.
      
      Differential Revision: https://reviews.llvm.org/D71579
      25ce33a6
    • JonChesterfield's avatar
      [libomptarget][nfc] Move three files under common, build them for amdgcn · 0c83f8cc
      JonChesterfield authored
      Summary:
      [libomptarget][nfc] Move three files under common, build them for amdgcn
      
      Change to reduction.cu to remove two dead includes, otherwise no code change.
      
      Reviewers: jdoerfert, ABataev, grokos
      
      Reviewed By: jdoerfert
      
      Subscribers: jvesely, mgorny, openmp-commits
      
      Tags: #openmp
      
      Differential Revision: https://reviews.llvm.org/D71601
      0c83f8cc
    • Zakk Chen's avatar
      [RISCV] Add subtargets initialized with target feature · 2c8e22d2
      Zakk Chen authored
      expected failed test (RV32IF-ILP32F) will be fixed in a subsequent patch.
      
      Reviewers: efriedma, lenary, asb
      
      Reviewed By: efriedma, lenary
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D70116
      2c8e22d2
    • Kevin P. Neal's avatar
      2f40f568
    • Amaury Séchet's avatar
      [DAGCombiner] Add node back in the worklist in topological order in CommitTargetLoweringOpt · ff6567cc
      Amaury Séchet authored
      Summary:
      Right now, DAGCombiner process the nodes in an iplementation defined order. This tends to be fragile as optimisation may or may not kick in depending on the traversal order.
      
      This is part of a larger effort to get the DAGCombiner to process its node in topological order.
      
      Reviewers: craig.topper, efriedma, RKSimon, lebedev.ri
      
      Subscribers: hiraditya, llvm-commits
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D70921
      ff6567cc
    • Ulrich Weigand's avatar
      [SystemZ][FPEnv] Back-end support for STRICT_[SU]INT_TO_FP · d1c0f14b
      Ulrich Weigand authored
      As of b1d8576b there is middle-end support for STRICT_[SU]INT_TO_FP,
      so this patch adds SystemZ back-end support as well.
      
      The patch is SystemZ target specific except for adding SD patterns
      strict_[su]int_to_fp and any_[su]int_to_fp to TargetSelectionDAG.td
      as usual.
      d1c0f14b
    • Daniel Sanders's avatar
      [gicombiner] Process the MatchDag such that every node is reachable from the roots · 520e3d66
      Daniel Sanders authored
      Summary:
      When we build the walk across these DAG's we need to be able to reach every node
      from the roots. Flip and traversal edges (so that use->def becomes def->uses)
      that make nodes unreachable. Note that early on we'll just error out on these
      flipped edges as def->uses edges are more complicated to match due to their
      one->many nature.
      
      Depends on D69077
      
      Reviewers: volkan, bogner
      
      Subscribers: llvm-commits
      520e3d66
    • Piotr Sobczak's avatar
      [InstCombine][AMDGPU] Trim more components of *buffer_load · 65f94b33
      Piotr Sobczak authored
      Summary:
      Add trimming of unused components of s_buffer_load.
      
      Extend trimming of *buffer_load to also include
      unused components at the beginning of vectors and update offset.
      
      Subscribers: kzhuravl, jvesely, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye, hiraditya, llvm-commits
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D70315
      65f94b33
    • Michael Trent's avatar
      [ MC ] Match labels to existing fragments even when switching sections. · 4272372c
      Michael Trent authored
      Summary:
      This commit builds upon Derek Schuff's 2014 commit for attaching labels to
      existing fragments ( Diff Revision: http://reviews.llvm.org/D5915 )
      
      When temporary labels appear ahead of a fragment, MCObjectStreamer will
      track the temporary label symbol in a "Pending Labels" list. Labels are
      associated with fragments when a real fragment arrives; otherwise, an empty
      data fragment will be created if the streamer's section changes or if the
      stream finishes.
      
      This commit moves the "Pending Labels" list into each MCStream, so that
      this label-fragment matching process is resilient to section changes. If
      the streamer emits a label in a new section, switches to another section to
      do other work, then switches back to the first section and emits a
      fragment, that initial label will be associated with this new fragment.
      Labels will only receive empty data fragments in the case where no other
      fragment exists for that section.
      
      The downstream effects of this can be seen in Mach-O relocations. The
      previous approach could produce local section relocations and external
      symbol relocations for the same data in an object file, and this mix of
      relocation types resulted in problems in the ld64 Mach-O linker. This
      commit ensures relocations triggered by temporary labels are consistent.
      
      Reviewers: pete, ab, dschuff
      
      Reviewed By: pete, dschuff
      
      Subscribers: hiraditya, llvm-commits
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D71368
      4272372c
    • Jay Foad's avatar
      [AMDGPU] Update autogenerated checks · ad622af0
      Jay Foad authored
      ad622af0
  2. Dec 17, 2019
    • Joel E. Denny's avatar
      [lit] Fix internal diff newlines for -w/-b · 9658e77e
      Joel E. Denny authored
      For example, without this patch:
      
      ```
      $ python $LIT_BUILTINS/diff.py -b foo.txt bar.txt
      *** /tmp/foo.txt
      --- /tmp/bar.txt
      ***************
      *** 1,2 ****
        1! 2--- 1,2 ----
        1! 20
      ```
      
      With this patch:
      
      ```
      $ python $LIT_BUILTINS/diff.py -b foo.txt bar.txt
      *** /tmp/foo.txt
      --- /tmp/bar.txt
      ***************
      *** 1,2 ****
        1
      ! 2
      --- 1,2 ----
        1
      ! 20
      ```
      
      Reviewed By: rnk
      
      Differential Revision: https://reviews.llvm.org/D71577
      9658e77e
    • Sanjay Patel's avatar
      [AArch64] add tests for fcvtl2; NFC · fbaf835c
      Sanjay Patel authored
      fbaf835c
    • Mitch Phillips's avatar
      Revert "Honor -fuse-init-array when os is not specified on x86" · 2423774c
      Mitch Phillips authored
      This reverts commit aa5ee8f2.
      
      This change broke the sanitizer buildbots. See comments at the patchset
      (https://reviews.llvm.org/D71360) for more information.
      2423774c
    • Kadir Cetinkaya's avatar
      [clangd] Fix handling of inline/anon namespaces and names of deduced types in hover · 9ab15f30
      Kadir Cetinkaya authored
      Summary:
      Clangd normally skips inline and anon namespaces while printing nested name
      specifiers. It also drops any tag specifiers since we make use of `HoverInfo::Kind`
      instead of some text in `HoverInfo::Name`
      
      There was a bug causing us to print innermost inline/anon namespace, this patch
      fixes that by skipping those.
      Also changes printing and kind detection of deduced types to be similar to decl
      case.
      
      Also improves printing for lambdas, currently clangd prints lambdas as
      `(anonymous class)`, we can improve it by at least printing `(lambda)`
      instead.
      
      Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, usaxena95, cfe-commits
      
      Tags: #clang
      
      Differential Revision: https://reviews.llvm.org/D71543
      9ab15f30
    • Kadir Cetinkaya's avatar
      [clangd][NFC] Make use of TagDecl inside type for hover on auto · 3d156053
      Kadir Cetinkaya authored
      Summary:
      We were traversing AST twice to get the Decl in case of sugared
      types(auto, decltype). They seem to be same in practice, so this patch gets rid
      of the second traversal and makes use of TagDecl inside QualType instead.
      
      Reviewers: ilya-biryukov
      
      Subscribers: MaskRay, jkorous, arphaman, usaxena95, cfe-commits
      
      Tags: #clang
      
      Differential Revision: https://reviews.llvm.org/D71597
      3d156053
    • LLVM GN Syncbot's avatar
      gn build: Merge 390c8baa · 0a1ba7c5
      LLVM GN Syncbot authored
      0a1ba7c5
    • Daniel Sanders's avatar
      [gicombiner] Add the MatchDag structure and parse instruction DAG's from the input · 390c8baa
      Daniel Sanders authored
      Summary:
      The MatchDag structure is a representation of the checks that need to be
      performed and the dependencies that limit when they can happen.
      
      There are two kinds of node in the MatchDag:
      * Instrs - Represent a MachineInstr
      * Predicates - Represent a check that needs to be performed (i.e. opcode, is register, same machine operand, etc.)
      and two kinds of edges:
      * (Traversal) Edges - Represent a register that can be traversed to find one instr from another
      * Predicate Dependency Edges - Indicate that a predicate requires a piece of information to be tested.
      
      For example, the matcher:
       (match (MOV $t, $s),
              (MOV $d, $t))
      with MOV declared as an instruction of the form:
        %dst = MOV %src1
      becomes the following MatchDag with the following instruction nodes:
        __anon0_0 // $t=getOperand(0), $s=getOperand(1)
        __anon0_1 // $d=getOperand(0), $t=getOperand(1)
      traversal edges:
        __anon0_1[src1] --[t]--> __anon0_0[dst]
      predicate nodes:
        <<$mi.getOpcode() == MOV>>:$__anonpred0_2
        <<$mi.getOpcode() == MOV>>:$__anonpred0_3
      and predicate dependencies:
        __anon0_0 ==> __anonpred0_2[mi]
        __anon0_0 ==> __anonpred0_3[mi]
      
      The result of this parse is currently unused but can be tested
      using -gicombiner-stop-after-parse as done in parse-match-pattern.td. The
      dump for testing includes a graphviz format dump to allow the rule to be
      viewed visually.
      
      Later on, these MatchDag's will be used to generate code and to build an
      efficient decision tree.
      
      Reviewers: volkan, bogner
      
      Reviewed By: volkan
      
      Subscribers: arsenm, mgorny, mgrang, llvm-commits
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D69077
      390c8baa
    • Raphael Isemann's avatar
    • Kevin P. Neal's avatar
      This adds constrained intrinsics for the signed and unsigned conversions · b1d8576b
      Kevin P. Neal authored
      of integers to floating point.
      
      This includes some of Craig Topper's changes for promotion support from
      D71130.
      
      Differential Revision: https://reviews.llvm.org/D69275
      b1d8576b
    • Erich Keane's avatar
      Reland [NFC-I] Remove hack for fp-classification builtins · 1ed832e4
      Erich Keane authored
      The FP-classification builtins (__builtin_isfinite, etc) use variadic
      packs in the definition file to mean an overload set.  Because of that,
      floats were converted to doubles, which is incorrect. There WAS a patch
      to remove the cast after the fact.
      
      THis patch switches these builtins to just be custom type checking,
      calls the implicit conversions for the integer members, and makes sure
      the correct L->R casts are put into place, then does type checking like
      normal.
      
      A future direction (that wouldn't be NFC) would consider making
      conversions for the floating point parameter legal.
      
      Note: The initial patch for this missed that certain systems need to
      still convert half to float, since they dont' support that type.
      1ed832e4
    • Raphael Isemann's avatar
      [lldb][NFC] Rename ClangASTImporter::InsertRecordDecl to SetRecordLayout and document it · b852b3c9
      Raphael Isemann authored
      This function is just setting the layout for the given RecordDecl so
      the current name is not very descriptive. Also add some documentation for it.
      b852b3c9
    • Gabor Marton's avatar
      [ASTImporter] Friend class decl should not be visible in its context · 4becf68c
      Gabor Marton authored
      Summary:
      In the past we had to use DeclContext::makeDeclVisibleInContext to make
      friend declarations available for subsequent lookup calls and this way
      we could chain (redecl) the structurally equivalent decls.
      By doing this we created an AST that improperly made declarations
      visible in some contexts, so the AST was malformed.
      Since we use the importer specific lookup this is no longer necessary,
      because with that we can find every previous nodes.
      
      Reviewers: balazske, a_sidorin, a.sidorin, shafik
      
      Subscribers: rnkovacs, dkrupp, Szelethus, gamesh411, teemperor, cfe-commits
      
      Tags: #clang
      
      Differential Revision: https://reviews.llvm.org/D71020
      4becf68c
    • Raphael Isemann's avatar
      [lldb][NFC] Allow creating ClangExpressionDeclMap and ClangASTSource without a... · 4aee81c4
      Raphael Isemann authored
      [lldb][NFC] Allow creating ClangExpressionDeclMap and ClangASTSource without a Target and add basic unit test
      
      The ClangExpressionDeclMap should be testable from a unit test. This is currently
      impossible as they have both dependencies on Target/ExecutionContext from their
      constructor. This patch allows constructing these classes without an active Target
      and adds the missing tests for running without a target that we can do at least
      a basic lookup test without crashing.
      4aee81c4
    • alex-t's avatar
      PostRA Machine Sink should take care of COPY defining register that is a... · e7f585ed
      alex-t authored
      PostRA Machine Sink should take care of COPY defining register that is a sub-register by another COPY source operand
      
      Differential Revision: https://reviews.llvm.org/D71132
      e7f585ed
    • JonChesterfield's avatar
      [libomptarget][nfc] Move omp locks under target_impl · 3d3e4076
      JonChesterfield authored
      Summary:
      [libomptarget][nfc] Move omp locks under target_impl
      
      These are likely to be target specific, even down to the lock_t which is
      correspondingly moved out of interface.h. The alternative is to include
      interface.h in target_impl which substantiatially increases the scope of
      those symbols.
      
      The current nvptx implementation deadlocks on amdgcn. The preferred
      implementation for that arch is still under discussion - this change
      leaves declarations in target_impl.
      
      The functions could be inline for nvptx. I'd prefer to keep the internals
      hidden in the target_impl translation unit, but will add the (possibly renamed)
      macros to target_impl.h if preferred.
      
      Reviewers: ABataev, jdoerfert, grokos
      
      Reviewed By: jdoerfert
      
      Subscribers: jvesely, mgorny, jfb, openmp-commits
      
      Tags: #openmp
      
      Differential Revision: https://reviews.llvm.org/D71574
      3d3e4076
    • James Henderson's avatar
      [DebugInfo] Only print a single blank line after an empty line table · 5666b70f
      James Henderson authored
      Commit 84a9756a added an extra blank line at the end of any line table.
      However, a blank line is also printed after the line table header, which
      meant that two blank lines in a row were being printed after a header,
      if there were no rows. This patch defers the post-header blank line
      printing until it has been determined that there are rows to print.
      
      Reviewed by: dblaikie
      
      Differential Revision: https://reviews.llvm.org/D71540
      5666b70f
    • Mikhail Maltsev's avatar
      [libcxx] Fix include paths in fuzzing/partial_sort.pass.cpp · 67ce7f51
      Mikhail Maltsev authored
      Summary:
      When testing an installed (out-of-tree) version of libc++, the
      "libcxx/fuzzing/partial_sort.pass.cpp" test fails because of missing
      include files "../fuzzing/fuzzing.{h,cpp}". This happens because in
      the source tree "../fuzzing" can be accessed as
      "libcxx/include/../fuzzing", but with the installed library this does
      not work.
      
      This patch fixes the issue by changing the path to be relative from
      the `libcxx/test/fuzzing" directory.
      
      Reviewers: mclow.lists, EricWF, christof, michaelplatings
      
      Reviewed By: michaelplatings
      
      Subscribers: merge_guards_bot, ldionne, libcxx-commits
      
      Tags: #libc
      
      Differential Revision: https://reviews.llvm.org/D71459
      67ce7f51
    • Luís Marques's avatar
      [RISCV][NFC] Trivial cleanup · e332a096
      Luís Marques authored
      Fix a typo. Remove two seemingly out-of-date TODO comments.
      e332a096
    • Raphael Isemann's avatar
      [lldb] Remove modern-type-lookup · ff0102b3
      Raphael Isemann authored
      Summary:
      As discussed on the mailing list [1] we have to make a decision for how to proceed with the modern-type-lookup.
      
      This patch removes modern-type-lookup from LLDB. This just removes all the code behind the modern-type-lookup
      setting but it does *not* remove any code from Clang (i.e., the ExternalASTMerger and the clang-import-test stay around
      for now).
      
      The motivation for this is that I don't think that the current approach of implementing modern-type-lookup
      will work out. Especially creating a completely new lookup system behind some setting that is never turned on by anyone
      and then one day make one big switch to the new system seems wrong. It doesn't fit into the way LLVM is developed and has
      so far made the transition work much more complicated than it has to be.
      
      A lot of the benefits that were supposed to come with the modern-type-lookup are related to having a better organization
      in the way types move across LLDB and having less dependencies on unrelated LLDB code. By just looking at the current code (mostly
      the ClangASTImporter) I think we can reach the same goals by just incrementally cleaning up, documenting, refactoring
      and actually testing the existing code we have.
      
      [1] http://lists.llvm.org/pipermail/lldb-dev/2019-December/015831.html
      
      Reviewers: shafik, martong
      
      Subscribers: rnkovacs, christof, arphaman, JDevlieghere, usaxena95, lldb-commits, friss
      
      Tags: #lldb
      
      Differential Revision: https://reviews.llvm.org/D71562
      ff0102b3
    • Sven van Haastregt's avatar
      [OpenCL] Add ExtVectorElementExpr constant evaluation (PR42387) · df5a905a
      Sven van Haastregt authored
      Add constexpr evaluation for ExtVectorElementExpr nodes by evaluating
      the underlying vector expression.  Add basic folding for the case that
      Evaluate does not return an LValue.
      
      Differential Revision: https://reviews.llvm.org/D71133
      df5a905a
    • Kristof Beyls's avatar
      Fix assertion failure in getMemOperandWithOffsetWidth · 870f39d3
      Kristof Beyls authored
      This fixes an assertion failure that triggers inside
      getMemOperandWithOffset when Machine Sinking calls it on a MachineInstr
      that is not a memory operation.
      
      Different backends implement getMemOperandWithOffset differently: some
      return false on non-memory MachineInstrs, others assert.
      
      The Machine Sinking pass in at least SinkingPreventsImplicitNullCheck
      relies on getMemOperandWithOffset to return false on non-memory
      MachineInstrs, instead of asserting.
      
      This patch updates the documentation on getMemOperandWithOffset that it
      should return false on any MachineInstr it cannot handle, instead of
      asserting. It also adapts the in-tree backends accordingly where
      necessary.
      
      Differential Revision: https://reviews.llvm.org/D71359
      870f39d3