platform/upstream/llvm.git
3 years ago[fuzzer] Add Windows Visual C++ exception intercept
Joe Pletcher [Thu, 12 Nov 2020 20:37:35 +0000 (12:37 -0800)]
[fuzzer] Add Windows Visual C++ exception intercept

Adds a new option, `handle_winexcept` to try to intercept uncaught
Visual C++ exceptions on Windows. On Linux, such exceptions are handled
implicitly by `std::terminate()` raising `SIBABRT`. This option brings the
Windows behavior in line with Linux.

Unfortunately this exception code is intentionally undocumented, however
has remained stable for the last decade. More information can be found
here: https://devblogs.microsoft.com/oldnewthing/20100730-00/?p=13273

Reviewed By: morehouse, metzman

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

3 years ago[flang] Recognize END FILE as ENDFILE in free form source
peter klausler [Thu, 12 Nov 2020 20:02:09 +0000 (12:02 -0800)]
[flang] Recognize END FILE as ENDFILE in free form source

The ENDFILE statement may be spelled as two words.

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

3 years ago[NFC][NewPM] Reuse PassBuilder callbacks with -O0
Arthur Eubanks [Thu, 5 Nov 2020 18:25:35 +0000 (10:25 -0800)]
[NFC][NewPM] Reuse PassBuilder callbacks with -O0

This removes lots of duplicated code which was necessary before
https://reviews.llvm.org/D89158.
Now we can use PassBuilder::runRegisteredEPCallbacks().
This is mostly sanitizers.

There is likely more that can be done to simplify, but let's start with this.

Reviewed By: ychen

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

3 years ago[OPENMP]Fix PR48076: Check map types array before accessing its front.
Alexey Bataev [Thu, 12 Nov 2020 18:20:22 +0000 (10:20 -0800)]
[OPENMP]Fix PR48076: Check map types array before accessing its front.

Need to check if there are map types for the components before trying to
access them when trying to modify type mappings for combined partial
mappings.

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

3 years ago[AMDGPU] Fix scheduling of exp pos4
Jay Foad [Wed, 11 Nov 2020 19:29:53 +0000 (19:29 +0000)]
[AMDGPU] Fix scheduling of exp pos4

Also fix a similar issue in SIInsertWaitcnts, but I don't think that fix
has any effect in practice.

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

3 years ago[AMDGPU] Define and use names for export targets. NFC.
Jay Foad [Wed, 11 Nov 2020 19:21:02 +0000 (19:21 +0000)]
[AMDGPU] Define and use names for export targets. NFC.

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

3 years ago[msan] Break the getShadow loop after matching an argument
Jianzhou Zhao [Thu, 12 Nov 2020 19:47:39 +0000 (19:47 +0000)]
[msan] Break the getShadow loop after matching an argument

Reviewed-by: eugenis
Differential Revision: https://reviews.llvm.org/D91320

3 years ago[SystemZ][ZOS] libcxx - no posix memalign
Zbigniew Sarbinowski [Thu, 12 Nov 2020 19:40:35 +0000 (14:40 -0500)]
[SystemZ][ZOS] libcxx - no posix memalign

The unavailability of posix_memalign on z/OS forces us to define _LIBCPP_HAS_NO_LIBRARY_ALIGNED_ALLOCATION'. The use of posix_memalign is being used in libcxx/src/new.cpp.

Reviewed By: #libc, ldionne

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

3 years ago[BasicAA] Remove checks for GEP decomposition limit reached
Nikita Popov [Sat, 7 Nov 2020 18:02:49 +0000 (19:02 +0100)]
[BasicAA] Remove checks for GEP decomposition limit reached

The GEP aliasing code currently checks for the GEP decomposition
limit being reached (i.e., we did not reach the "final" underlying
object). As far as I can see, these checks are not necessary. It is
perfectly fine to work with a GEP whose base can still be further
decomposed.

Looking back through the commit history, these checks were originally
introduced in 1a444489e9d90915cfdda0720489893896ef1503. However, I
believe that the problem this was intended to address was later
properly fixed with 1726fc698ccb85fe4bb23c200a50f28b57fc53cb, and
the checks are no longer necessary since then (and were not the
right fix in the first place).

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

3 years ago[Frontend] Treat .cuh files as CUDA source files
Anatoliy Tomilov [Thu, 12 Nov 2020 19:42:52 +0000 (11:42 -0800)]
[Frontend] Treat .cuh files as CUDA source files

to synchronize with tools/clang-format/git-clang-format

tra: Keeping them in sync does have a minor benefit of not raising a question why the two maps are different.

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

3 years agofix clang build
peter klausler [Thu, 12 Nov 2020 19:38:20 +0000 (11:38 -0800)]
fix clang build

3 years ago[libc++] NFC: Remove symbol from ABI list changelog that was never added
Louis Dionne [Thu, 12 Nov 2020 19:34:35 +0000 (14:34 -0500)]
[libc++] NFC: Remove symbol from ABI list changelog that was never added

The `posix_memalign@GLIBC_2.2.5` symbol can't have been added by r284206,
because it doesn't show up in the corresponding ABI list. It's also not
defined in libc++, so that wouldn't make sense. It must have made it into
that comment by mistake.

3 years ago[NFC] Switch printFunctionLikeOp and parseFunctionLikeOp to only support "inline...
Rahul Joshi [Thu, 12 Nov 2020 18:46:44 +0000 (10:46 -0800)]
[NFC] Switch printFunctionLikeOp and parseFunctionLikeOp to only support "inline" visibility.

- Remove the default valued arguments from these functions.
- Besides FuncOp, looks like no other in-tree op is using these functions.

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

3 years agoRevert "[gn build] (semi-manually) port 173b51169b8"
Nico Weber [Thu, 12 Nov 2020 18:54:24 +0000 (13:54 -0500)]
Revert "[gn build] (semi-manually) port 173b51169b8"

This reverts commit 37a1336de722c6920a24e8cd4278e396402f1b2a.
173b51169b8 was reverted in 777ca48.

3 years ago[libc++] Instantiate additional <iostream> members in the dylib
Louis Dionne [Wed, 21 Oct 2020 15:11:45 +0000 (11:11 -0400)]
[libc++] Instantiate additional <iostream> members in the dylib

This commit adds new explicit instantiations for some classes in <iostream>
in the library. This is done after noticing that many programs that use
streams end up containing weak definitions of these classes, which has a
negative impact on both code size and load times (due to the need to
resolve weak symbols at load time). Note that we are just adding the
additional explicit instantiations for the `char` specializations, since
the `wchar_t` specializations are not used as often, and as a result there
wouldn't be a clear benefit.

