platform/upstream/llvm.git
3 years agoRevert "[clang-repl] Re-implement clang-interpreter as a test case."
Vassil Vassilev [Wed, 1 Sep 2021 06:49:17 +0000 (06:49 +0000)]
Revert "[clang-repl] Re-implement clang-interpreter as a test case."

This reverts commit 319ce98011742141dad8dd95a2f9de9c0449be5c because it fails
on various platforms.

3 years agoDocument LLVM_ENABLE_RUNTIMES
Sylvestre Ledru [Wed, 1 Sep 2021 06:45:15 +0000 (08:45 +0200)]
Document LLVM_ENABLE_RUNTIMES

Reviewed By: phosek, MaskRay

Differential Revision: https://reviews.llvm.org/D108890

3 years ago[flang] Set default form if unspecified at end of OPEN statement
Jean Perier [Wed, 1 Sep 2021 06:39:39 +0000 (08:39 +0200)]
[flang] Set default form if unspecified at end of OPEN statement

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 199a623ebf808a01e920ebd9904c99e633c33a1f.

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

3 years ago[SLP][RISCV] Implement unsigned getMinVectorRegisterBitWidth() for RISCV
Luke [Wed, 1 Sep 2021 05:08:13 +0000 (13:08 +0800)]
[SLP][RISCV] Implement unsigned getMinVectorRegisterBitWidth() for RISCV

Reviewed By: craig.topper

Differential Revision: https://reviews.llvm.org/D108973

3 years ago[lldb] [gdb-remote client] Remove breakpoints throughout vfork
Michał Górny [Sun, 11 Apr 2021 15:16:43 +0000 (17:16 +0200)]
[lldb] [gdb-remote client] Remove breakpoints throughout vfork

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

3 years ago[Test][Time profiler] Fix test time checking
Anton Afanasyev [Wed, 25 Aug 2021 22:32:39 +0000 (01:32 +0300)]
[Test][Time profiler] Fix test time checking

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

3 years ago[Linker] Handle comdat nodeduplicate
Fangrui Song [Wed, 1 Sep 2021 05:32:20 +0000 (22:32 -0700)]
[Linker] Handle comdat nodeduplicate

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

3 years ago[clang-repl] Re-implement clang-interpreter as a test case.
Vassil Vassilev [Thu, 29 Jul 2021 07:30:06 +0000 (07:30 +0000)]
[clang-repl] Re-implement clang-interpreter as a test case.

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

3 years ago[AMDGPU] Split entry basic block after alloca instructions.
hsmahesha [Wed, 1 Sep 2021 04:48:21 +0000 (10:18 +0530)]
[AMDGPU] Split entry basic block after alloca instructions.

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

3 years ago[TableGen] Allow target specific flags for RegisterClass
Christudasan Devadasan [Thu, 26 Aug 2021 13:42:06 +0000 (09:42 -0400)]
[TableGen] Allow target specific flags for RegisterClass

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

3 years ago[DWARF] Support new TAG DW_TAG_LLVM_annotation
Yonghong Song [Mon, 19 Jul 2021 16:54:33 +0000 (09:54 -0700)]
[DWARF] Support new TAG DW_TAG_LLVM_annotation

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

3 years ago[OpenMP][AMDGPU] XFAIL test where kernels call printf
Joel E. Denny [Wed, 1 Sep 2021 02:11:28 +0000 (22:11 -0400)]
[OpenMP][AMDGPU] XFAIL test where kernels call printf

3 years ago[Polly] Use subtyped isl::schedule_nodes for ScheduleTreeVisitor. NFC.
Michael Kruse [Wed, 1 Sep 2021 01:20:12 +0000 (20:20 -0500)]
[Polly] Use subtyped isl::schedule_nodes for ScheduleTreeVisitor. NFC.

Change pass-by-const-ref to pass-by-value as objects are recreated
due to custom up-/down-casting anwyway.

3 years ago[Polly] Mention correct flag in debug output. NFCI.
Michael Kruse [Wed, 1 Sep 2021 01:47:42 +0000 (20:47 -0500)]
[Polly] Mention correct flag in debug output. NFCI.

3 years ago[X86] Enable half type support in inline assembly constraints
Wang, Pengfei [Wed, 1 Sep 2021 00:26:26 +0000 (08:26 +0800)]
[X86] Enable half type support in inline assembly constraints

Reviewed By: LuoYuanke

Differential Revision: https://reviews.llvm.org/D105799

3 years ago[Linker] Support weak symbols in nodeduplicate COMDAT group
Petr Hosek [Wed, 25 Aug 2021 08:12:19 +0000 (01:12 -0700)]
[Linker] Support weak symbols in nodeduplicate COMDAT group

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

3 years ago[InstCombine] add tests for min/max intrinsics with not ops; NFC
Sanjay Patel [Tue, 31 Aug 2021 20:22:17 +0000 (16:22 -0400)]
[InstCombine] add tests for min/max intrinsics with not ops; NFC

3 years ago[LLD][COFF] Clean paths in PDB even when /pdbsourcepath is omitted
Alexandre Ganea [Tue, 31 Aug 2021 23:03:44 +0000 (19:03 -0400)]
[LLD][COFF] Clean paths in PDB even when /pdbsourcepath is omitted

Differential Revision: https://reviews.llvm.org/D109030

