- Apr 23, 2020
-
-
Mark Lacey authored
Summary: Make GenericScheduler compute SchedDFSResult on initialization if the policy is set. This makes it possible to create classes that extend GenericScheduler and rely on the results of SchedDFSResult, e.g. to perform subtree scheduling. NFC unless the policy is set. Subscribers: MatzeB, hiraditya, javed.absar, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D78432
-
Juneyoung Lee authored
Summary: This is RFC for fixes in poison-related functions of ValueTracking. These functions assume that a value can be poison bitwisely, but the semantics of bitwise poison is not clear at the moment. Allowing a value to have bitwise poison adds complexity to reasoning about correctness of optimizations. This patch makes the analysis functions simply assume that a value is either fully poison or not, which has been used to understand the correctness of a few previous optimizations. The bitwise poison semantics seems to be only used by these functions as well. In terms of implementation, using value-wise poison concept makes existing functions do more precise analysis, which is what this patch contains. Reviewers: spatel, lebedev.ri, jdoerfert, reames, nikic, nlopes, regehr Reviewed By: nikic Subscribers: fhahn, hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D78503
-
Alexander Shaposhnikov authored
Add missing license header to Object.cpp. NFC.
-
Juneyoung Lee authored
This reverts commit 80faa8c3.
-
Juneyoung Lee authored
Summary: This is RFC for fixes in poison-related functions of ValueTracking. These functions assume that a value can be poison bitwisely, but the semantics of bitwise poison is not clear at the moment. Allowing a value to have bitwise poison adds complexity to reasoning about correctness of optimizations. This patch makes the analysis functions simply assume that a value is either fully poison or not, which has been used to understand the correctness of a few previous optimizations. The bitwise poison semantics seems to be only used by these functions as well. In terms of implementation, using value-wise poison concept makes existing functions do more precise analysis, which is what this patch contains. Reviewers: spatel, lebedev.ri, jdoerfert, reames, nikic, nlopes, regehr Reviewed By: nikic Subscribers: fhahn, hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D78503
-
Alexander Shaposhnikov authored
This tiny change is a follow-up to the previous commit f34fdbcf where the update of n_sect was missing. Test plan: make check-all
-
Stephen Neuendorffer authored
Several external build users contain some heuristics for finding llvm-lit. There are several cases we need to worry about: - External builds against a build tree (with LLVM_BUILD_UTILS) - External builds against an install tree (with LLMV_BUILD_UTIL and LLVM_INSTALL_UTILS) - External builds against some location which doesn't have an llvm-lit, but llvm-lit is available through some other means, such as an available source tree, or a packager provided llvm-lit. For the third case, LLVM_EXTERNAL_LIT suffices, but in other cases there's no standard way to find llvm-lit. It seems like each user cooks their own heuristics: - clang tries to look in the LLVM source tree, and failing that falls back to looking for a packaged llvm-lit. - libcxx tries to look in the LLVM source tree, which might come from llvm-config or be explicitly specified. This patch is a first stop to solving this by providing a default location for llvm-lit using LLVM_DEFAULT_EXTERNAL_LIT. The expectation is that future patches can clean up users like clang and libcxx to rely on this mechanism for out-of-tree builds. Differential Revision: https://reviews.llvm.org/D77110
-
Sergej Jaskiewicz authored
Time profiler emits relative timestamps for events (the number of microseconds passed since the start of the current process). This patch allows combining events from different processes while preserving their relative timing by emitting a new attribute "beginningOfTime". This attribute contains the system time that corresponds to the zero timestamp of the time profiler. This has at least two use cases: - Build systems can use this to merge time traces from multiple compiler invocations and generate statistics for the whole build. Tools like ClangBuildAnalyzer could also leverage this feature. - Compilers that use LLVM as their backend by invoking llc/opt in a child process. If such a compiler supports generating time traces of its own events, it could merge those events with LLVM-specific events received from llc/opt, and produce a more complete time trace. A proof-of-concept script that merges multiple logs that contain a synchronization point into one log: https://github.com/broadwaylamb/merge_trace_events Differential Revision: https://reviews.llvm.org/D78030
-
Louis Dionne authored
The introduction of LIBCXX_HAS_MERGED_TYPEINFO_NAMES_DEFAULT changed the default from =1 (assuming merged typeinfos) to =0 (not assuming merged typeinfos) on all platforms where at least one other __config_site macro is defined. This commit explicitly enables the assumption of merged typeinfo names on Apple platform to restore the previous behavior, at least until the underlying issue has been fixed.
-
Alexander Shaposhnikov authored
Make --remove-section clean up dead symbols, return an Error if it can't be safely done. Test plan: make check-all Differential revision: https://reviews.llvm.org/D78474
-
Eli Friedman authored
Preserving liveness can be useful even late in the pipeline, if we're doing substantial optimization work afterwards. (See, for example, D76065.) Teach MachineOutliner how to correctly set live-ins on the basic block in outlined functions. Differential Revision: https://reviews.llvm.org/D78605
-
Lang Hames authored
This patch changes Block::removeEdge to return a valid iterator to the new next element, and uses this to update the edge removal algorithm in LinkGraph::splitBlock.
-
Lang Hames authored
It's the only field we need in this function.
-
Sergej Jaskiewicz authored
Differential Revision: https://reviews.llvm.org/D78027
-
Florian Hahn authored
visitExtractValueInst uses mergeInValue, so it already can handle constant ranges. Initially the early exit was using isOverdefined to keep things as NFC during the initial move to ValueLatticeElement. As the function already supports constant ranges, it can just use ValueState[&I].isOverdefined. Reviewers: efriedma, mssimpso, davide Reviewed By: efriedma Differential Revision: https://reviews.llvm.org/D78393
-
Sander de Smalen authored
This also adds the IsOverloadWhileRW flag which tells CGBuiltin to use the result predicate type and the first pointer type as the overloaded types for the LLVM IR intrinsic. Reviewers: SjoerdMeijer, efriedma Reviewed By: efriedma Tags: #clang Differential Revision: https://reviews.llvm.org/D78238
-
Sander de Smalen authored
This also adds the IsOverloadWhile flag which tells CGBuiltin to use both the default type (predicate) and the type of the second operand (scalar) as the overloaded types for the LLMV IR intrinsic. Reviewers: SjoerdMeijer, efriedma, rovka Reviewed By: efriedma Tags: #clang Differential Revision: https://reviews.llvm.org/D77595
-
Aaron Puchert authored
Summary: We extend the behavior for local functions and methods of local classes to lambdas in variable initializers. The initializer is not a separate scope, but we treat it as such. We also remove the (faulty) instantiation of default arguments in TreeTransform::TransformLambdaExpr, because it doesn't do proper initialization, and if it did, we would do it twice (and thus also emit eventual errors twice). Reviewed By: rsmith Differential Revision: https://reviews.llvm.org/D76038
-
Louis Dionne authored
Instead of the ad-hoc #define _LIBCXX_DYNAMIC_FALLBACK, provide an option to enable the setting when building libc++abi. Also use the occasion to rename the option to something slightly more descriptive. Note that in the future, it would be great to simply remove this option altogether. However, in the meantime, it seems better to have it be an official option than something ad-hoc.
-
Victor Huang authored
Add initial support for PCRelative addressing to get block address instead of using TOC. Differential Revision: https://reviews.llvm.org/D76294
-
Jon Roelofs authored
-
Louis Dionne authored
This is more consistent with how __cxxabi_config.h is included in other files in libcxxabi/src.
-
Ayke van Laethem authored
This patch replaces () prototypes with (void) prototypes. Differential Revision: https://reviews.llvm.org/D78641
-
Fangrui Song authored
[ELF] For relative paths in INPUT() and GROUP(), search the directory of the current linker script before searching other paths For a relative path in INPUT() or GROUP(), this patch changes the search order by adding the directory of the current linker script. The new search order (consistent with GNU ld >= 2.35 regarding the new test `test/ELF/input-relative.s`): 1. the directory of the current linker script (GNU ld from Binutils 2.35 onwards; https://sourceware.org/bugzilla/show_bug.cgi?id=25806) 2. the current working directory 3. library paths (-L) This behavior makes it convenient to replace a .so or .a with a linker script with additional input. For example, glibc ``` % cat /usr/lib/x86_64-linux-gnu/libm.a /* GNU ld script */ OUTPUT_FORMAT(elf64-x86-64) GROUP ( /usr/lib/x86_64-linux-gnu/libm-2.29.a /usr/lib/x86_64-linux-gnu/libmvec.a ) ``` could be simplified as `GROUP(libm-2.29.a libmvec.a)`. Another example is to make libc++.a a linker script: ``` INPUT(libc++.a.1 libc++abi.a) ``` Note, -l is not affected. Reviewed By: psmith Differential Revision: https://reviews.llvm.org/D77779
-
Louis Dionne authored
-
Craig Topper authored
[CallSite removal][ValueTracking] Use CallBase instead of ImmutableCallSite for getIntrinsicForCallSite. NFC Differential Revision: https://reviews.llvm.org/D78613
-
Kadir Cetinkaya authored
Summary: Macro argument expansion logic relies on skipping file IDs that created as a result of an include. Unfortunately it fails to do that for predefined buffer since it doesn't have a valid insertion location. As a result of that any file ID created for an include inside the predefined buffers breaks the traversal logic in SourceManager::computeMacroArgsCache. To fix this issue we first record number of created FIDs for predefined buffer, and then skip them explicitly in source manager. Another solution would be to just give predefined buffers a valid source location, but it is unclear where that should be.. Reviewers: sammccall Subscribers: cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D78649
-
Haojian Wu authored
Summary: Fixes https://github.com/clangd/clangd/issues/347. Reviewers: kadircet Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, usaxena95, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D78626
-
Puyan Lotfi authored
Hash Jump Table Indices uniquely within a basic block for MIR Canonicalizer / MIR VReg Renamer passes. Differential Revision: https://reviews.llvm.org/D77966
-
Louis Dionne authored
rdar://14390808
-
Jon Roelofs authored
-
Alexander Shaposhnikov authored
Add support for relocations for MachO to ObjectYAML / yaml2obj / obj2yaml. Test plan: make check-all Differential revision: https://reviews.llvm.org/D77844
-
Aaron Ballman authored
-
Louis Dionne authored
-
Sam McCall authored
Summary: This is intended as a companion to (and is inspired by) D72874 which attempts to resolve these cases using the index. The intent is we'd try this strategy after the AST-based approach but before the index-based (I think local usages would be more reliable than index matches). Reviewers: nridge Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, kadircet, usaxena95, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D75479
-
Peter Collingbourne authored
Differential Revision: https://reviews.llvm.org/D78594
-
Simon Pilgrim authored
-
Simon Pilgrim authored
-
Simon Pilgrim authored
-
Simon Pilgrim authored
-