This change is not an ABI break, since we are just adding additional
symbols.

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

3 years agoRevert "[SystemZ][ZOS] Porting the time functions within libc++ to z/OS"
Louis Dionne [Thu, 12 Nov 2020 18:36:18 +0000 (13:36 -0500)]
Revert "[SystemZ][ZOS] Porting the time functions within libc++ to z/OS"

This reverts commit 173b51169b838. That commit was applied incorrectly,
and undid previous changes. That was clearly not intended.

3 years ago[MSP430] Remove unused MVT::Glue output from MSP430ISD::SELECT_CC nodes.
Craig Topper [Thu, 12 Nov 2020 15:54:29 +0000 (07:54 -0800)]
[MSP430] Remove unused MVT::Glue output from MSP430ISD::SELECT_CC nodes.

Follow up from a similar patch on RISCV 637f19c36b323cc3ab597f6ef138db53be395949

Nothing reads this Glue value that I could see. The SDNode def in
the td file does not have the SDNPOutGlue flag so I don't think
this glue would get properly propagated to MachineSDNodes if it
was used.

3 years ago[flang] Implement runtime support for basic ALLOCATE/DEALLOCATE
peter klausler [Tue, 10 Nov 2020 23:13:02 +0000 (15:13 -0800)]
[flang] Implement runtime support for basic ALLOCATE/DEALLOCATE

Add error reporting infrastructure and support for ALLOCATE
and DEALLOCATE statements of intrinsic types without SOURCE=
or MOLD=.

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

3 years ago[clang-tidy] Merge options inplace instead of copying
Nathan James [Thu, 12 Nov 2020 18:19:11 +0000 (18:19 +0000)]
[clang-tidy] Merge options inplace instead of copying

Changed `ClangTidyOptions::mergeWith` to operate on the instance instead of returning a copy. The old mergeWith method has been renamed to merge and marked as nodiscard, to aid in disambiguating which one is which.

Reviewed By: aaron.ballman

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

3 years agoNon-implicit attribute creation requires a source range; NFC
Aaron Ballman [Thu, 12 Nov 2020 18:06:30 +0000 (10:06 -0800)]
Non-implicit attribute creation requires a source range; NFC

There are two factory functions used to create a semantic attribute,
Create() and CreateImplicit(). CreateImplicit() does not need to
specify the source range of the attribute since it's an implicitly-
generated attribute. The same logic does not apply to Create(), so
this removes the default argument from those declarations to avoid
accidentally creating a semantic attribute without source location
information.

3 years ago[ELF] Don't consider SHF_ALLOC ".debug*" sections debug sections
Fangrui Song [Thu, 12 Nov 2020 17:59:43 +0000 (09:59 -0800)]
[ELF] Don't consider SHF_ALLOC ".debug*" sections debug sections

Fixes PR48071

* The Rust compiler produces SHF_ALLOC `.debug_gdb_scripts` (which normally does not have the flag)
* `.debug_gdb_scripts` sections are removed from `inputSections` due to --strip-debug/--strip-all
* When processing --gc-sections, pieces of a SHF_MERGE section can be marked live separately

`=>` segfault when marking liveness of a `.debug_gdb_scripts` which is not split into pieces (because it is not in `inputSections`)

