platform/upstream/llvm.git
4 years ago[X86][AVX] Ensure we only combine to PSHUFLW/PSHUFHW on supporting targets
Simon Pilgrim [Sat, 1 Aug 2020 13:54:21 +0000 (14:54 +0100)]
[X86][AVX] Ensure we only combine to PSHUFLW/PSHUFHW on supporting targets

Noticed while investigating combining from concatenated shuffle vectors, we weren't checking that PSHUFLW/PSHUFHW was legal - we were depending on lowering splitting to subvectors.

4 years ago[LCSSA] Use IRBuilder for PHI creation.
Florian Hahn [Sat, 1 Aug 2020 16:54:23 +0000 (17:54 +0100)]
[LCSSA] Use IRBuilder for PHI creation.

Use IRBuilder instead PHINode::Create. This should not impact the
generated code, but IRBuilder provides a way to register callbacks for
inserted instructions, which is convenient for some users.

Reviewed By: lebedev.ri

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

4 years ago[VectorCombine] add tests for non-zero gep offsets; NFC
Sanjay Patel [Sat, 1 Aug 2020 12:38:28 +0000 (08:38 -0400)]
[VectorCombine] add tests for non-zero gep offsets; NFC

4 years ago[Attributor][NFC] Update description for the dependency graph
Luofan Chen [Sat, 1 Aug 2020 13:27:16 +0000 (21:27 +0800)]
[Attributor][NFC] Update description for the dependency graph

The word "dependency graph" is a bit misleading. When there is an
edge from node A to B (A -> B), it actually mean that B depends on
A and when the state of A is updated, B should also be updated. So
I update the comment to make the description clearer.

Reviewed By: jdoerfert

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

4 years ago[ARM] Distribute post-inc for Thumb2 sign/zero extending loads/stores
David Green [Sat, 1 Aug 2020 13:01:18 +0000 (14:01 +0100)]
[ARM] Distribute post-inc for Thumb2 sign/zero extending loads/stores

This adds sign/zero extending scalar loads/stores to the MVE
instructions added in D77813, allowing us to create up more post-inc
instructions. These are comparatively simple, compared to LDR/STR (which
may be better turned into an LDRD/LDM), but still require some additions
over MVE instructions. Because there are i12 and i8 variants of the
offset loads/stores dealing with different signs, we may need to convert
an i12 address to a i8 negative instruction. t2LDRBi12 can also be
shrunk to a tLDRi under the right conditions, so we need to be careful
with codesize too.

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

4 years ago[mlir][Vector] Simplify code a bit. NFCI.
Benjamin Kramer [Sat, 1 Aug 2020 12:48:42 +0000 (14:48 +0200)]
[mlir][Vector] Simplify code a bit. NFCI.

4 years ago[InstSimplify] simplify abs if operand is known non-negative
Sanjay Patel [Sat, 1 Aug 2020 11:46:23 +0000 (07:46 -0400)]
[InstSimplify] simplify abs if operand is known non-negative

abs() should be rare enough that using value tracking is not going
to be a compile-time cost burden, so use it to reduce a variety of
potential patterns. We do this in DAGCombiner too.

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

4 years ago[InstSimplify] add abs test with assume; NFC
Sanjay Patel [Sat, 1 Aug 2020 11:44:33 +0000 (07:44 -0400)]
[InstSimplify] add abs test with assume; NFC

4 years ago[X86][AVX] Extend v2f64 BROADCAST(LOAD) -> BROADCAST_LOAD to v2i64/v4f32/v4i32
Simon Pilgrim [Sat, 1 Aug 2020 11:28:10 +0000 (12:28 +0100)]
[X86][AVX] Extend v2f64 BROADCAST(LOAD) -> BROADCAST_LOAD to v2i64/v4f32/v4i32

Minor precursor fix for D66004, but helps the SSE41 tests as well as they run with -disable-peephole

4 years ago[clang-tidy][NFC] Small refactor
Nathan James [Sat, 1 Aug 2020 10:04:29 +0000 (11:04 +0100)]
[clang-tidy][NFC] Small refactor

4 years ago[MachineVerifier] Refactor calcRegsPassed. NFC
Evgeny Leviant [Sat, 1 Aug 2020 09:58:52 +0000 (12:58 +0300)]
[MachineVerifier] Refactor calcRegsPassed. NFC

Patch improves performance of verify-machineinstrs pass up to 10x.
Differential revision: https://reviews.llvm.org/D84105

4 years ago[clang-tidy] readability-identifier-naming checks configs for included files
Nathan James [Sat, 1 Aug 2020 09:35:13 +0000 (10:35 +0100)]
[clang-tidy] readability-identifier-naming checks configs for included files

When checking for the style of a decl that isn't in the main file, the check will now search for the configuration that the included files uses to gather the style for its decls.

This can be useful to silence warnings in header files that follow a different naming convention without using header-filter to silence all warnings(even from other checks) in the header file.

Reviewed By: aaron.ballman, gribozavr2

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

4 years ago[X86] Refactor the broadcast and load folding in tryVPTESTM to reduce some code.
Craig Topper [Sat, 1 Aug 2020 06:10:47 +0000 (23:10 -0700)]
[X86] Refactor the broadcast and load folding in tryVPTESTM to reduce some code.

Now we try to load and broadcast together for operand 1. Followed
by load and broadcast for operand 1. Previously we tried load
operand 1, load operand 1, broadcast operand 0, broadcast operand 1.

