- Jun 02, 2021
-
-
Walter Erquinigo authored
These tests started failing after a change in the disassembler. The fix is pretty simple though.
-
Simon Pilgrim authored
[X86][SSE] combineScalarToVector - only reuse broadcasts for scalar_to_vector if the source operands scalar types match We were hitting an issue when the scalar_to_vector source was being implicitly truncated (in this case to i8 to vXi1) but we were also using the i8 source in a broadcast to a vXi8 value. Fixes PR50374
-
Kadir Cetinkaya authored
This is causing weird code patterns in various places and I can't see any difference between None and empty change list. Neither in the current use cases nor in the spec. Differential Revision: https://reviews.llvm.org/D103449
-
Kadir Cetinkaya authored
This enables requests like workspaceSymbols to be dispatched using the file user was most recently operating on. A replacement for D103179. Differential Revision: https://reviews.llvm.org/D103476
-
Erich Keane authored
In the case where the device is an itanium target, and the host is a windows target, we were getting the names wrong, since in the itanium case we filter by lambda-signature. The fix is to always filter by the signature rather than just on non-windows builds. I considered doing the reverse (that is, checking the aux-triple), but doing so would result in duplicate lambda mangling numbers (from linux reusing the same number for different signatures).
-
Min-Yih Hsu authored
`TargetFrameLowering::emitCalleeSavedFrameMoves` with 4 arguments is not used anywhere in CodeGen. Thus it shouldn't be exposed as a virtual function. NFC. Differential Revision: https://reviews.llvm.org/D103328
-
-
Richard Smith authored
contains constrained parameters.
-
LLVM GN Syncbot authored
-
Louis Dionne authored
This reverts commit 924ea3bb *again*, this time because it broke the LLDB build with modules. We need to figure out what's up with the libc++ modules build once and for all. Differential Revision: https://reviews.llvm.org/D103369
-
River Riddle authored
This removes the need to define the derived Operand class before the derived Value class. The major benefit of this refactoring is that we no longer need the OpaqueValue class, as OpOperand can now be defined after Value. As part of this refactoring the BlockOperand and OpOperand classes are moved out of UseDefLists.h and to more suitable locations in BlockSupport and Value. After this change, UseDefLists.h is almost entirely composed of generic use def utilities. Differential Revision: https://reviews.llvm.org/D103353
-
Kim-Anh Tran authored
This patch updates llvm-dwp to include rnglists and loclists when parsing debug sections. Reviewed By: dblaikie Differential Revision: https://reviews.llvm.org/D101894
-
Kim-Anh Tran authored
[llvm-dwp] Add support for DWARFv5 type units ... This patch adds support for DWARFv5 type units: parsing from the .debug_info section, and writing index to the type unit index. Previously, the type units were part of the .debug_types section which is no longer used in DWARFv5. Reviewed By: dblaikie Differential Revision: https://reviews.llvm.org/D101818
-
Kim-Anh Tran authored
This patch adds general support for DWARFv5 index writing. In particular, this means only allowing inputs with one version, either DWARFv5 or DWARFv4. This patch adds the .debug_macro section as an example, but the DWARFv5 type support and loc and rangelists are still missing (and upcoming). Reviewed By: dblaikie Differential Revision: https://reviews.llvm.org/D102315
-
River Riddle authored
This simplifies various pieces of code that interact with the pass registry, e.g. this removes the need to register passes to get accurate pass pipelines descriptions when generating crash reproducers. Differential Revision: https://reviews.llvm.org/D101880
-
Erich Keane authored
-
Jacques Pienaar authored
-
River Riddle authored
This revision allows for attaching "debug labels" to patterns, and provides to FrozenRewritePatternSet for filtering patterns based on these labels (in addition to the debug name of the pattern). This will greatly simplify the ability to write tests targeted towards specific patterns (in cases where many patterns may interact), will also simplify debugging pattern application by observing how application changes when enabling/disabling specific patterns. To enable better reuse of pattern rewrite options between passes, this revision also adds a new PassUtil.td file to the Rewrite/ library that will allow for passes to easily hook into a common interface for pattern debugging. Two options are used to seed this utility, `disable-patterns` and `enable-patterns`, which are used to enable the filtering behavior indicated above. Differential Revision: https://reviews.llvm.org/D102441
-
Sanjay Patel authored
This extends 434c8e01 and ede39827 to handle signed predicates by sign-extending the setcc operands. This is not shown directly in https://llvm.org/PR50055 , but the pattern is visible by changing the unsigned convert to signed in the source code.
-
Kim-Anh Tran authored
This patch makes llvm-dwp skip debug info sections that may not be encoding a compile unit. In DWARF5, debug info sections are also used for type units. As in preparation to support type units, make llvm-dwp aware of other uses of debug info sections but skip them for now. The patch first records all .debug_info sections, then goes through them one by one and records the cu debug info section for writing the index unit, and copies that section to the final dwp output info section. If it's not a compile unit, skip. Reviewed By: dblaikie Differential Revision: https://reviews.llvm.org/D102312
-
Andrew Browne authored
Without this change, a callsite like: [[clang::musttail]] return func_call(x); will cause an error like: fatal error: error in backend: failed to perform tail call elimination on a call site marked musttail due to DFSan inserting instrumentation between the musttail call and the return. Reviewed By: stephan.yichao.zhao Differential Revision: https://reviews.llvm.org/D103542
-
Stefan Pintilie authored
The buildbot ppc64le-lld-multistage-test has been failing because the variable Tag in Waymaking.h is set but not used. This patch removes that varaible.
-
Sanjay Patel authored
-
Jacques Pienaar authored
Currently the diagnostics reports the file:line:col, but some LSP frontends require a non-empty range. Report either the range of an identifier that starts at location, or a range of 1. Expose the id location to range helper and reuse here. Differential Revision: https://reviews.llvm.org/D103482
-
Rong Xu authored
This patch was split from https://reviews.llvm.org/D102246 [SampleFDO] New hierarchical discriminator for Flow Sensitive SampleFDO This is mainly for ProfileData part of change. It will load FS Profile when such profile is detected. For an extbinary format profile, create_llvm_prof tool will add a flag to profile summary section. For other format profiles, the users need to use an internal option (-profile-isfs) to tell the compiler that the profile uses FS discriminators. This patch also simplified the bit API used by FS discriminators. Differential Revision: https://reviews.llvm.org/D103041
-
Greg Clayton authored
Some larger projects were loading quite slowly with the current LLDB on macOS and macOS simulator builds. I did some instrument traces and found 3 main culprits: - a LLDB timer that was put into a function that was called too often - a std::set that was keeping track of the address of symbols that were already added - a unnamed function generator in ObjectFile that was going slow due to allocations In order to see this in action I ran the latest LLDB on a large application with many frameworks using the following method: (lldb) script import time; start_time = time.perf_counter() (lldb) file Large.app (lldb) script print(time.perf_counter() - start_time) I first range "sudo purge" to clear the system file caches to simulate a cold startup of the debugger, followed by two iterations with warm file caches. Prior to this fix I was seeing the following timings: 17.68 (cold) 14.56 (warm 1) 14.52 (warm 2) After this fix I was seeing: 11.32 (cold) 8.43 (warm 1) 8.49 (warm 2) Differential Revision: https://reviews.llvm.org/D103504
-
Mehdi Amini authored
-
Zhaomo Yang authored
This patch adds support for matching gtest's ASSERT_THAT, EXPECT_THAT, ON_CALL and EXPECT_CALL macros. Reviewed By: ymandel, hokein Differential Revision: https://reviews.llvm.org/D103195
-
Krzysztof Drewniak authored
When LLVM and MLIR are built as subprojects (via add_subdirectory), the CMake configuration that indicates where the MLIR libraries are is not necessarily in the same cmake/ directory as LLVM's configuration. This patch removes that assumption about where MLIRConfig.cmake is located. (As an additional none, the %llvm_lib_dir substitution was never defined, and so find_package(MLIR) in the build was succeeding for other reasons.) Reviewed By: stephenneuendorffer Differential Revision: https://reviews.llvm.org/D103276
-
Raphael Isemann authored
When checking for type properties we usually want to strip all kind of type sugar from the type. For example, sugar like Clang's ElaboratedType or typedefs rarely influence the fundamental behaviour of a type such as its byte size. However we always need to preserve type sugar for everything else as it does matter for users that their variable of type `size_t` instead of `unsigned long` for example. This patch fixes one such bug when trying to use the SBValue API to dereference a type. Reviewed By: werat, shafik Differential Revision: https://reviews.llvm.org/D103532
-
Sanjay Patel authored
This is a follow-up to D103280 that eases the use restrictions, so we can handle the motivating case from: https://llvm.org/PR50055 The loop code is adapted from similar use checks in ExtendUsesToFormExtLoad() and SliceUpLoad(). I did not see an easier way to filter out non-chain uses of load values. Differential Revision: https://reviews.llvm.org/D103462
-
Sanjay Patel authored
D103462
-
Mehdi Amini authored
-
Mehdi Amini authored
The `OptReductionPass.cpp` file depends on the TableGen generated `mlir/Reducer/Passes.h.inc` file.
-
Adrian Prantl authored
-
Peyton, Jonathan L authored
-
Daniel McIntosh authored
In 07ef8e67 and 3ed9f6eb, `__nbuf` started to diverge from the amount of space that was actually needed for the buffer. For 32-bit longs for example, we allocate a buffer that is one larger than needed. Moreover, it is no longer clear exactly where the extra +1 or +2 comes from - they're just numbers pulled from thin air. This PR cleans up how `__nbuf` is calculated, and adds comments to further clarify where each part comes from. Specifically, it corrects the underestimation of the max size buffer needed that the above two commits had to compensate for. The root cause looks to be the use of signed type parameters to numeric_limits<>::digits. Since digits only counts non-sign bits, the calculation was acting as though (for a signed 64-bit type) the longest value we would print was 2^63 in octal. However, printing in octal treats values as unsigned, so it is actually 2^64. Thus, using unsigned types and changing the final +2 to a +1 is probably a better option. Reviewed By: #libc, ldionne, Mordante Differential Revision: https://reviews.llvm.org/D103339
-
Nico Weber authored
My linux system doesn't like the `grep` for some reason, but FileCheck seems to work.
-
Hansang Bae authored
Differential Revision: https://reviews.llvm.org/D103464
-
Nico Weber authored
Also adds support for live_support sections, no_dead_strip sections, .no_dead_strip symbols. Chromium Framework 345MB unstripped -> 250MB stripped (vs 290MB unstripped -> 236M stripped with ld64). Doing dead stripping is a bit faster than not, because so much less data needs to be processed: % ministat lld_* x lld_nostrip.txt + lld_strip.txt N Min Max Median Avg Stddev x 10 3.929414 4.07692 4.0269079 4.0089678 0.044214794 + 10 3.8129408 3.9025559 3.8670411 3.8642573 0.024779651 Difference at 95.0% confidence -0.144711 +/- 0.0336749 -3.60967% +/- 0.839989% (Student's t, pooled s = 0.0358398) This interacts with many parts of the linker. I tried to add test coverage for all added `isLive()` checks, so that some test will fail if any of them is removed. I checked that the test expectations for the most part match ld64's behavior (except for live-support-iterations.s, see the comment in the test). Interacts with: - debug info - export tries - import opcodes - flags like -exported_symbol(s_list) - -U / dynamic_lookup - mod_init_funcs, mod_term_funcs - weak symbol handling - unwind info - stubs - map files - -sectcreate - undefined, dylib, common, defined (both absolute and normal) symbols It's possible it interacts with more features I didn't think of, of course. I also did some manual testing: - check-llvm check-clang check-lld work with lld with this patch as host linker and -dead_strip enabled - Chromium still starts - Chromium's base_unittests still pass, including unwind tests Implemenation-wise, this is InputSection-based, so it'll work for object files with .subsections_via_symbols (which includes all object files generated by clang). I first based this on the COFF implementation, but later realized that things are more similar to ELF. I think it'd be good to refactor MarkLive.cpp to look more like the ELF part at some point, but I'd like to get a working state checked in first. Mechanical parts: - Rename canOmitFromOutput to wasCoalesced (no behavior change) since it really is for weak coalesced symbols - Add noDeadStrip to Defined, corresponding to N_NO_DEAD_STRIP (`.no_dead_strip` in asm) Fixes PR49276. Differential Revision: https://reviews.llvm.org/D103324
-