- Feb 09, 2023
-
-
Philip Reames authored
This code is walking back through a worklist of sources. All of the sources need to be sign extending for the result to be true. We had a case which returned rather than continued, which causes a miscompile when another source was not sign extended. The flawed logic was introduced in Dec 22, by change 844430bc. This was recently exposed in a stage2 build of llvm-tablegen when we switched from using llvm::Optional to std::optional. The stars aligned in just the wrong way, and we started actively miscompiling idiomatic optional usage. std::optional<uint32_t> appears to use the top 32 bits of the word on RV64 for its tag. Differential Revision: https://reviews.llvm.org/D143594
-
Haojian Wu authored
Differential Revision: https://reviews.llvm.org/D143569
-
Peiming Liu authored
Reviewed By: aartbik Differential Revision: https://reviews.llvm.org/D140713
-
Fangrui Song authored
Having symVector makes iteration efficient and is actually more efficient than using llvm::DenseMap<llvm::CachedHashStringRef, Symbol *>, so the FIXME comment can be removed. Using an alternative implementation ankerl/unordered_dense.h decreases link time for chromium by 0.x% but I am unsure it justifies the extra header file.
-
Dave Lee authored
To the Python bindings, add support for Python-like negative indexes. While was using `script`, I tried to access a thread's bottom frame with `thread.frame[-1]`, but that failed. This change updates the `__getitem__` implementations to support negative indexes as one would expect in Python. Differential Revision: https://reviews.llvm.org/D143282
-
Wolfgang Pieb authored
Adding a module flag 'MaxTLSAlign' describing the maximum alignment a global TLS variable can have. Optimizers are prevented from increasing the alignment of such variables beyond this threshold. Reviewed By: probinson Differential Revision: https://reviews.llvm.org/D140123
-
Han Zhu authored
-
Adrian Vogelsgesang authored
The pretty printer for `std::coroutine_handle` was running into > Assertion failed: (target_ctx != source_ctx && "Can't import into itself") from ClangASTImporter.h, line 270. This commit fixes the issue by removing the `CopyType` call from the pretty printer. While this call was necessary in the past, it seems to be no longer required, at least all test cases are still passing. Maybe something changed in the meantime around the handling of `TypesystemClang` instances. I don't quite understand why `CopyType` was necessary earlier. I am not sure how to add a regression test for this, though. It seems the issue is already triggered by the exising `TestCoroutineHandle.py`, but API tests seem to ignore all violations of `lldbassert` and still report the test as "passed", even if assertions were triggered Differential Revision: https://reviews.llvm.org/D143127
-
Philip Reames authored
-
Simon Pilgrim authored
One of the cleanups necessary for D136529 - another being how we're going to handle moving freeze through multiple result nodes (like uaddo and subcarry)
-
Valentin Clement authored
In some remapping case the rank of the pointer is different from the target one. ``` program remap type :: p integer :: a end type t type(p), target :: ta(10) = [ (t(i),i=1,10) ] class(t), pointer :: p(:,:) p(1:2,1:5) => ta end ``` This patch updates the rank and the byte stride to fix such case. Reviewed By: klausler Differential Revision: https://reviews.llvm.org/D143566 -
Moritz Sichert authored
The classification of TLS symbols in ELF was changed from ST_Data to ST_Other in the following commit: 018a484c RuntimeDyldELF::processRelocationRef() needs to be updated to also handle ST_Other symbols so that it handles TLS relocations correctly. The current tests did not fail because we have a shortcut for global symbols that are already defined. Differential Revision: https://reviews.llvm.org/D143568
-
Simon Pilgrim authored
All set to Custom - there's no need to have them in separate loops
-
- Feb 08, 2023
-
-
Valentin Clement authored
D142279 enabled assertion in libstdc++ and one was triggered in the PFTBuilder because an optional was access even if it was null. This patch fix this issue and add a regression test. Reviewed By: jeanPerier Differential Revision: https://reviews.llvm.org/D143589
-
Florian Hahn authored
This patch updates LV to sink recipes directly using the VPlan use chains. The initial patch only moves sinking to be purely VPlan-based. Follow-up patches will move legality checks to VPlan as well. At the moment, there's a single test failure remaining. Reviewed By: Ayal Differential Revision: https://reviews.llvm.org/D142589
-
Sander de Smalen authored
This patch causes a regression, so reverting it while I investigate the issue. This reverts commit e6eb84a1.
-
Erik Desjardins authored
This reverts commit d768b974. Causes sanitizer failure: https://lab.llvm.org/buildbot/#/builders/238/builds/1114 ``` /b/sanitizer-aarch64-linux-bootstrap-ubsan/build/llvm-project/llvm/lib/Support/xxhash.cpp:107:12: runtime error: applying non-zero offset 8 to null pointer #0 0xaaaab28ec6c8 in llvm::xxHash64(llvm::StringRef) /b/sanitizer-aarch64-linux-bootstrap-ubsan/build/llvm-project/llvm/lib/Support/xxhash.cpp:107:12 #1 0xaaaab28cbd38 in llvm::StringMapImpl::LookupBucketFor(llvm::StringRef) /b/sanitizer-aarch64-linux-bootstrap-ubsan/build/llvm-project/llvm/lib/Support/StringMap.cpp:87:28 ``` Probably causes test failure in `warn-unsafe-buffer-usage-fixits-local-var-span.cpp`: https://lab.llvm.org/buildbot/#/builders/60/builds/10619 Probably causes reverse-iteration test failure in `test-output-format.ll`: https://lab.llvm.org/buildbot/#/builders/54/builds/3545
-
Valentin Clement authored
Allocation of unlimited polymorphic allocatable with character intrinsic type is now done through `PointerNullifyCharacter` or `AllocatableInitCharacter` so the length is correctly set. Reviewed By: jeanPerier Differential Revision: https://reviews.llvm.org/D143580
-
Vladislav Dzhidzhoev authored
Reimplemented SelectionDAG code for GlobalISel. Fixes https://github.com/llvm/llvm-project/issues/54079 Differential Revision: https://reviews.llvm.org/D130903
-
Simon Pilgrim authored
Use APInt::setBit() method instead of OR'ing individual bits.
-
Brian Cain authored
Patch-by:
Colin Lemahieu <colinl@codeaurora.org> Differential Revision: https://reviews.llvm.org/D143531
-
Valentin Clement authored
Result must carry the polymorphic type information from the vector. Reviewed By: jeanPerier Differential Revision: https://reviews.llvm.org/D143575
-
Zain Jaffal authored
This reverts commit 665ee0cd. Fix comments and formatting style.
-
Joseph Huber authored
Summary: We don't have the infastructure to support MPFR on the GPU. We should disable this categorically on GPU builds for now.
-
Guillaume Chatelet authored
-
Sanjay Patel authored
-
Florian Hahn authored
This adds test coverage to avoid crashes with further changes.
-
David Green authored
A combination of GlobalISel and MachineCombiner can end up creating `SUB xrz, (MOVI -2105098)` instructions which have not been constant folded. The AArch64MIPeepholeOpt pass will then attempt to create `ADD xzr, 513, lsl 12`, which is not a valid instruction. This adds a bail out of the transform if the register is xzr/wzr. Fixes #60528 Differential Revision: https://reviews.llvm.org/D143475
-
JackAKirk authored
I used https://github.com/zjin-lcf/HeCBench (with nvcc usage swapped to clang++), which is an adaptation of the classic Rodinia benchmarks aimed at CUDA and SYCL programming models, to compare different values of the multiplier using both clang++ cuda and clang++ sycl nvptx backends. I find that the value is currently too low for both cases. Qualitatively (and in most cases there is very a close quantitative agreement across both cases) the change in code execution time for a range of values from 5 to 1000 matches in both variations (CUDA clang++ vs SYCL (with cuda backend) using the intel/llvm clang++ compiler) of the HeCbench samples. This value of 11 is optimal for clang++ cuda for all cases I've investigated. I have not found a single case where performance is deprecated by this change of the value from 5 to 11. For one sample the sycl cuda backend preferred a higher value. However we are happy to prioritize clang++ cuda, and we find that this value is close to ideal for both cases anyway. It would be good to do some further investigation using clang++ openmp cuda offload. However since I do not know of an appropriate set of benchmarks for this case, and the fact that we are now getting complaints about register spills related to insufficient inlining on a weekly basis, we have decided to propose this change and potentially seek some more input from someone who may have more expertise in the openmp case. Incidentally this value coincides with the value used for the amd-gcn backend. We have also been able to use the amd backend of the intel/llvm "dpc++" compiler to compare the inlining behaviour of an identical code when targetting amd (compared to nvptx). Unsurprisingly the amd backend with a multiplier value of 11 was performing better (with regard to inlining) than the nvptx case when the value of 5 was used. When the two backends use the same multiplier value the inlining behaviors appear to align closely. This also considerably improves the performance of at least one of the most popular HPC applications: NWCHEMX. Signed-off-by:
JackAKirk <jack.kirk@codeplay.com> Reviewed by: tra Differential Revision: https://reviews.llvm.org/D142232
-
Marco Elver authored
Emit all constant integers produced by SanitizerBinaryMetadata as ULEB128 to further reduce binary space used. Increasing the version is not necessary given this change depends on (and will land) along with the bump to v2. To support this, the !pcsections metadata format is extended to allow for per-section options, encoded in the first MD operator which must always be a string and contain the section: "<section>!<options>". Reviewed By: dvyukov Differential Revision: https://reviews.llvm.org/D143484
-
Marco Elver authored
Optimize the encoding of "covered" metadata by: 1. Reducing feature mask from 4 bytes to 1 byte (needs increase once we reach more than 8 features). 2. Only emitting UAR stack args size if it is non-zero, saving 4 bytes in the common case. One caveat is that the emitted metadata for function PC (offset), size, and UAR size (if enabled) are no longer aligned to 4 bytes. SanitizerBinaryMetadata version base is increased to 2, since the change is backwards incompatible. Reviewed By: dvyukov Differential Revision: https://reviews.llvm.org/D143482 -
Benjamin Kramer authored
Fixes a81136c3
-
Benjamin Kramer authored
-
Benjamin Kramer authored
This is quite silly, but casting to uintptr_t seems like the easiest option to quiet ubsan. llvm/lib/Support/xxhash.cpp:107:12: runtime error: applying non-zero offset 8 to null pointer #0 0x7fe3660404c0 in llvm::xxHash64(llvm::StringRef) llvm/lib/Support/xxhash.cpp:107:12 -
Jean Perier authored
Code move without any change, the goal is to re-use this piece of code for procedure designator lowering in HLFIR since there is no significant changes in the way procedure designators will be lowered. Differential Revision: https://reviews.llvm.org/D143563
-
David Green authored
So long as the operation is reassociative, we can reassociate the double vecreduce from for example fadd(vecreduce(a), vecreduce(b)) to vecreduce(fadd(a,b)). This will in general save a few instructions, but some architectures (MVE) require the opposite fold, so a shouldExpandReduction is added to account for it. Only targets that use shouldExpandReduction will be affected. Differential Revision: https://reviews.llvm.org/D141870
-
Zain Jaffal authored
This reverts commit 40ffe9c1. Reverted because some comments where missed in the review https://reviews.llvm.org/D142647
-
Christian Ulmann authored
This commit adds additional checks and warning messages to the MD_prof import. As LLVM does not verify most metadata, the import has the be resilient towards ill-formatted inputs. Reviewed By: gysit Differential Revision: https://reviews.llvm.org/D143492
-
Zain Jaffal authored
Differential Revision: https://reviews.llvm.org/D142647
-
Christian Ulmann authored
This commit introduces functionality to import loop metadata. Loop metadata nodes are transformed into LoopAnnotationAttrs and attached to the corresponding branch operations. Reviewed By: gysit Differential Revision: https://reviews.llvm.org/D143376
-