3 years ago[OpenMP] Add an option to always inline OpenMP device functions.
Joseph Huber [Tue, 31 Aug 2021 19:03:33 +0000 (15:03 -0400)]
[OpenMP] Add an option to always inline OpenMP device functions.

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

3 years ago[lldb] Tighten lock in Language::ForEach
Alex Langford [Tue, 31 Aug 2021 18:44:34 +0000 (11:44 -0700)]
[lldb] Tighten lock in Language::ForEach

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

3 years ago[mlir][sparse] Rename the public SparseTensorStorage::asCOO to toCOO
wren romano [Mon, 30 Aug 2021 23:47:09 +0000 (16:47 -0700)]
[mlir][sparse] Rename the public SparseTensorStorage::asCOO to toCOO

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

3 years ago[DFSan][NFC] Fix comment formatting.
Andrew Browne [Tue, 31 Aug 2021 22:35:08 +0000 (15:35 -0700)]
[DFSan][NFC] Fix comment formatting.

3 years ago[llvm-ar][nfc] Reword help message to be less ambiguous on what p and t do.
Vy Nguyen [Tue, 31 Aug 2021 19:52:17 +0000 (15:52 -0400)]
[llvm-ar][nfc] Reword help message to be less ambiguous on what p and t do.

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

3 years agoRevert "[OptTable] Improve error message output for grouped short options"
Kevin Athey [Tue, 31 Aug 2021 21:00:30 +0000 (14:00 -0700)]
Revert "[OptTable] Improve error message output for grouped short options"

This reverts commit 71d7fed3bc2ad6c22729d446526a59fcfd99bd03.

Reason: broke sanitizer bots
more info: https://reviews.llvm.org/D108770

3 years ago[libc++][NFC] Remove redundant friend declaration for operator==
Louis Dionne [Tue, 31 Aug 2021 20:43:06 +0000 (16:43 -0400)]
[libc++][NFC] Remove redundant friend declaration for operator==

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

3 years ago[RegAlloc] Immediately delete dead instructions with live uses
Stanislav Mekhanoshin [Mon, 30 Aug 2021 21:49:50 +0000 (14:49 -0700)]
[RegAlloc] Immediately delete dead instructions with live uses

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

3 years ago[SLPVectorizer] Make aliasing check more precise
Nikita Popov [Tue, 31 Aug 2021 18:10:50 +0000 (20:10 +0200)]
[SLPVectorizer] Make aliasing check more precise

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

3 years ago[llvm-profgen] Support LBR only perf script
wlei [Tue, 31 Aug 2021 20:27:42 +0000 (13:27 -0700)]
[llvm-profgen] Support LBR only perf script

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

3 years ago[flang] Fold UNPACK and TRANSPOSE
peter klausler [Thu, 26 Aug 2021 23:01:03 +0000 (16:01 -0700)]
[flang] Fold UNPACK and TRANSPOSE

Implement constant folding for the transformational intrinsic
functions UNPACK and TRANSPOSE.

Differential Revision: https://reviews.llvm.org/D109010

3 years ago[OpenMP][OpenACC] Implement `ompx_hold` map type modifier extension in runtime (2/2)
Joel E. Denny [Tue, 31 Aug 2021 19:21:16 +0000 (15:21 -0400)]
[OpenMP][OpenACC] Implement `ompx_hold` map type modifier extension in runtime (2/2)

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

3 years ago[OpenMP][OpenACC] Implement `ompx_hold` map type modifier extension in Clang (1/2)
Joel E. Denny [Tue, 31 Aug 2021 19:17:07 +0000 (15:17 -0400)]
[OpenMP][OpenACC] Implement `ompx_hold` map type modifier extension in Clang (1/2)

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 in Clang and LLVM's OpenMP runtime:

* The `ompx_hold` modifier supports OpenACC functionality (structured
  reference count) that cannot be achieved in standard OpenMP, as of
  5.1.
* The runtime implementation for `ompx_hold` (next patch) will thus be
  used by Flang's OpenACC support.
* The Clang implementation for `ompx_hold` (this patch) as well as the
  runtime implementation are required for the Clang OpenACC support
  being developed as part of the ECP Clacc project, which translates
  OpenACC to OpenMP at the directive AST level.  These patches are the
  first step in upstreaming OpenACC functionality from Clacc.
* The Clang implementation for `ompx_hold` is also used by the tests
  in the runtime implementation.  That syntactic support makes the
  tests more readable than low-level runtime calls can.  Moreover,
  upstream Flang and Clang do not yet support OpenACC syntax
  sufficiently for writing the tests.
* More generally, the Clang implementation enables a clean separation
  of concerns between OpenACC and OpenMP development in LLVM.  That
  is, LLVM's OpenMP developers can discuss, modify, and debug LLVM's
  extended OpenMP implementation and test suite without directly
  considering OpenACC's language and execution model, which can be
  handled by LLVM's OpenACC developers.
* OpenMP users might find the `ompx_hold` modifier useful, as in the
  above example.

See new documentation introduced by this patch in `openmp/docs` for
more detail on the functionality of this extension and its
relationship with OpenACC.  For example, it explains how the runtime
must support two reference counts, as specified by OpenACC.

Clang recognizes `ompx_hold` unless `-fno-openmp-extensions`, a new
command-line option introduced by this patch, is specified.

Reviewed By: ABataev, jdoerfert, protze.joachim, grokos

Differential Revision: https://reviews.llvm.org/D106509

