- Sep 01, 2021
-
-
Sylvestre Ledru authored
Reviewed By: phosek, MaskRay Differential Revision: https://reviews.llvm.org/D108890
-
Jean Perier authored
The standard specifies that the form must be set to a default at the end of an open statement (C.7.4 point 2) where it was not specified. Only in the case of a pre-connected unit can the form be deferred until the first data transfer statement. Set back the default form setting in OpenStatementState::EndIoStatement that had been removed when deferring the pre-connected unit from setting in 199a623e. Also return "UNDEFINED" instead of "UNKNOWN" to the FORM inquiry when the form was not yet specified as defined in 12.10.2.12. Related test: syntax 215a216. Differential Revision: https://reviews.llvm.org/D108990
-
Luke authored
Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D108973
-
Michał Górny authored
Temporarily remove breakpoints for the duration of vfork, in order to prevent them from triggering in the child process. Restore them once the server reports that vfork has finished and it is ready to resume execution. Differential Revision: https://reviews.llvm.org/D100267
-
Anton Afanasyev authored
This test sometimes triggers failures during build testing. For instance, see: https://lab.llvm.org/buildbot/#/builders/52/builds/10161, details: https://lab.llvm.org/buildbot/#/builders/52/builds/10161/steps/5/logs/FAIL__Clang__check-time-trace-sections_cpp . AFAICT the time between driver calling and checking its time tracker output is not guaranteed to be stable and small: ``` > head -2 check-time-trace-sections.cpp // RUN: %clangxx -S -ftime-trace -ftime-trace-granularity=0 -o %T/check-time-trace-sections %s // RUN: cat %T/check-time-trace-sections.json | %python %S/check-time-trace-sections.py > clang -S -ftime-trace -ftime-trace-granularity=0 -o /tmp/check check-time-trace-sections.cpp > cat /tmp/check.json | python check-time-trace-sections.py > sleep 10 > cat /tmp/check.json | python check-time-trace-sections.py 'beginningOfTime' should represent the absolute time when the process has started > ``` The attribute `beginningOfTime` was introduced here: https://reviews.llvm.org/D78030 One can change "10 sec" value to something longer, but I believe it's enough just to check that `beginningOfTime` exists and is not later than current time. Differential Revision: https://reviews.llvm.org/D108625
-
Fangrui Song authored
For a variable in a comdat nodeduplicate, its initializer may be significant. E.g. its content may be implicitly referenced by another comdat member (or required to parallel to another comdat member by the runtime when explicit section is used). We can clone it into an unnamed private linkage variable to preserve its content. This partially fixes PR51394 (Sony's proprietary linker using LTO): no error will be reported. This is partial because we do not guarantee the global variable order if the runtime has parallel section requirement. --- There is a similar issue for regular LTO, but unrelated to PR51394: with lib/LTO (using either ld.lld or LLVMgold.so), linking two modules with a weak function of the same name, can leave one weak profc and two private profd, due to lib/LTO's current deficiency that it mixes the two concepts together: comdat selection and symbol resolution. If the issue is considered important, we should suppress private profd for the weak+ regular LTO case. Reviewed By: phosek Differential Revision: https://reviews.llvm.org/D108879
-
Vassil Vassilev authored
The current infrastructure in lib/Interpreter has a tool, clang-repl, very similar to clang-interpreter which also allows incremental compilation. This patch moves clang-interpreter as a test case and drops it as conditionally built example as we already have clang-repl in place. Differential revision: https://reviews.llvm.org/D107049
-
hsmahesha authored
While initializing the LDS pointers within entry basic block of kernel(s), make sure that the entry basic block is split after alloca instructions. Reviewed By: rampitec Differential Revision: https://reviews.llvm.org/D108971
-
Christudasan Devadasan authored
Analogous to the TSFlags for machine instructions, this patch introduces a bit vector for register classes to have target specific flags that become a tablegened value in TargetRegisterClass. Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D108767
-
Yonghong Song authored
A new LLVM specific TAG DW_TAG_LLVM_annotation is added. The name is suggested by Paul Robinson ([1]). Currently, this tag is used to output __attribute__((btf_tag("string"))) annotations in dwarf. The following is an example for a global variable with two btf_tag attributes: 0x0000002a: DW_TAG_variable DW_AT_name ("g1") DW_AT_type (0x00000052 "int") DW_AT_external (true) DW_AT_decl_file ("/tmp/home/yhs/work/tests/llvm/btf_tag/t.c") DW_AT_decl_line (8) DW_AT_location (DW_OP_addr 0x0) 0x0000003f: DW_TAG_LLVM_annotation DW_AT_name ("btf_tag") DW_AT_const_value ("tag1") 0x00000048: DW_TAG_LLVM_annotation DW_AT_name ("btf_tag") DW_AT_const_value ("tag2") 0x00000051: NULL In the future, DW_TAG_LLVM_annotation may encode other type of non-string const value. [1] https://lists.llvm.org/pipermail/llvm-dev/2021-June/151250.html Differential Revision: https://reviews.llvm.org/D106621 -
Joel E. Denny authored
-
Michael Kruse authored
Change pass-by-const-ref to pass-by-value as objects are recreated due to custom up-/down-casting anwyway.
-
Michael Kruse authored
-
Wang, Pengfei authored
Reviewed By: LuoYuanke Differential Revision: https://reviews.llvm.org/D105799
-
Petr Hosek authored
When a nodeduplicate COMDAT group contains a weak symbol, choose a non-weak symbol (or one of the weak ones) rather than reporting an error. This should address issue PR51394. With the current IR representation, a generic comdat nodeduplicate semantics is not representable for LTO. In the linker, sections and symbols are separate concepts. A dropped weak symbol does not force the defining input section to be dropped as well (though it can be collected by GC). In the IR, when a weak linkage symbol is dropped, its associate section content is dropped as well. For InstrProfiling, which is where ran into this issue in PR51394, the deduplication semantic is a sufficient workaround. Differential Revision: https://reviews.llvm.org/D108689
-
Sanjay Patel authored
-
Alexandre Ganea authored
Differential Revision: https://reviews.llvm.org/D109030
-
Joseph Huber authored
Performance on GPU targets can be highly variable, sometimes inlining everything hurts performance and sometimes it greatly improves it. Add an option to toggle this behaviour to better investigate it. Reviewed By: jdoerfert Differential Revision: https://reviews.llvm.org/D109014
-
Alex Langford authored
It is easy to accidentally introduce a deadlock by having the callback passed to Language::ForEach also attempt to acquire the same lock. It is easy enough to disallow the callback from calling anything in Language directly, but it may happen through a series of other function/method calls. The solution I am proposing is to tighten the lock in Language::ForEach so that it is only held as we gather the currently loaded language plugins. We store them in a vector and then iterate through them with the callback so that the callback can't introduce a deadlock. Differential Revision: https://reviews.llvm.org/D109013
-
wren romano authored
Trying to reduce confusion by having the name of the public method match that of the private method for handling the recursion. Also adding some comments to SparseTensorStorage::fromCOO to help clarify what the recursive calls are doing in the dense case. Reviewed By: aartbik Differential Revision: https://reviews.llvm.org/D108954
-
Andrew Browne authored
-
Vy Nguyen authored
The current help msg isn't super clear on whether t prints the content of the files or just the list of files. (I'd certainly thought it'd print the list of files, and accidentally had a bunch of "gargabe" printed to my terminal). Similarly, t sounded like it'd do what p actually did. Differential Revision: https://reviews.llvm.org/D109018
-
Kevin Athey authored
This reverts commit 71d7fed3. Reason: broke sanitizer bots more info: https://reviews.llvm.org/D108770
-
Louis Dionne authored
This must have been meant to be friend-declaring operator!=, but it turns out that it's not even necessary to make it a friend since it does not access any private state. rdar://82568613
-
Stanislav Mekhanoshin authored
When RA eliminated a dead def it can either immediately delete the instruction itself or replace it with KILL to defer the actual removal. If this instruction has a virtual register use killing the register it will shrink the LI of the use. However, if the LI covers the instruction and extends beyond it the shrink will not happen. In fact that is impossible to shrink such use because of the KILL still using it. If later the LI of the use will be split at the KILL and the KILL itself is eliminated after that point the new live segment ends up at an invalid slot index. This extremely rare condition was hit after D106408 which has enabled rematerialization of such instructions. The replacement with KILL is only done for rematerialized defs which became dead and such rematerialization did not generally happen before. The patch deletes an instruction immediately if it is a result of rematerialization and has such use. An alternative would be to prohibit a split at a KILL instruction, but it looks like it is better to split a live range rather then keeping a killed instruction just in case it can be rematerialized further. Fixes PR51655. Differential Revision: https://reviews.llvm.org/D108951
-
Nikita Popov authored
SLPVectorizer currently uses AA::isNoAlias() to determine whether two locations alias. This does not work if one of the instructions is a call. Instead, we should check getModRefInfo(), which determines whether an arbitrary instruction modifies or references a given location. Among other things, this prevents @llvm.experimental.noalias.scope.decl() and other inaccessiblmemonly intrinsics from interfering with SLP vectorization. Differential Revision: https://reviews.llvm.org/D109012
-
wlei authored
This change aims at supporting LBR only sample perf script which is used for regular(Non-CS) profile generation. A LBR perf script includes a batch of LBR sample which starts with a frame pointer and a group of 32 LBR entries is followed. The FROM/TO LBR pair and the range between two consecutive entries (the former entry's TO and the latter entry's FROM) will be used to infer function profile info. An example of LBR perf script(created by `perf script -F ip,brstack -i perf.data`) ``` 40062f 0x40062f/0x4005b0/P/-/-/9 0x400645/0x4005ff/P/-/-/1 0x400637/0x400645/P/-/-/1 ... 4005d7 0x4005d7/0x4005e5/P/-/-/8 0x40062f/0x4005b0/P/-/-/6 0x400645/0x4005ff/P/-/-/1 ... ... ``` For implementation: - Extended a new child class `LBRPerfReader` for the sample parsing, reused all the functionalities in `extractLBRStack` except for an extension to parsing leading instruction pointer. - `HybridSample` is reused(just leave the call stack empty) and the parsed samples is still aggregated in `AggregatedSamples`. After that, range samples, branch sample, address samples are computed and recorded. - Reused `ContextSampleCounterMap` to store the raw profile, since it's no need to aggregation by context, here it just registered one sample counter with a fake context key. - Unified to use `show-raw-profile` instead of `show-unwinder-output` to dump the intermediate raw profile, see the comments of the format of the raw profile. For CS profile, it remains to output the unwinder output. Profile generation part will come soon. Differential Revision: https://reviews.llvm.org/D108153 -
peter klausler authored
Implement constant folding for the transformational intrinsic functions UNPACK and TRANSPOSE. Differential Revision: https://reviews.llvm.org/D109010
-
Joel E. Denny authored
This patch implements OpenMP runtime support for an original OpenMP extension we have developed to support OpenACC: the `ompx_hold` map type modifier. The previous patch in this series, D106509, implements Clang support and documents the new functionality in detail. Reviewed By: grokos Differential Revision: https://reviews.llvm.org/D106510
-
Joel E. Denny authored
This patch implements Clang support for an original OpenMP extension we have developed to support OpenACC: the `ompx_hold` map type modifier. The next patch in this series, D106510, implements OpenMP runtime support. Consider the following example: ``` #pragma omp target data map(ompx_hold, tofrom: x) // holds onto mapping of x { foo(); // might have map(delete: x) #pragma omp target map(present, alloc: x) // x is guaranteed to be present printf("%d\n", x); } ``` The `ompx_hold` map type modifier above specifies that the `target data` directive holds onto the mapping for `x` throughout the associated region regardless of any `target exit data` directives executed during the call to `foo`. Thus, the presence assertion for `x` at the enclosed `target` construct cannot fail. (As usual, the standard OpenMP reference count for `x` must also reach zero before the data is unmapped.) Justification for inclusion i... -
Nikita Popov authored
-
Fangrui Song authored
Found by redfast00
-
Louis Dionne authored
Differential Revision: https://reviews.llvm.org/D108940
-
Louis Dionne authored
All supported versions of GCC now do the right thing. Differential Revision: https://reviews.llvm.org/D108997
-
Sylvestre Ledru authored
-
Michał Górny authored
-
Mehdi Amini authored
-
Chih-Ping Chen authored
-
Arthur O'Dwyer authored
-
peter klausler authored
It may not be great practice to pass a procedure (or procedure pointer) with an implicit interface as an actual argument to correspond with a dummy procedure (pointer), but it's not an error. Change to a warning, and modify tests accordingly. Differential Revision: https://reviews.llvm.org/D108932
-