platform/upstream/llvm.git
3 years ago[Docs] Add some documentation for constructor homing, a debug info optimization ...
Amy Huang [Tue, 2 Feb 2021 01:33:46 +0000 (17:33 -0800)]
[Docs] Add some documentation for constructor homing, a debug info optimization (-fuse-ctor-homing)

Adding this, since there's currently no documentation about this.

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

3 years ago[clang-tidy] Use new mapping matchers
Stephen Kelly [Sat, 2 Jan 2021 21:18:29 +0000 (21:18 +0000)]
[clang-tidy] Use new mapping matchers

Use mapAnyOf() and matchers based on it.

Use of binaryOperation() means that modernize-loop-convert and
readability-container-size-empty can now be used with rewritten binary
operators.

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

3 years agoPR44325 (and duplicates): don't issue -Wzero-as-null-pointer-constant
Richard Smith [Wed, 3 Feb 2021 22:57:19 +0000 (14:57 -0800)]
PR44325 (and duplicates): don't issue -Wzero-as-null-pointer-constant
when rewriting 'a < b' as '(a <=> b) < 0'.

It's pretty common for comparison category types to use a pointer or
pointer-to-member type as their '0' parameter.

3 years agoRevert "[LTO] Use lto::backend for code generation."
Florian Hahn [Wed, 3 Feb 2021 22:45:45 +0000 (22:45 +0000)]
Revert "[LTO] Use lto::backend for code generation."

This reverts commit 6a59f0560648b43324b5aed51b9ef996404a25e0, because
it is causing failures on green dragon.

3 years agoRevert "[LTO] Add option enable NewPM with LTOCodeGenerator."
Florian Hahn [Wed, 3 Feb 2021 22:45:42 +0000 (22:45 +0000)]
Revert "[LTO] Add option enable NewPM with LTOCodeGenerator."

This reverts commit 7a6a2cc81aaf064e6f5bc9a9a16973f552d2bdc2 because
it is causing failures on green dragon.

3 years agoRevert "[LTOCodeGenerator] Use lto::Config for options (NFC)."
Florian Hahn [Wed, 3 Feb 2021 22:45:31 +0000 (22:45 +0000)]
Revert "[LTOCodeGenerator] Use lto::Config for options (NFC)."

This reverts commit 0d487cf87aa1b609b7db061def3e5ad068576ecf because
it is causing failures on green dragon.

3 years agoTurn on the new pass manager by default
Arthur Eubanks [Mon, 25 Jan 2021 19:00:56 +0000 (11:00 -0800)]
Turn on the new pass manager by default

This turns on the new pass manager by default for the optimization pipeline in
Clang and ThinLTO in various LLD backends. This also makes uses of `opt
-instcombine` use the new pass manager (unless specifically opted out).

This does not affect the backend target-dependent codegen pipeline.

If this causes regressions, you can opt out of the new pass manager
either via the -DENABLE_EXPERIMENTAL_NEW_PASS_MANAGER=OFF CMake flag
while building LLVM, or via various compiler flags, e.g.
-flegacy-pass-manager for Clang or -Wl,--lto-legacy-pass-manager for
ELF LLD. Please file bugs for any regressions.

Major differences:
* The inliner works slightly differently
* -O1 does some amount of inlining
* LCSSA and LoopSimplify are run before all loop passes
* Loop unswitching is implemented slightly differently
* A new SpeculateAroundPHIs pass is added to the pipeline

https://lists.llvm.org/pipermail/llvm-dev/2021-January/148098.html

Reviewed By: asbirlea, ychen, MaskRay, echristo

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

3 years agoPR49020: Diagnose brace elision in designated initializers in C++.
Richard Smith [Wed, 3 Feb 2021 22:33:17 +0000 (14:33 -0800)]
PR49020: Diagnose brace elision in designated initializers in C++.

This is a corner of the differences between C99 designators and C++20
designators that we'd previously overlooked. As with other such cases,
this continues to be permitted as an extension and allowed by default,
behind the -Wc99-designators warning flag, except in cases where it
leads to a conformance difference (such as in overload resolution and in
a SFINAE context).

3 years ago[GlobalISel] Add sext(constant) -> constant artifact combine.
Amara Emerson [Sat, 30 Jan 2021 06:48:13 +0000 (22:48 -0800)]
[GlobalISel] Add sext(constant) -> constant artifact combine.

This is the G_SEXT counterpart to the existing G_ZEXT/G_ANYEXT combines.

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

3 years ago[lldb] Check for both Lua 5.3 and 5.4 error messages in the tests.
Jonas Devlieghere [Wed, 3 Feb 2021 21:45:54 +0000 (13:45 -0800)]
[lldb] Check for both Lua 5.3 and 5.4 error messages in the tests.

3 years ago[lldb] Honor the CPU type & subtype when launching on macOS
Jonas Devlieghere [Wed, 3 Feb 2021 07:25:27 +0000 (23:25 -0800)]
[lldb] Honor the CPU type & subtype when launching on macOS

Honor the CPU type (and subtype) when launching the inferior on macOS.

Part of this functionality was thought to be no longer needed and
removed in 85bd4369610fe60397455c8e0914a09288285e84, however it's still
needed, for example to launch binaries under Rosetta 2 on Apple Silicon.

This patch will use posix_spawnattr_setarchpref_np if available and
fallback to posix_spawnattr_setbinpref_np if not.

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