3 years ago[LoadStoreVectorizer] Add test for inaccessiblememonly call (NFC)
Nikita Popov [Tue, 31 Aug 2021 20:12:13 +0000 (22:12 +0200)]
[LoadStoreVectorizer] Add test for inaccessiblememonly call (NFC)

3 years ago[ELF][test] Fix R_AARCH64_ADR_PREL_PG_HI21 typo
Fangrui Song [Tue, 31 Aug 2021 20:09:54 +0000 (13:09 -0700)]
[ELF][test] Fix R_AARCH64_ADR_PREL_PG_HI21 typo

Found by redfast00

3 years ago[libc++][NFC] Rename _LIBCPP_NODISCARD_ATTRIBUTE to _LIBCPP_NODISCARD
Louis Dionne [Mon, 30 Aug 2021 20:01:38 +0000 (16:01 -0400)]
[libc++][NFC] Rename _LIBCPP_NODISCARD_ATTRIBUTE to _LIBCPP_NODISCARD

Differential Revision: https://reviews.llvm.org/D108940

3 years ago[libc++] Remove workaround for broken __is_trivially_copyable on old GCC
Louis Dionne [Tue, 31 Aug 2021 14:41:13 +0000 (10:41 -0400)]
[libc++] Remove workaround for broken __is_trivially_copyable on old GCC

All supported versions of GCC now do the right thing.

Differential Revision: https://reviews.llvm.org/D108997

3 years agoFix some typos in the llvm docs
Sylvestre Ledru [Tue, 31 Aug 2021 19:30:22 +0000 (21:30 +0200)]
Fix some typos in the llvm docs

3 years ago[lldb] [test] Mark fork-follow-parent-softbp.test as darwin-unsupported
Michał Górny [Tue, 31 Aug 2021 19:18:40 +0000 (21:18 +0200)]
[lldb] [test] Mark fork-follow-parent-softbp.test as darwin-unsupported

3 years agoFix MLIR python binding test after changes in ASM printer
Mehdi Amini [Tue, 31 Aug 2021 18:49:47 +0000 (18:49 +0000)]
Fix MLIR python binding test after changes in ASM printer

3 years agoMoved the test to X86 as it's x86 specific.
Chih-Ping Chen [Mon, 30 Aug 2021 20:38:40 +0000 (16:38 -0400)]
Moved the test to X86 as it's x86 specific.

3 years ago[libc++] Add missing space in (__map_value_compare&__y) etc. NFCI.
Arthur O'Dwyer [Tue, 31 Aug 2021 18:29:24 +0000 (14:29 -0400)]
[libc++] Add missing space in (__map_value_compare&__y) etc. NFCI.

3 years ago[flang] Downgrade inappropriate error message to a warning
peter klausler [Fri, 27 Aug 2021 20:38:06 +0000 (13:38 -0700)]
[flang] Downgrade inappropriate error message to a warning

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

3 years ago[RISCVISelLowering] avoid emitting libcalls to __mulodi4() and __multi3()
Nick Desaulniers [Tue, 31 Aug 2021 18:11:40 +0000 (11:11 -0700)]
[RISCVISelLowering] avoid emitting libcalls to __mulodi4() and __multi3()

Similar to D108842, D108844, D108926, D108928, and D108936.

__has_builtin(builtin_mul_overflow) returns true for 32b RISCV targets,
but Clang is deferring to compiler RT when encountering long long types.

If the semantics of __has_builtin mean "the compiler resolves these,
always" then we shouldn't conditionally emit a libcall.

Link: https://bugs.llvm.org/show_bug.cgi?id=28629
Reviewed By: craig.topper

Differential Revision: https://reviews.llvm.org/D108939

3 years ago[SLPVectorizer] Add test for inaccessiblememonly call (NFC)
Nikita Popov [Tue, 31 Aug 2021 18:22:47 +0000 (20:22 +0200)]
[SLPVectorizer] Add test for inaccessiblememonly call (NFC)

3 years ago[CMake] Remove unneeded -Wdelete-non-virtual-dtor availability check
Fangrui Song [Tue, 31 Aug 2021 18:19:04 +0000 (11:19 -0700)]
[CMake] Remove unneeded -Wdelete-non-virtual-dtor availability check

Available and good in Clang 3.5/GCC 5.

3 years ago[mlir][Linalg] Drop output tensor from `linalg.pad_tensor` op.
MaheshRavishankar [Tue, 31 Aug 2021 18:10:59 +0000 (11:10 -0700)]
[mlir][Linalg] Drop output tensor from `linalg.pad_tensor` op.

The output tensor was added for tiling purposes. With use of
`TilingInterface` for tiling pad operations, there is no need for an
explicit operand for the shape of result of `linalg.pad_tensor`
op. The interface allows the tiling pattern to query the value that
can be used for the "init" needed for tiling dynamically.

Differential Revision: https://reviews.llvm.org/D108613

3 years ago[PPCISelLowering] avoid emitting libcalls to __mulodi4()
Nick Desaulniers [Tue, 31 Aug 2021 18:00:08 +0000 (11:00 -0700)]
[PPCISelLowering] avoid emitting libcalls to __mulodi4()

Similar to D108842, D108844, and D108926.

__has_builtin(builtin_mul_overflow) returns true for 32b PPC targets,
but Clang is deferring to compiler RT when encountering long long types.
This breaks ppc44x_defconfig + CONFIG_BLK_DEV_NBD=y builds of the Linux
kernel that are using builtin_mul_overflow with these types for these
targets.

