- Oct 12, 2022
-
-
Louis Dionne authored
However, mark them as EXCLUDE_FROM_ALL when we don't want to build them. Simply declaring the targets should be of no harm, and it allows other projects to mention these targets regardless of whether they end up being built or not. While the diff may not make that obvious, this patch basically moves the definition of e.g. `cxx_shared` out of the `if (LIBCXX_ENABLE_SHARED)` and instead marks it as `EXCLUDE_FROM_ALL` conditionally on whether LIBCXX_ENABLE_SHARED is passed. It then does the same for libunwind and libc++abi targets. Differential Revision: https://reviews.llvm.org/D134221
-
gonglingqin authored
Support SETLE/SETEQ and expand SETGE/SETNE/SETGT Differential Revision: https://reviews.llvm.org/D135511
-
Sanjay Patel authored
These folds were added recently with: 6b869be8 8da2fa85 ...but they didn't account for the "exact" attribute, and that can be safely propagated: https://alive2.llvm.org/ce/z/F_WhnR https://alive2.llvm.org/ce/z/ft9Cgr
-
Sanjay Patel authored
-
Sanjay Patel authored
There are at least 2 similar patterns that could be added here, and the existing fold can be improved because it fails to propagate "exact".
-
Sanjay Patel authored
-
Valentin Clement authored
Lower call with polymorphic entities to fir.dispatch operation. This patch only focus one lowering with simple scalar polymorphic entities. A follow-up patch will deal with allocatble, pointer and array of polymorphic entities as they require box manipulation for the passed-object. Reviewed By: jeanPerier Differential Revision: https://reviews.llvm.org/D135649
-
gonglingqin authored
If the AM* atomic memory access instruction has the same register number as rd and rj, the execution will trigger an Instruction Non-defined Exception. If the AM* atomic memory access instruction has the same register number as rd and rk, the execution result is uncertain. Reference: https://github.com/loongson/LoongArch-Documentation Differential Revision: https://reviews.llvm.org/D135641
-
Arseniy Zaostrovnykh authored
Before this change, the `NoReturnFunctionChecker` was missing function pointers with a `[[noreturn]]` attribute, while `CFG` was constructed taking that into account, which leads CSA to take impossible paths. The reason was that the `NoReturnFunctionChecker` was looking for the attribute in the type of the entire call expression rather than the type of the function being called. This change makes the `[[noreturn]]` attribute of a function pointer visible to `NoReturnFunctionChecker`. This leads to a more coherent behavior of the CSA on the AST involving. Reviewed By: xazax.hun Differential Revision: https://reviews.llvm.org/D135682
-
Peixin Qiao authored
Fix two typos and remove the incorrectly added `extraClassDeclaration` in `FIRTypes.td`. Reviewed By: clementval Differential Revision: https://reviews.llvm.org/D135665
-
Chen Zheng authored
-
Tonko Sabolčec authored
This change fixes two issues in ValueObject::GetExpressionPath method: 1. Accessing members of struct references used to produce expression paths such as "str.&str.member" (instead of the expected "str.member"). This is fixed by assigning the flag tha the child value is a dereference when calling Dereference() on references and adjusting logic in expression path creation. 2. If the parent of member access is dereference, the produced expression path was "*(ptr).member". This is incorrect, since it dereferences the member instead of the pointer. This is fixed by wrapping dereference expression into parenthesis, resulting with "(*ptr).member". Reviewed By: werat, clayborg Differential Revision: https://reviews.llvm.org/D132734 -
Adrian Kuegel authored
-
Adrian Kuegel authored
This will allow to model elementwise ops with this special op instead of using GenericOp. Also allow MapOp and ReduceOp to have no result if the output type is not a tensor. This is needed for buffer semantics. Differential Revision: https://reviews.llvm.org/D135754
-
Florian Hahn authored
optimizeInductions may leave dead recipes which can prevent sinking. Sinking on the other hand should not introduce new dead recipes, so clean up dead recipes before sinking. Reviewed By: Ayal Differential Revision: https://reviews.llvm.org/D133762
-
Nicolas Vasilache authored
Differential Revision: https://reviews.llvm.org/D135761
-
Nicolas Vasilache authored
Differential Revision: https://reviews.llvm.org/D135759
-
Tobias Gysi authored
The revision uses tablegen generated builders to convert the most common LLVM IR instructions to MLIR LLVM dialect operations. All instructions with special handlers, except for alloca and fence, still use manual handlers. The revision also introduces an additional "instructions.ll" test file to test the import of instructions that have tablegen builders (except for the resume instruction whose test remains untouched). A part of the test cases are new, for example the integer instruction test, while others are migrated from the "basic.ll" test file. Reviewed By: ftynse Differential Revision: https://reviews.llvm.org/D135709
-
Max Kazantsev authored
They have been scattered over the code. For better structuring, perform them in one place. Potential CT drop is possible because we collect exit blocks twice, but it's small price to pay for much better code structure.
-
Luo, Yuanke authored
Fix crash issue of D129537 and reopen it. Currently the X86 shuffle lowering would widen the element type for shuffle if the mask element value is adjacent. For below example %t2 = add nsw <16 x i32> %t0, %t1 %t3 = sub nsw <16 x i32> %t0, %t1 %t4 = shufflevector <16 x i32> %t2, <16 x i32> %t3, <16 x i32> <i32 16, i32 17, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15> ret <16 x i32> %t4 Compiler would transform the shuffle to %t4 = shufflevector <8 x i64> %t2, <8 x i64> %t3, <8 x i64> <i32 8, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7> This may lose the oppotunity to let ISel select mask instruction when avx512 is enabled. This patch is to prevent the tranform when avx512 feature is enabled. Thank Simon for the idea. Reviewed By: RKSimon Differential Revision: https://reviews.llvm.org/D130830 -
OCHyams authored
The test dexter/feature_tests/commands/perfect/expect_step_kind/direction.cpp was failing on a machine because __libc_start_call_main was not identified as a "frame below main" (a frame we don't want to gather information from), causing dexter to count one more step than expected in the test. Add __libc_start_call_main to the list of "frames below main". There may be a more robust way of doing this but this is a pragmatic solution we can use for now.
-
Florian Hahn authored
Extra test for D133762.
-
Alex Zinenko authored
The description of the Transform dialect has become quite lengthy to be kept as a Tablegen string literal. Move it to a proper Markdown file.
-
Alex Zinenko authored
-
Bjorn Pettersson authored
Conversion performed using the script at: https://gist.github.com/nikic/98357b71fd67756b0f064c9517b62a34
-
Adrian Kuegel authored
Use '= default' to define a trivial default constructor.
-
Pierre van Houtryve authored
The previous calculations seem to have assumed that the section address would be zero. This is true for relocatable object files, but certainly not for linked files like shared libraries. Fixed the calculations to make them identical to the "real" `getInstruction` call below & added a regression test. Reviewed By: scott.linder, simon_tatham Differential Revision: https://reviews.llvm.org/D135430
-
David Green authored
This reverts commit 661403b8 as the custom lowering of loads prevents expanding unaligned loads with strict-align.
-
Martin Storsjö authored
After setting up the FP, the rest of the prologue doesn't need to be replayed for unwinding the stack frame. This allows reverting the functional parts of 2f7fbf83 (but fixing inconsistent duplicate setting of HasWinCFI). Differential Revision: https://reviews.llvm.org/D135686
-
David Spickett authored
28e65a6a changed the parameter type of SetType but I forgot to build on x86 as well as arm64.
-
Cullen Rhodes authored
Given this is an OR reduction the two are equivalent and later optimizations (AArch64InstrInfo::optimizePTestInstr) may rewrite the sequence to use the flag-setting variant of instruction X, to remove the PTEST altogether. Reviewed By: paulwalker-arm, bsmith Differential Revision: https://reviews.llvm.org/D134946
-
Cullen Rhodes authored
-
Tobias Hieta authored
On Windows we don't create symlinks for the binaries (clang++, clang-cl) since the support requires special setup (group policy settings and you need to know exactly our distribution story). But if you know about these things and have a controlled environment there is a lot of storage to be saved, so let's add a manual opt-in for using symlinks on Windows with LLVM_FORCE_CREATE_SYMLINKS=ON. Reviewed By: phosek Differential Revision: https://reviews.llvm.org/D135578
-
Dmitry Polukhin authored
Before this patch YAML output had default diagnostic level instead of effective level reported to the user on stdout. Wrapper scripts for clang-tidy usually use YAML output and they pick wrong diagnostics level without this patch. Test Plan: check-clang-tools Differential Revision: https://reviews.llvm.org/D135367
-
Nikita Popov authored
Currently attributes for intrinsics are emitted using the ArrayRef<AttrKind> based constructor for AttributeLists. This works out fine for simple enum attributes, but doesn't really generalize to attributes that accept values. We're already doing something awkward for alignment attributes, and I'd like to have a cleaner solution to this with https://discourse.llvm.org/t/rfc-unify-memory-effect-attributes/65579 in mind. The new generation approach is to instead directly construct Attributes, giving us access to the full generality of that interface. To avoid significantly increasing the size of the generated code, we now also deduplicate the attribute sets. The code generated per unique AttributeList looks like this: case 204: { AS[0] = {1, getIntrinsicArgAttributeSet(C, 5)}; AS[1] = {AttributeList::FunctionIndex, getIntrinsicFnAttributeSet(C, 10)}; NumAttrs = 2; break; } and then the helper functions contain something like case 5: return AttributeSet::get(C, { Attribute::get(C, Attribute::NoCapture), }); and case 10: return AttributeSet::get(C, { Attribute::get(C, Attribute::NoUnwind), Attribute::get(C, Attribute::ArgMemOnly), }); A casualty of this change is the intrin-properties.td test, as I don't think that FileCheck allows matching this kind of output. Differential Revision: https://reviews.llvm.org/D135679
-
David Spickett authored
Making it easier to understand and harder to misuse. This only applies to the ReadRegister(const RegisterInfo ®_info) variant. Depends on D135671 Reviewed By: clayborg Differential Revision: https://reviews.llvm.org/D135672
-
Cullen Rhodes authored
The BRKNS instruction is unlike the other instructions that set flags since it has an all active implicit predicate, so the existing PTEST(PG, BRKN(PG, A, B)) -> BRKNS(PG, A, B) in AArch64InstrInfo::optimizePTestInstr is incorrect, however PTEST(PTRUE_B(31), BRKN(PG, A, B)) -> BRKNS(PG, A, B) is correct. Spotted by @paulwalker-arm in D134946. Reviewed By: paulwalker-arm Differential Revision: https://reviews.llvm.org/D135655
-
Cullen Rhodes authored
-
David Spickett authored
No one was pasing nullptr here. Depends on D135670 Reviewed By: clayborg Differential Revision: https://reviews.llvm.org/D135671
-
David Spickett authored
Familiar story, callers are either checking upfront that the pointer wasn't null or not checking at all. SetValueFromData itself didn't check either. So make the parameter a ref and fixup the few places where a nullptr check seems needed. Depends on D135668 Reviewed By: clayborg Differential Revision: https://reviews.llvm.org/D135670
-