platform/upstream/llvm.git
4 years agoAMDGPU: Use V_MAC_F32 for fmad.ftz
Matt Arsenault [Mon, 9 Mar 2020 20:53:00 +0000 (16:53 -0400)]
AMDGPU: Use V_MAC_F32 for fmad.ftz

This avoids regressions in a future patch. I'm confused by the use of
the gfx9 usage legacy_mad. Was this a pointless instruction rename, or
uses fmul_legacy handling? Why is regular mac avilable in that case?

4 years ago[CodeGenObjC] Place property names in __objc_methname
Erik Pilkington [Tue, 10 Mar 2020 18:42:47 +0000 (11:42 -0700)]
[CodeGenObjC] Place property names in __objc_methname

This allows the property name to deduplicate with the accessor method name.
rdar://58927964

4 years ago[Concepts] Fix incorrect DeclContext for transformed RequiresExprBodyDecl
Saar Raz [Tue, 10 Mar 2020 21:17:00 +0000 (23:17 +0200)]
[Concepts] Fix incorrect DeclContext for transformed RequiresExprBodyDecl

We would assign the incorrect DeclContext when transforming the RequiresExprBodyDecl, causing incorrect
handling of 'this' inside RequiresExprBodyDecls (bug #45162).

Assign the current context as the DeclContext of the transformed decl.

4 years ago[CodeGen] Emit destructor calls to destruct compound literals
Akira Hatanaka [Tue, 10 Mar 2020 21:06:25 +0000 (14:06 -0700)]
[CodeGen] Emit destructor calls to destruct compound literals

Fix a bug in IRGen where it wasn't destructing compound literals in C
that are ObjC pointer arrays or non-trivial structs. Also diagnose jumps
that enter or exit the lifetime of the compound literals.

rdar://problem/51867864

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

4 years ago[clang-tidy] Fix warning from my previous patch in ReleaseNotes.txt
Paula Toth [Tue, 10 Mar 2020 21:01:23 +0000 (14:01 -0700)]
[clang-tidy] Fix warning from my previous patch in ReleaseNotes.txt

4 years agoWarn of uninitialized variables on asm goto's indirect branch
Bill Wendling [Tue, 10 Mar 2020 20:47:30 +0000 (13:47 -0700)]
Warn of uninitialized variables on asm goto's indirect branch

Summary:
Outputs from an asm goto block cannot be used on the indirect branch.
It's not supported and may result in invalid code generation.

Reviewers: jyknight, nickdesaulniers, hfinkel

Reviewed By: nickdesaulniers

Subscribers: martong, cfe-commits, rnk, craig.topper, hiraditya, rsmith

Tags: #clang

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

4 years ago[clangd] Have visibleNamespaces() and getEligiblePoints() take a LangOptions rather...
Nathan Ridge [Fri, 6 Mar 2020 00:03:26 +0000 (19:03 -0500)]
[clangd] Have visibleNamespaces() and getEligiblePoints() take a LangOptions rather than a FormatStyle

Summary:
These functions only use the FormatStyle to obtain a LangOptions via
format::getFormattingLangOpts(), and some callers can more easily obtain
a LangOptions more directly.

Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, kadircet, usaxena95, cfe-commits

Tags: #clang

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

4 years ago[clangd] Run clang-format on CodeComplete.cpp and SourceCodeTests.cpp
Nathan Ridge [Tue, 10 Mar 2020 20:10:04 +0000 (16:10 -0400)]
[clangd] Run clang-format on CodeComplete.cpp and SourceCodeTests.cpp

Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, kadircet, usaxena95, cfe-commits

Tags: #clang

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

4 years ago[gn build] Port ebdb98f254f
LLVM GN Syncbot [Tue, 10 Mar 2020 20:34:28 +0000 (20:34 +0000)]
[gn build] Port ebdb98f254f

4 years ago[clang-tidy] Move fuchsia-restrict-system-includes to portability module for general...
Paula Toth [Tue, 10 Mar 2020 17:28:23 +0000 (10:28 -0700)]
[clang-tidy] Move fuchsia-restrict-system-includes to portability module for general use.

Summary:
Created a general check for restrict-system-includes under portability as recommend in the comments under D75332. I also fleshed out the user facing documentation to show examples for common use-cases such as allow-list, block-list, and wild carding.

Removed fuchsia's check as per phosek sugguestion.

Reviewers: aaron.ballman, phosek, alexfh, hokein, njames93

Reviewed By: phosek

Subscribers: Eugene.Zelenko, mgorny, xazax.hun, phosek, cfe-commits, MaskRay

Tags: #clang-tools-extra, #clang

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

4 years ago[mlir][vulkan-runner] Use std::make_tuple to create tuple
Lei Zhang [Tue, 10 Mar 2020 20:20:07 +0000 (16:20 -0400)]
[mlir][vulkan-runner] Use std::make_tuple to create tuple

4 years ago[MLIR] Add `and`, `or`, `xor`, `min`, `max` too gpu.all_reduce and the nvvm lowering
Stephan Herhut [Tue, 10 Mar 2020 20:04:48 +0000 (21:04 +0100)]
[MLIR] Add `and`, `or`, `xor`, `min`, `max` too gpu.all_reduce and the nvvm lowering

Summary:
This patch add some builtin operation for the gpu.all_reduce ops.
- for Integer only: `and`, `or`, `xor`
- for Float and Integer: `min`, `max`

This is useful for higher level dialect like OpenACC or OpenMP that can lower to the GPU dialect.

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

4 years ago[Concepts] Add constraints checks to isSameEntity
Saar Raz [Tue, 10 Mar 2020 20:05:36 +0000 (22:05 +0200)]
[Concepts] Add constraints checks to isSameEntity

isSameEntity was missing constraints checking, causing constrained overloads
to not travel well accross serialization. (bug #45115)

Add constraints checking to isSameEntity.

4 years ago[Concepts] Add FoundDecl to ConceptSpecializationExpr serialization
Saar Raz [Tue, 10 Mar 2020 20:04:11 +0000 (22:04 +0200)]
[Concepts] Add FoundDecl to ConceptSpecializationExpr serialization

FoundDecl was missing from ConceptSpecializationExpr serialization - add it.

4 years ago[mlir][vulkan-runner] Update mlir-vulkan-runner execution driver.
Denis Khalikov [Tue, 10 Mar 2020 19:17:07 +0000 (15:17 -0400)]
[mlir][vulkan-runner] Update mlir-vulkan-runner execution driver.

* Adds GpuLaunchFuncToVulkanLaunchFunc conversion pass.
* Moves a serialization of the `spirv::Module` from LaunchFuncToVulkanCalls pass to newly created pass.
* Updates LaunchFuncToVulkanCalls instrumentation pass, adds `initVulkan` and `deinitVulkan` runtime calls.
* Adds `bindResource` call to bind specifc resource by the given descriptor set and descriptor binding.
* Eliminates static construction and desctruction of `VulkanRuntimeManager`.

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

4 years ago[mlir][NFC] Move the interfaces and traits for side effects out of IR/ to Interfaces/
River Riddle [Tue, 10 Mar 2020 19:25:08 +0000 (12:25 -0700)]
[mlir][NFC] Move the interfaces and traits for side effects out of IR/ to Interfaces/

Summary:
Interfaces/ is the designated directory for these types of interfaces, and also removes the need for including them directly in IR/.

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

4 years ago[mlir][NFC] Move the operation interfaces out of Analysis/ and into a new Interfaces...
River Riddle [Tue, 10 Mar 2020 19:20:24 +0000 (12:20 -0700)]
[mlir][NFC] Move the operation interfaces out of Analysis/ and into a new Interfaces/ directory.

The interfaces themselves aren't really analyses, they may be used by analyses though. Having them in Analysis can also create cyclic dependencies if an analysis depends on a specific dialect, that also provides one of the interfaces.

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

4 years ago[AMDGPU] Fix the gfx10 scheduling model for f32 conversions
Jay Foad [Fri, 28 Feb 2020 23:38:41 +0000 (23:38 +0000)]
[AMDGPU] Fix the gfx10 scheduling model for f32 conversions

Summary:
As far as I can tell on gfx10 conversions to/from f32 (that are not
converting f32 to/from f64) are full rate instructions, but they were
marked as quarter rate instructions.

I have fixed this for gfx10 only. I assume the scheduling model was
correct for older architectures, though I don't have any documentation
handy to confirm that.

Reviewers: rampitec, arsenm

Subscribers: kzhuravl, jvesely, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye, hiraditya, kerbowa, llvm-commits

Tags: #llvm

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

4 years ago[mlir][Linalg] Revisit 0-D abstraction
Nicolas Vasilache [Tue, 10 Mar 2020 19:10:34 +0000 (15:10 -0400)]
[mlir][Linalg] Revisit 0-D abstraction

This revision takes advantage of the empty AffineMap to specify the
0-D edge case. This allows removing a bunch of annoying corner cases
that ended up impacting users of Linalg.

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

4 years agoConvert a reachable llvm_unreachable into an assert.
Aaron Ballman [Tue, 10 Mar 2020 18:21:55 +0000 (14:21 -0400)]
Convert a reachable llvm_unreachable into an assert.

4 years ago[SimplifyLibcalls] Don't replace locked IO (fgetc/fgets/fputc/fputs/fread/fwrite...
Fangrui Song [Tue, 10 Mar 2020 15:05:00 +0000 (08:05 -0700)]
[SimplifyLibcalls] Don't replace locked IO (fgetc/fgets/fputc/fputs/fread/fwrite) with unlocked IO (*_unlocked)

This essentially reverts some of the SimplifyLibcalls part changes of D45736 [SimplifyLibcalls] Replace locked IO with unlocked IO.

C11 7.21.5.2 The fflush function

> If stream is a null pointer, the fflush function performs this flushing action on all streams for which the behavior is defined above.

i.e. fopen'ed FILE* is inherently captured.

POSIX.1-2017 getc_unlocked, getchar_unlocked, putc_unlocked, putchar_unlocked - stdio with explicit client locking

> These functions can safely be used in a multi-threaded program if and only if they are called while the invoking thread owns the ( FILE *) object, as is the case after a successful call to the flockfile() or ftrylockfile() functions.

After a thread fopen'ed a FILE*, when it is calling foobar() which is now replaced by foobar_unlocked(),
if another thread is concurrently calling fflush(0), the behavior is undefined.

C11 7.22.4.4 The exit function

> Next, all open streams with unwritten buffered data are flushed, all open streams are closed, and all files created by the tmpfile function are removed.

The replacement is only feasible if the program is single threaded, or exit or fflush(0) is never called.
See also http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20180528/556615.html
for how the replacement makes libc interceptors difficult to implement.

dalias: in a worst case, it's unbounded data corruption because of concurrent access to pointers
without synchronization.  f->wpos or rpos could get outside of the buffer, thread A could do
f->wpos += j after knowing j is in bounds, while thread B also changes it concurrently.

This can produce exploitable conditions depending on libc internals.

Revert the SimplifyLibcalls part change because the cons obviously
overweigh the pros.  Even when the replacement is feasible, the benefit
is indemonstrable, more so in an application instead of an artificial
glibc benchmark.  Theoretically the replacement could be beneficial when
calling getc_unlocked/putc_unlocked in a loop, but then it is better
using a blocked IO operation and the user is likely aware of that.

The function attribute inference is still useful and thus kept.

Reviewed By: xbolva00

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

4 years ago[docs] Regenerate ClangCommandLineReference.rst
Craig Topper [Tue, 10 Mar 2020 18:08:19 +0000 (11:08 -0700)]
[docs] Regenerate ClangCommandLineReference.rst

Just ran clang-tblgen -gen-opt-docs ClangOptionDocs.td

4 years agoARM: Fixup some tests using denormal-fp-math attribute
Matt Arsenault [Mon, 9 Mar 2020 15:08:49 +0000 (11:08 -0400)]
ARM: Fixup some tests using denormal-fp-math attribute

Don't use the deprecated, single mode form in tests. Also make sure to
parse the attribute, in case of the deprecated form.

4 years ago[MLIR] Add custom option parser type to PassOption
Eugene Zhulenev [Tue, 10 Mar 2020 17:55:05 +0000 (10:55 -0700)]
[MLIR] Add custom option parser type to PassOption

Summary: Pass custom DataType parser to pass options, similar to llvm::cl::opt class.

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

4 years agoRevert "[modules] Do not cache invalid state for modules that we attempted to load."
Rumeet Dhindsa [Tue, 10 Mar 2020 17:59:26 +0000 (10:59 -0700)]
Revert "[modules] Do not cache invalid state for modules that we attempted to load."
As per comment on https://reviews.llvm.org/D72860, it is suggested to
revert this change in the meantime, since it has introduced regression.

This reverts commit 83f4c3af021cd5322ea10fd1c4e839874c1dae49.

4 years agoAdd Optional overload to DiagnosticBuilder operator <<
Nathan James [Tue, 10 Mar 2020 13:41:01 +0000 (13:41 +0000)]
Add Optional overload to DiagnosticBuilder operator <<

Reviewers: aaron.ballman, gribozavr2, lebedev.ri

Reviewed By: gribozavr2

Subscribers: wuzish, nemanjai, kbarton, arphaman, cfe-commits

Tags: #clang

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

4 years agoRework findUnwindSectionsByPhdr to be more optimal.
Sterling Augustine [Fri, 6 Mar 2020 23:59:16 +0000 (15:59 -0800)]
Rework findUnwindSectionsByPhdr to be more optimal.

Summary:
- Executable segment is usually segment 3. Look there for the address first.
- GNU_EH_FRAME_HEADER segment is usually near the end. Iterate from the end.
- Exit early if both phdrs have been found.

This is the last cl before a patch to cache the information this function
finds.

Subscribers: libcxx-commits

Tags: #libc

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

4 years ago[libc++abi] NFC: Fix typo in comment
Louis Dionne [Tue, 10 Mar 2020 17:33:07 +0000 (13:33 -0400)]
[libc++abi] NFC: Fix typo in comment

4 years agoGive helpers internal linkage. NFC.
Benjamin Kramer [Tue, 10 Mar 2020 17:24:04 +0000 (18:24 +0100)]
Give helpers internal linkage. NFC.

4 years ago[clangd] Use a separate RunningTask flag instead of leaving a broken request on top...
Kadir Cetinkaya [Tue, 10 Mar 2020 15:52:31 +0000 (16:52 +0100)]
[clangd] Use a separate RunningTask flag instead of leaving a broken request on top of the queue

Summary:
This helps us prevent races when scheduler (or any other thread) tries
to read a request while it's still running.

Reviewers: sammccall

Subscribers: ilya-biryukov, javed.absar, MaskRay, jkorous, arphaman, usaxena95, cfe-commits

Tags: #clang

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

4 years agoSuppress an "unused variable" warning in release build
Mikhail Maltsev [Tue, 10 Mar 2020 17:07:46 +0000 (17:07 +0000)]
Suppress an "unused variable" warning in release build

4 years ago[gn build] Port a4cde9ad7b6
LLVM GN Syncbot [Tue, 10 Mar 2020 17:04:42 +0000 (17:04 +0000)]
[gn build] Port a4cde9ad7b6

4 years agoFixed [AssumeBundles] Move to IR so it can be used by Analysis
Tyker [Sun, 8 Mar 2020 11:19:29 +0000 (12:19 +0100)]
Fixed [AssumeBundles] Move to IR so it can be used by Analysis

This is a recommit of 57c964aaa76bfaa908398fbd9d8c9d6d19856859
after fixing modules build.

4 years ago[VE] Target-specific bit size for sjljehprepare
Kazushi (Jam) Marukawa [Tue, 10 Mar 2020 16:39:11 +0000 (17:39 +0100)]
[VE] Target-specific bit size for sjljehprepare

Summary:
This patch extends the TargetMachine to let targets specify the integer size
used by the sjljehprepare pass. This is 64bit for the VE target and otherwise
defaults to 32bit for all targets, which was hard-wired before.

Reviewed By: arsenm

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

4 years ago[OPENMP]Fix PR45132: OpenMP doacross loop nest with a decreasing
Alexey Bataev [Tue, 10 Mar 2020 16:05:36 +0000 (12:05 -0400)]
[OPENMP]Fix PR45132: OpenMP doacross loop nest with a decreasing
induction variable abends.

Used incorrect loop bound when trying to calculate the index in the vec
array for doacross construct in the loops with the reverse order.

4 years ago[instcombine] remove fsub to fneg hacks; only emit fneg
Simon Moll [Tue, 10 Mar 2020 15:05:31 +0000 (16:05 +0100)]
[instcombine] remove fsub to fneg hacks; only emit fneg

Summary: Rewrite the fsub-0.0 idiom to fneg and always emit fneg for fp
negation. This also extends the scalarization cost in instcombine for unary
operators to result in the same IR rewrites for fneg as for the idiom.

Reviewed By: cameron.mcinally

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

4 years ago[compiler-rt] Define ElfW() macro if it's not defined
Sergej Jaskiewicz [Tue, 10 Mar 2020 15:53:07 +0000 (18:53 +0300)]
[compiler-rt] Define ElfW() macro if it's not defined

Summary:
The `ElfW()` macro is not provided by `<link.h>` on some
systems (e.g., FreeBSD). On these systems the data structures are
just called `Elf_XXX`. Define `ElfW()` locally.

(This fix is taken from [libunwind](https://github.com/llvm/llvm-project/blob/9b05596eff21388ae6f17cdea8df0538dc630441/libunwind/src/AddressSpace.hpp#L144-L157).)

Reviewers: compnerd

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

4 years ago[X86][SSE] getFauxShuffleMask - add support for INSERT_VECTOR_ELT(EXTRACT_VECTOR_ELT...
Simon Pilgrim [Tue, 10 Mar 2020 15:42:03 +0000 (15:42 +0000)]
[X86][SSE] getFauxShuffleMask - add support for INSERT_VECTOR_ELT(EXTRACT_VECTOR_ELT) shuffle pattern

We already do this for PINSRB/PINSRW and SCALAR_TO_VECTOR.

4 years ago[X86][SSE] matchShuffleWithSHUFPD - add support for unary shuffles.
Simon Pilgrim [Tue, 10 Mar 2020 15:30:56 +0000 (15:30 +0000)]
[X86][SSE] matchShuffleWithSHUFPD - add support for unary shuffles.

This causes one minor test change but is mainly necessary for an upcoming patch.

4 years ago[X86][SSE] Add some extract+insert shuffle tests
Simon Pilgrim [Tue, 10 Mar 2020 14:39:09 +0000 (14:39 +0000)]
[X86][SSE] Add some extract+insert shuffle tests

Shows failure to avoid xmm<->gpr transfers by using insertps/blendps

4 years ago[PSI] Add tests for is(Hot|Cold)FunctionInCallGraphNthPercentile.
Hiroshi Yamauchi [Wed, 4 Mar 2020 18:33:23 +0000 (10:33 -0800)]
[PSI] Add tests for is(Hot|Cold)FunctionInCallGraphNthPercentile.

Summary:
Follow up on D75283.

Also remove the test code that was moved to another test and was to be removed.

Reviewers: davidxl

Subscribers: eraman, llvm-commits

Tags: #llvm

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

4 years agoAMDGPU/GlobalISel: Insert readfirstlane on SGPR returns
Matt Arsenault [Sat, 15 Feb 2020 02:23:07 +0000 (21:23 -0500)]
AMDGPU/GlobalISel: Insert readfirstlane on SGPR returns

In case the source value ends up in a VGPR, insert a readfirstlane to
avoid producing an illegal copy later. If it turns out to be
unnecessary, it can be folded out.

4 years ago[ARM][MVE] VFMA and VFMS validForTailPredication
Sam Parker [Tue, 10 Mar 2020 10:38:25 +0000 (10:38 +0000)]
[ARM][MVE] VFMA and VFMS validForTailPredication

Add four instructions to the whitelist.

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

4 years ago[SystemZ] Improve foldMemoryOperandImpl().
Jonas Paulsson [Tue, 5 Nov 2019 13:28:13 +0000 (14:28 +0100)]
[SystemZ]  Improve foldMemoryOperandImpl().

Swap the compare operands if LHS is spilled while updating the CCMask:s of
the CC users. This is relatively straight forward since the live-in lists for
the CC register can be assumed to be correct during register allocation
(thanks to 659efa2).

Also fold a spilled operand of an LOCR/SELR into an LOC(G).

Review: Ulrich Weigand

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

4 years ago[gn build] Port 714466bf367
LLVM GN Syncbot [Tue, 10 Mar 2020 14:33:04 +0000 (14:33 +0000)]
[gn build] Port 714466bf367

4 years ago[InstCombine] Support vectors in SimplifyAddWithRemainder.
Florian Hahn [Tue, 10 Mar 2020 14:22:19 +0000 (14:22 +0000)]
[InstCombine] Support vectors in SimplifyAddWithRemainder.

SimplifyAddWithRemainder currently also matches for vector types, but
tries to create an integer constant, which causes a crash.

By using Constant::getIntegerValue() we can support both the scalar and
vector cases.

The 2 added test cases crash without the fix.

Reviewers: spatel, lebedev.ri

Reviewed By: spatel, lebedev.ri

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

4 years agoRevert "[clang-tidy] New check: bugprone-suspicious-include"
Nico Weber [Tue, 10 Mar 2020 14:27:57 +0000 (10:27 -0400)]
Revert "[clang-tidy] New check: bugprone-suspicious-include"

This reverts commit 1e0669bfe05f0f48ee88152c4a1d581f484f8d67
(and follow-ups 698a12712920c214e39bb215fe26fad2e099425b and
52bbdad7d63fd060d102b3591b433d116a982255).
The tests fail fail on Windows, see https://reviews.llvm.org/D74669

4 years ago[gn build] (manually) merge 47edf5bafb
Nico Weber [Tue, 10 Mar 2020 14:22:39 +0000 (10:22 -0400)]
[gn build] (manually) merge 47edf5bafb

4 years ago[ARM,CDE] Generalize MVE intrinsics infrastructure to support CDE
Mikhail Maltsev [Tue, 10 Mar 2020 14:01:42 +0000 (14:01 +0000)]
[ARM,CDE] Generalize MVE intrinsics infrastructure to support CDE

Summary:
This patch generalizes the existing code to support CDE intrinsics
which will share some properties with existing MVE intrinsics
(some of the intrinsics will be polymorphic and accept/return values
of MVE vector types).
Specifically the patch:
* Adds new tablegen backends -gen-arm-cde-builtin-def,
  -gen-arm-cde-builtin-codegen, -gen-arm-cde-builtin-sema,
  -gen-arm-cde-builtin-aliases, -gen-arm-cde-builtin-header based on
  existing MVE backends.
* Renames the '__clang_arm_mve_alias' attribute into
  '__clang_arm_builtin_alias' (it will be used with CDE intrinsics as
  well as MVE intrinsics)
* Implements semantic checks for the coprocessor argument of the CDE
  intrinsics as well as the existing coprocessor intrinsics.
* Adds one CDE intrinsic __arm_cx1 to test the above changes

Reviewers: simon_tatham, MarkMurrayARM, ostannard, dmgreen

Reviewed By: simon_tatham

Subscribers: sdesmalen, mgorny, kristof.beyls, danielkiss, cfe-commits, llvm-commits

Tags: #clang, #llvm

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

4 years ago[SimplifyCFG] Skip merging return blocks if it would break a CallBr.
Jonas Paulsson [Wed, 4 Mar 2020 16:11:40 +0000 (17:11 +0100)]
[SimplifyCFG]  Skip merging return blocks if it would break a CallBr.

SimplifyCFG should not merge empty return blocks and leave a CallBr behind
with a duplicated destination since the verifier will then trigger an
assert. This patch checks for this case and avoids the transformation.

CodeGenPrepare has a similar check which also has a FIXME comment about why
this is needed. It seems perhaps better if these two passes would eventually
instead update the CallBr instruction instead of just checking and avoiding.

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

Review: Craig Topper

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

4 years ago[InstCombine] regenerate test checks; NFC
Sanjay Patel [Tue, 10 Mar 2020 13:56:38 +0000 (09:56 -0400)]
[InstCombine] regenerate test checks; NFC

tmp -> t because 'tmp' tends to cause problems for the auto-generation script.

4 years ago[TargetLowering] SimplifyDemandedVectorElts - add DemandedElts mask to ISD::BITCAST...
Simon Pilgrim [Tue, 10 Mar 2020 13:38:33 +0000 (13:38 +0000)]
[TargetLowering] SimplifyDemandedVectorElts - add DemandedElts mask to ISD::BITCAST SimplifyDemandedBits call.

This fixes most of the regressions introduced in the rG4bc6f6332028 bugfix. The vector-trunc.ll issue should be fixed by D66004.

4 years ago[lldb] Improve test failure messages in vscode tests
Pavel Labath [Tue, 10 Mar 2020 13:31:03 +0000 (14:31 +0100)]
[lldb] Improve test failure messages in vscode tests

A couple of tests sporadically fail on these assertions, but the error
messages do not give a clue as to what has actually happened.

Improve them so that we can better understand what is going wrong.

4 years ago[InstCombine] fold gep-of-select-of-constants (PR45084)
Sanjay Patel [Mon, 9 Mar 2020 21:24:11 +0000 (17:24 -0400)]
[InstCombine] fold gep-of-select-of-constants (PR45084)

As shown in:
https://bugs.llvm.org/show_bug.cgi?id=45084
...we failed to combine a gep with constant indexes with a
pointer operand that is a select of constants.

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

4 years ago[InstCombine] add/adjust tests for select-gep; NFC
Sanjay Patel [Sun, 8 Mar 2020 14:45:14 +0000 (10:45 -0400)]
[InstCombine] add/adjust tests for select-gep; NFC

Goes with D75807

4 years ago[SLP] Support vectorizing functions provided by vector libs.
Florian Hahn [Tue, 10 Mar 2020 13:03:43 +0000 (13:03 +0000)]
[SLP] Support vectorizing functions provided by vector libs.

It seems like the SLPVectorizer is currently not aware of vector
versions of functions provided by libraries like Accelerate [1].
This patch updates SLPVectorizer to use the same infrastructure
the LoopVectorizer uses to detect vectorizable library functions.

For calls, it computes the cost of an intrinsic call (existing behavior)
and the cost of a vector function library call, if available. Like
LoopVectorizer, it assumes the cost of the vector function is simply the
cost of a call to a vector function.

[1] https://developer.apple.com/documentation/accelerate

Reviewers: ABataev, RKSimon, spatel

Reviewed By: ABataev

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

4 years ago[lldb] Break up CommandObjectDisassemble::DoExecute
Pavel Labath [Mon, 9 Mar 2020 15:22:43 +0000 (16:22 +0100)]
[lldb] Break up CommandObjectDisassemble::DoExecute

The function consisted of a complicated set of conditions to compute the
address ranges which are to be disassembled (depending on the mode
selected by command line switches). This patch creates a separate
function for each mode, so that DoExecute is only left with the task of
figuring out how to dump the relevant ranges.

This is NFC-ish, except for one change in the error message, which is
actually an improvement.

4 years ago[lldb] Make UnwindLLDB a non-plugin
Pavel Labath [Mon, 9 Mar 2020 13:36:15 +0000 (14:36 +0100)]
[lldb] Make UnwindLLDB a non-plugin

Summary:
This is the only real unwinder, and things have been this way for quite
a long time. At this point, the class has accumulated so many features
it is unlikely that anyone will want to reimplement the whole thing.

The class is also fairly closely coupled (through UnwindPlans and
FuncUnwinders) with a lot of other lldb components that it is hard to
imagine a different unwinder implementation being substantially
different without reimplementing all of those.

The existing unwinding functionality is nonetheless fairly complex and
there is space for adding more structure to it, but I believe a more
worthwhile effort would be to take the existing UnwindLLDB class and try
to break it down and introduce extension/customization points, instead
of writing a brand new Unwind implementation.

Reviewers: jasonmolenda, JDevlieghere, xiaobai

Subscribers: mgorny, lldb-commits

Tags: #lldb

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

4 years ago[NFC] Tweak OptionsUtils
Nathan James [Tue, 10 Mar 2020 12:50:58 +0000 (12:50 +0000)]
[NFC] Tweak OptionsUtils

4 years ago[LLD] Add support for --unique option
David Bozier [Mon, 9 Mar 2020 15:43:20 +0000 (15:43 +0000)]
[LLD] Add support for --unique option

Summary:
Places orphan sections into a unique output section. This prevents the merging of orphan sections of the same name.
Matches behaviour of GNU ld --unique. --unique=pattern is not implemented.

Motivated user case shown in the test has 2 local symbols as they would appear if C++ source has been compiled with -ffunction-sections. The merging of these sections in the case of a partial link (-r) may limit the effectiveness of -gc-sections of a subsequent link.

Reviewers: espindola, jhenderson, bd1976llvm, edd, andrewng, JonChesterfield, MaskRay, grimar, ruiu, psmith

Reviewed By: MaskRay, grimar

Subscribers: emaste, arichardson, MaskRay, llvm-commits

Tags: #llvm

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

4 years ago[X86][SSE] Add more accurate costs for fmaxnum/fminnum codegen
Simon Pilgrim [Tue, 10 Mar 2020 11:59:23 +0000 (11:59 +0000)]
[X86][SSE] Add more accurate costs for fmaxnum/fminnum codegen

Based off llvm-mca reports on codegen in llvm\test\CodeGen\X86\fmaxnum.ll + llvm\test\CodeGen\X86\fminnum.ll

4 years ago[NFC][llvm-dwarfdump] Always use 'const Twine &'
Djordje Todorovic [Tue, 10 Mar 2020 11:06:08 +0000 (12:06 +0100)]
[NFC][llvm-dwarfdump] Always use 'const Twine &'

According to the Twine.h comment, the Twines should only
be used as const references in arguments.

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

4 years ago[SLPVectorizer][X86] Add fmaxnum/fminnum tests
Simon Pilgrim [Tue, 10 Mar 2020 11:18:10 +0000 (11:18 +0000)]
[SLPVectorizer][X86] Add fmaxnum/fminnum tests

4 years ago[CostModel][X86] Add fmaxnum/fminnum costs tests
Simon Pilgrim [Tue, 10 Mar 2020 11:00:07 +0000 (11:00 +0000)]
[CostModel][X86] Add fmaxnum/fminnum costs tests

4 years ago[X86][SSE] Add SSE41 coverage for fmaxnum/fminnum tests
Simon Pilgrim [Tue, 10 Mar 2020 10:58:45 +0000 (10:58 +0000)]
[X86][SSE] Add SSE41 coverage for fmaxnum/fminnum tests

4 years ago [AMDGPU] SI_INDIRECT_DST_V* pseudos expansion should place EXEC restore to separate...
alex-t [Tue, 10 Mar 2020 10:59:11 +0000 (13:59 +0300)]
 [AMDGPU] SI_INDIRECT_DST_V* pseudos expansion should place EXEC restore to separate basic block

Summary:
When SI_INDIRECT_DST_V* pseudos has indexes in VGPR, they get expanded into the self-looped basic block that modifies EXEC in a loop.

To keep EXEC consistent it is stored before and then re-stored after the pseudo expansion result.

%95:vreg_512 = SI_INDIRECT_DST_V16 %93:vreg_512(tied-def 0), %94:sreg_32, 0, killed %1500:vgpr_32

results to

    s_mov_b64 s[6:7], exec
BB0_16:
    v_readfirstlane_b32 s8, v28
    v_cmp_eq_u32_e32 vcc, s8, v28
    s_and_saveexec_b64 vcc, vcc
    s_set_gpr_idx_on s8, gpr_idx(DST)
    v_mov_b32_e32 v6, v25
    s_set_gpr_idx_off
    s_xor_b64 exec, exec, vcc
    s_cbranch_execnz BB0_16
; %bb.17:
    s_mov_b64 exec, s[6:7]

The bug appeared in case this expansion occurs in the ELSE block of the CF.

Originally

  %110:vreg_512 = SI_INDIRECT_DST_V16 %103:vreg_512(tied-def 0), %85:vgpr_32, 0, %107:vgpr_32,
   %112:sreg_64 = SI_ELSE %108:sreg_64, %bb.19, 0, implicit-def dead $exec, implicit-def dead $scc, implicit $exec

expanded to

         ******************   <== here exec has "THEN" context

    s_mov_b64 s[6:7], exec
BB0_16:
    v_readfirstlane_b32 s8, v28
    v_cmp_eq_u32_e32 vcc, s8, v28
    s_and_saveexec_b64 vcc, vcc
    s_set_gpr_idx_on s8, gpr_idx(DST)
    v_mov_b32_e32 v6, v25
    s_set_gpr_idx_off
    s_xor_b64 exec, exec, vcc
    s_cbranch_execnz BB0_16
; %bb.17:
    s_or_saveexec_b64 s[4:5], s[4:5]   <-- exec mask is restored for "ELSE" but immediately overwritten.
    s_mov_b64 exec, s[6:7]

The rest of the "ELSE" block is executed not by the workitems which constitute the "else mask" but by those which constitute "then mask"

SILowerControlFlow::emitElse always considers the basic block begin() as an insertion point for s_or_saveexec.

Proposed fix:  The SI_INDIRECT_DST_V* procedure should split the reminder block to create landing pad for the EXEC restoration.

Reviewers: rampitec, vpykhtin, nhaehnle

Reviewed By: vpykhtin

Subscribers: arsenm, kzhuravl, jvesely, wdng, yaxunl, dstuttard, tpr, t-tye, hiraditya, kerbowa, llvm-commits

Tags: #llvm

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

4 years ago[AArch64][SVE] Add SVE intrinsics for address calculations
Kerry McLaughlin [Tue, 10 Mar 2020 10:40:10 +0000 (10:40 +0000)]
[AArch64][SVE] Add SVE intrinsics for address calculations

Summary: Adds the @llvm.aarch64.sve.adr[b|h|w|d] intrinsics

Reviewers: sdesmalen, andwar, efriedma, dancgr, cameron.mcinally, rengolin

Reviewed By: sdesmalen

Subscribers: tschuett, kristof.beyls, hiraditya, rkruppe, psnobl, danielkiss, cfe-commits, llvm-commits

Tags: #llvm

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

4 years ago[Arm] Do not lower vmax/vmin to Neon instructions
James Greenhalgh [Tue, 10 Mar 2020 10:16:12 +0000 (10:16 +0000)]
[Arm] Do not lower vmax/vmin to Neon instructions

On some Arm cores there is a performance penalty when forwarding from an
S register to a D register.  Calculating VMAX in a D register creates
false forwarding hazards, so don't do that unless we're on a core which
specifically asks for it.

Patch by James Greenhalgh

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

4 years ago[X86][AVX] combineX86ShuffleChain - combine binary shuffles to X86ISD::VPERM2X128
Simon Pilgrim [Tue, 10 Mar 2020 10:44:12 +0000 (10:44 +0000)]
[X86][AVX] combineX86ShuffleChain - combine binary shuffles to X86ISD::VPERM2X128

For pre-AVX512 targets, combine binary shuffles to X86ISD::VPERM2X128 if possible. This mainly helps optimize the blend(extract_subvector(x,1),y) pattern.

At some point soon we're going to have make a decision about when to combine AVX512 shuffles more aggressively - we bail out if there is any change in element size (to protect predicate mask merging) which means we miss out on a lot of optimizations.

4 years ago[Analyzer][NFC] Change parameter of NoteTag lambdas to PathSensitiveBugReport
Adam Balogh [Tue, 10 Mar 2020 08:05:16 +0000 (09:05 +0100)]
[Analyzer][NFC] Change parameter of NoteTag lambdas to PathSensitiveBugReport

Lambdas creating path notes using NoteTags still take BugReport as their
parameter. Since path notes obviously only appear in PathSensitiveBugReports
it is straightforward that lambdas of NoteTags take PathSensitiveBugReport
as their parameter.

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

4 years ago[ExpandMemCmp][NFC] Add more tests.
Clement Courbet [Tue, 10 Mar 2020 10:31:00 +0000 (11:31 +0100)]
[ExpandMemCmp][NFC] Add more tests.

4 years ago[SLP] Precommit vector library test for D75878.
Florian Hahn [Tue, 10 Mar 2020 10:16:35 +0000 (10:16 +0000)]
[SLP] Precommit vector library test for D75878.

4 years ago[ARM][MVE] Validate tail predication values
Sam Parker [Tue, 10 Mar 2020 09:58:29 +0000 (09:58 +0000)]
[ARM][MVE] Validate tail predication values

Iterate through the loop and check that the observable values
produced are the same whether tail predication happens or not.

We want to find out if the tail-predicated version of this loop will
produce the same values as the loop in its original form. For this to
be true, the newly inserted implicit predication must not change the
the (observable) results.

We're doing this because many instructions in the loop will not be
predicated and so the conversion from VPT predication to tail
predication can result in different values being produced, because of
falsely predicated lanes not being updated in the converted form.

A masked load, whether through VPT or tail predication, will write
zeros to any of the falsely predicated bytes. So, from the loads, we
know that the false lanes are zeroed and here we're trying to track
that those false lanes remain zero, or where they change, the
differences are masked away by their user(s).

All MVE loads and stores have to be predicated, so we know that any
load operands, or stored results are equivalent already. Other
explicitly predicated instructions will perform the same operation in
the original loop and the tail-predicated form too. Because of this,
we can insert loads, stores and other predicated instructions into
our KnownFalseZeros set and build from there.

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

4 years ago[clang-format] Correct indentation for `[key] = value,` entries in C# object initialisers
Jonathan Coe [Tue, 10 Mar 2020 09:33:39 +0000 (09:33 +0000)]
[clang-format] Correct indentation for `[key] = value,` entries in C# object initialisers

Restores content of commit cb3f20d27c9e91cb9f997f0401f388e62c4ba993
reverted in commit 5a101f377315c0c0c58e8df842fe5eb5d8c7611d
with a corrected commit message.

Summary: Do not use continuation indent for '[' in blocks in C# code.

Reviewers: krasimir

Reviewed By: krasimir

Subscribers: cfe-commits

Tags: #clang-format, #clang

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

4 years agoRevert "[clang-format] Correct indentation for `[key] = value,` entries in C++ object...
Jonathan Coe [Tue, 10 Mar 2020 09:30:34 +0000 (09:30 +0000)]
Revert "[clang-format] Correct indentation for `[key] = value,` entries in C++ object initialisers"

Commit message says "C++" where it should say "C#".

This reverts commit cb3f20d27c9e91cb9f997f0401f388e62c4ba993.

4 years agoReland "[DebugInfo] Enable the debug entry values feature by default"
Djordje Todorovic [Mon, 9 Mar 2020 11:43:38 +0000 (12:43 +0100)]
Reland "[DebugInfo] Enable the debug entry values feature by default"

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

4 years agotsan: tsan_interface.h: make constants static
Dmitry Vyukov [Tue, 10 Mar 2020 08:12:28 +0000 (09:12 +0100)]
tsan: tsan_interface.h: make constants static

Note that in C++ the static keyword is implicit for const objects.
In C however it is not, and we get clashes at link time after
including the header from more than one C file:

lib.a(bar.o):(.rodata+0x0): multiple definition of `__tsan_mutex_linker_init'
lib.a(foo.o):(.rodata+0x0): first defined here
lib.a(bar.o):(.rodata+0xc): multiple definition of `__tsan_mutex_not_static'
lib.a(foo.o):(.rodata+0xc): first defined here
<snip>
Indeed both foo.o and bar.o define the clashing symbols:

$ nm foo.o
<snip>
0000000000000000 R __tsan_mutex_linker_init
000000000000000c R __tsan_mutex_not_static
<snip>
Fix it by explicitly making the constants static.

Reviewed-in: https://reviews.llvm.org/D75820
Author: cota (Emilio G. Cota)

4 years ago[X86] Remove isel patterns for (X86VBroadcast (i16 (trunc (i32 (load))))). Replace...
Craig Topper [Tue, 10 Mar 2020 07:00:26 +0000 (00:00 -0700)]
[X86] Remove isel patterns for (X86VBroadcast (i16 (trunc (i32 (load))))). Replace with a DAG combine to form VBROADCAST_LOAD.

isTypeDesirableForOp prevents loads from being shrunk to i16 by DAG
combine. Because of this we can't just match the broadcast and a
scalar load. So look for broadcast+truncate+load and form a
vbroadcast_load during DAG combine. This replaces what was
previously done as an isel pattern and I think fixes it so we
won't change the size of a volatile load. But my main motivation
is just to clean up our isel patterns.

4 years ago[llvm][MIRVRegNamer] Avoid collisions across constant pool indices.
Puyan Lotfi [Tue, 10 Mar 2020 04:31:01 +0000 (00:31 -0400)]
[llvm][MIRVRegNamer] Avoid collisions across constant pool indices.

When hashing on MachineOperand::MO_ConstantPoolIndex, now MIR-Canon and
MIRVRegNamer will no longer result in a hash collision.

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

4 years ago[libc] Add simple implementations of mtx_lock and mtx_unlock.
Siva Chandra Reddy [Mon, 10 Feb 2020 07:33:38 +0000 (23:33 -0800)]
[libc] Add simple implementations of mtx_lock and mtx_unlock.

These functions only support locking and unlocking of plain mutexes.
They will be extended in future changes to handled recursive and timed
mutexes.

Reviewers: phosek

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

4 years ago[libc] Take 2: Add linux implementations of thrd_create and thrd_join functions.
Siva Chandra Reddy [Fri, 6 Mar 2020 23:05:50 +0000 (15:05 -0800)]
[libc] Take 2: Add linux implementations of thrd_create and thrd_join functions.

The following are the differences from the first version:

1. The kernel does not copy the stack for the new thread (it cannot).
The previous version missed this fact. In this new version, the new
thread's start args are copied on to the new stack in a known location
so that the new thread can sniff them out.
2. A start args sniffer for x86_64 has been added.
2. Default stack size has been increased to 64KB.

Reviewers: abrachet, phosek

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

4 years agoFix MLIR build when NVPTX backend is not configured in
Mehdi Amini [Tue, 10 Mar 2020 04:09:33 +0000 (04:09 +0000)]
Fix MLIR build when NVPTX backend is not configured in

The GPUToCUDA conversion needs to conditionally link it
in.

4 years agoAMDGPU/GlobalISel: Avoid illegal vector exts for add/sub/mul
Matt Arsenault [Wed, 19 Feb 2020 17:54:35 +0000 (12:54 -0500)]
AMDGPU/GlobalISel: Avoid illegal vector exts for add/sub/mul

When expanding scalar packed operations, we should not introduce
illegal vector casts LegalizerHelper introduces. We're not in a
legalizer context, and there's no RegBankSelect apply or legalize
worklist.

4 years agoAMDGPU/GlobalISel: Fix mishandling SGPR v2s16 add/sub/mul
Matt Arsenault [Wed, 19 Feb 2020 18:23:11 +0000 (13:23 -0500)]
AMDGPU/GlobalISel: Fix mishandling SGPR v2s16 add/sub/mul

We weren't considering the packed case correctly, and this was passing
through to the selector. The selector only checked the size, so this
would incorrectly compile to a single 32-bit scalar add.

As usual, the LegalizerHelper is somewhat awkward to use from
applyMappingImpl. I think this is the first place we've needed
multi-step legalization here though.

4 years ago[MC] Allow Stackmap sections after DWARF in MachO.
Lang Hames [Mon, 9 Mar 2020 04:41:10 +0000 (21:41 -0700)]
[MC] Allow Stackmap sections after DWARF in MachO.

Summary:
Mixing stackmaps and DWARF in a single file triggers an assertion in
MCMachOStreamer as stackmap sections are emitted in AsmPrinter::emitEndOfAsmFile
after the DWARF sections have already been emitted.

Since it should be safe to emit stackmap sections after DWARF sections this
patch relaxes the assertion to allow that.

Reviewers: aprantl, dblaikie, echristo

Subscribers: hiraditya, ributzka, llvm-commits

Tags: #llvm

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

4 years ago[mlir] NFC: remove IntegerValueSet / MutableIntegerSet
Uday Bondhugula [Tue, 10 Mar 2020 00:48:28 +0000 (20:48 -0400)]
[mlir] NFC: remove IntegerValueSet / MutableIntegerSet

Summary:
- these are unused and really not needed now given flat affine
  constraints

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

4 years ago[NFC] use hasAnyOperatorName and hasAnyOverloadedOperatorName functions in clang...
Nathan James [Tue, 10 Mar 2020 00:42:21 +0000 (00:42 +0000)]
[NFC] use hasAnyOperatorName and hasAnyOverloadedOperatorName functions in clang-tidy matchers

4 years ago[WebAssembly] Fixed FrameBaseLocal not being set.
Wouter van Oortmerssen [Tue, 10 Mar 2020 00:24:46 +0000 (17:24 -0700)]
[WebAssembly] Fixed FrameBaseLocal not being set.

Summary:
Fixes: https://bugs.llvm.org/show_bug.cgi?id=44920

WebAssemblyRegColoring may merge the vreg that currently represents
the FrameBase with one representing an argument.
WebAssemblyExplicitLocals picks up the corresponding local when
a vreg is first added to the Reg2Local mapping, except when it is
an argument instruction which are handled separately.

Note that this does not change that vregs representing the FrameBase
may get merged, it is not clear to me that this may have other
effects we may want to avoid?

Reviewers: dschuff

Reviewed By: dschuff

Subscribers: azakai, sbc100, hiraditya, aheejin, sunfish, llvm-commits, jgravelle-google

Tags: #llvm

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

4 years ago[ASTMatchers] Add hasAnyOverloadedOperatorName matcher
Nathan James [Mon, 9 Mar 2020 11:16:50 +0000 (11:16 +0000)]
[ASTMatchers] Add hasAnyOverloadedOperatorName matcher

Reviewers: aaron.ballman

Reviewed By: aaron.ballman

Subscribers: cfe-commits

Tags: #clang

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

4 years ago[x86][slh] Move isDataInvariant* functions
George Burgess IV [Tue, 10 Mar 2020 00:04:30 +0000 (17:04 -0700)]
[x86][slh] Move isDataInvariant* functions

Patch by Zola Bridges!

From the review:

"""
I moved these functions to X86InstrInfo.cpp, so they are available from
another pass. In addition, this is a step toward resolving the FIXME to
move this metadata to the instruction tables.

This is the final step to make these two data invariance checks
available for non-SLH passes.

The other two steps were here:

- https://reviews.llvm.org/D70283
- https://reviews.llvm.org/D75650

Tested via llvm-lit llvm/test/CodeGen/X86/speculative-load-hardening*
"""

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

4 years ago[x86][slh][NFC] Rm redundant liveness check
George Burgess IV [Tue, 10 Mar 2020 00:02:51 +0000 (17:02 -0700)]
[x86][slh][NFC] Rm redundant liveness check

Patch by Zola Bridges!

From the review:

"""
In this changeset (https://reviews.llvm.org/D70283), I added a liveness
check everywhere the isDataInvariant* functions were used, so that I
could safely delete the checks within the function. I mistakenly left
that deletion out of the patch. The result is that the same condition is
checked twice for some instructions which is functionally fine, but not
good. This change deletes the redundant check that I intended to delete
in the last change.

This is the second of three patches that will make the data invariance
checks available for non-SLH passes and enable the FIXMEs related to
moving this metadata to the instruction tables to be resolved.

Tested via llvm-lit llvm/test/CodeGen/X86/speculative-load-hardening*
"""

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

4 years agoRevert "PR45083: Mark statement expressions as being dependent if they contain"
Richard Smith [Tue, 10 Mar 2020 00:03:56 +0000 (17:03 -0700)]
Revert "PR45083: Mark statement expressions as being dependent if they contain"

This reverts commit 2669e41b7b9c1561a01048d5ed0aba3c62432dfc, which was
pushed by mistake.

4 years agoMark test function as 'weak' to prevent interprocedural CSE.
Richard Smith [Tue, 10 Mar 2020 00:01:07 +0000 (17:01 -0700)]
Mark test function as 'weak' to prevent interprocedural CSE.

A recent change to MemorySSA caused LLVM to start optimizing the call to
'f(x)' into just 'x', despite the 'noinline' attribute. So try harder to
prevent this optimization from firing.

4 years agoPR45083: Mark statement expressions as being dependent if they contain
Richard Smith [Thu, 5 Mar 2020 20:20:02 +0000 (12:20 -0800)]
PR45083: Mark statement expressions as being dependent if they contain
dependent constructs.

We previously assumed they were neither value- nor
instantiation-dependent under any circumstances, which would lead to
crashes and other misbehavior.

This doesn't match GCC's behavior (where statement expressions appear to
be treated as value-dependent if they appear in a dependent context),
but seems to be the best thing we can do in the short term: it turns out
to be remarkably difficult for us to correctly determine whether we are
in a dependent context (and it's not even possible in some cases, such
as in a generic lambda where we might not have seen the 'auto' yet).

This was previously reverted in 8e4a867 for rejecting some code, but that
code was invalid and Clang was previously incorrectly accepting it.

4 years ago[ASan] Enable set_shadow_test.c on Windows.
Matt Morehouse [Mon, 9 Mar 2020 23:07:45 +0000 (16:07 -0700)]
[ASan] Enable set_shadow_test.c on Windows.

It looks like the recent -fno-common is making it pass now.

4 years ago[mlir][SideEffects] Replace the old SideEffects dialect interface with the newly...
River Riddle [Mon, 9 Mar 2020 23:01:41 +0000 (16:01 -0700)]
[mlir][SideEffects] Replace the old SideEffects dialect interface with the newly added op interfaces/traits.

Summary:
The old interface was a temporary stopgap to allow for implementing simple LICM that took side effects of region operations into account. Now that MLIR has proper support for specifying memory effects, this interface can be deleted.

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

4 years ago[cmake] Strip quotes in compiler-rt/lib/crt; error if checks fail
George Burgess IV [Mon, 9 Mar 2020 22:48:19 +0000 (15:48 -0700)]
[cmake] Strip quotes in compiler-rt/lib/crt; error if checks fail

Patch by Zhizhou Yang!

In his own words:

"""
Similar change to CMakeLists as r372312.

After r372209, compiler command line may include argument with quotes:

```
-fprofile-instr-use="/foo/bar.profdata"
```

And it causes a hidden failure with execute_process later: Could not
read profile "/foo/bar.profdata": No such file or directory.

In this particular case, the check for .init_array will fail silently
and creates a PGO-ed binary with bad .init_array section in compiler-rt.

Bug details can be found in PR45022
"""

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

4 years ago[cmake] By default do not build compiler-rt with PGO
George Burgess IV [Mon, 9 Mar 2020 22:25:41 +0000 (15:25 -0700)]
[cmake] By default do not build compiler-rt with PGO

Patch by Zhizhou Yang!

In his own words:

"""
Currently compiler-rt doesn't officially support either PGO
instrumentation or use PGO profdata to build it.

PGO related flags are passed into compiler-rt since rL372209, and
causing bugs: 45022, crbug:1018840

This patch adds several checks in compiler-rt to disable PGO related
flags and provides a flag to turn on PGO for compiler-rt if needed.
"""

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

4 years ago[clang-tidy][docs] Post-commit feedback on D74669
Jonathan Roelofs [Mon, 9 Mar 2020 22:51:41 +0000 (16:51 -0600)]
[clang-tidy][docs] Post-commit feedback on D74669

4 years agoChange tests to use -S instead of -c to work when an external assembler is used that...
Douglas Yung [Mon, 9 Mar 2020 22:42:20 +0000 (15:42 -0700)]
Change tests to use -S instead of -c to work when an external assembler is used that is not present. NFCI.

Reviewed By: NoQ

Subscribers: Charusso, cfe-commits

Tags: #clang

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