Now we have a single helper that tries load and broadcast for
one operand that we can just call twice.

4 years ago[SCEV] don't query getSCEV() for incomplete phis
Chen Zheng [Sat, 1 Aug 2020 05:28:15 +0000 (01:28 -0400)]
[SCEV] don't query getSCEV() for incomplete phis

querying getSCEV() for incomplete phis leads to wrong cache value in `ExprToIVMap`,
because incomplete phis may be simplified to same value before get SCEV expression.

Reviewed By: lebedev.ri, mkazantsev

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

4 years ago[X86] Use TargetLowering::getRegClassFor to simplify some code in tryVPTESTM. NFCI
Craig Topper [Sat, 1 Aug 2020 04:38:59 +0000 (21:38 -0700)]
[X86] Use TargetLowering::getRegClassFor to simplify some code in tryVPTESTM. NFCI

4 years agoPowerPC: Don't lower SELECT_CC to PPCISD::FSEL on SPE
Justin Hibbits [Thu, 9 Apr 2020 02:29:40 +0000 (21:29 -0500)]
PowerPC: Don't lower SELECT_CC to PPCISD::FSEL on SPE

SPE doesn't have a fsel instruction, so don't try to lower to it.

This fixes a "Cannot select: tN: f64 = PPCISD::FSEL tX, tY, tZ" error.

Reviewed By: #powerpc, lkail
Differential Revision: https://reviews.llvm.org/D77773

4 years agoPowerPC: Fix SPE extloadf32 handling.
Justin Hibbits [Thu, 16 Apr 2020 14:42:39 +0000 (09:42 -0500)]
PowerPC: Fix SPE extloadf32 handling.

The patterns were incorrect copies from the FPU code, and are
unnecessary, since there's no extended load for SPE.  Just let LLVM
itself do the work by marking it expand.

Reviewed By: #powerpc, lkail
Differential Revision: https://reviews.llvm.org/D78670

4 years ago[VE] Change calling convention to follow ABI
Kazushi (Jam) Marukawa [Sat, 11 Jul 2020 07:01:13 +0000 (16:01 +0900)]
[VE] Change calling convention to follow ABI

Change to expand all arguments and return values to i64 to follow ABI.
Update regression tests also.

Reviewed By: simoll

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

4 years ago[clang-tidy][NFC] Added convienence methods for getting optional options
Nathan James [Sat, 1 Aug 2020 00:45:33 +0000 (01:45 +0100)]
[clang-tidy][NFC] Added convienence methods for getting optional options

These methods abstract away Error handling when trying to read options that can't be parsed by logging the error automatically and returning None.

Reviewed By: gribozavr2

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

4 years ago[AArch64][SVE] Allow vector of pointers as legal type for masked load/store.
Huihui Zhang [Sat, 1 Aug 2020 00:08:17 +0000 (17:08 -0700)]
[AArch64][SVE] Allow vector of pointers as legal type for masked load/store.

Refer to LangRef http://llvm.org/docs/LangRef.html#llvm-masked-load-intrinsics
'llvm.masked.load/store.*’ intrinsics are overloaded intrinsic, which allow the
load/store data to be a vector of any integer, floating-point or pointer data type.

Therefore, allow pointer data type when checking 'isLegalMaskedLoadStore()'.

Reviewed By: paulwalker-arm

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

4 years agoDon't crash if we deserialize a pack expansion type whose pattern
Richard Smith [Sat, 1 Aug 2020 00:07:36 +0000 (17:07 -0700)]
Don't crash if we deserialize a pack expansion type whose pattern
contains no packs.

Fixes a regression from 740a164dec483225cbd02ab6c82199e2747ffacb.

4 years ago[X86] Simplify vpternlog immediate selection.
Craig Topper [Sat, 1 Aug 2020 00:07:20 +0000 (17:07 -0700)]
[X86] Simplify vpternlog immediate selection.

Rather than hardcoding immediate values for 12 different combinations
in a nested pair of switches, we can perform the matched logic
operation on 3 magic constants to calculate the immediate.

Special thanks to this tweet https://twitter.com/rygorous/status/1187034321992871936
for making me realize I could do this.

4 years ago[libc] [obvious] In strrchr, remove cast to unsigned char before
cgyurgyik [Sat, 1 Aug 2020 00:14:34 +0000 (20:14 -0400)]
[libc] [obvious] In strrchr, remove cast to unsigned char before
comparison.

4 years ago[libc] [obvious] Fix strchr and strrchr tests so that constness is
cgyurgyik [Fri, 31 Jul 2020 23:59:29 +0000 (19:59 -0400)]
[libc] [obvious] Fix strchr and strrchr tests so that constness is
actually verified.

4 years ago[compiler-rt][Darwin] Fix linker errors for check-asan
Julian Lettner [Fri, 31 Jul 2020 23:09:13 +0000 (16:09 -0700)]
[compiler-rt][Darwin] Fix linker errors for check-asan

A recent change broke `ninja check-asan` on Darwin by causing an error
during linking of ASan unit tests [1].

Move the addition of `-ObjC` compiler flag outside of the new
`if(COMPILER_RT_STANDALONE_BUILD)` block.  It doesn't add any global
flags (e.g, `${CMAKE_CXX_FLAGS}`) and the decision to add is based
solely on source paths (`${source_rpath}`).