If the semantics of __has_builtin mean "the compiler resolves these,
always" then we shouldn't conditionally emit a libcall.

This will still need to be worked around in the Linux kernel in order to
continue to support these builds of the Linux kernel for this
target with older releases of clang.

Link: https://bugs.llvm.org/show_bug.cgi?id=28629
Link: https://github.com/ClangBuiltLinux/linux/issues/1438
Reviewed By: nemanjai

Differential Revision: https://reviews.llvm.org/D108936

3 years ago[SCEV] Add a testcase for zero max btc with non-constant exact btc
Philip Reames [Tue, 31 Aug 2021 17:59:02 +0000 (10:59 -0700)]
[SCEV] Add a testcase for zero max btc with non-constant exact btc

Reduced from the ArchiveCommandLine.ll case seen in D108848.

3 years ago[CMake] Remove unneeded -Wnon-virtual-dtor availability check
Fangrui Song [Tue, 31 Aug 2021 18:00:16 +0000 (11:00 -0700)]
[CMake] Remove unneeded -Wnon-virtual-dtor availability check

For Clang, 3.5 is the minimum requirement which has fixed the bug.
GCC 5 is good as well.

3 years ago[libcxx][docs] Mark LWG3153 as complete
Joe Loser [Tue, 31 Aug 2021 17:41:47 +0000 (13:41 -0400)]
[libcxx][docs] Mark LWG3153 as complete

Reviewed By: ldionne, #libc

Differential Revision: https://reviews.llvm.org/D108967

3 years agoAdd a new interface allowing to set a default dialect to be used for printing/parsing...
Mehdi Amini [Sat, 28 Aug 2021 03:03:49 +0000 (03:03 +0000)]
Add a new interface allowing to set a default dialect to be used for printing/parsing regions

Currently the builtin dialect is the default namespace used for parsing
and printing. As such module and func don't need to be prefixed.
In the case of some dialects that defines new regions for their own
purpose (like SpirV modules for example), it can be beneficial to
change the default dialect in order to improve readability.

Differential Revision: https://reviews.llvm.org/D107236

3 years agoChange ASM Op printer to print the operation name in the framework instead of leaving...
Mehdi Amini [Sat, 28 Aug 2021 03:03:15 +0000 (03:03 +0000)]
Change ASM Op printer to print the operation name in the framework instead of leaving it up to each individual operation

This aligns the printer with the parser contract: the operation isn't part of the user-controllable part of the syntax.

Differential Revision: https://reviews.llvm.org/D108804

3 years agoChange dialect `printOperation()` hook to `getOperationPrinter()`
Mehdi Amini [Sat, 28 Aug 2021 03:02:55 +0000 (03:02 +0000)]
Change dialect `printOperation()` hook to `getOperationPrinter()`

This makes the hook return a printer if available, instead of using LogicalResult  to
indicate if a printer was available (and invoked). This allows the caller to detect that
the dialect has a printer for a given operation without actually invoking the printer.
It'll be leveraged in a future revision to move printing the op name itself under control
of the ASMPrinter.

Differential Revision: https://reviews.llvm.org/D108803

3 years ago[flang] Fold PACK()
peter klausler [Wed, 25 Aug 2021 22:50:34 +0000 (15:50 -0700)]
[flang] Fold PACK()

Implement compile-time constant folding for the transformational
intrinsic function PACK.

Differential Revision: https://reviews.llvm.org/D108956

3 years ago[profile] Specify "-V" to otool to get expected test output
Vedant Kumar [Tue, 31 Aug 2021 17:49:27 +0000 (10:49 -0700)]
[profile] Specify "-V" to otool to get expected test output

Newer Xcode toolchains ship a new otool implementation that prints out
section contents in a slightly different way than otool-classic. Specify
"-V" to otool to get the expected test output.

Differential Revision: https://reviews.llvm.org/D108929

3 years ago[AMDGPU] Enable ds_min/ds_max on more subtargets
Joe Nash [Tue, 31 Aug 2021 13:03:12 +0000 (09:03 -0400)]
[AMDGPU] Enable ds_min/ds_max on more subtargets

Adds patterns for f64 ds_min/ds_max. Shrinks HasLDSFPAtomics
scope to enable f32.

Reviewed By: rampitec

Differential Revision: https://reviews.llvm.org/D108994

Change-Id: Id890b677841ee588b20d42b1bb3f4cdbf6e9ba1a

3 years ago[GlobalISel] Don't use G_FPTOSI in G_ISNAN legalization
Jessica Paquette [Tue, 31 Aug 2021 17:23:17 +0000 (10:23 -0700)]
[GlobalISel] Don't use G_FPTOSI in G_ISNAN legalization

As noted in the comments in D108227, using G_FPTOSI produces wrong results for
G_ISNAN. Drop the G_FPTOSI and perform the operation on integer types.

Elsewhere in LLVM, a bitcast would be the appropriate choice (as it is in SDAG).
GlobalISel does not distinguish between integer and FP types, so a bitcast would
be meaningless here.

3 years ago[ARM] Add missing validForTailPredication for VMINNM/VMAXNM
David Green [Tue, 31 Aug 2021 17:19:03 +0000 (18:19 +0100)]
[ARM] Add missing validForTailPredication for VMINNM/VMAXNM

Apparently this was missing, preventing the generation of tail
predication loops containing VMINNM, VMAXNM, VMINNMA and VMAXNMA.

