- Nov 03, 2020
-
-
Fangrui Song authored
-
Alina Sbirlea authored
The API `canSinkOrHoistInst` may be called by LoopSink. Add assert to avoid having two analyses passed in.
-
Vitaly Buka authored
-
Akira Hatanaka authored
-
Diego Caballero authored
This patch renames AffineParallelNormalize to AffineLoopNormalize to make it more generic and be able to hold more loop normalization transformations in the future for affine.for and affine.parallel ops. Eventually, it could also be extended to support scf.for and scf.parallel. As a starting point for affine.for, the patch also adds support for removing single iteration affine.for ops to the the pass. Differential Revision: https://reviews.llvm.org/D90267
-
Reid Kleckner authored
parallelTransformReduce is modelled on the C++17 pstl API of std::transform_reduce, except our wrappers do not use execution policy parameters. parallelForEachError allows loops that contain potentially failing operations to propagate errors out of the loop. This was one of the major challenges I encountered while parallelizing PDB type merging in LLD. Parallelizing a loop with parallelForEachError is not behavior preserving: the loop will no longer stop on the first error, it will continue working and report all errors it encounters in a list. I plan to use this to propagate errors out of LLD's coff::TpiSource::remapTpiWithGHashes, which currently stores errors an error in the TpiSource object. Differential Revision: https://reviews.llvm.org/D90639
-
Fangrui Song authored
In the wild, kexec-tools purgatory/arch/ppc64/v2wrap.S and hvcall.S use this directive.
-
MaheshRavishankar authored
Reviewed By: ThomasRaoux Differential Revision: https://reviews.llvm.org/D90582
-
Alex Lorenz authored
The __isPlatformVersionAtLeast routine is an implementation of `if (@available)` check that uses the _availability_version_check API on Darwin that's supported on macOS 10.15, iOS 13, tvOS 13 and watchOS 6. Differential Revision: https://reviews.llvm.org/D90367
-
Louis Dionne authored
The strings were concatenated together without adding spaces between numbers, which lead to numbers that wouldn't fit in an unsigned int. Thanks to Casey Carter for the find.
-
Kostya Kortchinsky authored
- we have clutter-reducing helpers for relaxed atomics that were barely used, use them everywhere we can - clang-format everything with a recent version Differential Revision: https://reviews.llvm.org/D90649
-
Fangrui Song authored
This is a pre-existing problem exposed by D90511 (asan failurs with clang/test/Driver/relax.s and a few other tests).
-
Gaurav Jain authored
Differential Revision: https://reviews.llvm.org/D90611
-
Thomas Rodgers authored
Standard libraries may (libstdc++ in particular) forbid direct use of assert()/<cassert> in library code. Differential Revision: https://reviews.llvm.org/D60249
-
Ben Dunbobbin authored
415f7ee8 had LIT test failures on any build where the clang executable was not called "clang". I have adjusted the LIT CHECKs to remove the binary name to fix this. Original commit message: For PlayStation we offer source code compatibility with Microsoft's dllimport/export annotations; however, our file format is based on ELF. To support this we translate from DLL storage class to ELF visibility at the end of codegen in Clang. Other toolchains have used similar strategies (e.g. see the documentation for this ARM toolchain: https://developer.arm.com/documentation/dui0530/i/migrating-from-rvct-v3-1-to-rvct-v4-0/changes-to-symbol-visibility-between-rvct-v3-1-and-rvct-v4-0) This patch adds the ability to perform this translation. Options are provided to support customizing the mapping behaviour. Differential Revision: https://reviews.llvm.org/D89970
-
Rahul Joshi authored
Differential Revision: https://reviews.llvm.org/D90651
-
Artem Belevich authored
This reverts commit f38a9e51 Which triggered assertions.
-
Jonas Devlieghere authored
Address post-commit review from Adrian.
-
River Riddle authored
This revision refactors the base Op/AbstractOperation classes to reduce the amount of generated code size when defining a new operation. The current scheme involves taking the address of functions defined directly on Op and Trait classes. This is problematic because even when these functions are empty/unused we still result in these functions being defined in the main executable. In this revision, we switch to using SFINAE and template type filtering to remove remove functions that are not needed/used. For example, if an operation does not define a custom `print` method we shouldn't define a templated `printAssembly` method for it. The same applies to parsing/folding/verification/etc. This dropped MLIR code size for a large downstream library by ~10%(~1 mb in an opt build). Differential Revision: https://reviews.llvm.org/D90196
-
Artem Belevich authored
While CUDA documentation claims that such variables are not allowed[1], NVCC has been accepting them since CUDA-10.0[2] and some headers in CUDA-11 rely on this working. 1. https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#static-variables-function 2. https://godbolt.org/z/zsodzc Differential Revision: https://reviews.llvm.org/D88345
-
Fangrui Song authored
MC currently produces monolithic .gcc_except_table section. GCC can split up .gcc_except_table: * if comdat: `.section .gcc_except_table._Z6comdatv,"aG",@progbits,_Z6comdatv,comdat` * otherwise, if -ffunction-sections: `.section .gcc_except_table._Z3fooi,"a",@progbits` This ensures that (a) non-prevailing copies are discarded and (b) .gcc_except_table associated to discarded text sections can be discarded by a .gcc_except_table-aware linker (GNU ld, but not gold or LLD) This patches matches the GCC behavior. If -fno-unique-section-names is specified, we don't append the suffix. If -ffunction-sections is additionally specified, use `.section ...,unique`. Note, if clang driver communicates that the linker is LLD and we know it is new (11.0.0 or later) we can use SHF_LINK_ORDER to avoid string table costs, at least in the -fno-unique-section-names case. We cannot use it on GNU ld because as of binutils 2.35 it does not support mixed SHF_LINK_ORDER & non-SHF_LINK_ORDER components in an output section https://sourceware.org/bugzilla/show_bug.cgi?id=26256 For RISC-V -mrelax, this patch additionally fixes an assembler-linker interaction problem: because a section is shrinkable, the length of a call-site code range is not a constant. Relocations referencing the associated text section (STT_SECTION) are needed. However, a STB_LOCAL relocation referencing a discarded section group member from outside the group is disallowed by the ELF specification (PR46675): ``` // a.cc inline int comdat() { try { throw 1; } catch (int) { return 1; } return 0; } int main() { return comdat(); } // b.cc inline int comdat() { try { throw 1; } catch (int) { return 1; } return 0; } int foo() { return comdat(); } clang++ -target riscv64-linux -c a.cc b.cc -fPIC -mno-relax ld.lld -shared a.o b.o => ld.lld: error: relocation refers to a symbol in a discarded section: ``` -fbasic-block-sections= is similar to RISC-V -mrelax: there are outstanding relocations. Reviewed By: jrtc27, rahmanl Differential Revision: https://reviews.llvm.org/D83655
-
Nikita Popov authored
-
Kostya Kortchinsky authored
The initial version of GWP-ASan on Fuchsia doesn't support crash and signal handlers, so this just adds empty stubs to be able to compile the project on the platform. Differential Revision: https://reviews.llvm.org/D90537
-
Benjamin Kramer authored
Looks like we have a blind spot in the testing matrix. AsyncRegionRewriter.cpp: In member function ‘virtual void {anonymous}::GpuAsyncRegionPass::runOnFunction()’: AsyncRegionRewriter.cpp:113:16: internal compiler error: in replace_placeholders_r, at cp/tree.c:2804 if (getFunction() ~~~~~~~~~~~~~ .getRegion() ~~~~~~~~~~~~ .walk(Callback{OpBuilder{&getContext()}}) ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -
Rahul Joshi authored
- Add standard dialect operations to define global variables with memref types and to retrieve the memref for to a named global variable - Extend unit tests to test verification for these operations. Differential Revision: https://reviews.llvm.org/D90337
-
peter klausler authored
Ensure that character length is properly calculated for actual arguments to intrinsics, and that source provenance information is available when expression analysis calls folding in cases where the length is invalid. Differential revision: https://reviews.llvm.org/D90636
-
Tony authored
Separate the AMDGPU memory model description into separate sections for each architecture. Differential Revision: https://reviews.llvm.org/D90548
-
Nikita Popov authored
-
Fangrui Song authored
``` // The legacy PM CGPassManager discovers SCCs this way: for function in the source order tarjanSCC(function) // While the new PM CGSCCPassManager does: for function in the reversed source order [1] discover a reference graph SCC build call graph SCCs inside the reference graph SCC ``` In the common cases, reference graph ~= call graph, the new PM order is undesired because for `a | b | c` (3 independent functions), the new PM will process them in the reversed order: c, b, a. If `a <-> b <-> c`, we can see that `-print-after-all` will report the sole SCC as `scc: (c, b, a)`. This patch corrects the iteration order. The discovered SCC order will match the legacy PM in the common cases. For some tests (`Transforms/Inline/cgscc-*.ll` and `unittests/Analysis/CGSCCPassManagerTest.cpp`), the behaviors are dependent on the SCC discovery order and there are too many check lines for the particular order. This patch simply reverses the function order to avoid changing too many check lines. Differential Revision: https://reviews.llvm.org/D90566
-
Atmn Patel authored
This has already been done by @rjmccall in D76526 (49e5a97e), and 9514c048. We should remove this from the docs. Differential Revision: https://reviews.llvm.org/D90550
-
Duncan P. N. Exon Smith authored
Attempt to fix build error on bots not seen locally.
-
Sean Silva authored
BufferPlacement is no longer part of bufferization. However, this test is an important test of "finalizing" bufferize passes. A "finalizing" bufferize conversion is one that performs a "full" conversion and expects all tensors to be gone from the program. This in particular involves rewriting funcs (including block arguments of the contained region), calls, and returns. The unique property of finalizing bufferization passes is that they cannot be done via a local transformation with suitable materializations to ensure composability (as other bufferization passes do). For example, if a call is rewritten, the callee needs to be rewritten otherwise the IR will end up invalid. Thus, finalizing bufferization passes require an atomic change to the entire program (e.g. the whole module). This new designation makes it clear also that it shouldn't be testing bufferization of linalg ops, so the tests have been updated to not use linalg.generic ops. (linalg.copy is still used as the "copy" op for copying into out-params) Differential Revision: https://reviews.llvm.org/D89979
-
Sean Silva authored
This is the most basic possible finalizing bufferization pass, which I also think is sufficient for most new use cases. The more concentrated nature of this pass also greatly clarifies the invariants that it requires on its input to safely transform the program (see the pass description in Passes.td). With this pass, I have now upstreamed practically all of the bufferizations from npcomp (the exception being std.constant, which can be upstreamed when std.global_memref lands: https://llvm.discourse.group/t/rfc-global-variables-in-mlir/2076/16 ) Differential Revision: https://reviews.llvm.org/D90205
-
Fangrui Song authored
A SMLoc allows MCStreamer to report location-aware diagnostics, which were previously done by adding SMLoc to various methods (e.g. emit*) in an ad-hoc way. Since the file:line is most important, the column is less important and the start token location suffices in many cases, this patch reverts b7e7131a ``` // old symbol-binding-changed.s:6:8: error: local changed binding to STB_GLOBAL .globl local ^ // new symbol-binding-changed.s:6:1: error: local changed binding to STB_GLOBAL .globl local ^ ``` Reviewed By: rnk Differential Revision: https://reviews.llvm.org/D90511
-
Sam McCall authored
The index server has access to potentially-sensitive information, e.g. a sequence of fuzzyFind requests reveals details about code completions in the editor which in turn reveals details about the code being edited. This information is necessary to provide the service, and our intention[1] is it should never be retained beyond the scope of the request (e.g. not logged). At the same time, some log messages should be exposed: - server startup/index reloads etc that don't pertain to a user request - basic request logs (method, latency, #results, error code) for monitoring - errors while handling requests, without request-specific data The -log=public design accommodates these by allowing three types of logs: - those not associated with any user RPC request (via context-propagation) - those explicitly tagged as [public] in the log line - logging of format strings only, with no interpolated data (error level only) [1] Specifically: Google is likely to run public instances of this server for LLVM and potentially other projects, they will run in this configuration. The details agreed in a Google-internal privacy review. As clangd developers, we'd encourage others to use this configuration for public instances too. Differential Revision: https://reviews.llvm.org/D90526
-
Stephen Kelly authored
Summary: IgnoreUnlessSpelledInSource mode should ignore these because they are not written in the source. This matters for example when trying to replace types or values which are templated. The new test in TransformerTest.cpp in this commit demonstrates the problem. In existing matcher code, users can write `unless(isInTemplateInstantiation())` or `unless(isInstantiated())` (the user must know which to use). The point of the TK_IgnoreUnlessSpelledInSource mode is to allow the novice to avoid such details. This patch changes the IgnoreUnlessSpelledInSource mode to skip over implicit template instantiations. This patch does not change the TK_AsIs mode. Note: An obvious attempt at an alternative implementation would simply change the shouldVisitTemplateInstantiations() in ASTMatchFinder.cpp to return something conditional on the operational TraversalKind. That does not work because shouldVisitTemplateInstantiations() is called before a possible top-level traverse() matcher changes the operational TraversalKind. Reviewers: sammccall, aaron.ballman, gribozavr2, ymandel, klimek Subscribers: cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D80961
-
Stephen Kelly authored
Make it possible to use argumentCountIs and hasArgument with CXXUnresolvedConstructExpr. Differential Revision: https://reviews.llvm.org/D90553
-
Mircea Trofin authored
Differential Revision: https://reviews.llvm.org/D90621
-
Duncan P. N. Exon Smith authored
Change `Module::ASTFile` and `ModuleFile::File` to use `Optional<FileEntryRef>` instead of `const FileEntry *`. One of many steps toward removing `FileEntry::getName`. Differential Revision: https://reviews.llvm.org/D89836
-
Sam McCall authored
- pass required=False to use_clang(), as we don't need it - fix required=False (which was unused and rotted): - make derived substitutions conditional on it - add a feature so we can disable tests that need it - conditionally disable our one test that depends on %resource_dir. This doesn't seem right from first principles, but isn't a big deal. Differential Revision: https://reviews.llvm.org/D90528
-