[1] 8b2fcc42b895, https://reviews.llvm.org/D84466

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

4 years agoSupport experimental v extension v0.9.
Hsiangkai Wang [Thu, 4 Jun 2020 19:34:01 +0000 (03:34 +0800)]
Support experimental v extension v0.9.

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

4 years agoUpgrade MC to v0.9.
Hsiangkai Wang [Thu, 21 May 2020 09:30:20 +0000 (17:30 +0800)]
Upgrade MC to v0.9.

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

4 years ago[ValueTracking] Improve llvm.abs handling in computeKnownBits.
Craig Topper [Fri, 31 Jul 2020 22:46:12 +0000 (15:46 -0700)]
[ValueTracking] Improve llvm.abs handling in computeKnownBits.

Add the optimizations we have in the SelectionDAG version.
Known non-negative copies all known bits. Any known one other than
the sign bit makes result non-negative.

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

4 years ago[OpenMP] Fixed the issue that target memory deallocation might be called when they...
Shilei Tian [Fri, 31 Jul 2020 22:54:09 +0000 (18:54 -0400)]
[OpenMP] Fixed the issue that target memory deallocation might be called when they're being used

This patch fixed the issue that target memory might be deallocated when
they're still being used or before they're used.

Reviewed By: ye-luo

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

4 years ago[InstSimplify] add tests for abs intrinsic; NFC
Sanjay Patel [Fri, 31 Jul 2020 20:35:41 +0000 (16:35 -0400)]
[InstSimplify] add tests for abs intrinsic; NFC

4 years agoUpdated the -I option description.
Andrei Lebedev [Fri, 31 Jul 2020 22:39:12 +0000 (15:39 -0700)]
Updated the -I option description.

4 years agoConvert to early exit (NFC)
Adrian Prantl [Fri, 31 Jul 2020 20:30:59 +0000 (13:30 -0700)]
Convert to early exit (NFC)

4 years ago[mlir] Add shape.with_shape op
Jacques Pienaar [Fri, 31 Jul 2020 21:46:48 +0000 (14:46 -0700)]
[mlir] Add shape.with_shape op

This is an operation that can returns a new ValueShape with a different shape. Useful for composing shape function calls and reusing existing shape transfer functions.

Just adding the op in this change.

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

4 years ago[mlir][PassIncGen] Refactor how pass registration is generated
River Riddle [Fri, 31 Jul 2020 20:18:13 +0000 (13:18 -0700)]
[mlir][PassIncGen] Refactor how pass registration is generated

The current output is a bit clunky and requires including files+macros everywhere, or manually wrapping the file inclusion in a registration function. This revision refactors the pass backend to automatically generate `registerFooPass`/`registerFooPasses` functions that wrap the pass registration. `gen-pass-decls` now takes a `-name` input that specifies a tag name for the group of passes that are being generated. For each pass, the generator now produces a `registerFooPass` where `Foo` is the name of the definition specified in tablegen. It also generates a `registerGroupPasses`, where `Group` is the tag provided via the `-name` input parameter, that registers all of the passes present.

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

4 years ago[MLIR][NFC] Add FuncOp::getArgumentTypes()
Rahul Joshi [Fri, 31 Jul 2020 18:39:49 +0000 (11:39 -0700)]
[MLIR][NFC] Add FuncOp::getArgumentTypes()

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

4 years ago[lldb] report an error if a CLI option lacks an argument
Luboš Luňák [Thu, 30 Jul 2020 16:08:13 +0000 (18:08 +0200)]
[lldb] report an error if a CLI option lacks an argument

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

4 years ago[lldb] force full gui redraw on Ctrl+L
Luboš Luňák [Thu, 30 Jul 2020 19:25:38 +0000 (21:25 +0200)]
[lldb] force full gui redraw on Ctrl+L

As is common with curses apps, this allows to redraw everything
in case something corrupts the screen. Apparently key modifiers
are difficult with curses (curses FAQ it "doesn't do that"),
thankfully Ctrl+key are simply control characters, so it's
(ascii & 037) => 12.

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

4 years ago[clang] Use the location of the void parameters when complaining that only a single...
Jaydeep Chauhan [Fri, 31 Jul 2020 19:22:22 +0000 (20:22 +0100)]
[clang] Use the location of the void parameters when complaining that only a single void parameter should be present.

Fixes PR46417.

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

Reviewed By: aaron.ballman

4 years agoFix a test typo which caused a breakage.
Sriraman Tallam [Fri, 31 Jul 2020 19:26:53 +0000 (12:26 -0700)]
Fix a test typo which caused a breakage.

4 years agoNew test for basic block sections options.
Sriraman Tallam [Fri, 31 Jul 2020 19:00:59 +0000 (12:00 -0700)]
New test for basic block sections options.

This tests lld basic block sections options:
+ --lto-basic-block-sections=
+ --lto-unique-basic-block-section-names

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

4 years ago[libc] [obvious] Add rest of strrchr test.
Chris Gyurgyik [Fri, 31 Jul 2020 18:57:46 +0000 (14:57 -0400)]
[libc] [obvious] Add rest of strrchr test.

4 years agoRename basic block sections options to be consistent.
Sriraman Tallam [Fri, 31 Jul 2020 18:14:49 +0000 (11:14 -0700)]
Rename basic block sections options to be consistent.