3 years ago[Coverage] Propogate counter to condition of conditional operator
Zequan Wu [Wed, 3 Feb 2021 04:43:13 +0000 (20:43 -0800)]
[Coverage] Propogate counter to condition of conditional operator

Clang usually propagates counter mapping region for conditions of `if`, `while`,
`for`, etc from parent counter. We should do the same for condition of conditional operator.

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

3 years ago[libc++] Rationalize our treatment of contiguous iterators and __unwrap_iter().
Arthur O'Dwyer [Fri, 15 Jan 2021 17:59:56 +0000 (12:59 -0500)]
[libc++] Rationalize our treatment of contiguous iterators and __unwrap_iter().

- Implement C++20's changes to `reverse_iterator`, so that it won't be
    accidentally counted as a contiguous iterator in C++20 mode.
- Implement C++20's changes to `move_iterator` as well.
- `move_iterator` should not be contiguous. This fixes a bug where
    we optimized `std::copy`-of-move-iterators in an observable way.
    Add a regression test for that bugfix.
- Add libcxx tests for `__is_cpp17_contiguous_iterator` of all relevant
    standard iterator types. Particularly check that vector::iterator
    is still considered contiguous in all C++ modes, even C++03.

After this patch, there continues to be no supported way to write your
own iterator type in C++17-and-earlier such that libc++ will consider it
"contiguous"; however, we now fully support the C++20 approach (in C++20
mode only). If you want user-defined contiguous iterators in C++17-and-earlier,
libc++'s position is "please upgrade to C++20."

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

3 years agoAdd API for adding arguments to blocks
George [Wed, 3 Feb 2021 20:34:29 +0000 (12:34 -0800)]
Add API for adding arguments to blocks

This just exposes a missing API

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

3 years ago[lld-macho] Try to fix Windows build
Jez Ng [Wed, 3 Feb 2021 21:04:36 +0000 (16:04 -0500)]
[lld-macho] Try to fix Windows build

3 years ago[NewPM][HelloWorld] Move HelloWorld to Utils
Arthur Eubanks [Wed, 3 Feb 2021 00:43:32 +0000 (16:43 -0800)]
[NewPM][HelloWorld] Move HelloWorld to Utils

To prevent creating a new component, which creates a new library.

Reviewed By: ychen

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

3 years ago[asan] Fix pthread_create interceptor
Vitaly Buka [Sat, 30 Jan 2021 08:19:48 +0000 (00:19 -0800)]
[asan] Fix pthread_create interceptor

AsanThread::Destroy implementation expected to be called on
child thread.

I missed authors concern regarding this reviewing D95184.

Reviewed By: delcypher

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

3 years agoFix overflowing signed left shift, found by ubsan buildbot.
Richard Smith [Wed, 3 Feb 2021 20:51:11 +0000 (12:51 -0800)]
Fix overflowing signed left shift, found by ubsan buildbot.

3 years ago[mlir] Add gpu async integration test.
Christian Sigg [Wed, 3 Feb 2021 19:10:51 +0000 (20:10 +0100)]
[mlir] Add gpu async integration test.

Reviewed By: herhut

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

3 years ago[Hexagon] Add LLVM instruction definitions for Hexagon V68
Krzysztof Parzyszek [Wed, 3 Feb 2021 16:25:44 +0000 (10:25 -0600)]
[Hexagon] Add LLVM instruction definitions for Hexagon V68

3 years ago[clang-tblgen] AnnotateAttr::printPretty has spurious comma when no variadic argument...
Félix Cloutier [Tue, 2 Feb 2021 22:20:20 +0000 (14:20 -0800)]
[clang-tblgen] AnnotateAttr::printPretty has spurious comma when no variadic argument is specified

rdar://73742471
Differential Revision: https://reviews.llvm.org/D95695

3 years ago[SampleFDO][NFC] Detach SampleProfileLoader from SampleCoverageTracker
Rong Xu [Wed, 3 Feb 2021 19:21:02 +0000 (11:21 -0800)]
[SampleFDO][NFC] Detach SampleProfileLoader from SampleCoverageTracker

This patch detaches SampleProfileLoader from class
SampleCoverageTracker. We plan to move SampleProfileLoader
to a template class. This would remain SampleCoverageTracker
as a class.
Also make callsiteIsHot() as a file static function.

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

3 years ago[NFC][CUDA] Refactor registering device variable
Yaxun (Sam) Liu [Tue, 26 Jan 2021 22:11:01 +0000 (17:11 -0500)]
[NFC][CUDA] Refactor registering device variable

Extract registering device variable to CUDA runtime codegen function since it
will be called in multiple places.

Reviewed by: Artem Belevich

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

3 years agoDelete CUDA context after linking device code.
Christian Sigg [Tue, 2 Feb 2021 09:48:12 +0000 (10:48 +0100)]
Delete CUDA context after linking device code.

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

3 years ago[GlobalISel] Combine narrowScalar of G_ADD and G_SUB. NFC
Justin Bogner [Wed, 3 Feb 2021 01:02:52 +0000 (17:02 -0800)]
[GlobalISel] Combine narrowScalar of G_ADD and G_SUB. NFC

These two cases have identical implementations other than an
unreachable part of `G_ADD` that checks if the scalar we're narrowing
is a vector. Combining them to avoid unnecessary divergence.