3 years ago[ARM] Test for VMINNM/VMAXNM in tail predicated loops.
David Green [Tue, 31 Aug 2021 13:24:08 +0000 (14:24 +0100)]
[ARM] Test for VMINNM/VMAXNM in tail predicated loops.

3 years ago[lldb] Don't save empty expressions in the multiline editor history
Raphael Isemann [Tue, 31 Aug 2021 16:12:51 +0000 (18:12 +0200)]
[lldb] Don't save empty expressions in the multiline editor history

Right now running `expr` to start the multiline expression editor and then
pressing enter causes an empty history empty to be created for the multiline
editor. That doesn't seem very useful for users as pressing the 'up' key will
now also bring up these empty expressions.

I don't think there is ever a use case for recalling a completely empty
expression from the history, so instead don't save those entries to the history
file and make sure we never recall them when navigating over the expression
history.

Note: This is actually a Swift downstream patch that got shipped with Apple's
LLDB for many years. However, this recently started conflicting with upstream
LLDB as D100048 added a test that made sure that empty expression entries don't
crash LLDB. Apple's LLDB was never affected by this crash as it never saved
empty expressions in the first place.

Reviewed By: augusto2112

Differential Revision: https://reviews.llvm.org/D108983

3 years ago[gn build] Port e983a659e51c
LLVM GN Syncbot [Tue, 31 Aug 2021 16:45:24 +0000 (16:45 +0000)]
[gn build] Port e983a659e51c

3 years ago[libc++][NFC] split <charconv>.
Mark de Wever [Mon, 30 Aug 2021 17:47:55 +0000 (19:47 +0200)]
[libc++][NFC] split <charconv>.

This move the helper types `chars_format`, `to_chars_result` and
`from_chars_result` to a separate header. The first two are needed for
D70631 the third for consistency.

The header `__charconv/ryu.h` uses these types and it can't depend on the
types in `<charconv>` in a modular build. Moving them to the ryu header
would be an odd place and doesn't work since the header is included in the
middle of `<charconv>`.

Reviewed By: #libc, ldionne, Quuxplusone

Differential Revision: https://reviews.llvm.org/D108927

3 years ago[runtime] Move prolog/epilog block to a post-simplify strategy
Philip Reames [Tue, 31 Aug 2021 16:29:36 +0000 (09:29 -0700)]
[runtime] Move prolog/epilog block to a post-simplify strategy

The runtime unroller will try to produce a non-loop if the unroll count is 2 and thus the prolog/epilog loop would only run at most one iteration. The old implementation did this by avoiding loop construction entirely. This patches instead constructs the trivial loop and then explicitly breaks the backedge and simplifies. This does result in some additional code churn when triggered, but a) results in better quality code and b) removes a codepath which didn't work properly for multiple exit epilogs.

One oddity that I want to draw to reviewer attention is that this somehow changes revisit order. The new order looks equivalent to me, but I don't understand how creating and erasing an extra loop here creates this effect.

Differential Revision: https://reviews.llvm.org/D108521

3 years ago[AlignFromAssume] Bailout w/non-constant alignments (pr51680)
Philip Reames [Tue, 31 Aug 2021 16:17:36 +0000 (09:17 -0700)]
[AlignFromAssume] Bailout w/non-constant alignments (pr51680)

This is a bailout for pr51680.  This pass appears to assume that the alignment operand to an align tag on an assume bundle is constant.  This doesn't appear to be required anywhere, and clang happily generates non-constant alignments for cases such as this case taken from the bug report:

// clang -cc1 -triple powerpc64-- -S -O1 opal_pci-min.c
extern int a[];
long *b;
long c;
void *d(long, int *, int, long, long, long) __attribute__((__alloc_align__(6)));
void e() {
  b = d(c, a, 0, 0, 5, c);
  b[0] = 0;
}

This was exposed by a SCEV change which allowed a non-constant alignment to reach further into the pass' code.  We could generalize the pass, but for now, let's fix the crash.

3 years ago[OpenMP] Fix task wait doesn't work as expected in serialized team
Shilei Tian [Tue, 31 Aug 2021 16:15:38 +0000 (12:15 -0400)]
[OpenMP] Fix task wait doesn't work as expected in serialized team

As discussed in D107121, task wait doesn't work when a regular task T depends on
a detached task or a hidden helper task T' in a serialized team. The root cause is,
since the team is serialized, the last task will not be tracked by
`td_incomplete_child_tasks`. When T' is finished, it first releases its
dependences, and then decrements its parent counter. So far so good. For the thread
that is running task wait, if at the moment it is still spinning and trying to
execute tasks, it is fine because it can detect the new task and execute it.
However, if it happends to finish the function `flag.execute_tasks(...)`, it will
be broken because `td_incomplete_child_tasks` is 0 now.

In this patch, we update the rule to track children tasks a little bit. If the
task team encounters a proxy task or a hidden helper task, all following tasks
will be tracked.

Reviewed By: AndreyChurbanov

Differential Revision: https://reviews.llvm.org/D107496

3 years ago[InstCombine] fix typos in comments; NFC
Sanjay Patel [Tue, 31 Aug 2021 15:40:57 +0000 (11:40 -0400)]
[InstCombine] fix typos in comments; NFC

3 years ago[llvm-lit] unbreak clang-only builds by not assuming llvm-lit in build dir
Yaron Keren [Tue, 31 Aug 2021 15:02:02 +0000 (18:02 +0300)]
[llvm-lit] unbreak clang-only builds by not assuming llvm-lit in build dir

