- Aug 03, 2020
-
-
Alex Zinenko authored
The current modeling of LLVM IR types in MLIR is based on the LLVMType class that wraps a raw `llvm::Type *` and delegates uniquing, printing and parsing to LLVM itself. This model makes thread-safe type manipulation hard and is being progressively replaced with a cleaner MLIR model that replicates the type system. Introduce a set of classes reflecting the LLVM IR type system in MLIR instead of wrapping the existing types. These are currently introduced as separate classes without affecting the dialect flow, and are exercised through a test dialect. Once feature parity is reached, the old implementation will be gradually substituted with the new one. Depends On D84171 Reviewed By: rriddle Differential Revision: https://reviews.llvm.org/D84339
-
Matt Arsenault authored
-
Matt Arsenault authored
There were various hacks used to try to avoid making s1 SGPR vs. s1 VCC ambiguous after constraining the register before we had a strategy to deal with this. This also attempted to handle undef operands, which are now illegal gMIR.
-
Matt Arsenault authored
Use pad with undef and unmerge with unused results. This is annoyingly similar to several other places in LegalizerHelper, but they're all slightly different.
-
Sanjay Patel authored
This reverts commit 2265d01f. Seeing bot failures after this change like: http://lab.llvm.org:8011/builders/clang-cmake-x86_64-sde-avx512-linux/builds/42586
-
Matt Arsenault authored
Should also apply this to the non-scalar buffer loads.
-
Simon Pilgrim authored
We already do this on AVX (+ for ZERO_EXTEND_VECTOR_INREG), but this enables it for all SSE targets - we attempted something similar back at rL357057 but hit issues with the ZERO_EXTEND_VECTOR_INREG handling (PR41249). I'm still looking at the vector-mul.ll regression - which is due to 32-bit targets performing the load as a f64, resulting in the shuffle combiner thinking it has to create a shuffle in the float domain.
-
Matt Arsenault authored
These should probably not be legal in the first place, but that might also be a pain.
-
Sanjay Patel authored
I tried to use m_Deferred() on this, but didn't find a clean way to do that. http://bugs.llvm.org/PR46955 https://alive2.llvm.org/ce/z/2h6QTq
-
Sanjay Patel authored
-
Simon Tatham authored
`clang/test/CodeGenCXX/fp16-mangle.cpp` tests pointers to __fp16, but if you give the `-fallow-half-arguments-and-returns` option, then clang can also leave an __fp16 unmodified as a function argument or return type. This regression test checks the name-mangling of that. Reviewed By: miyuki Differential Revision: https://reviews.llvm.org/D85010
-
Nicholas Guy authored
Fixes a regression caused by D82439, in which IT blocks were no longer being generated when -Oz is present. This was due to the CPSR register being marked as dead, while this case was not accounted for. Differential Revision: https://reviews.llvm.org/D83667
-
Haojian Wu authored
Differential Revision: https://reviews.llvm.org/D85028
-
Denys Petrov authored
Summary: `BaseMask` occupies the lowest bits. Effect of applying the mask is neutralized by right shift operation, thus making it useless. Fix: Remove a redundant bitwise operation. Differential Revision: https://reviews.llvm.org/D85026
-
Denys Petrov authored
Summary: Simplify functions SVal::getAsSymbolicExpression SVal::getAsSymExpr and SVal::getAsSymbol. After revision I concluded that `getAsSymbolicExpression` and `getAsSymExpr` repeat functionality of `getAsSymbol`, thus them can be removed. Fix: Remove functions SVal::getAsSymbolicExpression and SVal::getAsSymExpr. Differential Revision: https://reviews.llvm.org/D85034
-
Kadir Cetinkaya authored
This skips searching for `target` related flags in the existing args if we don't have a valid target to insert. Depends on D85076 Differential Revision: https://reviews.llvm.org/D85077
-
Georgii Rymar authored
This removes undesired `unwrapOrError` calls from printRelocations() methods. Differential revision: https://reviews.llvm.org/D84408
-
Georgii Rymar authored
This patch does the following: 1) Starts using YAML macro to reduce the number of YAML documents in tests. 2) Adds `#` before 'RUN'/`CHECK` lines in a few tests where it is missing. 3) Removes unused YAML keys. 4) Starts using `ENTSIZE=<none>` to simplify tests (see D84526). 5) Removes trailing white spaces in a few places. Differential revision: https://reviews.llvm.org/D85013
-
Alex Richardson authored
Not passing --clang would result in a python exception after this change: (TypeError: expected str, bytes or os.PathLike object, not NoneType) because the --clang argument default was only being populated in the initial argument parsing pass but not later on. Fix this by adding an argparse callback to set the default values. Reviewed By: vitalybuka, MaskRay Differential Revision: https://reviews.llvm.org/D84511
-
Tatyana Krasnukha authored
The lldb test-suite on Windows reports a 'CLEANUP ERROR' when attempting to kill an exited/detached process. This change makes ProcessWindows consistent with the other processes which only log the error. After this change a number of 'CLEANUP ERROR' messages are now removed. Differential Revision: https://reviews.llvm.org/D84957
-
Tatyana Krasnukha authored
Differential Revision: https://reviews.llvm.org/D84023
-
Alex Richardson authored
The check-* targets run ${Python3_EXECUTABLE} $BUILD/bin/llvm-lit, but running `./bin/llvm-lit $ARGS` from the build directory currently always uses "python" to run llvm-lit. On most systems this will be python2.7 even if we found python3 at CMake time. Reviewed By: compnerd Differential Revision: https://reviews.llvm.org/D84625 -
Alex Richardson authored
Otherwise we end up compiling in C++ mode and on FreeBSD /usr/include/stdatomic.h is not compatible with C++ since it uses _Bool. Reviewed By: guiand, eugenis, vitalybuka, emaste Differential Revision: https://reviews.llvm.org/D84510
-
Alex Richardson authored
See https://llvm.org/PR46862. This does not fix the underlying issue but at least it allows me to run check-all again without having to disable building compiler-rt. Reviewed By: #sanitizers, vitalybuka Differential Revision: https://reviews.llvm.org/D84650
-
Kadir Cetinkaya authored
The logic was using incorrect flag versions. For example: - `-target=` can't be a prefix, it must be `--target=`. - `--driver-mode` can't appear on its own, value must be attached to it. While fixing those, also changes the append logic to make use of new `--target=X` format instead of the legacy `-target X` version. In addition to that makes use of the OPTTable instead of hardcoded strings to make sure helper also gets updated if clang's options are modified. Differential Revision: https://reviews.llvm.org/D85076
-
Georgii Rymar authored
We have a `findSectionByName` helper that tries to find a section by it name. It is used in a few places, but never tested. I'd like to reuse this helper for a different place. For this, I've changed it to return Expected<> and now it doesn't use `unwrapOrErr` anymore. It also now a member of Dumper class and might report warnings. Differential revision: https://reviews.llvm.org/D84651
-
Ilya Golovenko authored
It is necessary to traverse children of unnamed declaration contexts to get symbols which are currently missing in document outline, e.g.: extern "C" { void foo(); } Reviewed By: kadircet Differential Revision: https://reviews.llvm.org/D84839 -
Georgii Rymar authored
It implements an approach suggested in the D84398 thread. With it the following: ``` Sections: - Name: .bar Type: SHT_PROGBITS Offset: [[MACRO=<none>]] ``` works just like the `Offset` key was not specified. It is useful for tests that want to have a default value for a field and to have a way to override it at the same time. Differential revision: https://reviews.llvm.org/D84526 -
Julian Gross authored
Added support for AllocaOps in Buffer Assignment. Differential Revision: https://reviews.llvm.org/D85017
-
Luboš Luňák authored
Differential revision: https://reviews.llvm.org/D85096
-
Florian Hahn authored
No widening decisions will be computed for instructions outside the loop. Do not try to get a widening decision. The load/store will be just a scalar load, so treating at as normal should be fine I think. Fixes PR46950. Reviewed By: dmgreen Differential Revision: https://reviews.llvm.org/D85087
-
Nicolas Vasilache authored
[mlir][Vector] Add transformation + pattern to split vector.transfer_read into full and partial copies. This revision adds a transformation and a pattern that rewrites a "maybe masked" `vector.transfer_read %view[...], %pad `into a pattern resembling: ``` %1:3 = scf.if (%inBounds) { scf.yield %view : memref<A...>, index, index } else { %2 = vector.transfer_read %view[...], %pad : memref<A...>, vector<...> %3 = vector.type_cast %extra_alloc : memref<...> to memref<vector<...>> store %2, %3[] : memref<vector<...>> %4 = memref_cast %extra_alloc: memref<B...> to memref<A...> scf.yield %4 : memref<A...>, index, index } %res= vector.transfer_read %1#0[%1#1, %1#2] {masked = [false ... false]} ``` where `extra_alloc` is a top of the function alloca'ed buffer of one vector. This rewrite makes it possible to realize the "always full tile" abstraction where vector.transfer_read operations are guaranteed to read from a padded full buffer. The extra work only occurs on the boundary tiles. Differential Revision: https://reviews.llvm.org/D84631 -
Raphael Isemann authored
Some build configurations don't use this static function.
-
Frederik Gossen authored
Differential Revision: https://reviews.llvm.org/D85027
-
Xing GUO authored
The value of `is64Bit` is initialized in the constructor body.
-
Shinji Okumura authored
This patch makes it possible to handle nonnull attribute violation at callsites in AAUndefinedBehavior. If null pointer is passed to callee at a callsite and the corresponding argument of callee has nonnull attribute, the behavior of the callee is undefined. In this patch, violations of argument nonnull attributes is only handled. But violations of returned nonnull attributes can be handled and I will implement that in a follow-up patch. Reviewed By: jdoerfert Differential Revision: https://reviews.llvm.org/D84733
-
Igor Kudrin authored
The patch restricts DIEDelta::SizeOf() to accept only DWARF forms that are actually used in the LLVM codebase. This should make the use of the class more explicit and help to avoid issues similar to fixed in D83958 and D84094. Differential Revision: https://reviews.llvm.org/D84095
-
Igor Kudrin authored
DIELabel can emit only 32- or 64-bit values, while it was created in some places with DW_FORM_udata, which implies emitting uleb128. Nevertheless, these places also expected to emit U32 or U64, but just used a misleading DWARF form. The patch updates those places to use more appropriate DWARF forms and restricts DIELabel::SizeOf() to accept only forms that are actually used in the LLVM codebase. Differential Revision: https://reviews.llvm.org/D84094
-
Igor Kudrin authored
DebugLocListIndex keeps the index of an entry list, not the offset. Differential Revision: https://reviews.llvm.org/D84093
-
Igor Kudrin authored
DIELocList is used with a limited number of DWARF forms, see the only place where it is instantiated, DwarfCompileUnit::addLocationList(). The patch marks the unexpected execution path in DIELocList::SizeOf() as unreachable, to reduce ambiguity. Differential Revision: https://reviews.llvm.org/D84092
-