- Sep 02, 2021
-
-
Nico Weber authored
In https://reviews.llvm.org/D47480 I complained that there's no positive form of this flag, so let's add one :) https://gcc.gnu.org/PR29931 also has a pending patch to add the positive form to gcc (but there's admittedly not a lot of movement on that bug). This doesn't change any defaults. Differential Revision: https://reviews.llvm.org/D108818
-
Alexander Yermolovich authored
This is used by BOLT to do patching of DebugInfo section, and Line Table. Directly by using find, and through getAttrFieldOffsetForUnit. Reviewed By: dblaikie Differential Revision: https://reviews.llvm.org/D107874
-
Jon Chesterfield authored
The commandline flag to specify a particular openmp devicertl library currently errors like: ``` fatal error: cannot open file './runtimes/runtimes-bins/openmp/libomptarget': Is a directory ``` CommonArgs successfully appends the directory to the commandline args then mlink-builtin-bitcode rejects it. This patch is a point fix to that. If --libomptarget-amdgcn-bc-path=directory then append the expected name for the current architecture and go on as before. This is useful for test runners that don't hardcode the architecture. Reviewed By: jdoerfert Differential Revision: https://reviews.llvm.org/D109057 -
Sanjay Patel authored
isFreeToInvert allows min/max with 'not' on both operands, so easing the argument restriction catches the case where that operand has one use. We already handle the sub-patterns when there are less uses: https://alive2.llvm.org/ce/z/8Jatm_ ...but this is another step towards parity with the equivalent icmp+select idioms ( D98152 ). Differential Revision: https://reviews.llvm.org/D109059
-
Sanjay Patel authored
This mimics the code for the corresponding cmp-select idiom. This also prevents an infinite loop because isFreeToInvert does not match constant expressions. So this patch solves the same problem as D108814 and obsoletes it, but my main motivation is to enhance the pattern matching to allow more invertible ops. That change will be a follow-up patch on top of this one. Differential Revision: https://reviews.llvm.org/D109058
-
Arthur Eubanks authored
-
Arthur Eubanks authored
Introduced in D108788. These are clearer.
-
Adrian Prantl authored
The OutermostLoad condition is supposed to strip the outermost DW_OP_deref operation because dbg.declares are implicitly indirect. This patch makes sure the heuristic is only applied to dbg.declare intrinsics and only if the outermost instruction is a load. This was found while qualifying the latest Swift compiler rebranch. rdar://82037764
-
Craig Topper authored
See description in test. Reviewed By: frasercrmck Differential Revision: https://reviews.llvm.org/D108965
-
LLVM GN Syncbot authored
-
Jon Chesterfield authored
Using rpath instead of LD_LIBRARY_PATH to find libomp.so and libomptarget.so lets one rerun the already built test executables without setting environment variables and removes the risk of the test runner picking up different libraries to the developer debugging the failure. rpath usually means runpath, which is not transitive, so set runpath on libomptarget itself so that it can find the plugins located next to it, spelled $ORIGIN. This provides sufficient functionality to drop D102043 Reviewed By: tianshilei1992 Differential Revision: https://reviews.llvm.org/D109071
-
Artem Belevich authored
libdevice bitcode provided by NVIDIA is linked with clang/LLVM-generated IR which uses nvptx*-nvidia-cuda triple. We need to mark them as compatible. Differential Revision: https://reviews.llvm.org/D108835
-
Mark de Wever authored
This implements the struct `__format_arg_store` and its dependencies: * the class basic_format_arg, * the class basic_format_args, * the class basic_format_context, * the function make_format_args, * the function wmake_format_args, * the function visit_format_arg, * several Standard required typedefs. The following parts will be implemented in a later patch: * the child class `basic_format_arg::handle`, * the function `basic_format_arg::basic_format_arg(const T* p)`. The following extension has been implemented: * the class basic_format_arg supports `__[u]int128_t` on platform where libc++ supports 128 bit integrals. Implements parts of: * P0645 Text Formatting Completes: * LWG3371 visit_format_arg and make_format_args are not hidden friends * LWG3542 basic_format_arg mishandles basic_string_view with custom traits Note https://mordante.github.io/blog/2021/06/05/format.html gives a bit more information about the goals and non-goals of this initial patch serie...
-
Arthur Eubanks authored
This is part one of a couple of patches to fully rename these methods. I've made the mistake of assuming that these indexes are for parameters multiple times, but actually they're based off of a weird indexing scheme AttributeList::AttrIndex where 0 is the return value and ~0 is the function. Hopefully renaming these methods will make this clearer. Ideally users should use more specific methods like AttributeList::getFnAttr(). This patch simply adds the name that we want in the end. This is so the removal of the methods with the original names happens in a separate change to make it easier for downstream users. This touches all relevant methods in AttributeList, CallBase, and Function. Reviewed By: rnk Differential Revision: https://reviews.llvm.org/D108788
-
Thomas Lively authored
Previously extra wide v4f32 to v4f64 extending loads would be legalized to v2f32 to v2f64 extending loads, which would then be scalarized by legalization. (v2f32 to v2f64 extending loads not produced by legalization were already being emitted correctly.) Instead, mark v2f32 to v2f64 extending loads as legal and explicitly lower them using promote_low. This regresses the addressing modes supported for the extloads not produced by legalization, but that's a fine trade off for now. Differential Revision: https://reviews.llvm.org/D108496
-
Hongtao Yu authored
std::vector pointers can be invalided while growing. Using std::list instead.
-
Amara Emerson authored
When we have an any-extending FPR bank load, none of the tablegen patterns match and we fall back to the C++ selector. Like with the truncating stores that were fixed recently, the C++ wasn't able to handle it and ended up generating invalid copies between different size regclasses. This change adds handling for this case, splitting the load into a regular load and a SUBREG_TO_REG to extend it into the original wide destination reg.
-
natashaknk authored
[mlir][tosa] Small refactor to the functionality of Depthwise_Conv2D to add the bias at the end of the convolution Follow-up to the Conv2d and fully_connected lowering adjustments Reviewed By: rsuderman Differential Revision: https://reviews.llvm.org/D108949
-
Tyler Augustine authored
Builds on https://reviews.llvm.org/D107870 to support annotating intrinsics with alias.scope and noalias metadata. Reviewed By: arpith-jacob, ftynse Differential Revision: https://reviews.llvm.org/D109025
-
peter klausler authored
The combined initializers constructed from DATA statements and explicit static initialization in declarations needs to include derived type component default initializations, overriding those default values without complaint with values from explicit DATA statement or declaration initializations when they overlap. This also has to work for objects with storage association due to EQUIVALENCE. When storage association causes default component initializations to overlap, emit errors if and only if the values differ (See Fortran 2018 subclause 19.5.3, esp. paragraph 10). The f18 front-end has a module that analyzes and converts DATA statements into equivalent static initializers for objects. For storage-associated objects, compiler-generated objects are created that overlay the entire association and fill it with a combined initializer. This "data-to-inits" module already exists, and this patch is essentially extension and clean-up of its machinery to complete the job. Also: emit EQUIVALENCE to module files; mark compiler-created symbols and *don't* emit those to module files; check non-static EQUIVALENCE sets for conflicting default component initializations, so lowering doesn't have to check them or emit diagnostics. Differential Revision: https://reviews.llvm.org/D109022
-
Hongtao Yu authored
Adding the compiler support of MD5 CS profile based on pervious context split work D107299. A MD5 CS profile is about 40% smaller than the string-based extbinary profile. As a result, the compilation is 15% faster. There are a few conversion from real names to md5 names that have been made on the sample loader and context tracker side to get it work. Reviewed By: wenlei, wmi Differential Revision: https://reviews.llvm.org/D108342
-
Nikita Popov authored
The load store vectorizer currently uses isNoAlias() to determine whether memory-accessing instructions should prevent vectorization. However, this only works for loads and stores. Additionally, a couple of intrinsics like assume are special-cased to be ignored. Instead use getModRefInfo() to generically determine whether the instruction accesses/modifies the relevant location. This will automatically handle all inaccessiblememonly intrinsics correctly (as well as other calls that don't modref for other reasons). This requires generalizing the code a bit, as it was previously only considering loads and stored in particular. Differential Revision: https://reviews.llvm.org/D109020
-
- Sep 01, 2021
-
-
serge-sans-paille authored
Setting -fvisibility=hidden when compiling Target libs has the advantage of not being intrusive on the codebase, but it also sets the visibility of all functions within header-only component like ADT. In the end, we end up with some symbols with hidden visibility within llvm dylib (through the target libs), and some with external visibility (through other libs). This paves the way for subtle bugs like https://reviews.llvm.org/D101972 This patch explicitly set the visibility of some classes to `default` so that `llvm::Any` related symbols keep a `default` visibility. Indeed a template function with `default` visibility parametrized by a type with `hidden` visibility is granted `hidden` visibility, and we don't want this for the uniqueness of `llvm::Any::TypeId`. Differential Revision: https://reviews.llvm.org/D108943
-
hsmahesha authored
This reverts commit 50ad3478. Reviewed By: JonChesterfield Differential Revision: https://reviews.llvm.org/D109062
-
Kazu Hirata authored
-
Louis Dionne authored
There is a lot more we can do, in particular in <type_traits>, but this removes some workarounds that were gated on checking a specific compiler version. Differential Revision: https://reviews.llvm.org/D108923
-
Louis Dionne authored
Differential Revision: https://reviews.llvm.org/D109027
-
Louis Dionne authored
Clang used to support [[nodebug]] everywhere except on typedefs. Since we don't support such old Clangs anymore, we can get rid of _LIBCPP_NODEBUG_TYPE in favour of always using _LIBCPP_NODEBUG. Differential Revision: https://reviews.llvm.org/D108996
-
Louis Dionne authored
This doesn't impact the compile-time efficiency, but we get better diagnostics when an overload is disabled.
-
Teresa Johnson authored
We have a large compile showing occasional non-deterministic behavior that is due to DIArgList not being properly uniqued in some cases. I tracked this down to handleChangedOperands, for which there is a custom implementation for DIArgList, that does not take care of re-uniquing after updating the DIArgList Args, unlike the default version of handleChangedOperands for MDNode. Since the Args in the DIArgList form the key for the store, this seems to be occasionally breaking the lookup in that DenseSet. Specifically, when invoking DIArgList::get() from replaceVariableLocationOp, very occasionally it returns a new DIArgList object, when one already exists having the same exact Args pointers. This in turn causes a subsequent call to Instruction::isIdenticalToWhenDefined on those two otherwise identical DIArgList objects during a later pass to return false, leading to different IR in those rare cases. I modified DIArgList::handleChangedOperands to perform similar re-uniquing as the MDNode version used by other metadata node types. This also necessitated a change to the context destructor, since in some cases we end up with DIArgList as distinct nodes: DIArgList is the only metadata node type to have a custom dropAllReferences, so we need to invoke that version on DIArgList in the DistinctMDNodes store to clean it up properly. Differential Revision: https://reviews.llvm.org/D108968
-
Ivan Zhechev authored
Due to how the LIT deals with module files, this change stores and runs the scripts in their own temporary directory to prevent interference in-between different tests. It also makes ``test_symbols.py`` be more consistent with the other scripts. Reviewed By: Meinersbur, awarzynski Differential Revision: https://reviews.llvm.org/D107953
-
Jon Chesterfield authored
-
Andrej Korman authored
This change adds save-core functionality into the ObjectFileELF that enables saving minidump of a stopped process. This change is mainly targeting Linux running on x86_64 machines. Minidump should contain basic information needed to examine state of threads, local variables and stack traces. Full support for other platforms is not so far implemented. API tests are using LLDB's MinidumpParser. This relands commit aafa05e0, reverted in 1f986f60. Failed tests were fixed. Reviewed By: clayborg Differential Revision: https://reviews.llvm.org/D108233
-
Erich Keane authored
Discovered in SYCL, the field annotations were always cast to an i8*, which is an invalid bitcast for a pointer type with an address space. This patch makes sure that we create an intrinsic that takes a pointer to the correct address-space and properly do our casts. Differential Revision: https://reviews.llvm.org/D109003
-
Nico Weber authored
This reverts commit f0514a4d. Test fails on macOS: https://reviews.llvm.org/D107049#2976603
-
Joe Loser authored
`contiguous_iterator` requires the iterator type passed is either a pointer type or that the element type of the iterator is a complete object type. These constraints are not part of the current wording in defining the `contiguous_iterator` concept - adjust the concept to reflect this. Inspired from discussion at https://reviews.llvm.org/D108645. Reviewed By: #libc, ldionne Differential Revision: https://reviews.llvm.org/D108855
-
Florian Hahn authored
If MatchRegexp is an invalid regex, an error message will be printed using SourceManager::PrintMessage via AddRegExToRegEx. PrintMessage relies on the input being a StringRef into a string managed by SourceManager. At the moment, a StringRef to a std::string allocated in the caller of AddRegExToRegEx is passed. If the regex is invalid, this StringRef is passed to PrintMessage, where it will crash, because it does not point to a string managed via SourceMgr. This patch fixes the crash by turning MatchRegexp into a StringRef If we use MatchStr, we directly use that StringRef, which points into a string from SourceMgr. Otherwise, MatchRegexp gets assigned Format.getWildcardRegex(), which returns a std::string. To extend the lifetime, assign it to a std::string variable WildcardRegexp and assign MatchRegexp to a stringref to WildcardRegexp. WildcardRegexp should always be valid, so we should never have to print an error message via the SoureMgr I think...
-
Joe Loser authored
Remove tasks listed that refer to papers or issues that are marked complete in `libcxx/docs/Status/Cxx17Papers.csv` or `libcxx/docs/Status/Cxx17Issues.csv` Reviewed By: #libc, ldionne Differential Revision: https://reviews.llvm.org/D108856
-
Joe Loser authored
Feature test macro for `__cpp_lib_is_nothrow_convertible` was introduced in 466df171 but the LWG issue was not marked as `Complete` in the docs. Also, fix the formatting of `Complete` for LWG 3348. Reviewed By: ldionne, #libc Differential Revision: https://reviews.llvm.org/D108964
-