Reviewed By: tstellar

Differential Revision: https://reviews.llvm.org/D109000

3 years ago[clang] Remove redundant calls to c_str() (NFC)
Kazu Hirata [Tue, 31 Aug 2021 15:53:51 +0000 (08:53 -0700)]
[clang] Remove redundant calls to c_str() (NFC)

Identified with readability-redundant-string-cstr.

3 years ago[SystemZ][z/OS] Create html report file with text flag
Fanbo Meng [Tue, 31 Aug 2021 14:48:18 +0000 (10:48 -0400)]
[SystemZ][z/OS] Create html report file with text flag

Change OF_None to OF_Text flag in file creation, same reasoning as https://reviews.llvm.org/D97785

Reviewed By: abhina.sreeskantharajan

Differential Revision: https://reviews.llvm.org/D108998

3 years ago[SCEV] If max BTC is zero, then so is the exact BTC [1 of N]
Philip Reames [Tue, 31 Aug 2021 15:43:29 +0000 (08:43 -0700)]
[SCEV] If max BTC is zero, then so is the exact BTC [1 of N]

This patch is specifically the howManyLessThan case.  There will be a couple of followon patches for other codepaths.

The subtle bit is explaining why the two codepaths have a difference while both are correct. The test case with modifications is a good example, so let's discuss in terms of it.
* The previous exact bounds for this example of (-126 + (126 smax %n))<nsw> can evaluate to either 0 or 1. Both are "correct" results, but only one of them results in a well defined loop. If %n were 127 (the only possible value producing a trip count of 1), then the loop must execute undefined behavior. As a result, we can ignore the TC computed when %n is 127. All other values produce 0.
* The max taken count computation uses the limit (i.e. the maximum value END can be without resulting in UB) to restrict the bound computation. As a result, it returns 0 which is also correct.

WARNING: The logic above only holds for a single exit loop. The current logic for max trip count would be incorrect for multiple exit loops, except that we never call computeMaxBECountForLT except when we can prove either a) no overflow occurs in this IV before exit, or b) this is the sole exit.

An alternate approach here would be to add the limit logic to the symbolic path. I haven't played with this extensively, but I'm hesitant because a) the term is optional and b) I'm not sure it'll reliably simplify away. As such, the resulting code quality from expansion might actually get worse.

This was noticed while trying to figure out why D108848 wasn't NFC, but is otherwise standalone.

Differential Revision: https://reviews.llvm.org/D108921

3 years agoMake a generic test generic again.
Paul Robinson [Tue, 31 Aug 2021 15:45:53 +0000 (08:45 -0700)]
Make a generic test generic again.

Tests in CodeGen/Generic should not depend on any specific target.

3 years ago[OptTable] Improve error message output for grouped short options
gbreynoo [Tue, 31 Aug 2021 15:41:08 +0000 (16:41 +0100)]
[OptTable] Improve error message output for grouped short options

As seen in https://bugs.llvm.org/show_bug.cgi?id=48880 the current
implementation for parsing grouped short options can return unclear
error messages. This change fixes the example given in the ticket in
which a flag is incorrectly given an argument. Also when parsing a
group we now keep reading past the first incorrect option and output
errors for all incorrect options in the group.

Differential Revision: https://reviews.llvm.org/D108770

3 years ago[clang-repl] Install clang-repl
Vassil Vassilev [Tue, 31 Aug 2021 15:19:17 +0000 (15:19 +0000)]
[clang-repl] Install clang-repl

This is essentially what D106813 was supposed to do but did not.

Differential revision: https://reviews.llvm.org/D108919

3 years ago[VP] implementation of sdag support for VP memory intrinsics
Hussain Kadhem [Tue, 31 Aug 2021 15:01:32 +0000 (17:01 +0200)]
[VP] implementation of sdag support for VP memory intrinsics

Followup to D99355: SDAG support for vector-predicated load/store/gather/scatter.

Reviewed By: frasercrmck

Differential Revision: https://reviews.llvm.org/D105871

3 years ago[libc++][NFC] Add missing HIDE_FROM_ABI on implementation detail __launder
Louis Dionne [Tue, 31 Aug 2021 14:29:22 +0000 (10:29 -0400)]
[libc++][NFC] Add missing HIDE_FROM_ABI on implementation detail __launder

3 years agoRevert "[DebugInfo] Emit DW_TAG_namelist and DW_TAG_namelist_item"
Nemanja Ivanovic [Tue, 31 Aug 2021 13:33:43 +0000 (08:33 -0500)]
Revert "[DebugInfo] Emit DW_TAG_namelist and DW_TAG_namelist_item"

This reverts commit 0a6fad754ed8f0812dd57357ce8071b02e962259.
It caused failures on a number of PowerPC bots.

3 years ago[GlobalDCE] Handle relative pointers in VFE (for Swift vtables)
Kuba Mracek [Tue, 31 Aug 2021 14:06:04 +0000 (07:06 -0700)]
[GlobalDCE] Handle relative pointers in VFE (for Swift vtables)

To support Virtual Function Elimination to Swift, this PR adds support for Swift
vtables which contain "relative pointers" instead of direct pointer references.
These are in the form of:

@symbol = ... {
  i32 trunc (i64 sub (i64 ptrtoint (<type> @target to i64), i64 ptrtoint (... @symbol to i64)) to i32)
}

