1. Feb 18, 2021
    • Patrick Oppenlander's avatar
      [libc++abi] Add builtins to dynamic library link · 26a0aeba
      Patrick Oppenlander authored
      Otherwise libc++abi.so fails to link on arm with undefined references to
      some __aeabi_ builtins.
      
      Differential Revision: https://reviews.llvm.org/D96574
      26a0aeba
    • Jessica Paquette's avatar
      [GlobalISel] Implement computeKnownBits for G_ASSERT_SEXT · e6064a64
      Jessica Paquette authored
      Implementation is the same as G_SEXT_INREG.
      
      Differential Revision: https://reviews.llvm.org/D96899
      e6064a64
    • Jessica Paquette's avatar
      [GlobalISel] Implement computeNumSignBits for G_ASSERT_SEXT · 26fb0365
      Jessica Paquette authored
      Same implementation as G_SEXT_INREG.
      
      Add a testcase to combine-sext-inreg for a concrete example, and a testcase
      to KnownBitsTest.
      
      Differential Revision: https://reviews.llvm.org/D96897
      26fb0365
    • Fangrui Song's avatar
      [Driver] Clean up some Separate form options · 0c2bb6b4
      Fangrui Song authored
      Drop the `Separate` form of `-fmodule-name X`, `-fprofile-remapping-file X`, and `-frewrite-map-file X`.
      To the best of my knowledge they are not used. Their conventional Joined forms (`-fFOO=`) should be used instead.
      
      `-fdebug-compilation-dir X` is used in several places, e.g.  chromium/infra/goma.
      It is also advertised in http://blog.llvm.org/2019/11/deterministic-builds-with-clang-and-lld.html
      So we keep it but make the EQ form canonical and the Separate form an alias.
      
      Differential Revision: https://reviews.llvm.org/D96886
      0c2bb6b4
    • AndreyChurbanov's avatar
    • peter klausler's avatar
      [flang] Warn about useless explicit typing of intrinsics · b82a8c3f
      peter klausler authored
      Fortran 2018 explicitly permits an ignored type declaration
      for the result of a generic intrinsic function.  See the comment
      added to Semantics/expression.cpp for an explanation of why this
      is somewhat dangerous and worthy of a warning.
      
      Differential Revision: https://reviews.llvm.org/D96879
      b82a8c3f
    • Yusra Syeda's avatar
      [SystemZ] Separate LoZ ELF specifics in tablegen. · 8b624a31
      Yusra Syeda authored
      Separate the LoZ ELF calling convention in tablegen.
      This will make it easier to add the z/OS ABI in future patches.
      
      Reviewed By: uweigand
      
      Differential Revision: https://reviews.llvm.org/D96867
      8b624a31
    • Jessica Paquette's avatar
      [GlobalISel] Add G_ASSERT_SEXT · 60aa6464
      Jessica Paquette authored
      This adds a G_ASSERT_SEXT opcode, similar to G_ASSERT_ZEXT. This instruction
      signifies that an operation was already sign extended from a smaller type.
      
      This is useful for functions with sign-extended parameters.
      
      E.g.
      
      ```
      define void @foo(i16 signext %x) {
       ...
      }
      ```
      
      This adds verifier, regbankselect, and instruction selection support for
      G_ASSERT_SEXT equivalent to G_ASSERT_ZEXT.
      
      Differential Revision: https://reviews.llvm.org/D96890
      60aa6464
    • Aaron Green's avatar
      Bugfix for collecting features from very small DSOs. · 10993bf0
      Aaron Green authored
      During unit tests, it was observed that crafting an artificially small DSO could cause OOB memory to be accessed. This change fixes that (but again, the affected DSOs are unlikely to ever occur outside unit tests).
      
      Reviewed By: morehouse, charco
      
      Differential Revision: https://reviews.llvm.org/D94507
      10993bf0
    • Teresa Johnson's avatar
      [WPD][lld] Test handling of vtable definition from shared libraries · 3c4c2050
      Teresa Johnson authored
      Adds a lld test for a case that the handling added for dynamically
      exported symbols in 1487747e already
      fixes. Because isExportDynamic returns true when the symbol is
      SharedKind with default visibility, it will treat as dynamically
      exported and block devirtualization when the definition of a vtable
      comes from a shared library. This is desireable as it is dangerous to
      devirtualize in that case, since there could be hidden overrides in the
      shared library. Typically that happens when the shared library header
      contains available externally definitions, which applications can
      override. An example is std::error_category, which is overridden in LLVM
      and causing failures after a self build with WPD enabled, because
      libstdc++ contains hidden overrides of the virtual base class methods.
      
      The regular LTO case in the new test already worked, but there are
      2 fixes in this patch needed for the index-only case and the hybrid
      LTO case. For the index-only case, WPD should not simply ignore
      available externally vtables. A follow on fix will be made to clang to
      emit type metadata for those vtables, which the new test is modeling.
      For the hybrid case, we need to ensure when the module is split that any
      llvm.*used globals are cloned to the regular LTO split module so
      available externally vtable definitions are not prematurely deleted.
      
      Another follow on fix will add the equivalent gold test, which requires
      a small fix to the plugin to treat symbols in dynamic libraries the same
      way lld already is.
      
      Differential Revision: https://reviews.llvm.org/D96721
      3c4c2050
    • Sriraman Tallam's avatar
      Basic block sections should enable not function sections implicitly. · e7419163
      Sriraman Tallam authored
      Basic block sections enables function sections implicitly, this is not needed
      and is inefficient with "=list" option.
      
      We had basic block sections enable function sections implicitly in clang. This
      is particularly inefficient with "=list" option as it places functions that do
      not have any basic block sections in separate sections. This causes unnecessary
      object file overhead for large applications.
      
      This patch disables this implicit behavior. It only creates function sections
      for those functions that require basic block sections.
      
      This patch is the second of two patches and this patch removes the implicit
      enabling of function sections with basic block sections in clang.
      
      Differential Revision: https://reviews.llvm.org/D93876
      e7419163
    • Nico Weber's avatar
      fix comment typo to cycle bots · 279c5dc2
      Nico Weber authored
      279c5dc2
    • Heejin Ahn's avatar
      [WebAssemblly] Fix EHPadStack update in fixCallUnwindMismatches · da01a9db
      Heejin Ahn authored
      Updating `EHPadStack` with respect to `TRY` and `CATCH` instructions
      have to be done after checking all other conditions, not before. Because
      we did this before checking other conditions, when we encounter `TRY`
      and we want to record the current mismatching range, we already have
      popped up the entry from `EHPadStack`, which we need to access to record
      the range.
      
      The `baz` call in the added test needs try-delegate because the previous
      TRY marker placement for `quux` was placed before `baz`, because `baz`'s
      return value was stackified in RegStackify. If this wasn't stackified
      this try-delegate is not strictly necessary, but at the moment it is not
      easy to identify cases like this. I plan to transfer `nounwind`
      attributes from the LLVM IR to prevent cases like this. The call in the
      test does not have `unwind` attribute in order to test this bug, but in
      many cases of this pattern the previous call has `nounwind` attribute.
      
      Reviewed By: tlively
      
      Differential Revision: https://reviews.llvm.org/D96711
      da01a9db
    • Mircea Trofin's avatar
      3a030c2f
    • Nico Weber's avatar
      [gn build] make WindowsManifestMerger.cpp build fine with sysroot · 0dd2ffb3
      Nico Weber authored
      This already works in the cmake build.
      
      Differential Revision: https://reviews.llvm.org/D96889
      0dd2ffb3
    • Zixu Wang's avatar
      [NFC][clang] Bump up DIAG_SIZE_SEMA for downstream diagnostics · e320cf23
      Zixu Wang authored
      Bump DIAG_SIZE_SEMA up by 500 to accommodate extra downstream diagnostics
      
      Differential Revision: https://reviews.llvm.org/D96888
      e320cf23
    • Craig Topper's avatar
    • peter klausler's avatar
      [flang] Ensure that intrinsic procedures are PURE &/or ELEMENTAL · 452d7ebc
      peter klausler authored
      The intrinsic procedure table properly classify the various
      intrinsics, but the PURE and ELEMENTAL attributes that these
      classifications imply don't always make it to the utility
      predicates that test symbols for them, leading to spurious
      error messages in some contexts.  So set those attribute flags
      as appropriate in name resolution, using a new function to
      isolate the tests.
      
      An alternate solution, in which the predicates would query
      the intrinsic procedure table for these attributes on demand,
      was something I also tried, so that this information could
      come directly from an authoritative source; but it would have
      required references to the intrinsic table to be passed along
      on too many seemingly unrelated APIs and ended up looking messy.
      
      Several symbol table tests needed to have their expected outputs
      augmented with the PURE and ELEMENTAL flags.  Some bogus messages
      that were flagged as such in test/Semantics/doconcurrent01.f90 were
      removed, since they are now correctly not emitted.
      
      Differential Revision: https://reviews.llvm.org/D96878
      452d7ebc
    • Derek Schuff's avatar
      [WebAssembly] Do not use EHCatchret symbols with wasm EH · 1f9e551a
      Derek Schuff authored
      D94835 added support for WinEH to export public symbols pointing to
      basic blocks which are catchret targets for use with Windows CET.
      Wasm currently doesn't support public symbols to non-function code
      addresses (they get treated like new functions in asm but then don't
      lower to object files correctly).
      It created them unconditionally for all catchret targets.
      
      This change disables those symbols unless the exceptionHandlingType
      is WinEH (since they aren't used with ExceptionHandling::Wasm)
      
      Differential Revision: https://reviews.llvm.org/D96824
      1f9e551a
    • Craig Topper's avatar
      [RISCV] Use bits<7> instead of bits<11> for the EEW field size in the... · 799f7865
      Craig Topper authored
      [RISCV] Use bits<7> instead of bits<11> for the EEW field size in the RISCVZvlsseg searchable table. NFCI
      
      We only support 8, 16, 32, and 64 for EEW. These only need 7 bits
      to represent.
      799f7865
    • William S. Moses's avatar
      [SROA] Amend failing test from D95826 · 892d2822
      William S. Moses authored
      892d2822
    • Nico Weber's avatar
      sysroot.py: add support for non-darwin platforms · 6073f87d
      Nico Weber authored
      CMAKE_SYSROOT works fine here, and `sysroot.py make-fake`
      borders on trivial here, but I suppose it's still nice
      to have a consistent script to set these up across platforms.
      
      And these are the platforms where we can do real sysroot management one
      day.
      
      Differential Revision: https://reviews.llvm.org/D96882
      6073f87d
    • LLVM GN Syncbot's avatar
      [gn build] Port c28622fb · 14bda035
      LLVM GN Syncbot authored
      14bda035
    • Alex Zinenko's avatar
      [mlir] silence unused-function warnings in table-generated code · 4a3473ff
      Alex Zinenko authored
      Reviewed By: mehdi_amini
      
      Differential Revision: https://reviews.llvm.org/D96695
      4a3473ff
    • Vedant Kumar's avatar
      Revert "[SampleFDO] Reapply: Refactor SampleProfile.cpp" · c28622fb
      Vedant Kumar authored
      Revert "[SampleFDO] Add missing #includes to unbreak modules build after D96455"
      
      This reverts commit c73cbf21.
      
      Revert "[SampleFDO] Fix MSVC "namespace uses itself" warning (NFC)"
      
      This reverts commit a23e6b32.
      
      Revert "[SampleFDO] Reapply: Refactor SampleProfile.cpp"
      
      This reverts commit 6fd5ccff.
      
      Still seeing link failures when building llc (or other tools), due to
      the new SampleProfileLoaderBaseImpl.h containing definitions that get
      duplicated across multiple TU's.
      
      ```
      duplicate symbol 'llvm::SampleProfileLoaderBaseImpl::findEquivalenceClasses(llvm::Function&)' in:
          tools/llc/CMakeFiles/llc.dir/llc.cpp.o
          lib/libLLVMInstCombine.a(InstCombineVectorOps.cpp.o)
      duplicate symbol 'llvm::SampleProfileLoaderBaseImpl::buildEdges(llvm::Function&)' in:
          tools/llc/CMakeFiles/llc.dir/llc.cpp.o
          lib/libLLVMInstCombine.a(InstCombineVectorOps.cpp.o)
      duplicate symbol 'llvm::SampleProfileLoaderBaseImpl::computeDominanceAndLoopInfo(llvm::Function&)' in:
          tools/llc/CMakeFiles/llc.dir/llc.cpp.o
          lib/libLLVMInstCombine.a(InstCombineVectorOps.cpp.o)
      duplicate symbol 'llvm::SampleProfileLoaderBaseImpl::getFunctionLoc(llvm::Function&)' in:
          tools/llc/CMakeFiles/llc.dir/llc.cpp.o
          lib/libLLVMInstCombine.a(InstCombineVectorOps.cpp.o)
      duplicate symbol 'llvm::SampleProfileLoaderBaseImpl::getBlockWeight(llvm::BasicBlock const*)' in:
          tools/llc/CMakeFiles/llc.dir/llc.cpp.o
          lib/libLLVMInstCombine.a(InstCombineVectorOps.cpp.o)
      duplicate symbol 'llvm::SampleProfileLoaderBaseImpl::printBlockWeight(llvm::raw_ostream&, llvm::BasicBlock const*) const' in:
          tools/llc/CMakeFiles/llc.dir/llc.cpp.o
          lib/libLLVMInstCombine.a(InstCombineVectorOps.cpp.o)
      duplicate symbol 'llvm::SampleProfileLoaderBaseImpl::printBlockEquivalence(llvm::raw_ostream&, llvm::BasicBlock const*)' in:
          tools/llc/CMakeFiles/llc.dir/llc.cpp.o
          lib/libLLVMInstCombine.a(InstCombineVectorOps.cpp.o)
      duplicate symbol 'llvm::SampleProfileLoaderBaseImpl::printEdgeWeight(llvm::raw_ostream&, std::__1::pair<llvm::BasicBlock const*, llvm::BasicBlock const*>)' in:
          tools/llc/CMakeFiles/llc.dir/llc.cpp.o
          lib/libLLVMInstCombine.a(InstCombineVectorOps.cpp.o)
      ```
      c28622fb
    • Heejin Ahn's avatar
      [WebAssembly] Change catch_all's opcode · 7c594bab
      Heejin Ahn authored
      We decided to change `catch_all`'s opcode from 0x05, which is the same
      as `else`, to 0x19, to avoid some complicated handling in the tools.
      
      See: https://github.com/WebAssembly/exception-handling/issues/147
      
      Reviewed By: sbc100
      
      Differential Revision: https://reviews.llvm.org/D96863
      7c594bab
    • Craig Topper's avatar
      [RISCV] Merge the handlers for masked and unmasked segment loads/stores. · d4353a31
      Craig Topper authored
      A lot of the code for the masked and unmasked is the same. This
      patch adds a boolean to handle the differences so we can share
      the code.
      
      Differential Revision: https://reviews.llvm.org/D96841
      d4353a31
    • Craig Topper's avatar
      [RISCV] Merge the vsetvli and vsetvlimax intrinsic selection · 6f30d003
      Craig Topper authored
      These have very similar code just with a different number of
      operands and handling for vsetivl.
      
      Differential Revision: https://reviews.llvm.org/D96834
      6f30d003
    • Eugene Zhulenev's avatar
      [mlir] Add fma operation to std dialect · 519f5917
      Eugene Zhulenev authored
      Will remove `vector.fma` operation in the followup CLs.
      
      Reviewed By: mehdi_amini
      
      Differential Revision: https://reviews.llvm.org/D96801
      519f5917
    • Dmitry Vyukov's avatar
      tsan: fix mmap_lots test · fb19400d
      Dmitry Vyukov authored
      If tsan runtime will try to allocate something during exit handling,
      the allocation will fail because there is no VA whatsoever.
      It's observed to fail with the following error in some cases:
      failed to allocate 0x1000 (4096) bytes of DTLS_NextBlock.
      So terminate the process immediately.
      
      Reviewed-in: https://reviews.llvm.org/D96874
      fb19400d
    • Vedant Kumar's avatar
      [SampleFDO] Add missing #includes to unbreak modules build after D96455 · c73cbf21
      Vedant Kumar authored
      Bot: http://green.lab.llvm.org/green/view/LLDB/job/lldb-cmake/28999
      
      ```
      /Users/buildslave/jenkins/workspace/lldb-cmake/llvm-project/llvm/include/llvm/Transforms/Utils/SampleProfileLoaderBaseImpl.h:124:19: error: missing '#include "llvm/Analysis/PostDominators.h"'; 'PostDominatorTree' must be declared before it is used
        std::unique_ptr<PostDominatorTree> PDT;
                        ^
      /Users/buildslave/jenkins/workspace/lldb-cmake/llvm-project/llvm/include/llvm/Analysis/PostDominators.h:28:7: note: declaration here is not visible
      class PostDominatorTree : public PostDomTreeBase<BasicBlock> {
            ^
      While building module 'LLVM_Transforms' imported from /Users/buildslave/jenkins/workspace/lldb-cmake/llvm-project/llvm/lib/Transforms/CFGuard/CFGuard.cpp:15:
      In file included from <module-includes>:191:
      /Users/buildslave/jenkins/workspace/lldb-cmake/llvm-project/llvm/include/llvm/Transforms/Utils/SampleProfileLoaderBaseImpl.h:125:19: error: missing '#include "llvm/Analysis/LoopInfo.h"'; 'LoopInfo' must be declared before it is used
        std::unique_ptr<LoopInfo> LI;
                        ^
      /Users/buildslave/jenkins/workspace/lldb-cmake/llvm-project/llvm/include/llvm/Analysis/LoopInfo.h:1079:7: note: declaration here is not visible
      class LoopInfo : public LoopInfoBase<BasicBlock, Loop> {
            ^
      While building module 'LLVM_Transforms' imported from /Users/buildslave/jenkins/workspace/lldb-cmake/llvm-project/llvm/lib/Transforms/CFGuard/CFGuard.cpp:15:
      In file included from <module-includes>:191:
      /Users/buildslave/jenkins/workspace/lldb-cmake/llvm-project/llvm/include/llvm/Transforms/Utils/SampleProfileLoaderBaseImpl.h:149:3: error: missing '#include "llvm/Analysis/OptimizationRemarkEmitter.h"'; 'OptimizationRemarkEmitter' must be declared before it is used
        OptimizationRemarkEmitter *ORE = nullptr;
        ^
      /Users/buildslave/jenkins/workspace/lldb-cmake/llvm-project/llvm/include/llvm/Analysis/OptimizationRemarkEmitter.h:33:7: note: declaration here is not visible
      class OptimizationRemarkEmitter {
            ^
      /Users/buildslave/jenkins/workspace/lldb-cmake/llvm-project/llvm/lib/Transforms/CFGuard/CFGuard.cpp:15:10: fatal error: could not build module 'LLVM_Transforms'
      ```
      c73cbf21
    • Jonas Devlieghere's avatar
      [lldb] Improve error message for modules with dots or dashes · d6e80578
      Jonas Devlieghere authored
      LLDB does not like to import Python files with dashes or dots in their
      name. While the former are technically allowed, it is discouraged. Dots
      are allowed for subpackages but not in module names. This patch improves
      the user experience by printing a useful error.
      
      Before this patch:
      
        error: module importing failed: SyntaxError('invalid syntax',
        ('<string>', 1, 11, 'import foo-bar\n'))
      
      After this patch:
      
        error: module importing failed: Python discourages dashes in module
        names: foo-bar
      
      rdar://74263511
      
      [1] https://www.python.org/dev/peps/pep-0008/#package-and-module-names
      
      Differential revision: https://reviews.llvm.org/D96833
      d6e80578
    • Martin Storsjö's avatar
      8a783e68
    • Marianne Mailhot-Sarrasin's avatar
      [Pipeliner] Fixed optimization remarks and debug dumps Initiation · f0ec9f1b
      Marianne Mailhot-Sarrasin authored
      Interval value
      
      The II value was incremented before exiting the loop, and therefor when
      used in the optimization remarks and debug dumps it did not reflect the
      initiation interval actually used in Schedule.
      
      Differential Revision: https://reviews.llvm.org/D95692
      f0ec9f1b
    • William S. Moses's avatar
      [SROA] Propagate correct TBAA/TBAA Struct offsets · 40862b1a
      William S. Moses authored
      SROA does not correctly account for offsets in TBAA/TBAA struct metadata.
      This patch creates functionality for generating new MD with the corresponding
      offset and updates SROA to use this functionality.
      
      Differential Revision: https://reviews.llvm.org/D95826
      40862b1a
    • David Green's avatar
      [NPM][LTO] Update buildLTODefaultPipeline to be more in-line with the old pass manager · 908ac47e
      David Green authored
      The NPM LTO pipeline has a lot of fixme's and missing passes, causing a
      lot of regressions after the switch in c70737ba. Notably unrolling and
      vectorization were both disabled, but many other passes are missing
      compared to the old pass manager. This attempt to enable the most
      obvious missing passes like the unroller, vectorization and other loop
      passes, fixing the existing FIXME comments.
      
      Differential Revision: https://reviews.llvm.org/D96780
      908ac47e
    • Ta-Wei Tu's avatar
      [NFC] Refactor LoopInterchange into a loop-nest pass · 0eeaec2a
      Ta-Wei Tu authored
      This is the preliminary patch of converting `LoopInterchange` pass to a loop-nest pass and has no intended functional change.
      Changes that are not loop-nest related are split to D96650.
      
      Reviewed By: Whitney
      
      Differential Revision: https://reviews.llvm.org/D96644
      0eeaec2a
    • Nico Weber's avatar
      fix comment typo to cycle bots · 872efb0b
      Nico Weber authored
      872efb0b
    • Sjoerd Meijer's avatar
      [LSR] Add a flag that overrides the target's preferred addressing mode · f78aa8b2
      Sjoerd Meijer authored
      This adds a new flag -lsr-preferred-addressing-mode to override the target's
      preferred addressing mode. It replaces flag -lsr-backedge-indexing, which is
      equivalent to preindexed addressing that is one of the options that
      -lsr-preferred-addressing-mode accepts.
      
      Differential Revision: https://reviews.llvm.org/D96855
      f78aa8b2
    • Nico Weber's avatar
      fix comment typo to cycle bots · cf59ffbf
      Nico Weber authored
      cf59ffbf