This patch circumvents the problem by not treating SHF_ALLOC ".debug*" as debug sections (to prevent --strip-debug's stripping)
(which is still useful on its own).

Reviewed By: grimar

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

3 years ago[FPEnv][Clang][Driver] Use MarshallingInfoFlag for -fexperimental-strict-floating...
Kevin P. Neal [Thu, 12 Nov 2020 17:49:39 +0000 (12:49 -0500)]
[FPEnv][Clang][Driver] Use MarshallingInfoFlag for -fexperimental-strict-floating-point

As of D80952 we are disabling strict floating point on all hosts except
those that are explicitly listed as supported. Use of strict floating point
on other hosts requires use of the -fexperimental-strict-floating-point
flag. This is to avoid bugs like "https://bugs.llvm.org/show_bug.cgi?id=45329"
(which has an incorrect link in the previous review).

In the review for D80952 I was asked to mark the -fexperimental option as
a MarshallingInfoFlag. This patch does exactly that.

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

3 years ago[InstCombine] add tests for mask of sext-in-reg; NFC
Sanjay Patel [Thu, 12 Nov 2020 16:48:16 +0000 (11:48 -0500)]
[InstCombine] add tests for mask of sext-in-reg; NFC

3 years agoReland: Introduce -dot-cfg-mssa option which creates dot-cfg style file with mssa...
Jamie Schmeiser [Thu, 12 Nov 2020 17:39:10 +0000 (17:39 +0000)]
Reland: Introduce -dot-cfg-mssa option which creates dot-cfg style file with mssa comments included in source

Summary:
Expand the print-memoryssa and print<memoryssa> passes with a new hidden
option -cfg-dot-mssa that names a file. When set, a dot-cfg style file
will be generated into the named file with the memoryssa comments retained
and those blocks containing them shown in light pink. The option does
nothing in isolation.

Author: Jamie Schmeiser <schmeise@ca.ibm.com>

Reviewed By: asbirlea (Alina Sbirlea), dblaikie (David Blaikie)

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

3 years ago[gn build] (semi-manually) port 173b51169b8
Nico Weber [Thu, 12 Nov 2020 17:15:09 +0000 (12:15 -0500)]
[gn build] (semi-manually) port 173b51169b8

3 years agoFix unused variable warning in release builds
Alexander Kornienko [Thu, 12 Nov 2020 17:14:06 +0000 (18:14 +0100)]
Fix unused variable warning in release builds

3 years ago[ValueTracking] Update computeKnownBitsFromShiftOperator callbacks to take KnownBits...
Simon Pilgrim [Thu, 12 Nov 2020 16:56:40 +0000 (16:56 +0000)]
[ValueTracking] Update computeKnownBitsFromShiftOperator callbacks to take KnownBits shift amount. NFCI.

We were creating this internally, but will need to support general KnownBits amounts as part of D90479.

3 years ago[ELF] Make SORT_INIT_PRIORITY support .ctors.N
Fangrui Song [Thu, 12 Nov 2020 16:56:12 +0000 (08:56 -0800)]
[ELF] Make SORT_INIT_PRIORITY support .ctors.N

Input sections `.ctors/.ctors.N` may go to either the output section `.init_array` or the output section `.ctors`:

* output `.ctors`: currently we sort them by name. This patch changes to sort by priority from high to low. If N in `.ctors.N` is in the form of %05u, there is no semantic difference. Actually GCC and Clang do use %05u. (In the test `ctors_dtors_priority.s` and Gold's test `gold/testsuite/script_test_14.s`, we can see %03u, but they are not really produced by compilers.)
* output `.init_array`: users can provide an input section description `SORT_BY_INIT_PRIORITY(.init_array.* .ctors.*)` to mix `.init_array.*` and `.ctors.*`. This can make .init_array.N and .ctors.(65535-N) interchangeable.

With this change, users can mix `.ctors.N` and `.init_array.N` in `.init_array` (PR44698 and PR48096) with linker scripts. As an example:

```
SECTIONS {
  .init_array : {
    *(SORT_BY_INIT_PRIORITY(.init_array.* .ctors.*))
    *(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)
  }
} INSERT AFTER .fini_array;
SECTIONS {
  .fini_array : {
    *(SORT_BY_INIT_PRIORITY(.fini_array.* .dtors.*))
    *(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)
  }
} INSERT BEFORE .init_array;
```

Reviewed By: psmith

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

3 years ago[ELF] Sort by input order within an input section description
Fangrui Song [Thu, 12 Nov 2020 16:53:11 +0000 (08:53 -0800)]
[ELF] Sort by input order within an input section description

According to
https://sourceware.org/binutils/docs/ld/Input-Section-Basics.html#Input-Section-Basics
for `*(.a .b)`, the order should match the input order:

* for `ld 1.o 2.o`, sections from 1.o precede sections from 2.o
* within a file, `.a` and `.b` appear in the section header table order

This patch implements the behavior. The interaction with `SORT*` and --sort-section is:

Matched sections are ordered by radix sort with the keys being `(SORT*, --sort-section, input order)`,
where `SORT*` (if present) is most significant.

> Note, multiple `SORT*` within an input section description has undocumented and
> confusing behaviors in GNU ld:
> https://sourceware.org/pipermail/binutils/2020-November/114083.html
> Therefore multiple `SORT*` is not the focus for this patch but
> this patch still strives to have an explainable behavior.

As an example, we partition `SORT(a.*) b.* c.* SORT(d.*)`, into
`SORT(a.*) | b.* c.* | SORT(d.*)` and perform sorting within groups. Sections
matched by patterns between two `SORT*` are sorted by input order.  If
--sort-alignment is given, they are sorted by --sort-alignment, breaking tie by
input order.

This patch also allows a section to be matched by multiple patterns, previously
duplicated sections could occupy more space in the output and had erroneous zero bytes.

The patch is in preparation for support for
`*(SORT_BY_INIT_PRIORITY(.init_array.* .ctors.*)) *(.init_array .ctors)`,
which will allow LLD to mix .ctors*/.init_array* like GNU ld (gold's --ctors-in-init-array)
PR44698 and PR48096

Reviewed By: grimar, psmith

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

3 years ago[ELF] Support multiple SORT in an input section description
Fangrui Song [Thu, 12 Nov 2020 16:46:53 +0000 (08:46 -0800)]
[ELF] Support multiple SORT in an input section description

The second `SORT` in `*(SORT(...) SORT(...))` is incorrectly parsed as a file pattern.
Fix the bug by stopping at `SORT*` in `readInputSectionsList`.

Reviewed By: grimar

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

3 years ago[PowerPC] Prevent the use of MMA with P9 and earlier
Baptiste Saleil [Thu, 12 Nov 2020 16:32:47 +0000 (10:32 -0600)]
[PowerPC] Prevent the use of MMA with P9 and earlier

We want to allow using MMA on P10 CPU only. This patch prevents the use of MMA
with the -mmma option on P9 CPUs and earlier.

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

3 years ago[lldb] Replace TestAbortExitCode with a debugserver specific test
Raphael Isemann [Thu, 12 Nov 2020 16:20:11 +0000 (17:20 +0100)]
[lldb] Replace TestAbortExitCode with a debugserver specific test

When I added TestAbortExitCode I actually planned this to be a generic test for the
exit code functionality on POSIX systems. However due to all the different test setups we
can have I don't think this worked out. Right now the test had to be made so permissive
that it pretty much can't fail.

Just to summarize, we would need to support the following situations:
1. ToT debugserver (on macOS)
2. lldb-server (on other platforms)
3. Any old debugserver version when using the system debugserver (on macOS)

This patch is removing TestAbortExitCode and adds a ToT debugserver specific test
that checks the patch that motivated the whole exit code testing. There is already
an exit-code test for lldb-server from what I can see and 3) is pretty much untestable
as we don't know anything about the system debugserver.

Reviewed By: kastiglione

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

3 years ago[SystemZ][ZOS] Porting the time functions within libc++ to z/OS
Zbigniew Sarbinowski [Thu, 12 Nov 2020 16:22:04 +0000 (11:22 -0500)]
[SystemZ][ZOS] Porting the time functions within libc++ to z/OS

This patch is one part of many steps required to build libc++ and libc++abi libraries on z/OS.  This particular deals with time related functions and consists of the following 3 parts.

1) Initialization of :timeval within libc++ library need to be adjusted to work on z/OS.
The following is z/OS definition from time.h which includes additional aggregate member.
typedef signed int suseconds_t;
struct timeval {
time_t tv_sec;
char tv_usec_pad[4];
suseconds_t tv_usec;
};

In contracts the following is definition from time.h on Linux.

typedef long int __suseconds_t;
struct timeval
{
__time_t tv_sec;
__suseconds_t tv_usec;
};

2) In addition, retrieving ::timespec within libc++ library needs to be adjusted to compensate the difference of some of the members of ::stat depending of the target host.
Here are the 2 members in conflict on z/OS extracted from stat.h.
struct stat {
...
time_t st_atime;
time_t st_mtime;
...
};
In contract here is Linux equivalent from stat.h.
struct stat
{
...
struct timespec st_atim;
struct timespec st_mtim;
...
};

3) On Linux both members are of type timespec whereas on z/OS an object of type timespec need to be constructed first before retrieving it within libc++ library.

The libc++ header file __threading_support calls nanosleep, which is not available on z/OS.
The equivalent functionality will be implemented by using both sleep() and usleep().

Reviewed By: ldionne, #libc

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

3 years ago[KnownBits] Add KnownBits::makeConstant helper. NFCI.
Simon Pilgrim [Thu, 12 Nov 2020 16:15:46 +0000 (16:15 +0000)]
[KnownBits] Add KnownBits::makeConstant helper. NFCI.

Helper for cases where we need to create a KnownBits from a (fully known) constant value.

3 years agoRevert "Introduce -dot-cfg-mssa option which creates dot-cfg style file with mssa...
Anh Tuyen Tran [Thu, 12 Nov 2020 15:48:14 +0000 (15:48 +0000)]
Revert "Introduce -dot-cfg-mssa option which creates dot-cfg style file with mssa comments included in source"