The PR extends GlobalDCE's way of looking up a vtable offset into a dependency
to be able to see through this expression and find the target symbol.

Differential Revision: https://reviews.llvm.org/D107645

3 years ago[InstCombine] fix propagation of FMF through select-of-fnegs
Sanjay Patel [Tue, 31 Aug 2021 13:42:13 +0000 (09:42 -0400)]
[InstCombine] fix propagation of FMF through select-of-fnegs

The existing code was unquestionably wrong - it looked at one
fneg and ignored the other 2 instructions.

It was also untested, so it didn't make the list of bugs
flagged by Alive2.

This is an unusual propagation, but Alive2 agress that we
can intersect the fnegs and union that with the select,
then apply the results to both new instructions:
https://alive2.llvm.org/ce/z/SF8_dt

3 years ago[gn build] Port 3285c7a4364e
LLVM GN Syncbot [Tue, 31 Aug 2021 13:47:38 +0000 (13:47 +0000)]
[gn build] Port 3285c7a4364e

3 years ago[libcxx] Remove the locale fallback for NuttX
Xiang Xiao [Tue, 31 Aug 2021 13:46:37 +0000 (09:46 -0400)]
[libcxx] Remove the locale fallback for NuttX

Since these functions can handled by NuttX's libc now

Reviewed By: #libc, ldionne

Differential Revision: https://reviews.llvm.org/D108895

3 years ago[SLPVectorizer][Test] Add test for extractelements with (non)const indices (NFC)
Anton Afanasyev [Tue, 31 Aug 2021 13:08:30 +0000 (16:08 +0300)]
[SLPVectorizer][Test] Add test for extractelements with (non)const indices (NFC)

Add test for an issue discussed here: https://reviews.llvm.org/D108703#2974289

3 years ago[InstCombine] add tests for FMF propagation for select-of-fneg; NFC
Sanjay Patel [Fri, 27 Aug 2021 18:07:44 +0000 (14:07 -0400)]
[InstCombine] add tests for FMF propagation for select-of-fneg; NFC

3 years ago[InstCombine] fix typo; NFC
Sanjay Patel [Tue, 31 Aug 2021 13:02:14 +0000 (09:02 -0400)]
[InstCombine] fix typo; NFC

3 years agoRevert "[SLP]No need to schedule/check parent for extract{element/value} instruction."
Anton Afanasyev [Tue, 31 Aug 2021 12:25:14 +0000 (15:25 +0300)]
Revert "[SLP]No need to schedule/check parent for extract{element/value} instruction."

Revert since introduced issure reported here:
https://lists.llvm.org/pipermail/llvm-dev/2021-August/152411.html
Discussed starting from here: https://reviews.llvm.org/D108703#2974289

This reverts commit a36bc873a269dca0c5399d72bfdd42d3ddc72671.

3 years ago[lldb] [gdb-remote client] Remove breakpoints in forked processes
Michał Górny [Sun, 11 Apr 2021 11:08:05 +0000 (13:08 +0200)]
[lldb] [gdb-remote client] Remove breakpoints in forked processes

Remove software breakpoints from forked processes in order to restore
the original program code before detaching it.

Differential Revision: https://reviews.llvm.org/D100263

3 years agoRevert "[lldb] Add minidump save-core functionality to ELF object files"
Andy Yankovsky [Tue, 31 Aug 2021 11:36:53 +0000 (13:36 +0200)]
Revert "[lldb] Add minidump save-core functionality to ELF object files"

This reverts commit aafa05e03d629cc6605718c54575256d9d683659.

Broke builder on aarch64 --
https://lab.llvm.org/buildbot/#/builders/96/builds/10926

3 years ago[MCA][X86] Add basic coverage for icelake arch
Simon Pilgrim [Tue, 31 Aug 2021 11:19:58 +0000 (12:19 +0100)]
[MCA][X86] Add basic coverage for icelake arch

Copy the skylake-avx512 tests for icelake-server coverage.

Add icelake/rocketlake/tigerlake test coverage to the relevent generic tests as well.

3 years ago[lldb] Add minidump save-core functionality to ELF object files
Andrej Korman [Tue, 31 Aug 2021 09:52:41 +0000 (11:52 +0200)]
[lldb] Add minidump save-core functionality to ELF object files

This change adds save-core functionality into the ObjectFileELF that enables
saving minidump of a stopped process. This change is mainly targeting Linux
running on x86_64 machines. Minidump should contain basic information needed
to examine state of threads, local variables and stack traces. Full support
for other platforms is not so far implemented. API tests are using LLDB's
MinidumpParser.

Reviewed By: clayborg

Differential Revision: https://reviews.llvm.org/D108233

3 years ago[X86] Copy X86SchedSkylakeServer.td to X86SchedIceLake.td
Simon Pilgrim [Tue, 31 Aug 2021 09:49:42 +0000 (10:49 +0100)]
[X86] Copy X86SchedSkylakeServer.td to X86SchedIceLake.td

Icelake, Rocketlake and Tigerlake targets currently use the SkylakeServer scheduler model, despite being a later microarchitecture, leading to both reported bugs (PR48110) and discrepancies when comparing llvm-mca reports to other profiling tools (OSACA, uops, uica, etc.). And tbh I'm getting sick of llvm-mca getting blamed for what are backend scheduler model issues :-(