3 years agoSet GPU context before {cu,hip}MemHostRegister.
Christian Sigg [Tue, 2 Feb 2021 09:43:32 +0000 (10:43 +0100)]
Set GPU context before {cu,hip}MemHostRegister.

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

3 years agoRegisterCoalescer: Fix not setting undef on coalesced subregister uses
Matt Arsenault [Fri, 11 Dec 2020 16:04:37 +0000 (11:04 -0500)]
RegisterCoalescer: Fix not setting undef on coalesced subregister uses

This was only adding undef to the use if the copy itself had a
subregister index. It did not consider the subrange liveness if the
use had a subreg index to begin with.

3 years ago[flang] Fix calls to LBOUND() intrinsic for arrays with lower bounds not 1
Peter Steinfeld [Tue, 2 Feb 2021 22:15:50 +0000 (14:15 -0800)]
[flang] Fix calls to LBOUND() intrinsic for arrays with lower bounds not 1

Constant folding for calls to LBOUND() was not working when the lower bound of
a constant array was not 1.

I fixed this and re-enabled the test in Evaluate/folding16.f90 that previously
was silently failing.  I slightly changed the test to parenthesize the first
argument to exercise all of the new code.

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

3 years ago[dfsan] Wrap strcat
Jianzhou Zhao [Wed, 3 Feb 2021 05:28:42 +0000 (05:28 +0000)]
[dfsan] Wrap strcat

Reviewed-by: morehouse
Differential Revision: https://reviews.llvm.org/D95923

3 years ago[dfsan] Test IGN and DFL for sigaction
Jianzhou Zhao [Wed, 3 Feb 2021 17:23:32 +0000 (17:23 +0000)]
[dfsan] Test IGN and DFL for sigaction

Reviewed-by: morehouse
Differential Revision: https://reviews.llvm.org/D95957

3 years ago[libc][NFC] Move generic math implementations to the generic directory.
Siva Chandra [Wed, 3 Feb 2021 08:37:16 +0000 (00:37 -0800)]
[libc][NFC] Move generic math implementations to the generic directory.

This expands the pattern suggest in https://reviews.llvm.org/D95850 to all
math functions.

3 years ago[sanitizer_common] Use zx_system_get_page_size() on Fuchsia
Roland McGrath [Wed, 3 Feb 2021 04:59:45 +0000 (20:59 -0800)]
[sanitizer_common] Use zx_system_get_page_size() on Fuchsia

Fuchsia is migrating to a variable page size.

Reviewed By: phosek, charco

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

3 years ago[lld-macho] Rename VERSION CONTROL to VERSION TARGETING in helptext
Jez Ng [Wed, 3 Feb 2021 18:35:56 +0000 (13:35 -0500)]
[lld-macho] Rename VERSION CONTROL to VERSION TARGETING in helptext

Per https://reviews.llvm.org/D94938#inline-896740.

3 years ago[lld-macho] Remove stray ehFrame change
Jez Ng [Wed, 3 Feb 2021 18:33:30 +0000 (13:33 -0500)]
[lld-macho] Remove stray ehFrame change

Per https://reviews.llvm.org/D95121#inline-897943.

3 years ago[lld-macho] Force-loading should share code path with regular archive loads
Jez Ng [Wed, 3 Feb 2021 18:31:42 +0000 (13:31 -0500)]
[lld-macho] Force-loading should share code path with regular archive loads

This extends {D92539} to work even when we are loading archive
members via `-force_load`. I uncovered this issue while trying to
force-load archives containing bitcode -- we were segfaulting.

In addition to fixing the `-force_load` case, this diff also addresses
the behavior of `-ObjC` when LTO bitcode is involved -- we need to
force-load those archive members if they contain ObjC categories.

Reviewed By: #lld-macho, smeenai

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

3 years ago[lld-macho] Associate each Symbol with an InputFile
Jez Ng [Wed, 3 Feb 2021 18:31:40 +0000 (13:31 -0500)]
[lld-macho] Associate each Symbol with an InputFile

This makes our error messages more informative. But the bigger motivation is for
LTO symbol resolution, which will be in an upcoming diff. The changes in this
one are largely mechanical.

Reviewed By: #lld-macho, smeenai

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

3 years agoRegisterCoalescer: Prune undef subranges from copy pairs in loops
Matt Arsenault [Mon, 16 Nov 2020 21:23:26 +0000 (16:23 -0500)]
RegisterCoalescer: Prune undef subranges from copy pairs in loops

If we had a pair of copies inside a loop which introduced new liveness
to a subregister which was undef before the loop, we would have a
dummy phi-only segment remaining across the loop body. Later, this
false segment would confuse RenameIndependentSubregs causing it to
introduce IMPLICIT_DEFs with broken value numbering.

It seems always adding the lanes to ShrinkMask is OK, so any
conditions should be purely a compile time filter.

3 years ago[lldb] Fix debugserver-entitlements.plist path
Jonas Devlieghere [Wed, 3 Feb 2021 18:42:20 +0000 (10:42 -0800)]
[lldb] Fix debugserver-entitlements.plist path

3 years ago[gwp_asan] Use zx_system_get_page_size() on Fuchsia
Roland McGrath [Wed, 3 Feb 2021 18:31:45 +0000 (10:31 -0800)]
[gwp_asan] Use zx_system_get_page_size() on Fuchsia