This reverts commit 45d459e7522ddc512ac70c4c822d58d335099672 due to
build issue in Poly.

3 years ago[RISCV] Don't include CodeGen layer files in MC layer
Craig Topper [Thu, 12 Nov 2020 15:37:29 +0000 (07:37 -0800)]
[RISCV] Don't include CodeGen layer files in MC layer

-Use MCRegister instead of Register in MC layer.
-Move some enums from RISCVInstrInfo.h to RISCVBaseInfo.h to be with other TSFlags bits.

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

3 years agoIntroduce -dot-cfg-mssa option which creates dot-cfg style file with mssa comments...
Jamie Schmeiser [Thu, 12 Nov 2020 15:41:11 +0000 (15:41 +0000)]
Introduce -dot-cfg-mssa option which creates dot-cfg style file with mssa comments included in source

Summary:
Expand the print-memoryssa and print<memoryssa> passes with a new hidden
option -cfg-dot-mssa that names a file. When set, a dot-cfg style file
will be generated into the named file with the memoryssa comments retained
and those blocks containing them shown in light pink. The option does
nothing in isolation.

Author: Jamie Schmeiser <schmeise@ca.ibm.com>

Reviewed By: asbirlea (Alina Sbirlea), dblaikie (David Blaikie)

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

3 years ago[RISCV] Add an ANDI to shift amount of FSL/FSR instructions
Craig Topper [Thu, 12 Nov 2020 15:21:27 +0000 (07:21 -0800)]
[RISCV] Add an ANDI to shift amount of FSL/FSR instructions

The fshl and fshr intrinsics are defined to modulo their shift amount by the bitwidth of one of their inputs. The FSR/FSL instructions read one extra bit from the shift amount. If that bit is set the inputs are swapped. In order to preserve the semantics of the llvm intrinsics we need to make sure that the extra bit isn't set. DAG combine or instcombine may have removed any mask that was originally present.

We could be smarter here and try to use computeKnownBits to check if the bit is known zero, but wanted to start with correctness.

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

3 years ago[ValueTracking] Update computeKnownBitsFromShiftOperator callbacks to use KnownBits...
Simon Pilgrim [Thu, 12 Nov 2020 15:20:41 +0000 (15:20 +0000)]
[ValueTracking] Update computeKnownBitsFromShiftOperator callbacks to use KnownBits shift handling. NFCI.

3 years agoIntroduce -print-before-changed, making -print-changed also print before passes that...
Jamie Schmeiser [Thu, 12 Nov 2020 15:20:46 +0000 (15:20 +0000)]
Introduce -print-before-changed, making -print-changed also print before passes that modify IR

Summary:
Add an option -print-before-changed that modifies the print-changed
behaviour so that it prints the IR before a pass that changed it in
addition to printing the IR after the pass. Note that the option
does nothing in isolation. The filtering options work as expected.
Lit tests are included.

Author: Jamie Schmeiser <schmeise@ca.ibm.com>

Reviewed By: aeubanks (Arthur Eubanks)

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

3 years ago[lldb] Add expect_var_path to test variable path results
Raphael Isemann [Thu, 12 Nov 2020 15:07:58 +0000 (16:07 +0100)]
[lldb] Add expect_var_path to test variable path results

This adds `expect_var_path` to test variable paths so we no longer have to
use `frame var` and find substrs in the command output. The behaviour
is identical with `expect_expr` (and it also uses the same checking backend),
but it instead calls `GetValueForVariablePath` to evaluate the string as a variable
path.

Also rewrites a few of the tests that previously used `frame variable` to use
`expect_var_path`.

Reviewed By: labath

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

3 years ago[builtins] Add support for single-precision-only-FPU ARM targets.
Zhuojia Shen [Thu, 12 Nov 2020 14:44:54 +0000 (14:44 +0000)]
[builtins] Add support for single-precision-only-FPU ARM targets.

This patch enables building compiler-rt builtins for ARM targets that
only support single-precision floating point instructions (e.g., those
with -mfpu=fpv4-sp-d16).

This fixes PR42838

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

3 years ago[NFC intended] Refactor SinkAndHoistLICMFlags to allow others to construct without...
Jamie Schmeiser [Thu, 12 Nov 2020 15:06:53 +0000 (15:06 +0000)]
[NFC intended] Refactor SinkAndHoistLICMFlags to allow others to construct without exposing internals

Summary:
Refactor SinkAdHoistLICMFlags from a struct to a class with accessors and constructors to allow other
classes to construct flags with meaningful defaults while not exposing LICM internal details.

Author: Jamie Schmeiser <schmeise@ca.ibm.com>

Reviewed By: asbirlea (Alina Sbirlea)

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

3 years ago[CODE_OWNERS.TXT] Update to include yours truly as the TableGen owner
Paul C. Anagnostopoulos [Thu, 12 Nov 2020 14:46:42 +0000 (09:46 -0500)]
[CODE_OWNERS.TXT] Update to include yours truly as the TableGen owner

3 years ago[clang][docs] Remove wrongly spaced \brief in Doxygen comment (NFC)
Jean-Michel Gorius [Thu, 12 Nov 2020 14:44:43 +0000 (15:44 +0100)]
[clang][docs] Remove wrongly spaced \brief in Doxygen comment (NFC)

3 years ago[lldb][NFC] Move OptionDefinition from lldb-private-types.h to its own Utility header
Raphael Isemann [Tue, 10 Nov 2020 12:17:07 +0000 (13:17 +0100)]
[lldb][NFC] Move OptionDefinition from lldb-private-types.h to its own Utility header

Also moves the curious isprint8 function (which was used to check whether we have a
valid short option) into the struct and documents it.

3 years ago[clang-scan-deps] Fix for input file given as relative path in compilation database...
Sylvain Audi [Tue, 10 Nov 2020 20:56:02 +0000 (15:56 -0500)]
[clang-scan-deps] Fix for input file given as relative path in compilation database "command" entry.

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

3 years ago[ARM] Ensure CountReg definition dominates InsertPt when creating t2DoLoopStartTP
David Green [Thu, 12 Nov 2020 13:47:46 +0000 (13:47 +0000)]
[ARM] Ensure CountReg definition dominates InsertPt when creating t2DoLoopStartTP

Of course there was something missing, in this case a check that the def
of the count register we are adding to a t2DoLoopStartTP would dominate
the insertion point.

In the future, when we remove some of these COPY's in between, the
t2DoLoopStartTP will always become the last instruction in the block,
preventing this from happening. In the meantime we need to check they
are created in a sensible order.

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

