1. Sep 01, 2021
    • MaheshRavishankar's avatar
      [mlir][Linalg] Drop output tensor from `linalg.pad_tensor` op. · b686fdbf
      MaheshRavishankar authored
      The output tensor was added for tiling purposes. With use of
      `TilingInterface` for tiling pad operations, there is no need for an
      explicit operand for the shape of result of `linalg.pad_tensor`
      op. The interface allows the tiling pattern to query the value that
      can be used for the "init" needed for tiling dynamically.
      
      Differential Revision: https://reviews.llvm.org/D108613
      b686fdbf
    • Nick Desaulniers's avatar
      [PPCISelLowering] avoid emitting libcalls to __mulodi4() · d8b6ae07
      Nick Desaulniers authored
      Similar to D108842, D108844, and D108926.
      
      __has_builtin(builtin_mul_overflow) returns true for 32b PPC targets,
      but Clang is deferring to compiler RT when encountering long long types.
      This breaks ppc44x_defconfig + CONFIG_BLK_DEV_NBD=y builds of the Linux
      kernel that are using builtin_mul_overflow with these types for these
      targets.
      
      If the semantics of __has_builtin mean "the compiler resolves these,
      always" then we shouldn't conditionally emit a libcall.
      
      This will still need to be worked around in the Linux kernel in order to
      continue to support these builds of the Linux kernel for this
      target with older releases of clang.
      
      Link: https://bugs.llvm.org/show_bug.cgi?id=28629
      Link: https://github.com/ClangBuiltLinux/linux/issues/1438
      
      Reviewed By: nemanjai
      
      Differential Revision: https://reviews.llvm.org/D108936
      d8b6ae07
    • Philip Reames's avatar
      [SCEV] Add a testcase for zero max btc with non-constant exact btc · c49503a7
      Philip Reames authored
      Reduced from the ArchiveCommandLine.ll case seen in D108848.
      c49503a7
    • Fangrui Song's avatar
      [CMake] Remove unneeded -Wnon-virtual-dtor availability check · 4bb5f44c
      Fangrui Song authored
      For Clang, 3.5 is the minimum requirement which has fixed the bug.
      GCC 5 is good as well.
      4bb5f44c
    • Joe Loser's avatar
      [libcxx][docs] Mark LWG3153 as complete · 167b2dbd
      Joe Loser authored
      Reviewed By: ldionne, #libc
      
      Differential Revision: https://reviews.llvm.org/D108967
      167b2dbd
    • Mehdi Amini's avatar
      Add a new interface allowing to set a default dialect to be used for printing/parsing regions · 387f9554
      Mehdi Amini authored
      Currently the builtin dialect is the default namespace used for parsing
      and printing. As such module and func don't need to be prefixed.
      In the case of some dialects that defines new regions for their own
      purpose (like SpirV modules for example), it can be beneficial to
      change the default dialect in order to improve readability.
      
      Differential Revision: https://reviews.llvm.org/D107236
      387f9554
    • Mehdi Amini's avatar
      Change ASM Op printer to print the operation name in the framework instead of... · c41b16c2
      Mehdi Amini authored
      Change ASM Op printer to print the operation name in the framework instead of leaving it up to each individual operation
      
      This aligns the printer with the parser contract: the operation isn't part of the user-controllable part of the syntax.
      
      Differential Revision: https://reviews.llvm.org/D108804
      c41b16c2
    • Mehdi Amini's avatar
      Change dialect `printOperation()` hook to `getOperationPrinter()` · fd87963e
      Mehdi Amini authored
      This makes the hook return a printer if available, instead of using LogicalResult  to
      indicate if a printer was available (and invoked). This allows the caller to detect that
      the dialect has a printer for a given operation without actually invoking the printer.
      It'll be leveraged in a future revision to move printing the op name itself under control
      of the ASMPrinter.
      
      Differential Revision: https://reviews.llvm.org/D108803
      fd87963e
    • peter klausler's avatar
      [flang] Fold PACK() · 6726a3d8
      peter klausler authored
      Implement compile-time constant folding for the transformational
      intrinsic function PACK.
      
      Differential Revision: https://reviews.llvm.org/D108956
      6726a3d8
    • Vedant Kumar's avatar
      [profile] Specify "-V" to otool to get expected test output · 6c439a38
      Vedant Kumar authored
      Newer Xcode toolchains ship a new otool implementation that prints out
      section contents in a slightly different way than otool-classic. Specify
      "-V" to otool to get the expected test output.
      
      Differential Revision: https://reviews.llvm.org/D108929
      6c439a38
    • Joe Nash's avatar
      [AMDGPU] Enable ds_min/ds_max on more subtargets · c9683926
      Joe Nash authored
      Adds patterns for f64 ds_min/ds_max. Shrinks HasLDSFPAtomics
      scope to enable f32.
      
      Reviewed By: rampitec
      
      Differential Revision: https://reviews.llvm.org/D108994
      
      Change-Id: Id890b677841ee588b20d42b1bb3f4cdbf6e9ba1a
      c9683926
    • Jessica Paquette's avatar
      [GlobalISel] Don't use G_FPTOSI in G_ISNAN legalization · 94d3ff09
      Jessica Paquette authored
      As noted in the comments in D108227, using G_FPTOSI produces wrong results for
      G_ISNAN. Drop the G_FPTOSI and perform the operation on integer types.
      
      Elsewhere in LLVM, a bitcast would be the appropriate choice (as it is in SDAG).
      GlobalISel does not distinguish between integer and FP types, so a bitcast would
      be meaningless here.
      94d3ff09
    • David Green's avatar
      [ARM] Add missing validForTailPredication for VMINNM/VMAXNM · 22c38412
      David Green authored
      Apparently this was missing, preventing the generation of tail
      predication loops containing VMINNM, VMAXNM, VMINNMA and VMAXNMA.
      22c38412
    • David Green's avatar
      198259be
    • Raphael Isemann's avatar
      [lldb] Don't save empty expressions in the multiline editor history · 4f7fb13f
      Raphael Isemann authored
      Right now running `expr` to start the multiline expression editor and then
      pressing enter causes an empty history empty to be created for the multiline
      editor. That doesn't seem very useful for users as pressing the 'up' key will
      now also bring up these empty expressions.
      
      I don't think there is ever a use case for recalling a completely empty
      expression from the history, so instead don't save those entries to the history
      file and make sure we never recall them when navigating over the expression
      history.
      
      Note: This is actually a Swift downstream patch that got shipped with Apple's
      LLDB for many years. However, this recently started conflicting with upstream
      LLDB as D100048 added a test that made sure that empty expression entries don't
      crash LLDB. Apple's LLDB was never affected by this crash as it never saved
      empty expressions in the first place.
      
      Reviewed By: augusto2112
      
      Differential Revision: https://reviews.llvm.org/D108983
      4f7fb13f
    • LLVM GN Syncbot's avatar
      [gn build] Port e983a659 · 9c37eda6
      LLVM GN Syncbot authored
      9c37eda6
    • Mark de Wever's avatar
      [libc++][NFC] split <charconv>. · e983a659
      Mark de Wever authored
      This move the helper types `chars_format`, `to_chars_result` and
      `from_chars_result` to a separate header. The first two are needed for
      D70631 the third for consistency.
      
      The header `__charconv/ryu.h` uses these types and it can't depend on the
      types in `<charconv>` in a modular build. Moving them to the ryu header
      would be an odd place and doesn't work since the header is included in the
      middle of `<charconv>`.
      
      Reviewed By: #libc, ldionne, Quuxplusone
      
      Differential Revision: https://reviews.llvm.org/D108927
      e983a659
    • Philip Reames's avatar
      [runtime] Move prolog/epilog block to a post-simplify strategy · b604fcb7
      Philip Reames authored
      The runtime unroller will try to produce a non-loop if the unroll count is 2 and thus the prolog/epilog loop would only run at most one iteration. The old implementation did this by avoiding loop construction entirely. This patches instead constructs the trivial loop and then explicitly breaks the backedge and simplifies. This does result in some additional code churn when triggered, but a) results in better quality code and b) removes a codepath which didn't work properly for multiple exit epilogs.
      
      One oddity that I want to draw to reviewer attention is that this somehow changes revisit order. The new order looks equivalent to me, but I don't understand how creating and erasing an extra loop here creates this effect.
      
      Differential Revision: https://reviews.llvm.org/D108521
      b604fcb7
    • Philip Reames's avatar
      [AlignFromAssume] Bailout w/non-constant alignments (pr51680) · 9b45fd90
      Philip Reames authored
      This is a bailout for pr51680.  This pass appears to assume that the alignment operand to an align tag on an assume bundle is constant.  This doesn't appear to be required anywhere, and clang happily generates non-constant alignments for cases such as this case taken from the bug report:
      
      // clang -cc1 -triple powerpc64-- -S -O1 opal_pci-min.c
      extern int a[];
      long *b;
      long c;
      void *d(long, int *, int, long, long, long) __attribute__((__alloc_align__(6)));
      void e() {
        b = d(c, a, 0, 0, 5, c);
        b[0] = 0;
      }
      
      This was exposed by a SCEV change which allowed a non-constant alignment to reach further into the pass' code.  We could generalize the pass, but for now, let's fix the crash.
      9b45fd90
    • Shilei Tian's avatar
      [OpenMP] Fix task wait doesn't work as expected in serialized team · 8442967f
      Shilei Tian authored
      As discussed in D107121, task wait doesn't work when a regular task T depends on
      a detached task or a hidden helper task T' in a serialized team. The root cause is,
      since the team is serialized, the last task will not be tracked by
      `td_incomplete_child_tasks`. When T' is finished, it first releases its
      dependences, and then decrements its parent counter. So far so good. For the thread
      that is running task wait, if at the moment it is still spinning and trying to
      execute tasks, it is fine because it can detect the new task and execute it.
      However, if it happends to finish the function `flag.execute_tasks(...)`, it will
      be broken because `td_incomplete_child_tasks` is 0 now.
      
      In this patch, we update the rule to track children tasks a little bit. If the
      task team encounters a proxy task or a hidden helper task, all following tasks
      will be tracked.
      
      Reviewed By: AndreyChurbanov
      
      Differential Revision: https://reviews.llvm.org/D107496
      8442967f
    • Sanjay Patel's avatar
      [InstCombine] fix typos in comments; NFC · 6c0181c0
      Sanjay Patel authored
      6c0181c0
  2. Aug 31, 2021