- Nov 13, 2020
-
-
Akira Hatanaka authored
continuing the loop This fixes a bug introduced in c6f1713c.
-
Lang Hames authored
-
Lang Hames authored
-
Lang Hames authored
implementation. This patch aims to improve support for out-of-process JITing using OrcV2. It introduces two new class templates, OrcRPCTargetProcessControlBase and OrcRPCTPCServer, which together implement the TargetProcessControl API by forwarding operations to an execution process via an Orc-RPC Endpoint. These utilities are used to implement out-of-process JITing from llvm-jitlink to a new llvm-jitlink-executor tool. This patch also breaks the OrcJIT library into three parts: -- OrcTargetProcess: Contains code needed by the JIT execution process. -- OrcShared: Contains code needed by the JIT execution and compiler processes -- OrcJIT: Everything else. This break-up allows JIT executor processes to link against OrcTargetProcess and OrcShared only, without having to link in all of OrcJIT. Clients executing JIT'd code in-process should start linking against OrcTargetProcess as well as OrcJIT. In the near future these changes will enable: -- Removal of the OrcRemoteTargetClient/OrcRemoteTargetServer class templates which provided similar functionality in OrcV1. -- Restoration of Chapter 5 of the Building-A-JIT tutorial series, which will serve as a simple usage example for these APIs. -- Implementation of lazy, cross-target compilation in lli's -jit-kind=orc-lazy mode.
-
Jameson Nash authored
This option was in a rather convoluted place, causing global parameters to be set in awkward and undesirable ways to try to account for it indirectly. Add tests for the -disable-debug-info option and ensure we don't print unintended markers from unintended places. Reviewed By: dstenb Differential Revision: https://reviews.llvm.org/D91083
-
Craig Topper authored
This was a mistake introduced in D91294. I'm not sure how to exercise this with the existing code, but I hit it while trying some follow up experiments.
-
Craig Topper authored
We can't store garbage in the unused bits. It possible that something like zextload from i1/i2/i4 is created to read the memory. Those zextloads would be legalized assuming the extra bits are 0. I'm not sure that the code in lowerStore is executed for the v1i1/v2i1/v4i1 case. It looks like the DAG combine in combineStore may have converted them to v8i1 first. And I think we're missing some cases to avoid going to the stack in the first place. But I don't have time to investigate those things at the moment so I wanted to focus on the correctness issue. Should fix PR48147. Reviewed By: RKSimon Differential Revision: https://reviews.llvm.org/D91294
-
Max Kazantsev authored
If we cannot prove that the check is trivially true, but can prove that it either fails on the 1st iteration or never fails, we can replace it with first iteration check. Differential Revision: https://reviews.llvm.org/D88527 Reviewed By: skatkov
-
Richard Smith authored
when printing the name of a member of a class template specialization.
-
Mehdi Amini authored
07f1047f changed the CMake detection to use find_package(Python3 ... but didn't update the lit configuration to use the expected Python3_EXECUTABLE cmake variable to point to the interpreter path. This resulted in an empty path on MacOS.
-
Philip Reames authored
-
Shilei Tian authored
Currently the affinity format string has initial value. When users set the format via OMP_AFFINITY_FORMAT, it will overwrite the format string. However, when copying the format, the tailing null is missing. As a result, if the user format string is shorter than default value, the remaining part in the default value still makes effort. This bug is not exposed because the test case doesn't check the end of a string. It only checks whether given output "contains" the check string. Reviewed By: AndreyChurbanov Differential Revision: https://reviews.llvm.org/D91309
-
Michael Liao authored
- If an aggregate argument is indirectly accessed within kernels, direct passing results in unpromotable `alloca`, which degrade performance significantly. InferAddrSpace pass is enhanced in [D91121](https://reviews.llvm.org/D91121) to take the assumption that generic pointers loaded from the constant memory could be regarded global ones. The need for the coercion on aggregate arguments is mitigated. Differential Revision: https://reviews.llvm.org/D89980
-
Michael Kruse authored
-
Sanjay Patel authored
There might be some demanded/known bits way to generalize this, but I'm not seeing it right now. This came up as a regression when I was looking at a different demanded bits improvement. https://rise4fun.com/Alive/5fl Name: general Pre: ((-1 << countTrailingZeros(C1)) & C2) == 0 %a1 = add i8 %x, C1 %a2 = and i8 %x, C2 %r = sub i8 %a1, %a2 => %r = and i8 %a1, ~C2 Name: test 1 %a1 = add i8 %x, 192 %a2 = and i8 %x, 10 %r = sub i8 %a1, %a2 => %r = and i8 %a1, -11 Name: test 2 %a1 = add i8 %x, -108 %a2 = and i8 %x, 3 %r = sub i8 %a1, %a2 => %r = and i8 %a1, -4
-
Sanjay Patel authored
-
Rahul Joshi authored
- Move isSupportedMemRefType() to ConvertToLLVMPatterns and check if the memref element type is supported there. Differential Revision: https://reviews.llvm.org/D91374
-
peter klausler authored
Differential Revision: https://reviews.llvm.org/D86556
-
Jonas Devlieghere authored
Display null pointer as `nullptr`, `nil` and `NULL` for C++, Objective-C/Objective-C++ and C respectively. The original motivation for this patch was to display a null std::string pointer as nullptr instead of "", but the fix seemed generic enough to be done for all summary providers. Differential revision: https://reviews.llvm.org/D77153
-
Stanislav Mekhanoshin authored
Differential Revision: https://reviews.llvm.org/D91110
-
Nico Weber authored
-
- Nov 12, 2020
-
-
Sean Silva authored
The previous code defined it as allocating a new memref for its result. However, this is not how it is treated by the dialect conversion framework, that does the equivalent of inserting and folding it away internally (even independent of any canonicalization patterns that we have defined). The semantics as they were previously written were also very constraining: Nontrivial analysis is needed to prove that the new allocation isn't needed for correctness (e.g. to avoid aliasing). By removing those semantics, we avoid losing that information. Differential Revision: https://reviews.llvm.org/D91382
-
Sean Silva authored
We lower them to a std.global_memref (uniqued by constant value) + a std.get_global_memref to produce the corresponding memref value. This allows removing Linalg's somewhat hacky lowering of tensor constants, now that std properly supports this. Differential Revision: https://reviews.llvm.org/D91306
-
Sean Silva authored
It was incorrect in the presence of a tensor argument with multiple uses. The bufferization of subtensor_insert was writing into a converted memref operand, but there is no guarantee that the converted memref for that operand is safe to write into. In this case, the same converted memref is written to in-place by the subtensor_insert bufferization, violating the tensor-level semantics. I left some comments in a TODO about ways forward on this. I will be working actively on this problem in the coming days. Differential Revision: https://reviews.llvm.org/D91371
-
Jessica Paquette authored
Select the following: - G_SELECT cc, 0, 1 -> CSINC zreg, zreg, cc - G_SELECT cc 0, -1 -> CSINV zreg, zreg cc - G_SELECT cc, 1, f -> CSINC f, zreg, inv_cc - G_SELECT cc, -1, f -> CSINV f, zreg, inv_cc - G_SELECT cc, t, 1 -> CSINC t, zreg, cc - G_SELECT cc, t, -1 -> CSINC t, zreg, cc (IR example: https://godbolt.org/z/YfPna9) These correspond to a bunch of the AArch64csel patterns in AArch64InstrInfo.td. Unfortunately, it doesn't seem like we can import patterns that use NZCV like those ones do. E.g. ``` def : Pat<(AArch64csel GPR32:$tval, (i32 1), (i32 imm:$cc), NZCV), (CSINCWr GPR32:$tval, WZR, (i32 imm:$cc))>; ``` So we have to manually select these for now. This replaces `selectSelectOpc` with an `emitSelect` function, which performs these optimizations. Differential Revision: https://reviews.llvm.org/D90701
-
Kazushi (Jam) Marukawa authored
Add intrinsics for vector load instructions. Add a regression test also. Reviewed By: simoll Differential Revision: https://reviews.llvm.org/D91332
-
Sanjay Patel authored
-
shafik authored
When parsing DWARF and laying out bit-fields we don't properly take into account when they are in a union, they will all have a zero offset. Differential Revision: https://reviews.llvm.org/D91118
-
Sanjay Patel authored
-
Sanjay Patel authored
-
Amy Huang authored
This was motivated by changes to llvm's `not --crash` disabling symbolization but I ended up removing `not` from the script entirely because it returns differently depending on whether clang "crashes" or exits for some other reason. The script had to choose between calling `not` and `not --crash` and sometimes it was wrong. The script also now disables symbolization when we don't read the stack trace because symbolizing is kind of slow. Differential Revision: https://reviews.llvm.org/D91372
-
Stanislav Mekhanoshin authored
Differential Revision: https://reviews.llvm.org/D91384
-
Stella Laurenzo authored
Differential Revision: https://reviews.llvm.org/D91282
-
Florian Hahn authored
This patch adds a new matcher for single index InsertValue instructions, similar to the existing matcher for ExtractValue. Reviewed By: lebedev.ri Differential Revision: https://reviews.llvm.org/D91352
-
Alexey Bataev authored
Need to check if the sema is actually finishing a function decl. Differential Revision: https://reviews.llvm.org/D91376
-
Kazushi (Jam) Marukawa authored
VE needs to support integrated assembler and "nas". This "nas" doesn't recognize ".sigaddr" pseudo mnemonics, so need to disable it. This patch disable it on VE by default. Also add a regression test for that. Reviewed By: simoll Differential Revision: https://reviews.llvm.org/D91350
-
peter klausler authored
An io-unit that is an internal-file-variable is syntactically identical to a file-unit-number expression that is a variable reference. An ambiguous unit is initially parsed as an internal-file-variable. If semantic analysis determines that the unit is not of character type, it is rewritten as an internal-file-variable. This modification must retain source coordinate information. Differential revision: https://reviews.llvm.org/D91375
-
Joe Pletcher authored
Adds a new option, `handle_winexcept` to try to intercept uncaught Visual C++ exceptions on Windows. On Linux, such exceptions are handled implicitly by `std::terminate()` raising `SIBABRT`. This option brings the Windows behavior in line with Linux. Unfortunately this exception code is intentionally undocumented, however has remained stable for the last decade. More information can be found here: https://devblogs.microsoft.com/oldnewthing/20100730-00/?p=13273 Reviewed By: morehouse, metzman Differential Revision: https://reviews.llvm.org/D89755
-
peter klausler authored
The ENDFILE statement may be spelled as two words. Differential revision: https://reviews.llvm.org/D91377
-
Arthur Eubanks authored
This removes lots of duplicated code which was necessary before https://reviews.llvm.org/D89158. Now we can use PassBuilder::runRegisteredEPCallbacks(). This is mostly sanitizers. There is likely more that can be done to simplify, but let's start with this. Reviewed By: ychen Differential Revision: https://reviews.llvm.org/D90870
-