D68049 created options for basic block sections: -fbasic-block-sections=,
-funique-basic-block-section-names. Rename options in llc and lld (--lto-)
to be consistent. Specifically,

+ Rename basicblock-sections to basic-block-sections
+ Rename unique-bb-section-names to unique-basic-block-section-names

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

4 years ago[compiler-rt][Darwin] Fix GetOSMajorKernelOffset() on watchOS
Julian Lettner [Fri, 31 Jul 2020 18:38:10 +0000 (11:38 -0700)]
[compiler-rt][Darwin] Fix GetOSMajorKernelOffset() on watchOS

`TARGET_OS_IOS` and `TARGET_OS_WATCH` are not mutually exclusive.
`SANITIZER_IOS` is defined for all embedded platforms.  So the branch
for watchOS is never taken.  We could fix this by switching the order
of the branches (but the reason for doing so is non-obvious).  Instead,
lets use the Darwin-specific `TARGET_OS_*` macros which are mutually
exclusive.

4 years ago[libc] Adds strrchr implementation.
cgyurgyik [Fri, 31 Jul 2020 18:36:23 +0000 (14:36 -0400)]
[libc] Adds strrchr implementation.

Reviewed By: sivachandra

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

4 years ago[gn build] Port b7cfa6ca928
LLVM GN Syncbot [Fri, 31 Jul 2020 18:32:54 +0000 (18:32 +0000)]
[gn build] Port b7cfa6ca928

4 years ago[Loop Peeling] Separate the Loop Peeling Utilities from the Loop Unrolling Utilities
Sidharth Baveja [Fri, 31 Jul 2020 18:31:58 +0000 (18:31 +0000)]
[Loop Peeling] Separate the Loop Peeling Utilities from the Loop Unrolling Utilities

Summary: This patch separates the Loop Peeling Utilities from Loop Unrolling.
The reason for this change is that Loop Peeling is no longer only being used by
loop unrolling; Patch D82927 introduces loop peeling with fusion, such that
loops can be modified to have to same trip count, making them legal to be
peeled.

Reviewed By: Meinersbur

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

4 years ago[flang][OpenMP] Added initial support for lowering OpenMP parallel construct
Sourabh Singh Tomar [Thu, 30 Jul 2020 18:17:51 +0000 (23:47 +0530)]
[flang][OpenMP] Added initial support for lowering OpenMP  parallel construct

This patch lower `!OMP PARALLEL` construct from PFT to OpenMPDialect operations.
This is first patch in this direction(lowering parallel construct).

OpenMP parallel construct can have multiple clauses and parameters. This patch
only implements lowering of an empty(contains no code in body) parallel construct
without any clauses or parameters.

Patch is carved out of following approved PR:
https://github.com/flang-compiler/f18-llvm-project/pull/322

Reviewed By: kiranchandramohan, DavidTruby

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

4 years ago[flang][NFC] Verify C781 from - Clause 7 constraint checks for f18.
sameeran joshi [Fri, 24 Jul 2020 06:55:32 +0000 (12:25 +0530)]
[flang][NFC] Verify C781 from - Clause 7 constraint checks for f18.

Reviewed By: PeteSteinfeld

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

4 years ago[libc++] Avoid including <Block.h> from <functional>
Louis Dionne [Fri, 31 Jul 2020 16:56:36 +0000 (12:56 -0400)]
[libc++] Avoid including <Block.h> from <functional>

Block.h is a pretty common name, which can lead to nasty collisions with
user provided headers. Since we're only getting a few simple declarations
from the header, it's better to declare them manually than to include the
header.

rdar://66384326

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

4 years ago[Support] Fix computeHostNumPhysicalCores() to respect affinity
Fangrui Song [Fri, 31 Jul 2020 18:20:15 +0000 (11:20 -0700)]
[Support] Fix computeHostNumPhysicalCores() to respect affinity

computeHostNumPhysicalCores() is designed to respect CPU affinity.
D84764 used sysconf(_SC_NPROCESSORS_ONLN) which does not respect
affinity.
SupportTests Threading.PhysicalConcurrency may fail if taskset -c is specified.

4 years ago[flang]Verify C7107, C7108, C7109 from - Clause 7 constraint checks for f18.
sameeran joshi [Fri, 24 Jul 2020 08:19:29 +0000 (13:49 +0530)]
[flang]Verify C7107, C7108, C7109 from - Clause 7 constraint checks for f18.

   1.  Annotate the sources with constraint numbers.
   2.  Add tests for

    *C7107 (R765) digit shall have one of the values 0 or 1.
    *C7108 (R766) digit shall have one of the values 0 through 7.
    *C7109 (R764) A boz-literal-constant shall appear only as a data-stmt-constant in a DATA statement, or where explicitly allowed in 16.9 as an actual argument of an intrinsic procedure.

Reviewed By: PeteSteinfeld

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

4 years agoRevert "[flang] Fix multi-config generator builds."
Tim Keith [Fri, 31 Jul 2020 18:10:44 +0000 (11:10 -0700)]
Revert "[flang] Fix multi-config generator builds."

This reverts commit 332170356e35ea9cdc2c1d612b61a50ec5ea322e.

The change breaks out-of-tree builds.
Discussion in https://reviews.llvm.org/D84022

4 years ago[ConstantFolding] fold abs intrinsic
Sanjay Patel [Fri, 31 Jul 2020 15:50:39 +0000 (11:50 -0400)]
[ConstantFolding] fold abs intrinsic