Fuchsia is migrating to a variable page size.

Reviewed By: hctim

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

3 years ago[scudo/standalone] Use zx_system_get_page_size() on Fuchsia
Roland McGrath [Wed, 3 Feb 2021 04:55:52 +0000 (20:55 -0800)]
[scudo/standalone] Use zx_system_get_page_size() on Fuchsia

Fuchsia is migrating to a variable page size.

Reviewed By: hctim

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

3 years agoRevert "AMDGPU: Don't consider global pressure when bundling soft clauses"
Matt Arsenault [Wed, 3 Feb 2021 18:19:09 +0000 (13:19 -0500)]
Revert "AMDGPU: Don't consider global pressure when bundling soft clauses"

This reverts commit 1e377a273f59375d8e6a424f66f069b3adfa1ca4.

A regression was reported.

3 years ago[AMDGPU] Added -mcpu to couple more tests. NFC.
Stanislav Mekhanoshin [Wed, 3 Feb 2021 18:04:02 +0000 (10:04 -0800)]
[AMDGPU] Added -mcpu to couple more tests. NFC.

3 years ago[DAGCombiner] Remove (sra (shl X, C), C) if X has more than C sign bits.
Craig Topper [Wed, 3 Feb 2021 18:16:08 +0000 (10:16 -0800)]
[DAGCombiner] Remove (sra (shl X, C), C) if X has more than C sign bits.

If sext_inreg is supported, we will turn this into sext_inreg. That
will then remove it if there are enough sign bits. But if sext_inreg
isn't supported, we can still remove the shift pair based on sign
bits.

Split from D95890.

3 years ago[flang] Enable FIR types and Dialect round trip tests
Sourabh Singh Tomar [Wed, 3 Feb 2021 17:28:59 +0000 (22:58 +0530)]
[flang] Enable FIR types and Dialect round trip tests

Reviewed By: schweitz, mehdi_amini

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

3 years ago[OpenMP] Fixed an issue that taskwait doesn't work on detachable task
Shilei Tian [Wed, 3 Feb 2021 18:12:34 +0000 (13:12 -0500)]
[OpenMP] Fixed an issue that taskwait doesn't work on detachable task

D77609 mistakenly changed the bebavior of task waiting on detachable task that a detachable task is not waited, based on https://lists.llvm.org/pipermail/openmp-dev/2021-February/003836.html. This patch fixed it. Thank Raúl for the report.

Reviewed By: jdoerfert

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

3 years agoRevert "[DWARF] Location-less inlined variables should not have DW_TAG_variable"
Jeremy Morse [Wed, 3 Feb 2021 17:54:33 +0000 (17:54 +0000)]
Revert "[DWARF] Location-less inlined variables should not have DW_TAG_variable"

This reverts commit ddc2f1e3fb4f8f9ae7dd130e40b60cfc775eba24.

A build-bot objected:

  http://lab.llvm.org:8011/#builders/105/builds/5486

3 years ago[VPlan] Manage induction value creation using VPValues.
Florian Hahn [Wed, 3 Feb 2021 17:45:03 +0000 (17:45 +0000)]
[VPlan] Manage induction value creation using VPValues.

This patch updates the induction value creation to use VPValues of
recipes to map the created values. This should bring is one step closer
to being able to optimize induction recipes directly in VPlan.

Currently widenIntOrFpInduction also generates vector values for a cast
of the induction, if it exists. Make this explicit by adding the cast
instruction to the values defined by the recipe.

Reviewed By: gilr

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

3 years ago[DWARF] Location-less inlined variables should not have DW_TAG_variable
Jeremy Morse [Wed, 3 Feb 2021 17:27:30 +0000 (17:27 +0000)]
[DWARF] Location-less inlined variables should not have DW_TAG_variable

Discussed in this thread:

  https://lists.llvm.org/pipermail/llvm-dev/2021-January/148139.html

DwarfDebug::collectEntityInfo accidentally distinguishes between variable
locations that never have a location specified, and variable locations that
have an empty location specified. The latter leads to the creation of an
empty variable referring to the abstract origin.

Fix this by seeking a non-empty location before producing a concrete
entity, to guarantee a DW_AT_location will be produced. Other loops in
collectEntityInfo and endFunctionImpl take care of examining the
retainedNodes collection and ensuring optimised-out variables are created.

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

3 years ago[flang][NFCI] Relpace `LoopOp` Op with `DoLoopOp` Op in FIR Dialect
Sourabh Singh Tomar [Wed, 3 Feb 2021 14:30:21 +0000 (20:00 +0530)]
[flang][NFCI] Relpace `LoopOp` Op with `DoLoopOp` Op in FIR Dialect

Part of upstreaming effort,
PR: https://github.com/flang-compiler/f18-llvm-project/pull/296

Reviewed By: schweitz

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

3 years ago[dfsan] Clean TLS after signal callbacks
Jianzhou Zhao [Tue, 2 Feb 2021 22:35:27 +0000 (22:35 +0000)]
[dfsan] Clean TLS after signal callbacks

Similar to https://reviews.llvm.org/D95642, this diff fixes signal.

Reviewed-by: morehouse
Differential Revision: https://reviews.llvm.org/D95896

3 years ago[Hexagon] Add ELF flags for Hexagon V68
Krzysztof Parzyszek [Wed, 3 Feb 2021 16:34:50 +0000 (10:34 -0600)]
[Hexagon] Add ELF flags for Hexagon V68

