- Jan 31, 2022
-
-
Jeremy Morse authored
ValueIDNum is supposed to be a value type that boils down to a uint64_t, that has some bitfields for convenience. If we use the default operator=, we end up with each bit field being individually assigned, which is un-necessarily slow. Implement the assignment operator by just copying the uint64_t value of the object. This is quicker, and matches how the comparison operators work already. Doing so is 0.1% faster on the compile-time-tracker.
-
Jon Chesterfield authored
Openmp executables need to find libomp and libomptarget at runtime. This currently requires LD_LIBRARY_PATH or the user to specify rpath. Change that to set the expected location of the openmp libraries in the install tree. Whether rpath means rpath or runpath is system dependent. The attached test shows that the Wl,--disable-new-dtags control interacts correctly with this feature. The implicit rpath field is appended to any user specified ones which is ideal. Reviewed By: jhuber6 Differential Revision: https://reviews.llvm.org/D118493
-
LLVM GN Syncbot authored
-
Nikolas Klauser authored
Add `ranges::in_in_out_result` Reviewed By: Quuxplusone, Mordante, #libc Spies: CaseyCarter, libcxx-commits, mgorny Differential Revision: https://reviews.llvm.org/D117512
-
Valentin Clement authored
Functionality in IO.h and IO.cpp have been upstreamed together with the frontend when flang landed upstream. Those files are out of date compared with fir-dev. These functionality will be upstreamed again when needed in the lowering process with an up to date code and a proper review. These files (and the functions it contains) are not currently used. Hence removing it is NFC. Reviewed By: kiranchandramohan Differential Revision: https://reviews.llvm.org/D118593
-
Kadir Cetinkaya authored
Differential Revision: https://reviews.llvm.org/D118592
-
Matthias Springer authored
Differential Revision: https://reviews.llvm.org/D118540
-
Kadir Cetinkaya authored
Normally there are heruistics in lexer to treat `//*` specially in language modes that don't have line comments (to emit `/`). Unfortunately this only applied to the first occurence of a line comment inside the file, as the subsequent line comments were treated as if language had support for them. This unfortunately only holds in normal lexing mode, as in raw mode all occurences of line comments received this treatment, which created discrepancies when comparing expanded and spelled tokens. The proper fix would be to just make sure we treat all the line comments with a subsequent `*` the same way, but it would imply breaking some code that's accepted by clang today. So instead we introduce the same bug into raw lexing mode. Fixes https://github.com/clangd/clangd/issues/1003. Differential Revision: https://reviews.llvm.org/D118471
-
Kerry McLaughlin authored
Fixes a crash ('Invalid size request on a scalable vector') in visitAlloca() when we call this function for a scalable alloca instruction, caused by the implicit conversion of TySize to uint64_t. This patch changes TySize to a TypeSize as returned by getTypeAllocSize() and ensures the allocation size is multiplied by vscale for scalable vectors. Reviewed By: sdesmalen, david-arm Differential Revision: https://reviews.llvm.org/D118372
-
Ties Stuij authored
This patch upstreams support for the Arm-v8 Cortex-X1C processor for AArch64 and ARM. For more information, see: - https://community.arm.com/arm-community-blogs/b/announcements/posts/arm-cortex-x1c - https://developer.arm.com/documentation/101968/0002/Functional-description/Technical-overview/Components The following people contributed to this patch: - Simon Tatham - Ties Stuij Reviewed By: dmgreen Differential Revision: https://reviews.llvm.org/D117202
-
Dávid Bolvanský authored
Very similar to https://reviews.llvm.org/D101230 Fixes https://github.com/llvm/llvm-project/issues/53501
-
Simon Pilgrim authored
[X86] combineAnd() - per-element simplification - call SimplifyDemandedBits using mask demanded bits if SimplifyDemandedVectorElts fails We already call SimplifyDemandedVectorElts using whether each vector mask element is zero/nonzero, this just extends this to also try SimplifyDemandedBits using the demanded bits mask generated from the nonzero elements. This also requires an additional TargetLowering::SimplifyDemandedBits DemandedBits/DemandedElts wrapper.
-
Jeremy Morse authored
If we only assign a variable value a single time, we can take a short-cut when computing its location: the variable value is only valid up to the dominance frontier of where the assignemnt happens. Past that point, there are other predecessors from where the variable has no value, meaning the variable has no location past that point. This patch recognises this scenario, and avoids expensive SSA computation, to improve compile-time performance. Differential Revision: https://reviews.llvm.org/D117877
-
Benjamin Kramer authored
-
Nico Weber authored
This reverts commit 7b2dfe1c. Matches ab3b8985.
-
Momchil Velikov authored
Reviewed By: MaskRay Differential Revision: https://reviews.llvm.org/D118451
-
Simon Pilgrim authored
-
Simon Pilgrim authored
We can only assume bit[1] == zero if its the only demanded bit or the source is not undef/poison
-
Jay Foad authored
-
Jay Foad authored
If AMDGPUAnnotateUniformValues finds a load from a uniform pointer with no potentially clobbering stores between the kernel entry point and the load instruction, it adds noclobber metadata to the *address*. This is unsafe because it can get applied to other loads in the same which do have aliasing stores. Differential Revision: https://reviews.llvm.org/D118458
-
Simon Pilgrim authored
As raised by @efriedma on D117995 - the source must not be undef/poison to demand any bits in mul(x,x) other than bit[1] https://alive2.llvm.org/ce/z/Cxkjen
-
Jay Foad authored
This avoids various cases where StructurizeCFG would otherwise insert an xor i1 instruction, and it since it generally runs late in the pipeline, instcombine does not clean up the xor-of-cmp pattern. Differential Revision: https://reviews.llvm.org/D118478
-
Paulo Matos authored
This patches fixes the visibility and linkage information of symbols referring to IR globals. Emission of external declarations is now done in the first execution of emitConstantPool rather than in emitLinkage (and a few other places). This is the point where we have already gathered information about used symbols (by running the MC Lower PrePass) and not yet started emitting any functions so that any declarations that need to be emitted are done so at the top of the file before any functions. This changes the order of a few directives in the final asm file which required an update to a few tests. Reviewed By: sbc100 Differential Revision: https://reviews.llvm.org/D118122
-
Andrzej Warzynski authored
As pointed out in https://reviews.llvm.org/D93401, some methods in the Flang driver are named inconsistently. The driver strives to follow Flang's C++ style [1] and this patch updates these methods accordingly. [1] https://github.com/llvm/llvm-project/blob/main/flang/docs/C%2B%2Bstyle.md Differential Revision: https://reviews.llvm.org/D118381
-
Gabor Marton authored
Differential Revision: https://reviews.llvm.org/D117568
-
Sven van Haastregt authored
Currently, -fdeclare-opencl-builtins always adds the generic address space overloads of e.g. the vload builtin functions in OpenCL 3.0 mode, even when the generic address space feature is disabled. Guard the generic address space overloads by the `__opencl_c_generic_address_space` feature instead of by OpenCL version. Guard the private, global, and local overloads using the internal `__opencl_c_named_address_space_builtins` feature. Differential Revision: https://reviews.llvm.org/D107769
-
Florian Hahn authored
The current cost-model overestimates the cost of vector compares & selects for ordered floating point compares. This patch fixes that by extending the existing logic for integer predicates. Reviewed By: dmgreen Differential Revision: https://reviews.llvm.org/D118256
-
Benjamin Kramer authored
-
Matthias Springer authored
This reduces the dependencies of the MLIRVector target and makes the dialect consistent with other dialects. Differential Revision: https://reviews.llvm.org/D118533
-
serge-sans-paille authored
Do not warn on reserved identifiers resulting from expansion of system macros. Also properly test -Wreserved-identifier wrt. system headers. Should fix #49592 Differential Revision: https://reviews.llvm.org/D118532
-
serge-sans-paille authored
Based on the output of include-what you-use. Most notably, llvm/Remarks/Remark.h is no longer automatically included by llvm/Remarks/RemarkParser.h, so client code may need to include explicitly. clang++ -E -Iinclude -I../llvm/include ../llvm/lib/Remarks/*.cpp -std=c++14 -fno-rtti -fno-exceptions | wc -l before: 770253 after: 759347 Related discourse thread: https://llvm.discourse.group/t/include-what-you-use-include-cleanup Differential Revision: https://reviews.llvm.org/D118506
-
serge-sans-paille authored
Based on the output of include-what-you-use. It's an utility directory, so no much impact on other code areas. clang++ -E -Iinclude -I../llvm/include ../llvm/utils/TableGen/*.cpp -std=c++14 -fno-rtti -fno-exceptions | wc -l before: 4327274 after: 4316190 Related discourse thread: https://llvm.discourse.group/t/include-what-you-use-include-cleanup Differential Revision: https://reviews.llvm.org/D118466
-
Balázs Kéri authored
Display notes for a possible call chain if an unsafe function is found to be called (maybe indirectly) from a signal handler. The call chain displayed this way includes probably not the first calls of the functions, but it is a valid possible (in non path-sensitive way) one. Reviewed By: aaron.ballman Differential Revision: https://reviews.llvm.org/D118224
-
Petr Hosek authored
This reverts commit 36892727 which breaks the build when LLVM_INSTALL_TOOLCHAIN_ONLY is enabled with: CMake Error at cmake/modules/AddLLVM.cmake:683 (add_dependencies): The dependency target "clang-tidy-headers" of target "CTTestTidyModule" does not exist.
-
Nikita Popov authored
The pruning cloner already tries to remove unreachable blocks. The original cloning process will simplify instructions and constant terminators, and only clone blocks that are reachable at that point. However, phi nodes can only be simplified after everything has been cloned. For that reason, additional blocks may become unreachable after phi simplification. The code does try to handle this as well, but only removes blocks that don't have predecessors. It misses unreachable cycles. This can cause issues if SEH exception handling code is part of an unreachable cycle, as the inliner is not prepared to deal with that. This patch instead performs an explicit scan for reachable blocks, and drops everything else. Fixes https://github.com/llvm/llvm-project/issues/53206. Differential Revision: https://reviews.llvm.org/D118449
-
Nikita Popov authored
masked.atomicrmw.*.i32 intrinsics access an i32 (and then possibly mask it), so hardcode MVT::i32 as the access type here, rather than determining it from the pointer element type. Differential Revision: https://reviews.llvm.org/D118336
-
Marek Kurdej authored
-
Pavel Labath authored
-
Mehdi Amini authored
-