- Apr 27, 2023
-
-
Vitaly Buka authored
It was always ON for X86.
-
Vitaly Buka authored
-hwasan-instrument-with-calls is broken on X86.
-
Kazu Hirata authored
-
Kazu Hirata authored
This is part of an effort to migrate from llvm::Optional to std::optional: https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716
-
Chuanqi Xu authored
Close https://github.com/llvm/llvm-project/issues/62359 The root reason for the crash is that we didn't test the case that the bits number of a language option exceeds 1.
-
Théo Degioanni authored
This patch introduces a generic implementation of mem2reg on unstructured control-flow, along with a specialization for LLVM IR. This is achieved by defining three new interfaces, representing 1. allocating operations, 2. operations doing memory accesses, 3. operations that can be rewired and/or deleted to stop using a specific use. The file containing the core implementation of the algorithm (`Mem2Reg.cpp`) contains a detailed explanation of how the algorithm works. The contract for this pass is that given a memory slot with a single non-aliased pointer, the pass will either remove all the uses of the pointer or not change anything. To help review this patch, I recommend starting by looking at the interfaces defined in `Mem2Reg.td`, along with their reference implementation for LLVM IR defined in `LLVMMem2Reg.cpp`. Then, the core algorithm is implemented in `Mem2Reg.cpp`. If this is all good I also have an implementation of the interfaces for 0-dimensional memref promotion that I can upstream afterwards. Reviewed By: gysit Differential Revision: https://reviews.llvm.org/D148109
-
Tobias Gysi authored
This revision adds an assertion to convertConstantExpr to ensure the function is not called if the constant has been converted before. This is a follow up for https://reviews.llvm.org/D149247. Reviewed By: victor-eds Differential Revision: https://reviews.llvm.org/D149253
-
Noah Goldstein authored
These functions where missing support but are used enough that it makes sense to track them. Reviewed By: RKSimon Differential Revision: https://reviews.llvm.org/D148963
-
Noah Goldstein authored
Alive2 Link: https://alive2.llvm.org/ce/z/TKpqxc Reviewed By: nikic Differential Revision: https://reviews.llvm.org/D149204 -
Noah Goldstein authored
Alive2 Link: https://alive2.llvm.org/ce/z/TAFcjF Differential Revision: https://reviews.llvm.org/D149202 -
Noah Goldstein authored
Differential Revision: https://reviews.llvm.org/D149201
-
Serguei Katkov authored
Add support the cases like m(m(X,Y),m'(X,Y)) => m(X,Y) where m is one of maxnum, minnum, maximum, minimum and m' is m or inverse of m. alive2 correctness check: maxnum(maxnum,maxnum) https://alive2.llvm.org/ce/z/kSyAzo maxnum(maxnum,minnum) https://alive2.llvm.org/ce/z/Vra8j2 minnum(minnum,minnum) https://alive2.llvm.org/ce/z/B6h-hW minnum(minnum,maxnum) https://alive2.llvm.org/ce/z/rG2u_b maximum(maximum,maximum) https://alive2.llvm.org/ce/z/N2nevY maximum(maximum,minimum) https://alive2.llvm.org/ce/z/23RFcP minimum(minimum,minimum) https://alive2.llvm.org/ce/z/spHZ-U minimum(minimum,maximum) https://alive2.llvm.org/ce/z/Aa-VE8 Reviewed By: dantrushin, RKSimon Differential Revision: https://reviews.llvm.org/D147137
-
Fangrui Song authored
-
Yeting Kuo authored
The patch basically models custom lowering of base rounding operations to expand rounding by coverting to ingter and coverting back to FP. The other one thing the patch does is to covert sNan of the source to qNan. Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D148519
-
luxufan authored
As LangRef says, "dereferenceable<n> implies noundef". `isGuaranteedNotToBeUndefOrPoison` should return true if the parameter has dereferenceable attribute. Reviewed By: nikic Differential Revision: https://reviews.llvm.org/D149035
-
Vitaly Buka authored
Prepare to use it in all tag related functions. Reviewed By: thurston Differential Revision: https://reviews.llvm.org/D149304
-
Vitaly Buka authored
Introduces UB, details in D144012. This reverts commit 92f1156e.
-
Vitaly Buka authored
If stack was allocated using regular allocator, it may be tagged and it will make memToShadow calculate invalid offset. Also when UAR tag should be the tag of the stack frame pointer. Reviewed By: eugenis Differential Revision: https://reviews.llvm.org/D149228
-
Vitaly Buka authored
Reviewed By: kstoimenov Differential Revision: https://reviews.llvm.org/D149241
-
Wu, Yingcong authored
Avoid an unneccessary auto-copy Reviewed By: vitalybuka Differential Revision: https://reviews.llvm.org/D148902
-
Wu, Yingcong authored
The dereference of pointer `ctx` is not protected by its null check, this could be problematic. Reviewed By: vitalybuka, MaskRay Differential Revision: https://reviews.llvm.org/D149011
-
Vitaly Buka authored
HWASAN_ALIASING_MODE needs to untag only primary allocator pointers. Reviewed By: kstoimenov, thurston Differential Revision: https://reviews.llvm.org/D149238
-
DianQK authored
As long as aliasee has `@llvm.used` or `@llvm.compiler.used` references, we cannot do the related replace or delete operations. Even if it is a Local Linkage, we cannot infer if there is no other use for it, such as asm or other future added cases. Reviewed By: nikic Differential Revision: https://reviews.llvm.org/D145293
-
Vitaly Buka authored
HWASAN_ALIASING_MODE needs to untag only primary allocator pointers. Reviewed By: kstoimenov Differential Revision: https://reviews.llvm.org/D149293
-
Haohai Wen authored
This also fixes check prefix NO which is pointless in symtab.test Reviewed By: mstorsjo Differential Revision: https://reviews.llvm.org/D149235
-
H.J. Lu authored
Since alignment of x32 siginfo_t is 8 bytes, not 4 bytes, use u64 in __sanitizer_siginfo_pad to align x32 __sanitizer_siginfo to 8 bytes. Fixes https://github.com/llvm/llvm-project/issues/62394 Differential Revision: https://reviews.llvm.org/D149309
-
Raghu Maddhipatla authored
[OpenMP][Flang][Semantics] Add semantics support for USE_DEVICE_PTR clause on OMP TARGET DATA directive. Initial support for USE_DEVICE_PTR clause on OMP TARGET DATA directive. Reviewed By: kiranchandramohan Differential Revision: https://reviews.llvm.org/D148254
-
walter erquinigo authored
Some LLDB set ups need to hide certain commands for security reasons, so I'm adding a flag that allows removing non-user commands. Differential Revision: https://reviews.llvm.org/D149312
-
Gulfem Savrun Yeniceri authored
This patch changes handling multiple -fcoverage-prefix-map options to match GCC's behavior. GCC applies prefix remappings that are provided in reverse order (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109591). Reviewed By: phosek Differential Revision: https://reviews.llvm.org/D148757
-
Craig Topper authored
This was part of the N extension which did not make it into version 1.12 of the privilege specification. Reviewed By: jrtc27 Differential Revision: https://reviews.llvm.org/D149308
-
Chia-hung Duan authored
This was happened rarely. The only case is when a thread is teared down and it only has one block of BatchClass and the freelist of BatchClass is empty. The impact is leaking 1 block of BatchClass and which is minor. Differential Revision: https://reviews.llvm.org/D149141
-
Jorge Gorbe Moya authored
-
Vitaly Buka authored
-
Vitaly Buka authored
-
Richard Smith authored
Don't pass in the resolved declaration, because that might be an inheriting constructor declaration, which should never be used directly and for which constraint satisfaction checking doesn't work. Fixes #62361.
-
Michael Maitland authored
Fixes createInstrument to return instrument when LMUL data is valid, and return nullptr when LMUL data is not valid for RISCV target. Differential Revision: https://reviews.llvm.org/D149068
-
Vitaly Buka authored
Reported after D149234.
-
Vitaly Buka authored
Does not fix the leak. This reverts commit 15334786.
-
Henry Yu authored
This patch addresses 2 problems: - In `ShuffleBlockStrategy`, when `BB` is an EHPad, `BB.getFirstInsertionPt()` will return `BB.end()`, which cannot be dereferenced and will cause crash in following loop. - In `isCompatibleReplacement`, a call instruction's callee might be replaced by a pointer, causing 2 subproblems: - we cannot guarantee that the pointer is a function pointer (even if it is, we cannot guarantee it matches the signature). - after such a replacement, `getCalledFunction` will from then on return `nullptr` (since it's indirect call) which causes Segmentation Fault in the lines below. This patch fixes the first problem by checking if a block to be mutated is an EHPad in base class `IRMutationStrategy` and skipping mutating it if so. This patch fixes the second problem by avoiding replacing callee with pointer and adding a null check for indirect calls. Reviewed By: Peter Differential Revision: https://reviews.llvm.org/D148853
-
Matt Arsenault authored
-