3 years ago[flang] Add -fsyntax-only to f18; retain -fparse-only synonym
peter klausler [Tue, 2 Feb 2021 18:51:14 +0000 (10:51 -0800)]
[flang] Add -fsyntax-only to f18; retain -fparse-only synonym

Now that semantics is working, the standard -fsyntax-only option of
GNU and Clang should be used as the name of the option that causes
f18 to just run the front-end.  Support both options in f18, silently
accepting the old option as a synonym for the new one (as
preferred by the code owner), and replace all instances of the
old -fparse-only option with -fsyntax-only throughout the source base.

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

3 years ago[FPEnv][X86] Platform builtins edition: clang should get from the AST the metadata...
Kevin P. Neal [Tue, 12 Jan 2021 20:46:59 +0000 (15:46 -0500)]
[FPEnv][X86] Platform builtins edition: clang should get from the AST the metadata for constrained FP builtins

Currently clang is not correctly retrieving from the AST the metadata for
constrained FP builtins. This patch fixes that for the X86 specific builtins.

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

3 years ago[ConstraintElimination] Add some tests with conds in loop header.
Florian Hahn [Wed, 3 Feb 2021 15:00:37 +0000 (15:00 +0000)]
[ConstraintElimination] Add some tests with conds in loop header.

This patch adds a set of tests in which we can add the information from
the pre-header to a loop header, but currently do not do so.

3 years ago[AMDGPU] Fix multiclass template parameter types. NFC.
Jay Foad [Wed, 3 Feb 2021 16:20:12 +0000 (16:20 +0000)]
[AMDGPU] Fix multiclass template parameter types. NFC.

This fixes TableGen parser errors that will be reported when D95874 is
applied.

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

3 years agoRevert "[ConstantFold] Fold more operations to poison"
Juneyoung Lee [Wed, 3 Feb 2021 15:07:04 +0000 (00:07 +0900)]
Revert "[ConstantFold] Fold more operations to poison"

This reverts commit 53040a968dc2ff20931661e55f05da2ef8b964a0 due to its
bad interaction with select i1 -> and/or i1 transformation.

This fixes:
https://bugs.llvm.org/show_bug.cgi?id=49005
https://bugs.llvm.org/show_bug.cgi?id=48435

3 years ago[test] Use host platform specific error message substitution in lit tests - continued
Abhina Sreeskantharajan [Wed, 3 Feb 2021 14:52:43 +0000 (09:52 -0500)]
[test] Use host platform specific error message substitution in lit tests - continued

On z/OS, other error messages are not matched correctly in lit tests.

```
EDC5121I Invalid argument.
EDC5111I Permission denied.
```

This patch adds a lit substitution to fix it.

Reviewed By: jhenderson

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

3 years agoAMDGPU: Move handling of allocation of fixed ABI inputs
Matt Arsenault [Sat, 9 Jan 2021 15:44:29 +0000 (10:44 -0500)]
AMDGPU: Move handling of allocation of fixed ABI inputs

For the fixed ABI, set this in the initial argument constructor,
rather than relying on the allocation logic to set the values. Also
stop passing them for amdgpu_gfx, since the DAG path seems to skip
these. I'm unclear on what amdgpu_gfx's expectations are.  This will
allow moving the special input registers out of the normal argument
range.

3 years ago[LoopVectorize] add test for fake min/max; NFC
Sanjay Patel [Wed, 3 Feb 2021 14:22:51 +0000 (09:22 -0500)]
[LoopVectorize] add test for fake min/max; NFC

This goes with the dyn_cast fix:
0fa61304d247a61

That was made after noticing that the assert was over-reaching here:
bbed5f2f8a ( D95690 )

3 years ago[X86][SSE] Support variable-index float/double vector insertion on SSE41+ targets...
Simon Pilgrim [Wed, 3 Feb 2021 13:26:36 +0000 (13:26 +0000)]
[X86][SSE] Support variable-index float/double vector insertion on SSE41+ targets (PR47924)

Extends D95779 to permit insertion into float/doubles vectors while avoiding a lot of aliased memory traffic.

The scalar value is already on the simd unit, so we only need to transfer and splat the index value, then perform the select.

SSE4 codegen is a little bulky due to the tied register requirements of (non-VEX) BLENDPS/PD but the extra moves are cheap so shouldn't be an actual problem.

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

3 years ago[OpenCL][Docs] Fix command line flag in the example.
Anastasia Stulova [Wed, 3 Feb 2021 14:04:13 +0000 (14:04 +0000)]
[OpenCL][Docs] Fix command line flag in the example.

Fixed incorrect example of clang command line with
the builtin function declarations in OpenCLSupport.

Tags: #clang

3 years ago[Sema] Fix -Warray-bounds false negative when casting an out-of-bounds array item
Ilya Mirsky [Mon, 18 Jan 2021 00:02:44 +0000 (18:02 -0600)]
[Sema] Fix -Warray-bounds false negative when casting an out-of-bounds array item

Patch by Ilya Mirsky!

Fixes: http://llvm.org/PR44343

Reviewed By: rsmith

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

3 years ago[OpenCL] Fix address space in binding of initializer lists to referencs
Anastasia Stulova [Wed, 3 Feb 2021 11:05:00 +0000 (11:05 +0000)]
[OpenCL] Fix address space in binding of initializer lists to referencs