The handling for minimum value is similar to cttz/ctlz with 0 just above this case.

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

4 years agoRuntimeDyldELF: report_fatal_error instead of asserting for unimplemented relocations...
Hans Wennborg [Thu, 23 Jul 2020 09:17:16 +0000 (11:17 +0200)]
RuntimeDyldELF: report_fatal_error instead of asserting for unimplemented relocations (PR46816)

This fixes the ExecutionEngine/MCJIT/stubs-sm-pic.ll test in no-asserts
builds which is set to XFAIL on some platforms like 32-bit x86. More
importantly, we probably don't want to silently error in these cases.

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

4 years ago[libc] Add islower and isupper implementation.
cgyurgyik [Fri, 31 Jul 2020 18:04:36 +0000 (14:04 -0400)]
[libc] Add islower and isupper implementation.

Reviewed By: sivachandra

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

4 years ago[libunwind] Add -Wno-suggest-override to CMakeLists.txt.
kristina [Fri, 31 Jul 2020 17:44:02 +0000 (18:44 +0100)]
[libunwind] Add -Wno-suggest-override to CMakeLists.txt.

Set -Wno-suggest-override where such warning is provided
by the compiler when building libunwind, alongside libcxx
and libcxxabi, using recent Clang. This extends behavior
introduced in 77e0e9e17daf0865620abcd41f692ab0642367c4
to libunwind, avoiding a large amount of warnings during
builds. See D84126 for the original patch.

4 years ago[OpenMP][docs] Update loop tiling status.
Michael Kruse [Fri, 31 Jul 2020 18:00:06 +0000 (13:00 -0500)]
[OpenMP][docs] Update loop tiling status.

4 years ago[ValueTracking] Add ComputeNumSignBits support for llvm.abs intrinsic
Craig Topper [Fri, 31 Jul 2020 17:43:00 +0000 (10:43 -0700)]
[ValueTracking] Add ComputeNumSignBits support for llvm.abs intrinsic

If absolute value needs turn a negative number into a positive number it reduces the number of sign bits by at most 1.

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

4 years ago[Flang] Checks for constraint C7110-C7115.
sameeran joshi [Thu, 30 Jul 2020 19:32:04 +0000 (01:02 +0530)]
[Flang] Checks for constraint C7110-C7115.

Added more tests.
 Annotate sources and tests.
 Improve error message.

Reviewed By: PeteSteinfeld

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

4 years ago[lldb/Test] Reduce code duplication by importing subprocess globally
Jonas Devlieghere [Fri, 31 Jul 2020 17:52:49 +0000 (10:52 -0700)]
[lldb/Test] Reduce code duplication by importing subprocess globally

Import the subprocess module once instead of doing it inline which is
error prone and leads to needless code duplication.

4 years ago[ThinLTO] Compile time improvement to propagateAttributes
Teresa Johnson [Thu, 30 Jul 2020 20:49:49 +0000 (13:49 -0700)]
[ThinLTO] Compile time improvement to propagateAttributes

I found that propagateAttributes was ~23% of a thin link's run time
(almost 4x higher than the second hottest function). The main reason is
that it re-examines a global var each time it is referenced. This
becomes unnecessary once it is marked both non read only and non write
only. I added a set to avoid doing redundant work, which dropped the
runtime of that thin link by almost 15%.

I made a smaller efficiency improvement (no measurable impact) to skip
all summaries for a VI if the first copy is dead. I added an assert to
ensure that all copies are dead if any is. The code in
computeDeadSymbols marks all summaries for a VI as live. There is one
corner case where it was skipping marking an alias as live, that I
fixed. However, since the code earlier marked all copies of a preserved
GUID's VI as live, and each 'visit' marks all copies live, the only case
where this could make a difference is summaries that were marked live
when they were built initially, and that is only a few special compiler
generated symbols and inline assembly symbols, so it likely is never
provoked in practice.

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

4 years ago[Support][CommandLine] Delete unused llvm::cl::ParseEnvrironmentOptions
Fangrui Song [Fri, 31 Jul 2020 17:46:27 +0000 (10:46 -0700)]
[Support][CommandLine] Delete unused llvm::cl::ParseEnvrironmentOptions

The function was added in 2003. It is not used and can be emulated with ParseCommandLineOptions.

4 years ago[PowerPC] Add Vector String Isolate instruction definitions and MC Tests
Albion Fung [Fri, 31 Jul 2020 16:57:59 +0000 (11:57 -0500)]
[PowerPC] Add Vector String Isolate instruction definitions and MC Tests

This patch implements the instruction definition and MC tests for the vector
string isolate instructions.

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

4 years ago[SCEVExpander] Name temporary instructions for LCSSA insertion (NFC).
Florian Hahn [Fri, 31 Jul 2020 17:16:01 +0000 (18:16 +0100)]
[SCEVExpander] Name temporary instructions for LCSSA insertion (NFC).

4 years ago[GISel] Add combiners for G_INTTOPTR and G_PTRTOINT
Aditya Nandakumar [Fri, 31 Jul 2020 16:41:06 +0000 (09:41 -0700)]
[GISel] Add combiners for G_INTTOPTR and G_PTRTOINT

https://reviews.llvm.org/D84909