3 years ago[LLD] Fix include following 45b8a741fbbf271e0fb71294cb7cdce3ad4b9bf3
Alexandre Ganea [Thu, 12 Nov 2020 13:31:57 +0000 (08:31 -0500)]
[LLD] Fix include following 45b8a741fbbf271e0fb71294cb7cdce3ad4b9bf3

3 years ago[lld] Use temporary directory to create test outputs
Alexander Kornienko [Thu, 12 Nov 2020 13:23:14 +0000 (14:23 +0100)]
[lld] Use temporary directory to create test outputs

3 years ago[LLD][COFF] When using LLD-as-a-library, always prevent re-entrance on failures
Alexandre Ganea [Thu, 12 Nov 2020 13:14:20 +0000 (08:14 -0500)]
[LLD][COFF] When using LLD-as-a-library, always prevent re-entrance on failures

This is a follow-up for D70378 (Cover usage of LLD as a library).

While debugging an intermittent failure on a bot, I recalled this scenario which
causes the issue:

1.When executing lld/test/ELF/invalid/symtab-sh-info.s L45, we reach
  lld::elf::Obj-File::ObjFile() which goes straight into its base ELFFileBase(),
  then ELFFileBase::init().
2.At that point fatal() is thrown in lld/ELF/InputFiles.cpp L381, leaving a
  half-initialized ObjFile instance.
3.We then end up in lld::exitLld() and since we are running with LLD_IN_TEST, we
  hapily restore the control flow to CrashRecoveryContext::RunSafely() then back
  in lld::safeLldMain().
4.Before this patch, we called errorHandler().reset() just after, and this
  attempted to reset the associated SpecificAlloc<ObjFile<ELF64LE>>. That tried
  to free the half-initialized ObjFile instance, and more precisely its
  ObjFile::dwarf member.

Sometimes that worked, sometimes it failed and was catched by the
CrashRecoveryContext. This scenario was the reason we called
errorHandler().reset() through a CrashRecoveryContext.

But in some rare cases, the above repro somehow corrupted the heap, creating a
stack overflow. When the CrashRecoveryContext's filter (that is,
__except (ExceptionFilter(GetExceptionInformation()))) tried to handle the
exception, it crashed again since the stack was exhausted -- and that took the
whole application down. That is the issue seen on the bot. Locally it happens
about 1 times out of 15.

Now this situation can happen anywhere in LLD. Since catching stack overflows is
not a reliable scenario ATM when using CrashRecoveryContext, we're now
preventing further re-entrance when such failures occur, by signaling
lld::SafeReturn::canRunAgain=false. When running with LLD_IN_TEST=2 (or above),
only one iteration will be executed, instead of two.

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

3 years ago[lldb] [test] Add a minimal test for x86 dbreg reading
Michał Górny [Wed, 11 Nov 2020 15:32:46 +0000 (16:32 +0100)]
[lldb] [test] Add a minimal test for x86 dbreg reading

Add a test verifying that after the 'watchpoint' command, new values
of x86 debug registers can be read back correctly.  The primary purpose
of this test is to catch broken DRn reading and help debugging it.

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

3 years ago[lldb] [Process/Utility] Fix DR offsets for FreeBSD
Michał Górny [Wed, 11 Nov 2020 13:51:16 +0000 (14:51 +0100)]
[lldb] [Process/Utility] Fix DR offsets for FreeBSD

Fix Debug Register offsets to be specified relatively to UserArea
on FreeBSD/amd64 and FreeBSD/i386, and add them to UserArea on i386.
This fixes overlapping GPRs and DRs in gdb-remote protocol, making it
impossible to correctly get and set debug registers from the LLDB
client.

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

3 years agoRevert "Generalize regex matching std::string variants to compensate for recent"
Raphael Isemann [Thu, 12 Nov 2020 13:01:09 +0000 (14:01 +0100)]
Revert "Generalize regex matching std::string variants to compensate for recent"

This reverts commit 856fd98a176240470dcc2b8ad54b5c17ef6a75b3. The type formatters
use inline namespaces to find the formatter that fits the type ABI, so they
can't just ignore the inline namespaces.

The failing tests should be fixed by da121fff1184267a405f81a87f7314df2d474e1c .

3 years ago[lldb] Introduce a LLDB printing policy for Clang type names that suppressed inline...
Raphael Isemann [Thu, 12 Nov 2020 10:33:36 +0000 (11:33 +0100)]
[lldb] Introduce a LLDB printing policy for Clang type names that suppressed inline namespaces

Commit 5f12f4ff9078455cad9d4806da01f570553a5bf9 made suppressing inline namespaces
when printing typenames default to true. As we're using the inline namespaces
in LLDB to construct internal type names (which need internal namespaces in them
to, for example, differentiate libc++'s std::__1::string from the std::string
from libstdc++), this broke most of the type formatting logic.

3 years ago[dllexport] Instantiate default ctor default args for explicit specializations (PR45811)
Hans Wennborg [Mon, 9 Nov 2020 16:22:32 +0000 (17:22 +0100)]
[dllexport] Instantiate default ctor default args for explicit specializations (PR45811)

For dllexported default constructors with default arguments, we export
default constructor closures which pass in the default args. (See D8331
for a good explanation.)

For templates, that means those default args must be instantiated even
if the function isn't called. That is done by the
InstantiateDefaultCtorDefaultArgs() function, but it wasn't done for
explicit specializations, causing asserts (see bug).

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

3 years ago[mlir] Add plus, star and optional less/greater parsing
Jean-Michel Gorius [Wed, 11 Nov 2020 17:01:39 +0000 (18:01 +0100)]
[mlir] Add plus, star and optional less/greater parsing

The tokens are already handled by the lexer. This revision exposes them
through the parser interface.

This revision also adds missing functions for question mark parsing and
completes the list of valid punctuation tokens in the documentation.

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

3 years ago[dllexport] Avoid assert for explicitly defaulted methods in explicit instantiation...
Hans Wennborg [Thu, 5 Nov 2020 12:44:50 +0000 (13:44 +0100)]
[dllexport] Avoid assert for explicitly defaulted methods in explicit instantiation definitions (PR47683)

Clang was asserting due to attempting to codegen such methods twice.

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

3 years ago[mlir] Generate Op builders for Python bindings
Alex Zinenko [Tue, 10 Nov 2020 16:31:36 +0000 (17:31 +0100)]
[mlir] Generate Op builders for Python bindings

Add an ODS-backed generator of default builders. This currently does not
support operation with attribute arguments, for which the builder is
just ignored. Attribute support will be introduced separately for
builders and accessors.

Default builders are always generated with the same number of result and
operand groups as the ODS specification, i.e. one group per each operand
or result. Optional elements accept None but cannot be omitted. Variadic
groups accept iterable objects and cannot be replaced with a single
object.

