- Oct 06, 2021
-
-
Lang Hames authored
The operand value is sign extended, so the test broke when sections were re-ordered. The new test should be robust to reorderings.
-
Mehdi Amini authored
Stop stripping the `std.` prefix when printing operations in a region with a defined default dialect This fixes round-trip / ambiguity when an operation in the standard dialect would have the same name as an operation in the default dialect. Differential Revision: https://reviews.llvm.org/D111204
-
Philip Reames authored
-
Philip Reames authored
-
kpyzhov authored
Differential Revision: https://reviews.llvm.org/D110337
-
Philip Reames authored
Core changes are: Be explicit about desired balance between missing true positives and reporting false positives. Mention the opt-out mechanism. Provide links to background, and give description of who to contact if needed. Differential Revision: https://reviews.llvm.org/D110873
-
Philip Reames authored
-
Carl Ritson authored
Without this change _term instructions can be removed during critical edge splitting. Reviewed By: foad Differential Revision: https://reviews.llvm.org/D111126
-
Louis Dionne authored
In basic_string and vector, we've been encapsulating all exception throwing code paths in helper functions of a base class, which are defined in the compiled library. For example, __vector_base_common defines two methods, __throw_length_error() and __throw_out_of_range(), and the class is externally instantiated in the library. This was done a long time ago, but after investigating, I believe the goal of the current design was to: 1. Encapsulate the code to throw an exception (which is non-trivial) in an externally-defined function so that the important code paths that call it (e.g. vector::at) are free from that code. Basically, the intent is for the "hot" code path to contain a single conditional jump (based on checking the error condition) to an externally-defined function, which handles all the exception-throwing business. 2. Avoid defining this exception-throwing function once per instantiation of the class template. In other words, we want a single copy of __throw_length_error even if we have vector<int>, vector<char>, etc. 3. Encapsulate the passing of the container-specific string (i.e. "vector" and "basic_string") to the underlying exception-throwing function so that object files don't contain those duplicated string literals. For example, we'd like to have a single "vector" string literal for passing to `std::__throw_length_error` in the library, instead of having one per translation unit. However, the way this is achieved right now has two problems: - Using a base class and exporting it is really weird - I've been confused about this ever since I first saw it. It's just a really unusual way of achieving the above goals. Also, it's made even worse by the fact that the definitions of __throw_length_error and __throw_out_of_range appear in the headers despite always being intended to be defined in the compiled library (via the extern template instantiation). - We end up exporting those functions as weak symbols, which isn't great for load times. Instead, it would be better to export those as strong symbols from the library. This patch fixes those issues while retaining ABI compatibility (e.g. we still export the exact same symbols as before). Note that we need to keep the base classes as-is to avoid breaking the ABI of someone who might inherit from std::basic_string or std::vector. Differential Revision: https://reviews.llvm.org/D111173
-
Heejin Ahn authored
This removes `WasmTagType`. `WasmTagType` contained an attribute and a signature index: ``` struct WasmTagType { uint8_t Attribute; uint32_t SigIndex; }; ``` Currently the attribute field is not used and reserved for future use, and always 0. And that this class contains `SigIndex` as its property is a little weird in the place, because the tag type's signature index is not an inherent property of a tag but rather a reference to another section that changes after linking. This makes tag handling in the linker also weird that tag-related methods are taking both `WasmTagType` and `WasmSignature` even though `WasmTagType` contains a signature index. This is because the signature index changes in linking so it doesn't have any info at this point. This instead moves `SigIndex` to `struct WasmTag` itself, as we did for `struct WasmFunction` in D111104. In this CL, in lib/MC and lib/Object, this now treats tag types in the same way as function types. Also in YAML, this removes `struct Tag`, because now it only contains the tag index. Also tags set `SigIndex` in `WasmImport` union, as functions do. I think this makes things simpler and makes tag handling more in line with function handling. These two shares similar properties in that both of them have signatures, but they are kind of nominal so having the same signature doesn't mean they are the same element. Also a drive-by fix: the reserved 'attirubute' part's encoding changed from uleb32 to uint8 a while ago. This was fixed in lib/MC and lib/Object but not in YAML. This doesn't change object files because the field's value is always 0 and its encoding is the same for the both encoding. This is effectively NFC; I didn't mark it as such just because it changed YAML test results. Reviewed By: sbc100, tlively Differential Revision: https://reviews.llvm.org/D111086
-
Louis Dionne authored
This is less brittle than hand-picking the substitutions that we pass to the test, since a config could theorically use non-base substitutions as well (such as defining %{flags} in terms of another substitution like %{include}). Also, print the decoded substitutions, which makes it much easier to debug the test when it fails. Differential Revision: https://reviews.llvm.org/D111179
-
Louis Dionne authored
That makes it possible to store that value in a CMake cache if needed. Differential Revision: https://reviews.llvm.org/D110843
-
Diego Caballero authored
This patch extends Linalg core vectorization with support for min/max reductions in linalg.generic ops. It enables the reduction detection for min/max combiner ops. It also renames MIN/MAX combining kinds to MINS/MAXS to make the sign explicit for floating point and signed integer types. MINU/MAXU should be introduce din the future for unsigned integer types. Reviewed By: pifon2a, ThomasRaoux Differential Revision: https://reviews.llvm.org/D110854
-
Zequan Wu authored
-
Sanjay Patel authored
This is noted as a regression in: https://llvm.org/PR52077
-
Sanjay Patel authored
-
Heejin Ahn authored
Also does some refactoring. Reviewed By: sbc100 Differential Revision: https://reviews.llvm.org/D111101
-
- Oct 05, 2021
-
-
Philip Reames authored
-
Philip Reames authored
These are meant to check a future patch which recurses through operands of SCEVs, but because all SCEVs are trivially bounded by function entry, we need to arrange the trivial scope not to be valid. (i.e. we specifically need a lower defining scope)
-
Mircea Trofin authored
This also removes the need to disable the mandatory inlining phase in tests. In a departure from the previous remark, we don't output a 'cost' in this case, because there's no such thing. We just report that inlining happened because of the attribute. Differential Revision: https://reviews.llvm.org/D110891
-
Louis Dionne authored
This was most likely an oversight, since we're running all other jobs on the new configs. Differential Revision: https://reviews.llvm.org/D111168
-
Aaron Ballman authored
A heading wasn't underlined properly, and two links share the same text and so they should use an anonymous hyperlink instead of a named one.
-
Aaron Ballman authored
This support was landed in 424733c1.
-
Sanjay Patel authored
This removes repeated calls to m_Not, so hopefully a little more efficient. Also, we may need to enhance some of these blocks to allow logical and/or (select of bools).
-
Sam Clegg authored
This is important for the cases where new symbols can be introduced during LTO. Specifically this happens for during TLS-lowering where references to `__tls_base` can be introduced. Fixes: https://github.com/emscripten-core/emscripten/issues/12489 Differential Revision: https://reviews.llvm.org/D111171
-
Nikita Popov authored
If there are no nowrap flags, then we don't need to determine whether propagating flags is safe -- it will make no difference.
-
Philip Reames authored
-
Vitaly Buka authored
We don't need to check for equality, we need to check that storage is large enough.
-
Vitaly Buka authored
Reviewed By: morehouse Differential Revision: https://reviews.llvm.org/D111118
-
Jonas Devlieghere authored
JSON crashlogs normally start with a single line of meta data that we strip unconditionally. Some producers started omitting the meta data which tripped up crashlog. Be more resilient by only removing the first line when we know it really is meta data. rdar://82641662
-
Roman Lebedev authored
-
Valentin Clement authored
Add the external name conversion pass needed for compiler interoperability. This pass convert the Flang internal symbol name to the common gfortran convention. Clean up old passes without implementation in the Passes.ts file so the project and fir-opt can build correctly. This patch is part of the upstreaming effort from fir-dev branch. Reviewed By: schweitz Differential Revision: https://reviews.llvm.org/D111057
-
Louis Dionne authored
For consistency with the other handlers, and because requiring constant initialization whenever we can is a good thing. Differential Revision: https://reviews.llvm.org/D110866
-
Lei Zhang authored
Reviewed By: ThomasRaoux Differential Revision: https://reviews.llvm.org/D111143
-
peter klausler authored
Generalize the code that folds FINDLOC to also handle folding for MAXLOC and MINLOC. Differential Revision: https://reviews.llvm.org/D110951
-
Philip Reames authored
Behavior wise, this patch should be mostly NFC. The only behavior difference known is that on the isSCEVExprNeverPoison path we'll consider a bound imposed by the SCEVable operands (if any). Algorithmically, it's an invert of the existing code. Previously, we checked for each operand if we could find a bound, then checked for must-execute given that bound. With the patch, we use dominance to refine the innermost bound, then check must execute once. The interesting case is when we have multiple unknowns within a single basic block. While both dominance and must-execute are worst-case linear walks within the block, only dominance is cached. As such, refining based on dominance should be more efficient.
-
River Riddle authored
This avoids keeping references to passes that may be freed by the time that the pass manager has finished executing (in the non-crash case). Fixes PR#52069 Differential Revision: https://reviews.llvm.org/D111106
-
Joe Loser authored
Some tests repeat the definition of `DELETE_FUNCTION` macro locally. However, it's not even requred to guard against in the C++03 case since Clang supports `= delete;` in C++03 mode. A warning is issued but `libc++` tests run with `-Wno-c++11-extensions`, so this isn't an issue. Since we don't support other compilers in C++03 mode, `= delete;` is always available for use. As such, inline all calls of `DELETE_FUNCTION` to use `= delete;`. Reviewed By: ldionne, #libc Differential Revision: https://reviews.llvm.org/D111148
-
Rob Suderman authored
Unsigned integers need to be handled for cast to floating point. Reviewed By: NatashaKnk Differential Revision: https://reviews.llvm.org/D111102
-
Amy Huang authored
We're currently using address spaces to implement __ptr32/__ptr64 attributes; this patch fixes a bug where clang doesn't allow types with different pointer size attributes to be compared. Fixes https://bugs.llvm.org/show_bug.cgi?id=51889 Differential Revision: https://reviews.llvm.org/D110670
-