Prevent materializing temporaries in the address space of the references
they are bind to. The temporaries should always be in the same address
space - private for OpenCL.

Tags: #clang

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

3 years agoFix MLIR Async Runtime DLL on Windows
Matthew Parkinson [Wed, 3 Feb 2021 11:28:43 +0000 (11:28 +0000)]
Fix MLIR Async Runtime DLL on Windows

The AsyncRuntime declares prototypes for extern "C" functions inside a
namespace in the header, but not inside that namespace in the
definition. This causes Visual Studio to treat them as different
entities and thus the dllexport is ignored for the definitions.

Using the same namespace fixes this issue.

Secondly, this commit moves the dllexport to be consistent with the
JITs expectation.

This is an update to https://reviews.llvm.org/D95386 that fixes the
compile issues in old versions of Visual studio.

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

3 years ago[clang][AVR][NFC] Fix a typo
Ben Shi [Wed, 3 Feb 2021 12:00:06 +0000 (20:00 +0800)]
[clang][AVR][NFC] Fix a typo

Fix a typo in commit d38973aa4d6a2c8be97b9781ca7325ca3eb0c40d

3 years ago[clangd] Report xref for base methods.
Utkarsh Saxena [Mon, 1 Feb 2021 20:17:53 +0000 (21:17 +0100)]
[clangd] Report xref for base methods.

See: https://github.com/clangd/clangd/issues/668

```
struct A { virtual void foo() = 0; };
struct B : A { void foo() override; };
```

Find refs on `B::foo()` will show:
- decls of `A::foo()` (new)
- decls of `B::foo()`
- refs to `A::foo()` (new)
- refs to `B::foo()`.

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

3 years ago[Flang][OpenMP] Add semantic checks for invalid branches into or out of OpenMP constructs
Praveen [Wed, 3 Feb 2021 10:18:30 +0000 (15:48 +0530)]
[Flang][OpenMP] Add semantic checks for invalid branches into or out of OpenMP constructs

OpenMP 4.5 - Check invalid branches into OpenMP strucutred blocks.
             Check invalid branches leaving OpenMP structured blocks.

Test cases : omp-do-cycle.f90, omp-invalid-branch.f90

Resolve related test cases marked as XFAIL

Reviewed By: kiranchandramohan

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

3 years ago[OpenCL] Add cl_khr_subgroup_non_uniform_vote to TableGen BIFs
Sven van Haastregt [Wed, 3 Feb 2021 10:23:52 +0000 (10:23 +0000)]
[OpenCL] Add cl_khr_subgroup_non_uniform_vote to TableGen BIFs

Add the builtin functions brought by the
cl_khr_subgroup_non_uniform_vote extension to
`-fdeclare-opencl-builtins`.

3 years ago[OpenCL] Add cl_khr_subgroup_ballot to TableGen BIFs
Sven van Haastregt [Tue, 2 Feb 2021 17:20:38 +0000 (17:20 +0000)]
[OpenCL] Add cl_khr_subgroup_ballot to TableGen BIFs

Add the builtin functions brought by the cl_khr_subgroup_ballot
extension to `-fdeclare-opencl-builtins`.

Also add placeholder comments for the other Extended Subgroup
Functions from the OpenCL Extension Specification.

Add a comment clarifying the scope of the test.

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

3 years ago[clang][AVR] Improve avr-ld command line options
Ben Shi [Wed, 3 Feb 2021 10:23:01 +0000 (18:23 +0800)]
[clang][AVR] Improve avr-ld command line options

Reviewed By: dylanmckay, MaskRay

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

3 years agoRevert "[AMDGPU] Add a new Clamp Pattern to the GlobalISel Path."
Sebastian Neubauer [Wed, 3 Feb 2021 10:00:30 +0000 (11:00 +0100)]
Revert "[AMDGPU] Add a new Clamp Pattern to the GlobalISel Path."

This reverts commits 62af0305b7cc..677a3529d3e6 from D93708.
They cause failures in the sanitizer builds because of uninitialized
values.

A fix is in D95878, but it might take some time until this is pushed,
so reverting the changes for now.

3 years ago[AArch64][SVE]Add cost model for broadcast shuffle
Caroline Concatto [Thu, 28 Jan 2021 08:46:44 +0000 (08:46 +0000)]
[AArch64][SVE]Add cost model for broadcast shuffle

This patch adds a cost model for  SK_Broadcast in
AArch64TTIImpl::getShuffleCost with scalable vector.
Without this patch, the scalable vector type relies on  BasicTTIImpl cost
implementation and assert.

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

3 years ago[LIBC] Add optimized memcpy routine for AArch64
Andre Vieira [Wed, 3 Feb 2021 09:28:42 +0000 (09:28 +0000)]
[LIBC] Add optimized memcpy routine for AArch64

This patch adds an optimized memcpy routine for AArch64 tuned and benchmarked
on Neoverse-N1.

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

3 years ago[VPlan][NFC] Introduce constructors for VPIteration
David Sherwood [Fri, 29 Jan 2021 11:46:41 +0000 (11:46 +0000)]
[VPlan][NFC] Introduce constructors for VPIteration

This patch adds constructors to VPIteration as a cleaner way of
initialising the struct and replaces existing constructions of
the form:

  {Part, Lane}