For some operations, it is possible to infer the result type given the
traits, but most traits rely on inline pieces of C++ that we cannot
(yet) forward to Python bindings. Since the Ops where the inference is
possible (having the `SameOperandAndResultTypes` trait or
`TypeMatchesWith` without transform field) are a small minority, they
also require the result type to make the builder syntax more consistent.

Reviewed By: stellaraccident

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

3 years ago[VE] Change the default type of v64 register class
Kazushi (Jam) Marukawa [Tue, 10 Nov 2020 12:00:20 +0000 (21:00 +0900)]
[VE] Change the default type of v64 register class

Change the default type of v64 register class from v512i32 to v256f64.
Add a regression test also.

Reviewed By: simoll

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

3 years ago[MLIR] Added documentation and manual to use bufferization features.
Julian Gross [Tue, 3 Nov 2020 11:28:49 +0000 (12:28 +0100)]
[MLIR] Added documentation and manual to use bufferization features.

Added documentation about the bufferization features.
Furthermore, the usage of pre- and post-processing is described.
This also includes information about optimization functionalities.

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

3 years ago[clangd] Simplify relations deserialization loop, NFC.
Kadir Cetinkaya [Thu, 12 Nov 2020 09:33:30 +0000 (10:33 +0100)]
[clangd] Simplify relations deserialization loop, NFC.

3 years ago[SVE] Deal with SVE tuple call arguments correctly when running out of registers
David Sherwood [Thu, 22 Oct 2020 08:37:33 +0000 (09:37 +0100)]
[SVE] Deal with SVE tuple call arguments correctly when running out of registers

When passing SVE types as arguments to function calls we can run
out of hardware SVE registers. This is normally fine, since we
switch to an indirect mode where we pass a pointer to a SVE stack
object in a GPR. However, if we switch over part-way through
processing a SVE tuple then part of it will be in registers and
the other part will be on the stack.

I've fixed this by ensuring that:

1. When we don't have enough registers to allocate the whole block
   we mark any remaining SVE registers temporarily as allocated.
2. We temporarily remove the InConsecutiveRegs flags from the last
   tuple part argument and reinvoke the autogenerated calling
   convention handler. Doing this prevents the code from entering
   an infinite recursion and, in combination with 1), ensures we
   switch over to the Indirect mode.
3. After allocating a GPR register for the pointer to the tuple we
   then deallocate any SVE registers we marked as allocated in 1).
   We also set the InConsecutiveRegs flags back how they were before.
4. I've changed the AArch64ISelLowering LowerCALL and
   LowerFormalArguments functions to detect the start of a tuple,
   which involves allocating a single stack object and doing the
   correct numbers of legal loads and stores.

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

3 years ago[ARM] Remove unused check labels. NFC
David Green [Thu, 12 Nov 2020 08:37:46 +0000 (08:37 +0000)]
[ARM] Remove unused check labels. NFC

3 years ago[libc++] [P0340] [C++20] Update status page. NFC.
Marek Kurdej [Thu, 12 Nov 2020 08:32:29 +0000 (09:32 +0100)]
[libc++] [P0340] [C++20] Update status page. NFC.

This was implemented in 410b650e674496e61506fa88f3026759b8759d0f:
"Implement P0340R3: Make 'underlying_type' SFINAE-friendly. Reviewed as https://reviews.llvm.org/D63574

llvm-svn: 364094"

3 years ago[mlir][Linalg] Improve the logic to perform tile and fuse with better dependence...
MaheshRavishankar [Thu, 12 Nov 2020 08:24:36 +0000 (00:24 -0800)]
[mlir][Linalg] Improve the logic to perform tile and fuse with better dependence tracking.

This change does two main things
1) An operation might have multiple dependences to the same
   producer. Not tracking them correctly can result in incorrect code
   generation with fusion. To rectify this the dependence tracking
   needs to also have the operand number in the consumer.
2) Improve the logic used to find the fused loops making it easier to
   follow. The only constraint for fusion is that linalg ops (on
   buffers) have update semantics for the result. Fusion should be
   such that only one iteration of the fused loop (which is also a
   tiled loop) must touch only one (disjoint) tile of the output. This
   could be relaxed by allowing for recomputation that is the default
   when oeprands are tensors, or can be made legal with promotion of
   the fused view (in future).

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

3 years ago[AArch64][GlobalISel] Optimize G_PTR_ADD with a negated offset to be a G_SUB.
Amara Emerson [Thu, 12 Nov 2020 06:45:19 +0000 (22:45 -0800)]
[AArch64][GlobalISel] Optimize G_PTR_ADD with a negated offset to be a G_SUB.

3 years ago[NFC][SCEV] Generalize monotonicity check for full and limited iteration space
Max Kazantsev [Thu, 12 Nov 2020 05:24:18 +0000 (12:24 +0700)]
[NFC][SCEV] Generalize monotonicity check for full and limited iteration space

A piece of logic of `isLoopInvariantExitCondDuringFirstIterations` is actually
a generalized predicate monotonicity check. This patch moves it into the
corresponding method and generalizes it a bit.

Differential Revision: https://reviews.llvm.org/D90395
Reviewed By: apilipenko

3 years ago[NFC][coroutines] remove unused argument in SemaCoroutine
Chuanqi Xu [Thu, 12 Nov 2020 05:17:16 +0000 (13:17 +0800)]
[NFC][coroutines] remove unused argument  in SemaCoroutine

Test plan: check-llvm, check-clang

Reviewers: lxfind, junparser

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

3 years agoRevert "[Coroutine] Allocas used by StoreInst does not always escape"
Xun Li [Thu, 12 Nov 2020 05:09:22 +0000 (21:09 -0800)]
Revert "[Coroutine] Allocas used by StoreInst does not always escape"

This reverts commit 8bc7b9278e55c4c8c731e7600a2d146438697964, which landed by accident.

3 years ago[mlir][sparse] export sparse tensor runtime support through header file
Aart Bik [Thu, 12 Nov 2020 02:40:01 +0000 (18:40 -0800)]
[mlir][sparse] export sparse tensor runtime support through header file

Exposing the C versions of the methods of the sparse runtime support lib
through header files will enable using the same methods in an MLIR program
as well as a C++ program, which will simplify future benchmarking comparisons
(e.g. comparing MLIR generated code with eigen for Matrix Market sparse matrices).

Reviewed By: penpornk

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

3 years ago[IndVars] IV user should not prevent use widening
Max Kazantsev [Thu, 12 Nov 2020 05:01:12 +0000 (12:01 +0700)]
[IndVars] IV user should not prevent use widening

