- Feb 18, 2021
-
-
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
-
Jessica Paquette authored
Implementation is the same as G_SEXT_INREG. Differential Revision: https://reviews.llvm.org/D96899
-
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
-
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
-
AndreyChurbanov authored
-
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
-
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
-
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 -
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
-
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
-
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
-
Nico Weber authored
-
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
-
Mircea Trofin authored
-
Nico Weber authored
This already works in the cmake build. Differential Revision: https://reviews.llvm.org/D96889
-
Zixu Wang authored
Bump DIAG_SIZE_SEMA up by 500 to accommodate extra downstream diagnostics Differential Revision: https://reviews.llvm.org/D96888
-
Craig Topper authored
-
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
-
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
-
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.
-
William S. Moses authored
-
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
-
LLVM GN Syncbot authored
-
Alex Zinenko authored
Reviewed By: mehdi_amini Differential Revision: https://reviews.llvm.org/D96695
-
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) ```
-
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
-
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
-
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
-
Eugene Zhulenev authored
Will remove `vector.fma` operation in the followup CLs. Reviewed By: mehdi_amini Differential Revision: https://reviews.llvm.org/D96801
-
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
-
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' ```
-
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 -
Martin Storsjö authored
Differential Revision: https://reviews.llvm.org/D91177
-
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
-
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
-
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
-
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
-
Nico Weber authored
-
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
-
Nico Weber authored
-