with

  VPIteration(Part, Lane)

I have also added a default constructor, which is used by VPlan.cpp
when deciding whether to replicate a block or not.

This refactoring will be required in a later patch that adds more
members and functions to VPIteration.

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

3 years ago[X86] Correct types in tablegen multiclasses found by D95874.
Wang, Pengfei [Wed, 3 Feb 2021 08:04:12 +0000 (16:04 +0800)]
[X86] Correct types in tablegen multiclasses found by D95874.

Reviewed By: craig.topper

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

3 years ago[clang-include-fixer] Pre-reserve vector size. NFC
Sam McCall [Wed, 3 Feb 2021 07:30:45 +0000 (08:30 +0100)]
[clang-include-fixer] Pre-reserve vector size. NFC

3 years ago[libcxx] Implement the read_symlink function for windows
Martin Storsjö [Wed, 4 Nov 2020 21:51:18 +0000 (23:51 +0200)]
[libcxx] Implement the read_symlink function for windows

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

3 years ago[libcxx] Implement the permissions function for windows
Martin Storsjö [Wed, 4 Nov 2020 21:55:10 +0000 (23:55 +0200)]
[libcxx] Implement the permissions function for windows

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

3 years ago[InstrProfiling] Use !associated metadata for counters, data and values
Petr Hosek [Sat, 13 Jul 2019 21:02:07 +0000 (14:02 -0700)]
[InstrProfiling] Use !associated metadata for counters, data and values

C identifier name input sections such as __llvm_prf_* are GC roots so
they cannot be discarded. In LLD, the SHF_LINK_ORDER flag overrides the
C identifier name semantics.

The !associated metadata may be attached to a global object declaration
with a single argument that references another global object, and it
gets lowered to SHF_LINK_ORDER flag. When a function symbol is discarded
by the linker, setting up !associated metadata allows linker to discard
counters, data and values associated with that function symbol.

Note that !associated metadata is only supported by ELF, it does not have
any effect on non-ELF targets.

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

3 years ago[AsmPrinter] Use ListSeparator (NFC)
Kazu Hirata [Wed, 3 Feb 2021 06:52:48 +0000 (22:52 -0800)]
[AsmPrinter] Use ListSeparator (NFC)

3 years ago[Transforms/Utils] Use range-based for loops (NFC)
Kazu Hirata [Wed, 3 Feb 2021 06:52:46 +0000 (22:52 -0800)]
[Transforms/Utils] Use range-based for loops (NFC)

3 years ago[CodeGen] Drop unnecessary const from return types (NFC)
Kazu Hirata [Wed, 3 Feb 2021 06:52:45 +0000 (22:52 -0800)]
[CodeGen] Drop unnecessary const from return types (NFC)

Identified with const-return-type.

3 years ago[gn build] Port fcf03e728007
LLVM GN Syncbot [Wed, 3 Feb 2021 05:46:53 +0000 (05:46 +0000)]
[gn build] Port fcf03e728007

3 years ago[RISCV] Load/store vector mask types.
Hsiangkai Wang [Tue, 15 Dec 2020 23:23:35 +0000 (07:23 +0800)]
[RISCV] Load/store vector mask types.

Use vle1.v/vse1.v to load/store vector mask types.

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

3 years ago[OpenMP] Add OpenMP offloading toolchain for AMDGPU
Pushpinder Singh [Tue, 19 Jan 2021 08:13:47 +0000 (13:43 +0530)]
[OpenMP] Add OpenMP offloading toolchain for AMDGPU

This patch adds AMDGPUOpenMPToolChain for supporting OpenMP
offloading to AMD GPU's.

Originally authored by Greg Rodgers

Reviewed By: jdoerfert

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

3 years ago[RISCV] Add new vector instructions in v0.10.
Hsiangkai Wang [Mon, 1 Feb 2021 08:08:46 +0000 (16:08 +0800)]
[RISCV] Add new vector instructions in v0.10.

* Add new vector instructions in v0.10.
 - load/store for mask value vle1.v vse1.v
 - vsetivli for 0-31 immediate vector length.
* Rename vector instructions in v0.10.
 - vfrsqrte7 -> vfrsqrt7
 - vfrece7 -> vfrec7
* Reserve memory width encodings for EEW>128b.

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

3 years ago[Docs] Update HowToSubmitABug
Arthur Eubanks [Thu, 28 Jan 2021 00:15:44 +0000 (16:15 -0800)]
[Docs] Update HowToSubmitABug

With the new PM imminent, bugpoint will diverge from opt, meaning it may
not reproduce a crash with the same arguments passed to opt. We need to
specify alternatives to bugpoint for reducing crashes.

I looked at the rest of the document to see if anything could be
improved. Major highlights:

* Run -Xclang -disable-llvm-passes instead of -O0 for skipping IR passes
* Mention the files that clang dumps on a crash
* Remove outdated reference to `delta` and plug `creduce` instead
* Mention llvm-reduce on top of bugpoint
* Mention --print-before-all --print-module-scope
* Mention sanitizers in addition to valgrind
* Mention opt-bisect for miscompiles

Reviewed By: fhahn, MaskRay

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

3 years ago[NFC] Fix typo in comment
Nathan James [Wed, 3 Feb 2021 05:18:00 +0000 (05:18 +0000)]
[NFC] Fix typo in comment