Patch adds two new GICombinerRules, one for G_INTTOPTR and one for
G_PTRTOINT. The G_INTTOPTR elides ptr2int(int2ptr(x)) to a copy of x, if
the cast is within the same address space. The G_PTRTOINT elides
int2ptr(ptr2int(x)) to a copy of x. Patch additionally adds new combiner
tests for the AArch64 target to test these new combiner rules.

Patch by mkitzan

4 years agoDisable getauxval for Go
Keith Randall [Fri, 31 Jul 2020 17:04:04 +0000 (10:04 -0700)]
Disable getauxval for Go

We want the Go build to not use getauxval, as we must support glibc < 2.16 platforms.

Reviewed By: dvyukov

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

4 years ago[X86][SSE] Cleanup bitwise reduction check prefixes. NFC
Simon Pilgrim [Fri, 31 Jul 2020 11:51:46 +0000 (12:51 +0100)]
[X86][SSE] Cleanup bitwise reduction check prefixes. NFC

Add AVX512BW/AVX512BWVL prefixes for a future patch

4 years ago[PGO][test] Add test to check memops changes function hash
Hiroshi Yamauchi [Thu, 30 Jul 2020 18:22:25 +0000 (11:22 -0700)]
[PGO][test] Add test to check memops changes function hash

Following up D84782.

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

4 years ago[AutoFDO] Avoid merging inlinee samples multiple times
Hongtao Yu [Fri, 31 Jul 2020 01:22:50 +0000 (18:22 -0700)]
[AutoFDO] Avoid merging inlinee samples multiple times

A function call can be replicated by optimizations like loop unroll and jump threading and the replicates end up sharing the sample nested callee profile. Therefore when it comes to merging samples for uninlined callees in the sample profile inliner, a callee profile can be merged multiple times which will cause an assert to fire.

This change avoids merging same callee profile for duplicate callsites by filtering out callee profiles with a non-zero head sample count.

Reviewed By: wenlei, wmi

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

4 years ago[gn build] Port df69492cdfa
LLVM GN Syncbot [Fri, 31 Jul 2020 16:23:24 +0000 (16:23 +0000)]
[gn build] Port df69492cdfa

4 years ago[llvm-libtool-darwin] Refactor Slice and writeUniversalBinary
Sameer Arora [Thu, 23 Jul 2020 23:26:42 +0000 (16:26 -0700)]
[llvm-libtool-darwin] Refactor Slice and writeUniversalBinary

Refactoring `Slice` class and function `createUniversalBinary` from
`llvm-lipo` into  MachOUniversalWriter. This refactoring is necessary so
as to use the refactored code for creating universal binaries under
llvm-libtool-darwin.

Reviewed by alexshap, smeenai

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

4 years ago[PowerPC] Implement low-order Vector Modulus Builtins, and add Vector Multiply/Divide...
Amy Kwan [Tue, 28 Jul 2020 04:45:54 +0000 (23:45 -0500)]
[PowerPC] Implement low-order Vector Modulus Builtins, and add Vector Multiply/Divide/Modulus Builtins Tests

Power10 introduces new instructions for vector multiply, divide and modulus.
These instructions can be exploited by the builtin functions: vec_mul, vec_div,
and vec_mod, respectively.

This patch aims adds the function prototype, vec_mod, as vec_mul and vec_div
been previously implemented in altivec.h.

This patch also adds the following front end tests:
vec_mul for v2i64
vec_div for v4i32 and v2i64
vec_mod for v4i32 and v2i64

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

4 years ago[DWARFYAML][debug_aranges] Use yaml::Hex64 rather than uint64_t as length. NFC.
Xing GUO [Fri, 31 Jul 2020 15:20:44 +0000 (23:20 +0800)]
[DWARFYAML][debug_aranges] Use yaml::Hex64 rather than uint64_t as length. NFC.

It's better to use yaml::Hex64 as length in the tuples of the address
range table.

4 years agoHide some internal symbols. NFC.
Benjamin Kramer [Fri, 31 Jul 2020 15:27:44 +0000 (17:27 +0200)]
Hide some internal symbols. NFC.

4 years agoAdd flang to export.sh to it gets source tarballs in releases
Hans Wennborg [Fri, 31 Jul 2020 15:22:49 +0000 (17:22 +0200)]
Add flang to export.sh to it gets source tarballs in releases

4 years ago[libc++] Fix eager generator expression in DefineLinkerScript
Louis Dionne [Fri, 31 Jul 2020 15:18:01 +0000 (11:18 -0400)]
[libc++] Fix eager generator expression in DefineLinkerScript

As explained in https://gitlab.kitware.com/cmake/cmake/-/issues/21045,
both branches of an $<IF> generator expression are evaluated eagerly
by CMake. As a result, if the non-selected branch contains an invalid
generator expression (such as getting the OUTPUT_NAME property of a
non-existent target), a hard error will occur.

This failed builds using the cxxrt ABI library, which doesn't create
a CMake target currently.

4 years ago[mlir][spirv] Relax restriction on pointer type for CooperativeMatrix load/store
Thomas Raoux [Fri, 31 Jul 2020 15:02:21 +0000 (08:02 -0700)]
[mlir][spirv] Relax restriction on pointer type for CooperativeMatrix load/store

This change allow CooperativeMatrix Load/Store operations to use pointer type
that may not match the matrix element type. This allow us to declare buffer
with a larger type size than the matrix element type. This follows SPIR-V spec
and this is needed to be able to use cooperative matrix in combination with
shared local memory efficiently.

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