Sometimes the an instruction we are trying to widen is used by the IV
(which means the instruction is the IV increment). Currently this may
prevent its widening. We should ignore such user because it will be
dead once the transform is done anyways.

Differential Revision: https://reviews.llvm.org/D90920
Reviewed By: fhahn

3 years ago[Coroutine] Allocas used by StoreInst does not always escape
Xun Li [Thu, 12 Nov 2020 04:53:45 +0000 (20:53 -0800)]
[Coroutine] Allocas used by StoreInst does not always escape

In the existing logic, for a given alloca, as long as its pointer value is stored into another location, it's considered as escaped.
This is a bit too conservative. Specifically, in non-optimized build mode, it's often to have patterns of code that first store an alloca somewhere and then load it right away.
These used should be handled without conservatively marking them escaped.

This patch tracks how the memory location where an alloca pointer is stored into is being used. As long as we only try to load from that location and nothing else, we can still
consider the original alloca not escaping and keep it on the stack instead of putting it on the frame.

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

3 years ago[IndVars] Recognize 'sub nuw' expressed as 'add' for widening
Max Kazantsev [Thu, 12 Nov 2020 03:49:01 +0000 (10:49 +0700)]
[IndVars] Recognize 'sub nuw' expressed as 'add' for widening

InstCombine canonicalizes 'sub nuw' instructions to 'add' without the
`nuw` flag. The typical case where we see it is decrementing induction
variables. For them, IndVars fails to prove that it's legal to widen them,
and inserts unprofitable `zext`'s.

This patch adds recognition of such pattern using SCEV.

Differential Revision: https://reviews.llvm.org/D89550
Reviewed By: fhahn, skatkov

3 years ago[Test] Add Check statement
Max Kazantsev [Thu, 12 Nov 2020 03:47:34 +0000 (10:47 +0700)]
[Test] Add Check statement

3 years agoFix structural comparison of template template arguments to compare the
Richard Smith [Thu, 12 Nov 2020 03:05:32 +0000 (19:05 -0800)]
Fix structural comparison of template template arguments to compare the
right union member.

Should fix the armv8 buildbot.

3 years ago[PowerPC] [Clang] Define macros to identify quad-fp semantics
Qiu Chaofan [Thu, 12 Nov 2020 02:19:52 +0000 (10:19 +0800)]
[PowerPC] [Clang] Define macros to identify quad-fp semantics

We have option -mabi=ieeelongdouble to set current long double to
IEEEquad semantics. Like what GCC does, we need to define
__LONG_DOUBLE_IEEE128__ macro in this case, and __LONG_DOUBLE_IBM128__
if using PPCDoubleDouble.

Reviewed By: steven.zhang

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

3 years ago[docs] Fix formatting, clarify comment in ORCv2 doc
Lang Hames [Thu, 12 Nov 2020 02:10:47 +0000 (13:10 +1100)]
[docs] Fix formatting, clarify comment in ORCv2 doc

3 years agoGeneralize regex matching std::string variants to compensate for recent
Richard Smith [Thu, 12 Nov 2020 01:54:26 +0000 (17:54 -0800)]
Generalize regex matching std::string variants to compensate for recent
improvements to Clang's type printing.

3 years ago[mlir][sparse] integrate sparse annotation into generic linalg op
Aart Bik [Thu, 12 Nov 2020 00:37:48 +0000 (16:37 -0800)]
[mlir][sparse] integrate sparse annotation into generic linalg op

This CL integrates the new sparse annotations (hereto merely added as fully
transparent attributes) more tightly to the generic linalg op in order to add
verification of the annotations' consistency as well as to make make other
passes more aware of their presence (in the long run, rewriting rules must
preserve the integrity of the annotations).

Reviewed By: nicolasvasilache

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

3 years ago[OpenMP] Begin Adding OpenMP Tool to Gather OpenMP Information
Joseph Huber [Mon, 9 Nov 2020 16:02:30 +0000 (11:02 -0500)]
[OpenMP] Begin Adding OpenMP Tool to Gather OpenMP Information

Summary:
This patch begins to add support for a set of scripts that can be used to get information from OpenMP programs to better describe problems and eventually show the data to the user in formatted output. Right now the only support is forformatting the register and memory usage reports from ptxas and nvlink. This is simply done as a wrapper around clang and clang++.

Reviewers: jdoerfert

DIfferential Revision: https://reviews.llvm.org/D91085

3 years ago[OpenMP][Tools][Tests] Fix ompt multiplex test
Joachim Protze [Thu, 12 Nov 2020 00:22:48 +0000 (01:22 +0100)]
[OpenMP][Tools][Tests] Fix ompt multiplex test

With 6213ed0 the master callback was renamed to masked.
The multiplex tests must check for masked now.

3 years ago[flang][MSVC] Use list<Message> rather than forward_list<> in Messages
peter klausler [Tue, 10 Nov 2020 22:56:51 +0000 (14:56 -0800)]
[flang][MSVC] Use list<Message> rather than forward_list<> in Messages

The implementation of Messages with forward_list<> makes some
nonstandard assumptions about the validity of iterators that don't
hold up with MSVC's implementation.  Use list<> instead.  The
measured performance is comparable.

This change obviated a distinction between two member functions
of Messages, and the uses of one have been replaced with calls
to the other.

Similar usage in CharBuffer was also replaced for consistency.

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

3 years ago[Syntax] Tablegen literal expressions.
Sam McCall [Wed, 11 Nov 2020 17:27:45 +0000 (18:27 +0100)]
[Syntax] Tablegen literal expressions.

Non-mechanical changes:
 - Added FIXME to StringLiteral to cover multi-token string literals.
 - LiteralExpression::getLiteralToken() is gone. (It was never called)
   This is because we don't codegen methods in Alternatives
   It's conceptually suspect if we consider multi-token string literals, though.

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

3 years ago[lldb] Switch expect to runCmd in TestRecursiveTypes (NFC)
Dave Lee [Tue, 10 Nov 2020 21:59:04 +0000 (13:59 -0800)]
[lldb] Switch expect to runCmd in TestRecursiveTypes (NFC)

Following discussion in D91193, a change made in D88792 was not quite right.
This restores the message argument, and switches from `expect` to `runCmd`.

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

3 years ago[docs] Fix formatting in ORCv2.rst.
Lang Hames [Thu, 12 Nov 2020 00:08:58 +0000 (11:08 +1100)]
[docs] Fix formatting in ORCv2.rst.

Bold and fixed-width do not appear to mix well.

3 years ago[docs] Update ORCv2 design doc.
Lang Hames [Wed, 11 Nov 2020 23:05:43 +0000 (10:05 +1100)]
[docs] Update ORCv2 design doc.