3 years ago[dfsan] Wrap memmove
Jianzhou Zhao [Tue, 2 Feb 2021 18:09:22 +0000 (18:09 +0000)]
[dfsan] Wrap memmove

Reviewed-by: morehouse
Differential Revision: https://reviews.llvm.org/D95883

3 years ago[clang-tidy] Fix crash in readability-identifier-naming check
Nathan James [Wed, 3 Feb 2021 05:11:28 +0000 (05:11 +0000)]
[clang-tidy] Fix crash in readability-identifier-naming check

`isParamInMainLikeFunction` didn't check if the function had an identifer name before calling getName() which could lead to an assert.

3 years ago[Statepoint] Handle 'undef' operand tied to def
Serguei Katkov [Tue, 2 Feb 2021 09:25:11 +0000 (16:25 +0700)]
[Statepoint] Handle 'undef' operand tied to def

FixupStatepoints pass does not take into account the undef use
it skips may have a tied def. So when defs are handled pass
considers that tied-use should be spilled and triggers an assert.

FixupStatepoints should skip undef def as well.

Reviewers: reames, dantrushin
Reviewed By: dantrushin
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D95858

3 years ago[CSSPGO] Fix MSVC initializing truncation warning (NFC)
Yang Fan [Wed, 3 Feb 2021 03:04:58 +0000 (11:04 +0800)]
[CSSPGO] Fix MSVC initializing truncation warning (NFC)

MSVC warning:
```
\llvm-project\llvm\include\llvm\Transforms\IPO\SampleProfileProbe.h(65): warning C4305: 'initializing': truncation from 'double' to 'const float'
```

3 years ago[clang-format] Fix MSVC "unsafe use of type 'bool' in operation" warning (NFC)
Yang Fan [Wed, 3 Feb 2021 02:48:39 +0000 (10:48 +0800)]
[clang-format] Fix MSVC "unsafe use of type 'bool' in operation" warning (NFC)

MSVC warning:
```
\llvm-project\clang\lib\Format\BreakableToken.cpp(1002): warning C4804: '-': unsafe use of type 'bool' in operation
```

3 years ago[yaml2obj][wasm] Support numeric relocation type
Fangrui Song [Wed, 3 Feb 2021 02:28:37 +0000 (18:28 -0800)]
[yaml2obj][wasm] Support numeric relocation type

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

3 years ago[VFS] Fix Wreturn-type gcc warning (NFC)
Yang Fan [Wed, 3 Feb 2021 02:21:45 +0000 (10:21 +0800)]
[VFS] Fix Wreturn-type gcc warning (NFC)

GCC warning:
```
In file included from /llvm-project/llvm/lib/Support/VirtualFileSystem.cpp:13:
/llvm-project/llvm/include/llvm/Support/VirtualFileSystem.h: In static member function ‘static bool llvm::vfs::RedirectingFileSystem::RemapEntry::classof(const llvm::vfs::RedirectingFileSystem::Entry*)’:
/llvm-project/llvm/include/llvm/Support/VirtualFileSystem.h:681:5: warning: control reaches end of non-void function [-Wreturn-type]
  681 |     }
      |     ^
```

3 years ago[PowerPC] [NFC] fix wording typos
Chen Zheng [Wed, 3 Feb 2021 02:01:19 +0000 (21:01 -0500)]
[PowerPC] [NFC] fix wording typos

Post commit comments address for D92071.

3 years ago[lldb/test] Stop recording fundamental return types (NFC)
Med Ismail Bennani [Wed, 3 Feb 2021 01:46:50 +0000 (02:46 +0100)]
[lldb/test] Stop recording fundamental return types (NFC)

It seems that recording fundamental return type is bogus.

This can trigger asserts when running a test with reproducers so this
patch updates the `SBTarget::IsLoaded` test to stop recording them.

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

Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
3 years agoAMDGPU: Fix adding extra operands for i128 asm constraints
Matt Arsenault [Tue, 2 Feb 2021 21:22:32 +0000 (16:22 -0500)]
AMDGPU: Fix adding extra operands for i128 asm constraints

We don't register i128 as a legal type with addRegisterClass, but it
appears in the list of legal register types. This inconsistency
resulted in the asm constraint lowering trying to use 2 128-bit
registers for these operands. This would leave behind a dead def that
would waste registers.

Regresses GlobalISel tests for i128 load/store, but these aren't very
important right now. Ideally these would not depend on the list of
register types.

3 years agoAMDGPU: Don't consider global pressure when bundling soft clauses
Matt Arsenault [Sat, 30 Jan 2021 18:15:53 +0000 (13:15 -0500)]
AMDGPU: Don't consider global pressure when bundling soft clauses

This should only consider whether the pressure impact of the bundle at
the given point in the program will decrease the occupancy. High VGPR
pressure was incorrectly blocking the formation of scalar bundles, and
vice versa. This was also blocking bundling from high pressure
situations at other points in the program.

3 years ago[GlobalISel] Check if branches use the same MBB in matchOptBrCondByInvertingCond
Jessica Paquette [Tue, 2 Feb 2021 22:21:33 +0000 (14:21 -0800)]
[GlobalISel] Check if branches use the same MBB in matchOptBrCondByInvertingCond

If the G_BR + G_BRCOND in this combine use the same MBB, then it will infinite
loop. Don't allow that to happen.

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