4 years ago[flang] Add -h as a synonym for help
Richard Barton [Sat, 18 Jul 2020 13:22:18 +0000 (14:22 +0100)]
[flang] Add -h as a synonym for help

As expected by user in http://lists.llvm.org/pipermail/flang-dev/2020-June/000404.html

Depends on D84856

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

4 years ago[flang] Add details to --help screen on default behaviour
Richard Barton [Thu, 25 Jun 2020 15:01:56 +0000 (16:01 +0100)]
[flang] Add details to --help screen on default behaviour

Add a usage string and a defaults section that clarifies:
 * If no input files are given, f18 reads from stdin
 * If no input files are given, f18 dumps the parse tree.
 * The default behaviour is to exec F18_FC.
 * The fefault F18_FC setting is 'gfortran'

Adds a simple regression test which tests the top and tail of the help
screen and the exit status.

Depends on D84855

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

4 years ago[flang] Make interactive behaviour more obvious
Richard Barton [Fri, 17 Jul 2020 08:15:21 +0000 (09:15 +0100)]
[flang] Make interactive behaviour more obvious

When flang is invoked with no files it waits for input on stdin. Make it
print a message saying this to prevent the user being surprised.

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

4 years agoSupport addrspacecast initializers with isNoopAddrSpaceCast
Matt Arsenault [Fri, 27 May 2016 22:50:12 +0000 (15:50 -0700)]
Support addrspacecast initializers with isNoopAddrSpaceCast

Moves isNoopAddrSpaceCast to the TargetMachine. It logically belongs
with the DataLayout.

4 years ago[MLIR][Shape] Allow unsafe `shape.broadcast`
Frederik Gossen [Fri, 31 Jul 2020 14:17:31 +0000 (14:17 +0000)]
[MLIR][Shape] Allow unsafe `shape.broadcast`

In a context in which `shape.broadcast` is known not to produce an error value,
we want it to operate solely on extent tensors. The operation's behavior is
then undefined in the error case as the result type cannot hold this value.

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

4 years ago[gn build] (manually) merge 63d3aeb529
Nico Weber [Fri, 31 Jul 2020 13:54:39 +0000 (09:54 -0400)]
[gn build] (manually) merge 63d3aeb529

4 years ago[MLIR,OpenMP][NFCI] Removed loop for accessing regions of ParallelOp
Sourabh Singh Tomar [Fri, 31 Jul 2020 13:22:12 +0000 (18:52 +0530)]
[MLIR,OpenMP][NFCI] Removed loop for accessing regions of ParallelOp

`ParallelOp` has only one region associated with it.

Reviewed By: kiranchandramohan, ftynse

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

4 years agoDR2303: Prefer 'nearer' base classes during template deduction.
Erich Keane [Fri, 17 Jul 2020 16:48:01 +0000 (09:48 -0700)]
DR2303: Prefer 'nearer' base classes during template deduction.

DR2303 fixes the case where the derived-base match for template
deduction is ambiguous if a base-of-base ALSO matches. The canonical
example (as shown in the test) is just like the MSVC implementation of
std::tuple.

This fixes a fairly sizable issue, where if a user inherits from
std::tuple on Windows (with the MS STL), they cannot use that type to
call a function that takes std::tuple.

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

4 years ago[clangd] Be more explicit on testing the optional DefLoc in LocatedSymbol.
Haojian Wu [Fri, 31 Jul 2020 12:32:18 +0000 (14:32 +0200)]
[clangd] Be more explicit on testing the optional DefLoc in LocatedSymbol.

And also fix a bug where we may return a meaningless location.

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

4 years ago[clang-tidy] Fix build problem after commit 45a720a864320bbbeb596a
Bjorn Pettersson [Fri, 31 Jul 2020 12:28:49 +0000 (14:28 +0200)]
[clang-tidy] Fix build problem after commit 45a720a864320bbbeb596a

When building with LLVM8.0 on RHEL7.8 I got failures like this
after commit 45a720a864320bbbe:

/app/llvm/8.0/bin/../lib/gcc/x86_64-unknown-linux-gnu/
5.4.0/../../../../include/c++/5.4.0/ext/new_allocator.h:120:23:
error: no matching constructor for initialization of
'std::pair<std::__cxx11::basic_string<char>,
std::__cxx11::basic_string<char> >'
{ ::new((void *)__p) _Up(std::forward<_Args>(__args)...); }

...

../../clang-tools-extra/clang-tidy/ClangTidyOptions.cpp:73:15:
note: in instantiation of function template specialization
'std::vector<std::pair<std::__cxx11::basic_string<char>,
std::__cxx11::basic_string<char> >,
std::allocator<std::pair<std::__cxx11::basic_string<char>,
std::__cxx11::basic_string<char> > > >::emplace_back<llvm::StringRef,
const std::__cxx11::basic_string<char> &>' requested here
Options.emplace_back(KeyValue.getKey(), KeyValue.getValue().Value);

This is an attempt to avoid such build problems.

4 years ago[DWARFYAML] Make the debug_aranges entry optional.
Xing GUO [Fri, 31 Jul 2020 04:56:10 +0000 (12:56 +0800)]
[DWARFYAML] Make the debug_aranges entry optional.

This patch makes the 'debug_aranges' entry optional. If the entry is
empty, yaml2obj will only emit the header for it.