Fixes some formatting and wording, and adds a roadmap section.

3 years ago[coro] Async coroutines: Allow more than 3 arguments in the dispatch function
Arnold Schwaighofer [Mon, 9 Nov 2020 20:05:57 +0000 (12:05 -0800)]
[coro] Async coroutines: Allow more than 3 arguments in the dispatch function

We need to be able to call function pointers. Inline the dispatch
function.

Also inline the context projection function.

Transfer debug locations from the suspend point to the inlined functions.

Use the function argument index instead of the function argument in
coro.id.async. This solves any spurious use issues.

Coerce the arguments of the tail call function at a suspend point. The LLVM
optimizer seems to drop casts leading to a vararg intrinsic.

rdar://70097093

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

3 years ago[NewPM] Provide method to run all pipeline callbacks, used for -O0
Arthur Eubanks [Sun, 8 Nov 2020 21:51:29 +0000 (13:51 -0800)]
[NewPM] Provide method to run all pipeline callbacks, used for -O0

Some targets may add required passes via
TargetMachine::registerPassBuilderCallbacks(). We need to run those even
under -O0. As an example, BPFTargetMachine adds
BPFAbstractMemberAccessPass, a required pass.

This also allows us to clean up BackendUtil.cpp (and out-of-tree Rust
usage of the NPM) by allowing us to share added passes like coroutines
and sanitizers between -O0 and other optimization levels.

Since callbacks may end up not adding passes, we need to check if the
pass managers are empty before adding them, so PassManager now has an
isEmpty() function. For example, polly adds callbacks but doesn't always
add passes in those callbacks, so this is necessary to keep
-debug-pass-manager tests' output from changing depending on if polly is
enabled or not.

Tests are a continuation of those added in
https://reviews.llvm.org/D89083.

Reviewed By: asbirlea, Meinersbur

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

3 years agoSuppress printing of inline namespace names in diagnostics by default,
Richard Smith [Wed, 11 Nov 2020 22:34:20 +0000 (14:34 -0800)]
Suppress printing of inline namespace names in diagnostics by default,
except where they are necessary to disambiguate the target.

This substantially improves diagnostics from the standard library,
which are otherwise full of `::__1::` noise.

3 years agoSuppress printing template arguments that match default template
Richard Smith [Wed, 11 Nov 2020 21:04:35 +0000 (13:04 -0800)]
Suppress printing template arguments that match default template
arguments of types by default.

This somewhat improves the worst-case printing of types like
std::string, std::vector, etc., where many irrelevant default arguments
can be included in the type as printed if we've lost the type sugar.

3 years ago[clangd] Add index server request logging
Sam McCall [Mon, 2 Nov 2020 23:24:03 +0000 (00:24 +0100)]
[clangd] Add index server request logging

- Add verbose logging of payloads
- Add public logging of request summaries
- fix non-logging of messages in request scopes (oops!)
- add test for public/non-public logging, extending pipeline_helper a bit.

We've accumulated quite a lot of duplication in the request handlers by now.
I should factor that out, but not in this patch...

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

3 years ago[libc++] Implement P0919R3: heterogenous lookup for unordered containers
Ruslan Arutyunyan [Tue, 10 Nov 2020 12:49:55 +0000 (07:49 -0500)]
[libc++] Implement P0919R3: heterogenous lookup for unordered containers

Implement heterogenous lookup for unordered containers, including the
refinement from P1690R1.

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

3 years ago[PowerPC] Accumulator/Unprimed Accumulator register copy, spill and restore
Baptiste Saleil [Mon, 2 Nov 2020 15:38:24 +0000 (09:38 -0600)]
[PowerPC] Accumulator/Unprimed Accumulator register copy, spill and restore

This patch adds support for accumulator/unprimed accumulator
register copy, spill and restore for MMA.

Authored By: Baptiste Saleil

Reviewed By: #powerpc, bsaleil, amyk

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

3 years ago[Polly][OpTree] Fix mid-processing change of access kind.
Michael Kruse [Wed, 11 Nov 2020 22:14:48 +0000 (16:14 -0600)]
[Polly][OpTree] Fix mid-processing change of access kind.

Operand tree forwarding can cause the change of an access kind; in
particular change from a scalar kind to an array kind if the scalar
dependency is not necessary. Such an access cannot and doesn't need to
be forwarded anymore.

Fixes llvm.org/PR48034

3 years ago[Polly][OpTree] Better report applied changes.
Michael Kruse [Wed, 11 Nov 2020 22:00:42 +0000 (16:00 -0600)]
[Polly][OpTree] Better report applied changes.

Print to dbgs() any taken action.

Also, read-only scalars do not require any action unless
-polly-analyze-read-only-scalars=true is used. Better refect this by
using ForwardingAction::triviallyForwardable and thus not bumping the
statistics.

3 years agoFrontend: Change ComputePreambleBounds to take MemoryBufferRef, NFC
Duncan P. N. Exon Smith [Thu, 5 Nov 2020 17:43:58 +0000 (12:43 -0500)]
Frontend: Change ComputePreambleBounds to take MemoryBufferRef, NFC

Avoid requiring an actual MemoryBuffer in ComputePreambleBounds, when
a MemoryBufferRef will do just fine.

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

3 years ago[clangd] Sanity-check array sizes read from disk before allocating them.
Sam McCall [Wed, 11 Nov 2020 12:45:19 +0000 (13:45 +0100)]
[clangd] Sanity-check array sizes read from disk before allocating them.

Previously a corrupted index shard could cause us to resize arrays to an
arbitrary int32. This tends to be a huge number, and can render the
system unresponsive.

Instead, cap this at the amount of data that might reasonably be read
(e.g. the #bytes in the file). If the specified length is more than that,
assume the data is corrupt.

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

3 years ago[libc++] NFC: Simplify incude of <cstdlib>
Louis Dionne [Wed, 11 Nov 2020 22:04:32 +0000 (17:04 -0500)]
[libc++] NFC: Simplify incude of <cstdlib>

We include <exception>, which includes <cstdlib> unconditionally anyway.

3 years ago[libc++abi] Reuse libc++'s refstring.h header instead of copying it
Louis Dionne [Wed, 11 Nov 2020 21:50:43 +0000 (16:50 -0500)]
[libc++abi] Reuse libc++'s refstring.h header instead of copying it

This has been a long-standing TODO item, however we have now been requiring
a monorepo layout to build libc++ and libc++abi for a while now. Hence,
we can fix this code duplication issue now.

Note that it's still not super pretty to reach into libc++ to include
headers, but it's better than having duplicated code which can get out
of sync.