This patch doesn't attempt to fix any of these discrepancies - there should be no changes in codegen - its a setup patch that copies the skx model, renames all the resources, adds the additional ports (but doesn't reference them yet) and updates the llvm-exegesis pfm counter mappings (based off https://sourceforge.net/p/perfmon2/libpfm4/ci/master/tree/lib/events/intel_icl_events.h).

This should make it trivial for anyone with hardware access to use llvm-exegesis reports to iteratively improve the model (my attempts to get hold of a cheap tiger lake box haven't been fruitful yet....).

I will copy the SkylakeServer llvm-mca resource tests as follow up commits - the diff should entirely be the resource renames.

Differential Revision: https://reviews.llvm.org/D108914

3 years agoFix test by adding REQUIRES: x86-registered-target to skip test in configurations...
Douglas Yung [Tue, 31 Aug 2021 10:26:54 +0000 (03:26 -0700)]
Fix test by adding REQUIRES: x86-registered-target to skip test in configurations that do not include x86.

3 years ago[mlir] Prevent assertion failure in DropUnitDims
Tres Popp [Tue, 17 Aug 2021 13:28:26 +0000 (15:28 +0200)]
[mlir] Prevent assertion failure in DropUnitDims

Don't assert fail on strided memrefs when dropping unit dims.
Instead just leave them unchanged.

Differential Revision: https://reviews.llvm.org/D108205

3 years ago[mlir][gpu] folds memref.dim of gpu.alloc
marina kolpakova a.k.a. geexie [Sun, 29 Aug 2021 15:54:35 +0000 (18:54 +0300)]
[mlir][gpu] folds memref.dim of gpu.alloc

implements canonicalization which folds memref.dim(gpu.alloc(%size), %idx) -> %size

Differential Revision: https://reviews.llvm.org/D108892

3 years ago[OpenCL] Defines helper function for kernel language compatible OpenCL version
Justas Janickas [Tue, 24 Aug 2021 10:59:42 +0000 (11:59 +0100)]
[OpenCL] Defines helper function for kernel language compatible OpenCL version

This change defines a helper function getOpenCLCompatibleVersion()
inside LangOptions class. The function contains mapping between
C++ for OpenCL versions and their corresponding compatible OpenCL
versions. This mapping function should be updated each time a new
C++ for OpenCL language version is introduced. The helper function
is expected to simplify conditions on OpenCL C and C++ for OpenCL
versions inside compiler code.

Code refactoring performed.

Differential Revision: https://reviews.llvm.org/D108693

3 years agoUse dSYM's file addr for Sections when it doesn't match binary
Jason Molenda [Tue, 31 Aug 2021 08:32:52 +0000 (01:32 -0700)]
Use dSYM's file addr for Sections when it doesn't match binary

When adding a dSYM to a Module and it has different file addresses
from the already-present ObjectFile binary, change the Sections to
use the dSYM's file addresses so the symbol table and DWARF are
properly contained in the Sections.  Previously this was only done
for IsInMemory ObjectFiles, but it's more common than that.

Differential Revision: https://reviews.llvm.org/D108889
rdar://81504400

3 years ago[NFC] Correct typo in CodeGenMapTable.cpp, patch by Jordi
Shivam Gupta [Tue, 31 Aug 2021 07:31:51 +0000 (13:01 +0530)]
[NFC] Correct typo in CodeGenMapTable.cpp, patch by Jordi

CodeGenMapTable.cpp refers to TableGen as TabelGen in the comments. This appears to be a typo. This patch fixes the typo.

Differential Revision: https://reviews.llvm.org/D76343

3 years ago[Arm] Add assert in T2 Imm7s code emitter
Simon Wallis [Tue, 31 Aug 2021 07:16:26 +0000 (08:16 +0100)]
[Arm] Add assert in T2 Imm7s code emitter

Add assert to provoke failure in object file output, not just in disassembly output.

Reviewed By: yroux

Differential Revision: https://reviews.llvm.org/D107259

3 years agoFix typo in two files in Clang, patch by FusionBolt
Shivam Gupta [Tue, 31 Aug 2021 07:01:24 +0000 (12:31 +0530)]
Fix typo in two files in Clang, patch by FusionBolt

Reviewed By: xgupta

Differential Revision: https://reviews.llvm.org/D98254

3 years ago[clang] Fix Typo in AST Matcher Reference
Shivam Gupta [Tue, 31 Aug 2021 06:36:00 +0000 (12:06 +0530)]
[clang] Fix Typo in AST Matcher Reference

In [[ https://clang.llvm.org/docs/LibASTMatchersReference.html | AST Matcher Reference]], the example of matcher `hasDeclContext` contained a typo.

`cxxRcordDecl` was changed to `cxxRecordDecl`.

Differential Revision: https://reviews.llvm.org/D102836

3 years ago[AIX] Rename shared_libraries_to_archive -> objects_to_archive. NFC.
Kai Luo [Tue, 31 Aug 2021 06:46:15 +0000 (06:46 +0000)]
[AIX] Rename shared_libraries_to_archive -> objects_to_archive. NFC.

3 years agoFix typo s/beloinging/belonging
Doug Beck [Tue, 31 Aug 2021 06:30:00 +0000 (12:00 +0530)]
Fix typo s/beloinging/belonging

Differential Revision: https://reviews.llvm.org/D107099

3 years agoFix typo in comments
Alexander Pivovarov [Tue, 31 Aug 2021 06:20:37 +0000 (11:50 +0530)]
Fix typo in comments

Reviewed By: MaskRay, jsji

Differential Revision: https://reviews.llvm.org/D108857