Reviewed By: jhenderson

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

4 years ago[DWARFYAML] Add helper function getDWARFEmitterByName(). NFC.
Xing GUO [Fri, 31 Jul 2020 12:06:30 +0000 (20:06 +0800)]
[DWARFYAML] Add helper function getDWARFEmitterByName(). NFC.

In this patch, we add a helper function getDWARFEmitterByName(). This
function returns the proper DWARF section emitting method by the name.

Reviewed By: jhenderson

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

4 years ago[DWARFYAML] Add emitDebug[GNU]Pub[names/types] functions. NFC.
Xing GUO [Fri, 31 Jul 2020 12:02:20 +0000 (20:02 +0800)]
[DWARFYAML] Add emitDebug[GNU]Pub[names/types] functions. NFC.

In this patch, emitDebugPubnames(), emitDebugPubtypes(),
emitDebugGNUPubnames(), emitDebugGNUPubtypes() are added.

Reviewed By: jhenderson

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

4 years ago[clangd] Fix remote index build on macOS
Kirill Bobyrev [Fri, 31 Jul 2020 12:02:19 +0000 (14:02 +0200)]
[clangd] Fix remote index build on macOS

macOS builds suddenly started failing:

https://github.com/kirillbobyrev/indexing-tools/runs/925090879

This patch makes use of imported libraries and fixes builds for macOS.

Landing this without a review since the patch is quite straightforward
and I've been testing it on my local macOS machine for a while.

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

4 years ago[Sanitizers] Fix lint failure with Python 3.6
Nemanja Ivanovic [Fri, 31 Jul 2020 11:19:47 +0000 (06:19 -0500)]
[Sanitizers] Fix lint failure with Python 3.6

There are some files in compiler-rt that use UTF-8 characters in some of the
comments. This causes lint failures with some versions of Python. This patch
just makes the encoding explicit in the call to open.

4 years ago[mlir][Linalg] Conv {1,2,3}D ops defined with TC syntax
Jakub Lichman [Fri, 31 Jul 2020 11:18:11 +0000 (13:18 +0200)]
[mlir][Linalg] Conv {1,2,3}D ops defined with TC syntax

Replaced definition of named ND ConvOps with tensor comprehension
syntax which reduces boilerplate code significantly. Furthermore,
new ops to support TF convolutions added (without strides and dilations).

Reviewed By: nicolasvasilache

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

4 years ago[OpenMP] Use weak attribute in interface only for static library
Joachim Protze [Thu, 30 Jul 2020 07:28:17 +0000 (09:28 +0200)]
[OpenMP] Use weak attribute in interface only for static library

This is to address the issue reported at:
https://bugs.llvm.org/show_bug.cgi?id=46863

Since weak is meaningless for a shared library interface function, this patch
disables the attribute, when the OpenMP library is built as shared library.

ompt_start_tool is not an interface function, but a internally called function
possibly implemented by an OMPT tool.
This function needs to be weak if possible to allow overwriting ompt_start_tool
with a function implementation built into the application.

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

4 years ago[clang][Syntax] syntax::Arena doesnt own TokenBuffer
Kadir Cetinkaya [Thu, 30 Jul 2020 19:38:40 +0000 (21:38 +0200)]
[clang][Syntax] syntax::Arena doesnt own TokenBuffer

Currently an Arena can only be built while consuming a TokenBuffer,
some users (like clangd) might want to share a TokenBuffer with multiple
compenents. This patch changes Arena's TokenBuffer member to be a reference so
that it can be created with read-only token buffers.

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

4 years ago[clangd] Propagate remote index errors via Expected
Kirill Bobyrev [Fri, 31 Jul 2020 09:48:27 +0000 (11:48 +0200)]
[clangd] Propagate remote index errors via Expected

This is a refactoring: errors should be logged only on the highest level.
Switch from Optional to Expected in the serialization code.

Reviewed By: kadircet

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

4 years ago[NFC] Remove unused GetUnderlyingObject paramenter
Vitaly Buka [Fri, 31 Jul 2020 09:09:54 +0000 (02:09 -0700)]
[NFC] Remove unused GetUnderlyingObject paramenter

 Depends on D84617.

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

4 years ago[mlir] Add TFFramework dialect to DialectSymbolRegistry.
Alexander Belyaev [Fri, 31 Jul 2020 09:00:15 +0000 (11:00 +0200)]
[mlir] Add TFFramework dialect to DialectSymbolRegistry.

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

4 years ago[analyzer] Fix out-of-tree only clang build by not relaying on private header
Balazs Benics [Fri, 31 Jul 2020 08:28:14 +0000 (10:28 +0200)]
[analyzer] Fix out-of-tree only clang build by not relaying on private header

It turned out that the D78704 included a private LLVM header, which is excluded
from the LLVM install target.
I'm substituting that `#include` with the public one by moving the necessary
`#define` into that. There was a discussion about this at D78704 and on the
cfe-dev mailing list.

I'm also placing a note to remind others of this pitfall.

Reviewed By: mgorny

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

4 years ago[flang] Fix CMPLX folding with complex arguments
Jean Perier [Fri, 31 Jul 2020 08:25:34 +0000 (10:25 +0200)]
[flang] Fix CMPLX folding with complex arguments

CMPLX folding was expecting only one arguments in case X argument
is complex. This is wrong since there is also the optional KIND
argument.

Reviewed By: schweitz

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