- Nov 17, 2021
-
-
Michael Kruse authored
Patch D113697 added default function arguments to template specializations of `ConvertToBinary`. According to https://en.cppreference.com/w/cpp/language/template_specialization this not allowed: > Default function arguments cannot be specified in explicit specializations of function templates, member function templates, and member functions of class templates when the class is implicitly instantiated. It happens to compile with gcc, clang and msvc 14.30 (Visual Studio 2022), but not msvc 14.29 (Visual Studio 2020). Even for the compilers that syntactically accept it, the default argument will never be used (only the default argument of the template declaration). From https://en.cppreference.com/w/cpp/language/function_template > Note that only non-template and primary template overloads participate in overload resolution. That is, the explicit function template specialization is not added to the overload candidate set. Only aft...
-
Freddy Ye authored
*_mul_*ch is to align with *_mul_*s, *_mul_*d and *_mul_*h. Reviewed By: pengfei Differential Revision: https://reviews.llvm.org/D112777
-
Vitaly Buka authored
mallinfo is deprecated by GLIBC Reviewed By: cryptoad Differential Revision: https://reviews.llvm.org/D113951
-
Kevin Cadieux authored
The key_type type definition for map containers is useful in some generic, template-based programming scenarios. The addition of key_type to MapVector is consistent with other map types like DenseMap. Differential Revision: https://reviews.llvm.org/D113242
-
Shoaib Meenai authored
As discussed in https://reviews.llvm.org/D113809#3128636. It's a bit unfortunate to move the asserts away from the structs whose sizes they're checking, but it's a far better developer experience when one of the asserts is violated, because you get a single error instead of every single source file including the header erroring out.
-
Nico Weber authored
1ee32055 was reverted in 67de95b8. This reverts commit a8e8e2d5 and follow-up a0dc6001
-
Vy Nguyen authored
Differential Revision: https://reviews.llvm.org/D114044
-
Mogball authored
MemRefOps.td has some inconsistencies in its formatting of argument lists.
-
Mircea Trofin authored
This reverts commit 39e9f5d3. Reverting, as we needed to re-revert the benchmarks move because it was causing a build failure in the Fuchsia bots due to the way they consume libcxx's CMakeLists. I want to make sure I understand where the fix should be for that. After that, I'll incorporate the change here in the re-reland.
-
Geoffrey Martin-Noble authored
This is getting reverted and relanded a lot, breaking the build each time. Differential Revision: https://reviews.llvm.org/D114043
-
Jim Ingham authored
The reworking of the gdb client tests into the PlatformClientTestBase broke the test for this. I did the mutatis mutandis for the move, but the test still fails. Reverting till I have time to figure out why. This reverts commit b715b79d.
-
Mogball authored
This struct was added and was intended to be used, but it was missed in the original patch. Reviewed By: rriddle Differential Revision: https://reviews.llvm.org/D114041
-
Mircea Trofin authored
This reverts commit 1ee32055. We hit additional bot failures; in particular, Fuchsia's seems to be related to how CMakeLists are ingested, see https://ci.chromium.org/ui/p/fuchsia/builders/toolchain.ci/clang-linux-x64/b8830380874445931681/overview
-
Shoaib Meenai authored
The `r_address` field of `relocation_info` is only 4 bytes, so our offset field (which is the `r_address` field adjusted for subsection splitting) also only needs to be 4 bytes. This reduces the structure size from 32 bytes to 24 bytes. Combined with https://reviews.llvm.org/D113813, this is a minor perf improvement for linking an internal app, tested on two machines: ``` smol-relocs baseline difference (95% CI) sys_time 7.367 ± 0.138 7.543 ± 0.157 [ +0.9% .. +3.8%] user_time 21.843 ± 0.351 21.861 ± 0.450 [ -1.3% .. +1.4%] wall_time 20.301 ± 0.307 20.556 ± 0.324 [ +0.1% .. +2.4%] samples 16 16 smol-relocs baseline difference (95% CI) sys_time 2.923 ± 0.050 2.992 ± 0.018 [ +1.4% .. +3.4%] user_time 10.345 ± 0.039 10.448 ± 0.023 [ +0.8% .. +1.2%] wall_time 12.068 ± 0.071 12.229 ± 0.021 [ +1.0% .. +1.7%] samples 15 12 ``` More importantly though, this change by itself reduces our maximum resident set size by 220 MB (2.75%, from 7.85 GB to 7.64 GB) on the first machine. On the second machine, it reduces it by 125 MB (1.94%, from 6.31 GB to 6.19 GB). Reviewed By: #lld-macho, int3 Differential Revision: https://reviews.llvm.org/D113818
-
Shoaib Meenai authored
We can lay out Symbol more optimally to reduce its size from 56 bytes to 48 bytes by eliminating unnecessary padding, and we can lay out Defined such that its bitfield members are placed in the tail padding of Symbol (on ABIs which support this), to reduce it from 96 bytes to 80 bytes (8 bytes from the Symbol reduction, and 8 bytes from the tail padding reuse). This is perf-neutral for an internal app (results from two different machines): ``` smol-syms baseline difference (95% CI) sys_time 7.430 ± 0.202 7.440 ± 0.193 [ -2.6% .. +2.9%] user_time 21.443 ± 0.513 21.206 ± 0.396 [ -3.3% .. +1.1%] wall_time 20.453 ± 0.534 20.222 ± 0.488 [ -3.7% .. +1.5%] samples 9 8 smol-syms baseline difference (95% CI) sys_time 3.011 ± 0.050 3.040 ± 0.052 [ -0.4% .. +2.3%] user_time 10.416 ± 0.075 10.496 ± 0.091 [ +0.1% .. +1.4%] wall_time 12.229 ± 0.144 12.354 ± 0.192 [ -0.1% .. +2.1%] samples 14 13 ``` However, on the first machine, it reduces maximum resident set size by 65.9 MB (0.8%, from 7.92 GB to 7.85 GB). On the second machine, it reduces it by 92 MB (1.4%, from 6.40 GB to 6.31 GB). Reviewed By: #lld-macho, int3 Differential Revision: https://reviews.llvm.org/D113813 -
Shoaib Meenai authored
It was checking for 64-bit builds incorrectly. Unfortunately, ConcatInputSection has grown a bit in the meantime, and I don't see any obvious way to shrink it. Perhaps icfEqClass could use 32-bit hashes instead of 64-bit ones, but xxHash64 is supposed to be much faster than xxHash32 (https://github.com/Cyan4973/xxHash#benchmarks), so that sounds like a loss. (Unrelatedly, we should really look at using XXH3 instead of xxHash64 now.) Reviewed By: #lld-macho, int3 Differential Revision: https://reviews.llvm.org/D113809
-
Jim Ingham authored
We don't actually need a local copy of the main executable to debug a remote process. So instead of treating "no local module" as an error, see if the LaunchInfo has an executable it wants lldb to use, and if so use it. Then report whatever error the remote server returns. Differential Revision: https://reviews.llvm.org/D113521
-
Nico Weber authored
The new benchmark dep apparently has more source files than the old one.
-
Nico Weber authored
-
Matthias Springer authored
This unit tests tests new functionality added by D112052. Differential Revision: https://reviews.llvm.org/D113461
-
Aaron Puchert authored
Instead of popping them and then immediately throwing them away, we can just filter out globals and items in different scopes before adding them to WorkList. Shouldn't change anything but keep the queue smaller. Reviewed By: aprantl Differential Revision: https://reviews.llvm.org/D113864
-
Aaron Puchert authored
It was being used occasionally already, and using it on the constructor and getDbgEntityID has obvious type safety benefits. Also use llvm_unreachable in the switch as usual, but since only these two values are used in constructor calls I think it's still NFC. Reviewed By: probinson Differential Revision: https://reviews.llvm.org/D113862
-
Benjamin Kramer authored
LiMI1/LiMI2 can be null, so don't call a method on them before checking. Found by ubsan.
-
David Green authored
The TODOs are now fixed as of D114018, so can be removed. Which is nice.
-
Leonard Chan authored
-
Duncan P. N. Exon Smith authored
LineCoverageIterator is not providing access to a mutable object. Fix it to iterate over `const LineCoverageStats` so that `operator->()` compiles again after 6b9b86db.
-
Lawrence D'Anna authored
LLDB doesn't use only the python stable ABI, which means loading it into an incompatible python can cause the process to crash. _lldb.so should be named with the full EXT_SUFFIX from sysconfig -- such as _lldb.cpython-39-darwin.so -- so this doesn't happen. Reviewed By: JDevlieghere Differential Revision: https://reviews.llvm.org/D112972
-
Siva Chandra Reddy authored
-
Leonard Chan authored
This is another attempt at D59351 which attempted to add --update-section, but with some heuristics for adjusting segment/section offsets/sizes in the event the data copied into the section is larger than the original size of the section. We are opting to not support this case. GNU's objcopy was able to do this because the linker and objcopy are tightly coupled enough that segment reformatting was simpler. This is not the case with llvm-objcopy and lld where they like to be separated. This will attempt to copy data into the section without changing any other properties of the parent segment (if the section is part of one). Differential Revision: https://reviews.llvm.org/D112116
-
Lawrence D'Anna authored
Apparently "{sys.prefix}/bin/python3" isn't where you find the python interpreter on windows, so the test I wrote for -print-script-interpreter-info is failing. We can't rely on sys.executable at runtime, because that will point to lldb.exe not python.exe. We can't just record sys.executable from build time, because python could have been moved to a different location. But it should be OK to apply relative path from sys.prefix to sys.executable from build-time to the sys.prefix at runtime. Reviewed By: JDevlieghere Differential Revision: https://reviews.llvm.org/D113650 -
Evgenii Stepanov authored
The original problem was fixed in D105261. Differential Revision: https://reviews.llvm.org/D114022
-
Martin Storsjö authored
This does mostly the same as D112126, but for the runtimes cmake files. Most of that is straightforward, but the interdependency between libcxx and libunwind is tricky: Libunwind is built at the same time as libcxx, but libunwind is not installed yet. LIBCXXABI_USE_LLVM_UNWINDER makes libcxx link directly against the just-built libunwind, but the compiler implicit -lunwind isn't found. This patch avoids that by adding --unwindlib=none if supported, if we are going to link explicitly against a newly built unwinder anyway. Differential Revision: https://reviews.llvm.org/D113253
-
Louis Dionne authored
5beec6fb added LLVM_DEFAULT_TARGET_TRIPLE to the runtimes build with a comment, however I believe that comment had been copied from the LLVM build tree. In the context of the runtimes, LLVM_DEFAULT_TARGET_TRIPLE is used to set what targets we are building for, not the target for which we "generate code". Differential Revision: https://reviews.llvm.org/D114007
-
Danila Kutenin authored
This effort is dedicated to deflake the tests of the users which depend on the unspecified behavior of algorithms and containers. This also might help updating the sorting algorithm in libcxx which has the quadratic worst case in the future or at least create a new one under flag. For detailed design, please see the design doc I provide in the patch. Differential Revision: https://reviews.llvm.org/D96946
-
Simon Pilgrim authored
Shows failure to fold zero_extend_vector_inreg(and(x, c)) -> bitcast(and(x,c')) when we're only demanding the 0'th extended element, such as with the SSE variable shift ops.
-
Louis Dionne authored
-
Valentin Clement authored
This patch adds the conversion pattern for the fir.string_lit operation. This patch is part of the upstreaming effort from fir-dev branch. Reviewed By: awarzynski Differential Revision: https://reviews.llvm.org/D113992 Co-authored-by:
Eric Schweitz <eschweitz@nvidia.com> Co-authored-by:
Jean Perier <jperier@nvidia.com>
-
Philip Reames authored
There are multiple possible ways to represent the X - urem X, Y pattern. SCEV was not canonicalizing, and thus, depending on which you analyzed, you could get different results. The sub representation appears to produce strictly inferior results in practice, so I decided to canonicalize to the Y * X/Y version. The motivation here is that runtime unroll produces the sub X - (and X, Y-1) pattern when Y is a power of two. SCEV is thus unable to recognize that an unrolled loop exits because we don't figure out that the new unrolled step evenly divides the trip count of the unrolled loop. After instcombine runs, we convert the the andn form which SCEV recognizes, so essentially, this is just fixing a nasty pass ordering dependency. The ARM loop hardware interaction in the test diff is opague to me, but the comments in the review from others knowledge of the infrastructure appear to indicate these are improvements in loop recognition, not regressions. Differential Revision: https://reviews.llvm.org/D114018
-
River Riddle authored
-
Pirama Arumuga Nainar authored
Since libclang_rt.profile is added later in the command line, a definition of __llvm_profile_raw_version is not included if it is provided from an earlier object, e.g. from a shared dependency. This causes an extra dependence edge where if libA.so depends on libB.so and both are coverage-instrumented, libA.so uses libB.so's definition of __llvm_profile_raw_version. This leads to a runtime link failure if the libB.so available at runtime does not provide this symbol (but provides the other dependent symbols). Such a scenario can occur in Android's mainline modules. E.g.: ld -o libB.so libclang_rt.profile-x86_64.a ld -o libA.so -l B libclang_rt.profile-x86_64.a libB.so has a global definition of __llvm_profile_raw_version. libA.so uses libB.so's definition of __llvm_profile_raw_version. At runtime, libB.so may not be coverage-instrumented (i.e. not export __llvm_profile_raw_version) so runtime linking of libA.so will fail. Marking this symbol as hidden forces each binary to use the definition of __llvm_profile_raw_version from libclang_rt.profile. The visiblity is unchanged for Apple platforms where its presence is checked by the TAPI tool. Reviewed By: MaskRay, phosek, davidxl Differential Revision: https://reviews.llvm.org/D111759
-