platform/upstream/llvm.git
4 years ago[WebAssembly] SIMD Load and extend operations
Thomas Lively [Fri, 27 Sep 2019 02:06:50 +0000 (02:06 +0000)]
[WebAssembly] SIMD Load and extend operations

Summary:
As specified at
https://github.com/webassembly/simd/blob/master/proposals/simd/SIMD.md#load-and-extend.
These instructions are behind the unimplemented-simd128 target feature
for now because they have not been implemented in V8 yet.

Reviewers: aheejin

Subscribers: dschuff, sbc100, jgravelle-google, hiraditya, sunfish, llvm-commits

Tags: #llvm

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

llvm-svn: 373040

4 years agoRevert r373034
Nicholas Allegra [Fri, 27 Sep 2019 01:58:31 +0000 (01:58 +0000)]
Revert r373034

It breaks the build on MSVC.

llvm-svn: 373039

4 years agoSpeculative fix for gcc build.
Peter Collingbourne [Fri, 27 Sep 2019 01:35:04 +0000 (01:35 +0000)]
Speculative fix for gcc build.

llvm-svn: 373038

4 years agoFor P0784R7: add support for new (std::nothrow).
Richard Smith [Fri, 27 Sep 2019 01:26:49 +0000 (01:26 +0000)]
For P0784R7: add support for new (std::nothrow).

llvm-svn: 373037

4 years agoFor P0784R7: Add support for dynamic allocation with new / delete during
Richard Smith [Fri, 27 Sep 2019 01:26:47 +0000 (01:26 +0000)]
For P0784R7: Add support for dynamic allocation with new / delete during
constant evaluation.

llvm-svn: 373036

4 years agohwasan: Compatibility fixes for short granules.
Peter Collingbourne [Fri, 27 Sep 2019 01:02:10 +0000 (01:02 +0000)]
hwasan: Compatibility fixes for short granules.

We can't use short granules with stack instrumentation when targeting older
API levels because the rest of the system won't understand the short granule
tags stored in shadow memory.

Moreover, we need to be able to let old binaries (which won't understand
short granule tags) run on a new system that supports short granule
tags. Such binaries will call the __hwasan_tag_mismatch function when their
outlined checks fail. We can compensate for the binary's lack of support
for short granules by implementing the short granule part of the check in
the __hwasan_tag_mismatch function. Unfortunately we can't do anything about
inline checks, but I don't believe that we can generate these by default on
aarch64, nor did we do so when the ABI was fixed.

A new function, __hwasan_tag_mismatch_v2, is introduced that lets code
targeting the new runtime avoid redoing the short granule check. Because tag
mismatches are rare this isn't important from a performance perspective; the
main benefit is that it introduces a symbol dependency that prevents binaries
targeting the new runtime from running on older (i.e. incompatible) runtimes.

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

llvm-svn: 373035

4 years ago[Consumed][NFC] Refactor handleCall to take function argument list.
Nicholas Allegra [Thu, 26 Sep 2019 23:47:18 +0000 (23:47 +0000)]
[Consumed][NFC] Refactor handleCall to take function argument list.

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

llvm-svn: 373034

4 years agoRevert "gn build: (manually) merge r373028"
Dmitri Gribenko [Thu, 26 Sep 2019 23:30:47 +0000 (23:30 +0000)]
Revert "gn build: (manually) merge r373028"

This reverts commit r373029, which depends on r373028, which I reverted.

llvm-svn: 373033

4 years agoRevert "[clang-tidy] New check to warn when storing dispatch_once_t in non-static...
Dmitri Gribenko [Thu, 26 Sep 2019 23:28:31 +0000 (23:28 +0000)]
Revert "[clang-tidy] New check to warn when storing dispatch_once_t in non-static, non-global storage"

This reverts commit r373028, because the new test fails on Linux.

llvm-svn: 373032

4 years ago[X86] Remove CodeGenOnly instructions added in r373021, but keep the isel patterns...
Craig Topper [Thu, 26 Sep 2019 23:22:15 +0000 (23:22 +0000)]
[X86] Remove CodeGenOnly instructions added in r373021, but keep the isel patterns and add COPY_TO_REGCLASS to them.

llvm-svn: 373031

4 years agogn build: (manually) merge r373028
Nico Weber [Thu, 26 Sep 2019 23:17:25 +0000 (23:17 +0000)]
gn build: (manually) merge r373028

llvm-svn: 373029

4 years ago[clang-tidy] New check to warn when storing dispatch_once_t in non-static, non-global...
Stephane Moore [Thu, 26 Sep 2019 23:04:59 +0000 (23:04 +0000)]
[clang-tidy] New check to warn when storing dispatch_once_t in non-static, non-global storage

Summary:
Creates a new darwin ClangTidy module and adds the darwin-dispatch-once-nonstatic check that warns about dispatch_once_t variables not in static or global storage. This catches a missing static for local variables in e.g. singleton initialization behavior, and also warns on storing dispatch_once_t values in Objective-C instance variables. C/C++ struct/class instances may potentially live in static/global storage, and are ignored for this check.

The osx.API static analysis checker can find the non-static storage use of dispatch_once_t; I thought it useful to also catch this issue in clang-tidy when possible.

Contributed By: mwyman

Reviewers: benhamilton, hokein, stephanemoore, aaron.ballman, gribozavr

Reviewed By: stephanemoore, gribozavr

Subscribers: jkorous, arphaman, kadircet, usaxena95, NoQ, xazax.hun, lebedev.ri, mgorny, cfe-commits

Tags: #clang, #clang-tools-extra

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

llvm-svn: 373028

4 years ago[X86] Remove unused arguments from a tablegen multiclass. NFC
Craig Topper [Thu, 26 Sep 2019 22:56:19 +0000 (22:56 +0000)]
[X86] Remove unused arguments from a tablegen multiclass. NFC

llvm-svn: 373026

4 years ago[X86] Add VMOVSSZrrk/VMOVSDZrrk/VMOVSSZrrkz/VMOVSDZrrkz to getUndefRegClearance.
Craig Topper [Thu, 26 Sep 2019 22:56:06 +0000 (22:56 +0000)]
[X86] Add VMOVSSZrrk/VMOVSDZrrk/VMOVSSZrrkz/VMOVSDZrrkz to getUndefRegClearance.

We have isel patterns that can put an IMPLICIT_DEF on one of
the sources for these instructions. So we should make sure
we break any dependencies there. This should be done by
just using one of the other sources.

llvm-svn: 373025

4 years agoRemove the AliasAnalysis argument in function areMemAccessesTriviallyDisjoint
Changpeng Fang [Thu, 26 Sep 2019 22:53:44 +0000 (22:53 +0000)]
Remove the AliasAnalysis argument in function areMemAccessesTriviallyDisjoint

Reviewers:
  arsenm

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

llvm-svn: 373024

4 years ago[OpenMP 5.0] Fix user-defined mapper lookup in sema
Michael Kruse [Thu, 26 Sep 2019 22:53:01 +0000 (22:53 +0000)]
[OpenMP 5.0] Fix user-defined mapper lookup in sema

This patches fixes the case when a user-defined mapper is attached to
the elements of an array, and to report error when a mapper is used for
types other than struct, class, and union.

Patch by Lingda Li <lildmh@gmail.com>

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

llvm-svn: 373023

4 years agoAlways rebuild a DeclRefExpr if its FoundDecl would change.
Richard Smith [Thu, 26 Sep 2019 22:28:32 +0000 (22:28 +0000)]
Always rebuild a DeclRefExpr if its FoundDecl would change.

Fixes a regression introduced by r369999.

llvm-svn: 373022

4 years ago[X86] Add CodeGenOnly instructions for (f32 (X86selects $mask, (loadf32 addr), fp32im...
Craig Topper [Thu, 26 Sep 2019 22:23:09 +0000 (22:23 +0000)]
[X86] Add CodeGenOnly instructions for (f32 (X86selects $mask, (loadf32 addr), fp32imm0) to use masked MOVSS from memory.

Similar for f64 and having a non-zero passthru value.

We were previously not trying to fold the load at all. Using
a CodeGenOnly instruction allows us to use FR32X/FR64X as the
register class to avoid a bunch of COPY_TO_REGCLASS.

llvm-svn: 373021

4 years agoRevert [SLP] Fix for PR31847: Assertion failed: (isLoopInvariant(Operands[i], L)...
Jordan Rupprecht [Thu, 26 Sep 2019 22:09:17 +0000 (22:09 +0000)]
Revert [SLP] Fix for PR31847: Assertion failed: (isLoopInvariant(Operands[i], L) && "SCEVAddRecExpr operand is not loop-invariant!")

This reverts r372626 (git commit 6a278d9073bdc158d31d4f4b15bbe34238f22c18)

llvm-svn: 373019

4 years ago[LoopFusion] Add ability to fuse guarded loops
Kit Barton [Thu, 26 Sep 2019 21:42:45 +0000 (21:42 +0000)]
[LoopFusion] Add ability to fuse guarded loops

Summary:
This patch extends the current capabilities in loop fusion to fuse guarded loops
(as defined in https://reviews.llvm.org/D63885). The patch adds the necessary
safety checks to ensure that it safe to fuse the guarded loops (control flow
equivalent, no intervening code, and same guard conditions). It also provides an
alternative method to perform the actual fusion of guarded loops. The mechanics
to fuse guarded loops are slightly different then fusing non-guarded loops, so I
opted to keep them separate methods. I will be cleaning this up in later
patches, and hope to converge on a single method to fuse both guarded and
non-guarded loops, but for now I think the review will be easier to keep them
separate.

Reviewers: jdoerfert, Meinersbur, dmgreen, etiotto, Whitney

Subscribers: hiraditya, llvm-commits

Tags: #llvm

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

llvm-svn: 373018

4 years ago[Unroll] Do NOT unroll a loop with small runtime upperbound
Zhaoshi Zheng [Thu, 26 Sep 2019 21:40:27 +0000 (21:40 +0000)]
[Unroll] Do NOT unroll a loop with small runtime upperbound

For a runtime loop if we can compute its trip count upperbound:

Don't unroll if:
1. loop is not guaranteed to run either zero or upperbound iterations; and
2. trip count upperbound is less than UnrollMaxUpperBound
Unless user or TTI asked to do so.

If unrolling, limit unroll factor to loop's trip count upperbound.

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

Change-Id: I6083c46a9d98b2e22cd855e60523fdc5a4929c73
llvm-svn: 373017

4 years ago[lldb-vscode] correctly handle multiple sourceMap entries
Alex Langford [Thu, 26 Sep 2019 21:18:37 +0000 (21:18 +0000)]
[lldb-vscode] correctly handle multiple sourceMap entries

Summary:
`lldb-vscode` concatenates a string of sourceMap entries
specified in the config, but fails to put a space between
each entry, which causes the settings command to fail.
This patch adds a space between each mapping.

Patch by Richard Howell

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

llvm-svn: 373016

4 years ago[AMDGPU] copy OtherPredicates from pseudo to VOP3_Real
Stanislav Mekhanoshin [Thu, 26 Sep 2019 21:06:17 +0000 (21:06 +0000)]
[AMDGPU] copy OtherPredicates from pseudo to VOP3_Real

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

llvm-svn: 373015

4 years ago[DAGCombine][X86][AArch64][NFC] Add tests for shift-by-signext
Roman Lebedev [Thu, 26 Sep 2019 20:49:49 +0000 (20:49 +0000)]
[DAGCombine][X86][AArch64][NFC] Add tests for shift-by-signext

llvm-svn: 373014

4 years ago[InstCombine][NFC] Add tests for shift-by-signext
Roman Lebedev [Thu, 26 Sep 2019 20:49:30 +0000 (20:49 +0000)]
[InstCombine][NFC] Add tests for shift-by-signext

llvm-svn: 373013

4 years ago[InstCombine][NFC] Regenerate load-cmp.ll test
Roman Lebedev [Thu, 26 Sep 2019 20:49:21 +0000 (20:49 +0000)]
[InstCombine][NFC] Regenerate load-cmp.ll test

llvm-svn: 373012

4 years ago[LOOPGUARD] Disable loop with multiple loop exiting blocks.
Whitney Tsang [Thu, 26 Sep 2019 20:20:42 +0000 (20:20 +0000)]
[LOOPGUARD] Disable loop with multiple loop exiting blocks.
Summary: As discussed in the loop group meeting. With the current
definition of loop guard, we should not allow multiple loop exiting
blocks. For loops that has multiple loop exiting blocks, we can simply
unable to find the loop guard.
When getUniqueExitBlock() obtains a vector size not equals to one, that
means there is either no exit blocks or there exists more than one
unique block the loop exit to.
If we don't disallow loop with multiple loop exit blocks, then with our
current implementation, there can exist exit blocks don't post dominated
by the non pre-header successor of the guard block.
Reviewer: reames, Meinersbur, kbarton, etiotto, bmahjour
Reviewed By: Meinersbur, kbarton
Subscribers: fhahn, hiraditya, llvm-commits
Tag: LLVM
Differential Revision: https://reviews.llvm.org/D66529

llvm-svn: 373011

4 years ago[OPENMP50]Emit warnings if the functions was defined/used before marked
Alexey Bataev [Thu, 26 Sep 2019 20:04:15 +0000 (20:04 +0000)]
[OPENMP50]Emit warnings if the functions was defined/used before marked
declare variant.

We can use the original function if it was used/emitted already. So,
just use warnings for these cases, not errors.

llvm-svn: 373010

4 years ago[AIX]Emit function descriptor csect in assembly
Xiangling Liao [Thu, 26 Sep 2019 19:38:32 +0000 (19:38 +0000)]
[AIX]Emit function descriptor csect in assembly

This patch emits the function descriptor csect for functions with definitions
under both 32-bit/64-bit mode on AIX.

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

llvm-svn: 373009

4 years ago[NFC][emacs] remove out-of-date comment from tablegen-mode.el
Bob Haarman [Thu, 26 Sep 2019 19:36:01 +0000 (19:36 +0000)]
[NFC][emacs] remove out-of-date comment from tablegen-mode.el

Summary:
The syntax table was originally based on and attributed to
jasmin.el, but was rewritten in r45192, so the comment that
says the code comes from jasmin.el is no longer accurate. This
change removes the comment, shortening the code a bit.

Reviewers: MaskRay, lattner

Reviewed By: MaskRay

Subscribers: llvm-commits

Tags: #llvm

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

llvm-svn: 373008

4 years ago[clang-scan-deps] Allow continuation line backslashes followed by whitespace
Alex Lorenz [Thu, 26 Sep 2019 19:28:51 +0000 (19:28 +0000)]
[clang-scan-deps] Allow continuation line backslashes followed by whitespace
in the dependency source minimizer

Clang allows continuations that have whitespace between the backslash and the newline.
This patch ensures that the dependency source minimizer can handle the whitespace between
the backslash and the newline when looking for a line continuation.

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

llvm-svn: 373007

4 years ago[NFC] Precommit tests for D68089
David Bolvansky [Thu, 26 Sep 2019 19:01:18 +0000 (19:01 +0000)]
[NFC] Precommit tests for D68089

llvm-svn: 373006

4 years agoRevert "[analyzer] A speculative attempt to avoid gcc-7 crashes..."
Artem Dergachev [Thu, 26 Sep 2019 18:52:00 +0000 (18:52 +0000)]
Revert "[analyzer] A speculative attempt to avoid gcc-7 crashes..."

This reverts commit r372940 which was an overreaction to a flaky buildbot.

llvm-svn: 373005

4 years agoOnly pass -coverage-notes-file when emitting coverage
Reid Kleckner [Thu, 26 Sep 2019 18:13:19 +0000 (18:13 +0000)]
Only pass -coverage-notes-file when emitting coverage

The only functional change here is that -coverage-notes-file is not
passed to -cc1 in some situations.

This code appears to be trying to put the gcno and gcda output next to
the final object file, but it's doing that in a really convoluted way
that needs to be re-examined. It looks for -c or -S in the original
command, and then looks at the -o argument if present in order to handle
the -fno-integrated-as case. However, this doesn't work if this is a
link command with multiple inputs. I looked into fixing this, but the
check-profile test suite has a lot of dependencies on this behavior, so
I left it all alone.

llvm-svn: 373004

4 years agoConvert FileSystem::Open() to return Expected<FileUP>
Lawrence D'Anna [Thu, 26 Sep 2019 17:54:59 +0000 (17:54 +0000)]
Convert FileSystem::Open() to return Expected<FileUP>

Summary:
This patch converts FileSystem::Open from this prototype:

Status
Open(File &File, const FileSpec &file_spec, ...);

to this one:

llvm::Expected<std::unique_ptr<File>>
Open(const FileSpec &file_spec, ...);

This is beneficial on its own, as llvm::Expected is a more modern
and recommended error type than Status.  It is also a necessary step
towards https://reviews.llvm.org/D67891, and further developments
for lldb_private::File.

Reviewers: JDevlieghere, jasonmolenda, labath

Reviewed By: labath

Subscribers: mgorny, lldb-commits

Tags: #lldb

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

llvm-svn: 373003

4 years agoDocument requirement of function attributes with constrained floating
Kevin P. Neal [Thu, 26 Sep 2019 17:50:25 +0000 (17:50 +0000)]
Document requirement of function attributes with constrained floating
point.

Reviewed by:    andrew.w.kaylor, uweigand, efriedma
Approved by:    andrew.w.kaylor
Differential Revision:  https://reviews.llvm.org/D67839

llvm-svn: 373002

4 years agoDAGISelMatcherOpt - TGParser::ParseOperation - silence static analyzer cast_or_null...
Simon Pilgrim [Thu, 26 Sep 2019 17:38:47 +0000 (17:38 +0000)]
DAGISelMatcherOpt - TGParser::ParseOperation - silence static analyzer cast_or_null<CheckTypeMatcher> null dereference warning. NFCI.

The static analyzer is warning about a potential null dereference, replace with an null/isa assertion and cast<CheckTypeMatcher>.

llvm-svn: 373001

4 years ago[InstCombine] Use m_Zero instead of isNullValue() when checking if a GEP index is...
Craig Topper [Thu, 26 Sep 2019 17:20:50 +0000 (17:20 +0000)]
[InstCombine] Use m_Zero instead of isNullValue() when checking if a GEP index is all zeroes to prevent an infinite loop.

The test case here previously infinite looped. Only one element from the GEP is used so SimplifyDemandedVectorElts would replace the other lanes in each index with undef leading to the first index being <0, undef, undef, undef>. But there's a GEP transform that tries to replace an index into a 0 sized type with a zero index. But the zero index check only works on ConstantInt 0 or ConstantAggregateZero so it would turn the index back to zeroinitializer. Resulting in a loop.

The fix is to use m_Zero() to allow a vector of zeroes and undefs.

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

llvm-svn: 373000

4 years agoMove normalization of `\` in #includes from -fms-compatibility to -fms-extensions
Reid Kleckner [Thu, 26 Sep 2019 17:19:22 +0000 (17:19 +0000)]
Move normalization of `\` in #includes from -fms-compatibility to -fms-extensions

Handling backslashes in include paths in the implementation isn't
non-conforming.

llvm-svn: 372999

4 years agoSystemInitializer: Define macros for experimental targets too
Pavel Labath [Thu, 26 Sep 2019 17:15:18 +0000 (17:15 +0000)]
SystemInitializer: Define macros for experimental targets too

llvm-svn: 372998

4 years agoTGParser::ParseOperation - silence static analyzer dyn_cast<TypedInit> null dereferen...
Simon Pilgrim [Thu, 26 Sep 2019 17:11:02 +0000 (17:11 +0000)]
TGParser::ParseOperation - silence static analyzer dyn_cast<TypedInit> null dereference warning. NFCI.

The static analyzer is warning about a potential null dereference, but we should be able to use cast<TypedInit> directly and if not assert will fire for us.

I've also pulled out the repeated getType() call which was the only user of the pointer.

llvm-svn: 372997

4 years ago[ELF] Set SectionBase::partition in processSectionCommands
Fangrui Song [Thu, 26 Sep 2019 17:10:09 +0000 (17:10 +0000)]
[ELF] Set SectionBase::partition in processSectionCommands

Fixes PR43461 (regression caused by D67504)

The partition field of a SECTIONS-specified section is not set after
D67504. The 0 value affects findSection() which checks if the partition
field is 1.

So `Out::initArray = findSection(".init_array")` is null, and
DT_INIT_ARRAYSZ is not set.

Reviewed By: peter.smith

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

llvm-svn: 372996

4 years ago[lld][mach-o] Avoid segfaulting when handling an empty section list.
Matt Davis [Thu, 26 Sep 2019 17:03:20 +0000 (17:03 +0000)]
[lld][mach-o] Avoid segfaulting when handling an empty section list.

Summary:
The following patch avoids segfaulting if the section list is empty when writing a mach-o MH_OBJECT.  I ran into this case from a more complicated example trying to dead_strip while using '-r' in lld.

I'm not sure if having empty sections is a legal mach-o, but it does seem that other llvm-binutils tools can ingest such a boring object with out issue.  Would it be better to emit an error, emit a warning, or do nothing?  It seems that adding a warning diagnostic might be helpful to users, as I did not expect to have a section-less object when the linker was done.

Reviewers: kledzik, ruiu

Subscribers: llvm-commits, jrm

Tags: #lld, #llvm

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

llvm-svn: 372995

4 years agoUn-XFAIL coverage_no_integrated_as.c test on Windows
Reid Kleckner [Thu, 26 Sep 2019 16:56:25 +0000 (16:56 +0000)]
Un-XFAIL coverage_no_integrated_as.c test on Windows

You can't use -fno-integrated-as for *-msvc triples because no usable
standalone assembler exists. Perhaps we could teach clang to emit a .s
and then reinvoke itself, but that's a bit silly.

Anyway, fix the test by using an Itanium ABI triple, which will become
mingw, which will assume gnu as is a usable assembler.

llvm-svn: 372994

4 years agoConstantFold - silence static analyzer dyn_cast<ExtractValueInst> null dereference...
Simon Pilgrim [Thu, 26 Sep 2019 16:30:36 +0000 (16:30 +0000)]
ConstantFold - silence static analyzer dyn_cast<ExtractValueInst> null dereference warning. NFCI.

The static analyzer is warning about a potential null dereference, but we should be able to use cast<ExtractValueInst> directly and if not assert will fire for us.

llvm-svn: 372993

4 years agoARMBaseInstrInfo getOperandLatency - silence static analyzer dyn_cast<> null derefere...
Simon Pilgrim [Thu, 26 Sep 2019 16:05:55 +0000 (16:05 +0000)]
ARMBaseInstrInfo getOperandLatency - silence static analyzer dyn_cast<> null dereference warnings. NFCI.

The static analyzer is warning about potential null dereferences, but we should be able to use cast<> directly and if not assert will fire for us.

llvm-svn: 372992

4 years ago[PowerPC] Fix typo in rL372985
Jinsong Ji [Thu, 26 Sep 2019 15:49:11 +0000 (15:49 +0000)]
[PowerPC] Fix typo in rL372985

llvm-svn: 372991

4 years ago[LoopInfo] Limit the iterations to check whether a loop has dedicated exits
Wei Mi [Thu, 26 Sep 2019 15:36:25 +0000 (15:36 +0000)]
[LoopInfo] Limit the iterations to check whether a loop has dedicated exits
for extreme large case.

We had a case that a single loop which has 4000 exits and the average number
of predecessors of each exit is > 1000, and we found compiling the case spent
a significant amount of time on checking whether a loop has dedicated exits.
This patch adds a limit for the iterations to the check. With the patch, the
time to compile our testcase reduced from 1000s to 200s (clang release build).

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

llvm-svn: 372990

4 years agoHandle successor's PHI node correctly when flattening CFG merges two if-regions
Jakub Kuderski [Thu, 26 Sep 2019 15:20:17 +0000 (15:20 +0000)]
Handle successor's PHI node correctly when flattening CFG merges two if-regions

Summary:
FlattenCFG merges two 'if' basicblocks by inserting one basicblock
to another basicblock. The inserted basicblock can have a successor
that contains a PHI node whoes incoming basicblock is the inserted
basicblock. Since the existing code does not handle it, it becomes
a badref.

if (cond1)
  statement
if (cond2)
  statement
successor - contains PHI node whose predecessor is cond2

-->
if (cond1 || cond2)
  statement
(BB for cond2 was deleted)
successor - contains PHI node whose predecessor is cond2 --> bad ref!

Author: Jaebaek Seo

Reviewers: asbirlea, kuhar, tstellar, chandlerc, davide, dexonsmith

Reviewed By: kuhar

Subscribers: hiraditya, llvm-commits

Tags: #llvm

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

llvm-svn: 372989

4 years agoFix typo
Matt Arsenault [Thu, 26 Sep 2019 15:20:16 +0000 (15:20 +0000)]
Fix typo

llvm-svn: 372988

4 years ago[NFC] Rearrange Value::getPointerAlignment
Guillaume Chatelet [Thu, 26 Sep 2019 15:13:05 +0000 (15:13 +0000)]
[NFC] Rearrange Value::getPointerAlignment

Reviewers: courbet

Subscribers: hiraditya, llvm-commits

Tags: #llvm

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

llvm-svn: 372987

4 years agoUpdated comments in LWZtoc pseudo expansion.
Sean Fertile [Thu, 26 Sep 2019 15:12:30 +0000 (15:12 +0000)]
Updated comments in LWZtoc pseudo expansion.

Refined a couple of the comments in the LWZtoc expansion code based on
a post commit review comment.

llvm-svn: 372986

4 years ago[PowerPC] Add missing pattern for VSX Scalar Negative Multiply-Subtract Single Precision
Jinsong Ji [Thu, 26 Sep 2019 15:11:33 +0000 (15:11 +0000)]
[PowerPC] Add missing pattern for VSX Scalar Negative Multiply-Subtract Single Precision

Summary:
This was found during review of https://reviews.llvm.org/D66050.
In the simple test of fdiv, we miss to fold
```
        fneg 2, 2
        xsmaddasp 3, 2, 0
```
to
```
        xsnmsubasp 3, 2, 0
```
We have the patterns for Double Precision and vectors, just missing
Single Precision, the patch add that.

Reviewers: #powerpc, hfinkel, nemanjai, steven.zhang

Reviewed By: #powerpc, steven.zhang

Subscribers: wuzish, hiraditya, kbarton, MaskRay, shchenz, llvm-commits

Tags: #llvm

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

llvm-svn: 372985

4 years agobuild_llvm_package.bat: Bootstrap with VS 2019
Hans Wennborg [Thu, 26 Sep 2019 14:57:55 +0000 (14:57 +0000)]
build_llvm_package.bat: Bootstrap with VS 2019

llvm-svn: 372984

4 years ago[libc++] Take 2: Implement LWG 2510
Louis Dionne [Thu, 26 Sep 2019 14:51:10 +0000 (14:51 +0000)]
[libc++] Take 2: Implement LWG 2510

Summary:
LWG2510 makes tag types like allocator_arg_t explicitly default
constructible instead of implicitly default constructible. It also
makes the constructors for std::pair and std::tuple conditionally
explicit based on the explicit-ness of the default constructibility
for the pair/tuple's elements.

This was previously committed as r372777 and reverted in r372832 due to
the commit breaking LLVM's build in C++14 mode. This issue has now been
addressed.

Reviewers: mclow.lists

Subscribers: christof, jkorous, dexonsmith, libcxx-commits

Tags: #libc

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

llvm-svn: 372983

4 years ago[clangd] Bump vscode-clangd v0.0.18
Haojian Wu [Thu, 26 Sep 2019 14:11:23 +0000 (14:11 +0000)]
[clangd] Bump vscode-clangd v0.0.18

CHANGELOG:
- enable semantic highlighting by default
- upgrade the LSP dependencies to pickup the incoming LSP v3.15.0

llvm-svn: 372981

4 years ago[clangd][vscode] Add npm helper commands to package/release the extension.
Haojian Wu [Thu, 26 Sep 2019 14:04:52 +0000 (14:04 +0000)]
[clangd][vscode] Add npm helper commands to package/release the extension.

Summary: Help to fix https://github.com/clangd/clangd/issues/159.

Reviewers: ilya-biryukov

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

Tags: #clang

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

llvm-svn: 372980

4 years agoReturn results by value from ClangTidyCheckFactories::createChecks
Dmitri Gribenko [Thu, 26 Sep 2019 13:55:01 +0000 (13:55 +0000)]
Return results by value from ClangTidyCheckFactories::createChecks

llvm-svn: 372979

4 years agoUse std::unique_ptr in ClangTidyCheckFactories
Dmitri Gribenko [Thu, 26 Sep 2019 13:47:29 +0000 (13:47 +0000)]
Use std::unique_ptr in ClangTidyCheckFactories

I had to explicitly define some destructors that could only be defined
in the corresponding .cpp files.

llvm-svn: 372978

4 years ago[FlattenCFG] Silence static analyzer dyn_cast<BranchInst> null dereference warnings...
Simon Pilgrim [Thu, 26 Sep 2019 13:33:15 +0000 (13:33 +0000)]
[FlattenCFG] Silence static analyzer dyn_cast<BranchInst> null dereference warnings. NFCI.

The static analyzer is warning about a potential null dereferences, but we should be able to use cast<BranchInst> directly and if not assert will fire for us.

llvm-svn: 372977

4 years ago[lldb] Code cleanup: Simplify SBCommandReturnObject
Jan Kratochvil [Thu, 26 Sep 2019 13:31:59 +0000 (13:31 +0000)]
[lldb] Code cleanup: Simplify SBCommandReturnObject

A simplification for D67589. m_opaque_up can never be nullptr (unless one calls
a ctor with nullptr or one uses SetLLDBObjectPtr with nullptr).

Also protected SetLLDBObjectPtr is not used anywhere (I haven't found it would
ever be used).

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

llvm-svn: 372976

4 years ago[OpenCL] Add -Wconversion to fdeclare-opencl-builtins test
Sven van Haastregt [Thu, 26 Sep 2019 13:31:36 +0000 (13:31 +0000)]
[OpenCL] Add -Wconversion to fdeclare-opencl-builtins test

Add the -Wconversion -Werror options to check no unexpected conversion
is done.

Patch by Pierre Gondois and Sven van Haastregt.

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

llvm-svn: 372975

4 years ago[lldb][modern-type-lookup] Fix crash when activating modern-type-lookup on Linux
Raphael Isemann [Thu, 26 Sep 2019 12:33:48 +0000 (12:33 +0000)]
[lldb][modern-type-lookup] Fix crash when activating modern-type-lookup on Linux

There is no ClangModulesDeclVendor on Linux so that cast is triggering an assert.
Let's just remove it as it just casts the type to itself.

llvm-svn: 372974

4 years ago[llvm-ar][test] Move MRI tests from "llvm/test/Object/"
Owen Reynolds [Thu, 26 Sep 2019 12:32:11 +0000 (12:32 +0000)]
[llvm-ar][test] Move MRI tests from "llvm/test/Object/"

llvm/test/Object/ contains tests for the ArchiveWriter library, however
support for MRI scripts is found in llvm-ar and not the library. This
diff moves the MRI related tests and removes those that are duplicates.

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

llvm-svn: 372973

4 years ago[InstCombine] Don't assume CmpInst has been visited in getFlippedStrictnessPredicateA...
Bjorn Pettersson [Thu, 26 Sep 2019 12:16:01 +0000 (12:16 +0000)]
[InstCombine] Don't assume CmpInst has been visited in getFlippedStrictnessPredicateAndConstant

Summary:
Removing an assumption (assert) that the CmpInst already has been
simplified in getFlippedStrictnessPredicateAndConstant. Solution is
to simply bail out instead of hitting the assertion. Instead we
assume that any profitable rewrite will happen in the next iteration
of InstCombine.

The reason why we can't assume that the CmpInst already has been
simplified is that the worklist does not guarantee such an ordering.

Solves https://bugs.llvm.org/show_bug.cgi?id=43376

Reviewers: spatel, lebedev.ri

Reviewed By: lebedev.ri

Subscribers: hiraditya, llvm-commits

Tags: #llvm

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

llvm-svn: 372972

4 years ago[lldb][www] Update bot links
Raphael Isemann [Thu, 26 Sep 2019 11:48:45 +0000 (11:48 +0000)]
[lldb][www] Update bot links

llvm-svn: 372971

4 years ago[clangd][vscode] Update vscode lsp dependencies to pickup the new changes in LSP...
Haojian Wu [Thu, 26 Sep 2019 11:35:34 +0000 (11:35 +0000)]
[clangd][vscode] Update vscode lsp dependencies to pickup the new changes in LSP v3.15.0.

Summary: This would enable the newly-added semantic selection feature in vscode.

Reviewers: usaxena95

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

Tags: #clang

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

llvm-svn: 372970

4 years ago[clangd][vscode] Turn on the semantic highlighting by default.
Haojian Wu [Thu, 26 Sep 2019 11:34:11 +0000 (11:34 +0000)]
[clangd][vscode] Turn on the semantic highlighting by default.

Summary:
We have turned on the flag manually and used it for a while, and don't see any
major issues, let's enable it by default.

Reviewers: ilya-biryukov

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

Tags: #clang

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

llvm-svn: 372969

4 years ago[llvm-exegesis][NFC] Remove dead code.
Clement Courbet [Thu, 26 Sep 2019 11:32:44 +0000 (11:32 +0000)]
[llvm-exegesis][NFC] Remove dead code.

Summary: `hasAliasingImplicitRegistersThrough()` is no longer used.

Reviewers: gchatelet

Subscribers: tschuett, llvm-commits

Tags: #llvm

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

llvm-svn: 372968

4 years ago[Testing] unbreak after r372963
David Zarzycki [Thu, 26 Sep 2019 11:32:02 +0000 (11:32 +0000)]
[Testing] unbreak after r372963

llvm-svn: 372967

4 years agoMetadataLoader lazyLoadOneMetadata - silence static analyzer dyn_cast<MDNode> null...
Simon Pilgrim [Thu, 26 Sep 2019 11:30:47 +0000 (11:30 +0000)]
MetadataLoader lazyLoadOneMetadata - silence static analyzer dyn_cast<MDNode> null dereference warning. NFCI.

The static analyzer is warning about a potential null dereference, but we should be able to use cast<MDNode> directly and if not assert will fire for us.

llvm-svn: 372966

4 years ago[lldb][modern-type-lookup] Add test for using the ClangModulesDeclVendor
Raphael Isemann [Thu, 26 Sep 2019 11:30:41 +0000 (11:30 +0000)]
[lldb][modern-type-lookup] Add test for using the ClangModulesDeclVendor

llvm-svn: 372965

4 years agoRemove local shadow constant. NFCI.
Simon Pilgrim [Thu, 26 Sep 2019 11:30:35 +0000 (11:30 +0000)]
Remove local shadow constant. NFCI.

ValueTracking.cpp already has a local static MaxDepth = 6 constant - this one seems to have been missed when rL124183 landed.

llvm-svn: 372964

4 years ago[libcxx] Do not implicitly #include assert.h
David Zarzycki [Thu, 26 Sep 2019 11:12:29 +0000 (11:12 +0000)]
[libcxx] Do not implicitly #include assert.h

Users should only get the assert() macros if they explicitly include
them.

Found after switching from the GNU C++ stdlib to the LLVM C++ stdlib.

llvm-svn: 372963

4 years ago[ValueTracking] Silence static analyzer dyn_cast<Operator> null dereference warnings...
Simon Pilgrim [Thu, 26 Sep 2019 11:09:08 +0000 (11:09 +0000)]
[ValueTracking] Silence static analyzer dyn_cast<Operator> null dereference warnings. NFCI.

The static analyzer is warning about a potential null dereferences, but since the pointer is only used in a switch statement for Operator::getOpcode() (with an empty default) then its easiest just to wrap this in a null test as the dyn_cast might return null here.

llvm-svn: 372962

4 years agoDon't stop execution in batch mode when process stops with SIGINT or SIGSTOP
Tatyana Krasnukha [Thu, 26 Sep 2019 10:57:11 +0000 (10:57 +0000)]
Don't stop execution in batch mode when process stops with SIGINT or SIGSTOP

Summary: Usually, SIGINT and SIGSTOP don't imply a crash, e.g. SIGSTOP is sent on process launch and attach on some platforms.

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

llvm-svn: 372961

4 years agoMemorySanitizer - silence static analyzer dyn_cast<> null dereference warnings. NFCI.
Simon Pilgrim [Thu, 26 Sep 2019 10:56:14 +0000 (10:56 +0000)]
MemorySanitizer - silence static analyzer dyn_cast<> null dereference warnings. NFCI.

The static analyzer is warning about a potential null dereferences, but we should be able to use cast<> directly and if not assert will fire for us.

llvm-svn: 372960

4 years agoPGOMemOPSizeOpt - silence static analyzer dyn_cast<MemIntrinsic> null dereference...
Simon Pilgrim [Thu, 26 Sep 2019 10:56:07 +0000 (10:56 +0000)]
PGOMemOPSizeOpt - silence static analyzer dyn_cast<MemIntrinsic> null dereference warning. NFCI.

The static analyzer is warning about a potential null dereference, but we should be able to use cast<MemIntrinsic> directly and if not assert will fire for us.

llvm-svn: 372959

4 years ago[BPF] Remove unused variables. NFCI.
Simon Pilgrim [Thu, 26 Sep 2019 10:55:57 +0000 (10:55 +0000)]
[BPF] Remove unused variables. NFCI.

Fixes a dyn_cast<> null dereference warning.

llvm-svn: 372958

4 years ago[MIPS GlobalISel] Lower aggregate structure return arguments
Petar Avramovic [Thu, 26 Sep 2019 10:48:07 +0000 (10:48 +0000)]
[MIPS GlobalISel] Lower aggregate structure return arguments

Implement aggregate structure split to simpler types in splitToValueTypes.
splitToValueTypes is used for return values.
According to MipsABIInfo from clang/lib/CodeGen/TargetInfo.cpp,
aggregate structure arguments for O32 always get simplified and thus
will remain unsupported by the MIPS GlobalISel for the time being.
For O32, aggregate structures can be encountered only for complex number
returns e.g. 'complex float' or 'complex double' from <complex.h>.

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

llvm-svn: 372957

4 years agoHexagonAsmParser::ParseDirectiveFalign - silence static analyzer dyn_cast<MCConstantE...
Simon Pilgrim [Thu, 26 Sep 2019 10:35:19 +0000 (10:35 +0000)]
HexagonAsmParser::ParseDirectiveFalign - silence static analyzer dyn_cast<MCConstantExpr> null dereference warning. NFCI.

The static analyzer is warning about a potential null dereference, but we should be able to use cast<MCConstantExpr> directly and if not assert will fire for us.

llvm-svn: 372956

4 years ago[SLPVectorizer][X86] Add SSE common check prefix to let us merge SSE2+SLM checks
Simon Pilgrim [Thu, 26 Sep 2019 10:23:57 +0000 (10:23 +0000)]
[SLPVectorizer][X86] Add SSE common check prefix to let us merge SSE2+SLM checks

llvm-svn: 372955

4 years ago[CostModel][X86] Fix SLM <2 x i64> icmp costs
Simon Pilgrim [Thu, 26 Sep 2019 10:14:38 +0000 (10:14 +0000)]
[CostModel][X86] Fix SLM <2 x i64> icmp costs

SLM is 2 x slower for <2 x i64> comparison ops than other vector types, we should account for this like we do for SLM <2 x i64> add/sub/mul costs.

This should remove some of the SLM codegen diffs in D43582

llvm-svn: 372954

4 years ago[clang-tidy] Make llvm-header-guard work on llvm git monorepo
Haojian Wu [Thu, 26 Sep 2019 09:56:37 +0000 (09:56 +0000)]
[clang-tidy] Make llvm-header-guard work on llvm git monorepo

Reviewers: gribozavr

Reviewed By: gribozavr

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

Tags: #clang

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

llvm-svn: 372953

4 years agoSystemInitializer: Use Targets.def to selectively initialize ABI plugins
Pavel Labath [Thu, 26 Sep 2019 09:47:32 +0000 (09:47 +0000)]
SystemInitializer: Use Targets.def to selectively initialize ABI plugins

This avoids having to define additional macros in the cmake file, and
and also makes the logic in the cpp files more compact. It is also
easily extendible to other plugin types (instruction emulation?) that
should only be initialized if the corresponding llvm target is built.

Thanks to Ilya Birukov for pointing me to this file.

llvm-svn: 372952

4 years ago[mips] Relax jalr/jr instructions using R_MIPS_JALR relocation
Simon Atanasyan [Thu, 26 Sep 2019 09:13:20 +0000 (09:13 +0000)]
[mips] Relax jalr/jr instructions using R_MIPS_JALR relocation

The R_MIPS_JALR relocation denotes jalr/jr instructions in position
independent code. Both these instructions take a target's address from
the $25 register. If offset to the target symbol fits into the 18-bits,
it's more efficient to replace jalr/jr by bal/b instructions.

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

llvm-svn: 372951

4 years ago[SystemZ] Recognize mnop-mcount in backend
Jonas Paulsson [Thu, 26 Sep 2019 08:38:07 +0000 (08:38 +0000)]
[SystemZ]  Recognize mnop-mcount in backend

With -pg -mfentry -mnop-mcount, a nop is emitted instead of the call to
fentry.

Review: Ulrich Weigand
https://reviews.llvm.org/D67765

llvm-svn: 372950

4 years ago[Testing] Workaround libcxx bug when OS is "none"
David Zarzycki [Thu, 26 Sep 2019 08:19:44 +0000 (08:19 +0000)]
[Testing] Workaround libcxx bug when OS is "none"

If clang is configured to use libcxx as the default C++ standard
library, then using "none" for the OS in the target triple will cause
libcxx to #error needlessly. Passing -nostdinc++ is a workaround for
these tests. See also: https://reviews.llvm.org/D68075

Please note: this workaround will probably exist for a few years until
the installed version of libcxx is updated.

llvm-svn: 372949

4 years ago[clangd] Add a helper for extracting nonlocal decls in a FunctionDecl
Kadir Cetinkaya [Thu, 26 Sep 2019 07:27:43 +0000 (07:27 +0000)]
[clangd] Add a helper for extracting nonlocal decls in a FunctionDecl

Summary:
To be used by define-inline code action to determine whether the
function/method body will still be valid in another context.

Traverses clang-ast to find all decl nodes under the function decl and stores
the non-local ones.

Reviewers: hokein

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

Tags: #clang

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

llvm-svn: 372948

4 years ago[X86] Remove isCodeGenOnly from (V)ROUND.*_Int and put it on the non _Int form instead.
Craig Topper [Thu, 26 Sep 2019 07:27:26 +0000 (07:27 +0000)]
[X86] Remove isCodeGenOnly from (V)ROUND.*_Int and put it on the non _Int form instead.

This matches what's done for VRNDSCALE and most other instructions.

This mainly determines which instruction will be preferred by
disassembler and assembly parser. The printing and encoding
information is the same.

We prefer the _Int form since it uses the VR128 class due to
intrinsic interface. For some of EVEX features like embedded
rounding, we only select from intrinsics today. So there is
only a VR128 version. So making the VR128 version the preferred
is overally consistent.

llvm-svn: 372947

4 years ago[lldb][NFC] Use AppendEmptyArgument in CompletionRequest constructor
Raphael Isemann [Thu, 26 Sep 2019 07:06:05 +0000 (07:06 +0000)]
[lldb][NFC] Use AppendEmptyArgument in CompletionRequest constructor

We now have a utility function for this purpose.

(Also fixing the typo in the related comment while I'm at it.)

llvm-svn: 372946

4 years ago[analyzer] A speculative attempt to avoid gcc-7 crashes caused by r372942.
Artem Dergachev [Thu, 26 Sep 2019 07:01:31 +0000 (07:01 +0000)]
[analyzer] A speculative attempt to avoid gcc-7 crashes caused by r372942.

llvm-svn: 372945

4 years ago[SortIncludesTest] Add SortPriority fields to fix -Wmissing-field-initializers after...
Mikael Holmen [Thu, 26 Sep 2019 06:49:37 +0000 (06:49 +0000)]
[SortIncludesTest] Add SortPriority fields to fix -Wmissing-field-initializers after D64695/r372919

llvm-svn: 372944

4 years ago [IfConversion] Disallow TBB == FBB for valid triangles
Mikael Holmen [Thu, 26 Sep 2019 06:35:55 +0000 (06:35 +0000)]
 [IfConversion] Disallow TBB == FBB for valid triangles

Summary:
Previously the case

     EBB
     | \_
     |  |
     | TBB
     |  /
     FBB

was treated as a valid triangle also when TBB and FBB was the same basic
block. This could then lead to an invalid CFG when we removed the edge
from EBB to TBB, since that meant we would also remove the edge from EBB
to FBB.

Since TBB == FBB is quite a degenerated case of a triangle, we now
don't treat it as a valid triangle anymore, and thus we will avoid the
trouble with updating the CFG.

Reviewers: efriedma, dmgreen, kparzysz

Reviewed By: efriedma

Subscribers: bjope, hiraditya, llvm-commits

Tags: #llvm

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

llvm-svn: 372943

4 years ago[analyzer] Avoid small vectors of non-default-constructibles.
Artem Dergachev [Thu, 26 Sep 2019 06:33:21 +0000 (06:33 +0000)]
[analyzer] Avoid small vectors of non-default-constructibles.

Unconfuses certain compilers.

llvm-svn: 372942

4 years ago[X86] Mark the EVEX encoded PSADBW instructions as commutable to enable load folding...
Craig Topper [Thu, 26 Sep 2019 04:42:58 +0000 (04:42 +0000)]
[X86] Mark the EVEX encoded PSADBW instructions as commutable to enable load folding of the other operand.

The SSE and VEX versions are already correct.

llvm-svn: 372941

4 years ago[ConstantFolding] Use FoldBitCast correctly
Keno Fischer [Thu, 26 Sep 2019 02:07:51 +0000 (02:07 +0000)]
[ConstantFolding] Use FoldBitCast correctly

Previously we might attempt to use a BitCast to turn bits into vectors of pointers,
but that requires an inttoptr cast to be legal. Add an assertion to detect the formation of illegal bitcast attempts
early (in the tests, we often constant-fold away the result before getting to this assertion check),
while being careful to still handle the early-return conditions without adding extra complexity in the result.

Patch by Jameson Nash <jameson@juliacomputing.com>.

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

llvm-svn: 372940

4 years ago[clang-format] Add SortPriority fields to fix -Wmissing-field-initializers after...
Fangrui Song [Thu, 26 Sep 2019 02:02:17 +0000 (02:02 +0000)]
[clang-format] Add SortPriority fields to fix -Wmissing-field-initializers after D64695/r372919

llvm-svn: 372939

4 years agoImprove C API support for atomicrmw and cmpxchg.
Nick Lewycky [Thu, 26 Sep 2019 00:58:55 +0000 (00:58 +0000)]
Improve C API support for atomicrmw and cmpxchg.

atomicrmw and cmpxchg have a volatile flag, so allow them to be get and set with LLVM{Get,Set}Volatile. atomicrmw and fence have orderings, so allow them to be get and set with LLVM{Get,Set}Ordering. Add missing LLVMAtomicRMWBinOpFAdd and LLVMAtomicRMWBinOpFSub enum constants. AtomicCmpXchg also has a weak flag, add a getter/setter for that too. Add a getter/setter for the binary-op of an atomicrmw.

atomicrmw and cmpxchg have a volatile flag, so allow it to be set/get with LLVMGetVolatile and LLVMSetVolatile. Add missing LLVMAtomicRMWBinOpFAdd and LLVMAtomicRMWBinOpFSub enum constants. AtomicCmpXchg also has a weak flag, add a getter/setter for that too. Add a getter/setter for the binary-op of an atomicrmw.

Add LLVMIsA## for CatchSwitchInst, CallBrInst and FenceInst, as well as AtomicCmpXchgInst and AtomicRMWInst.

Update llvm-c-test to include atomicrmw and fence, and to copy volatile for the four applicable instructions.

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

llvm-svn: 372938

4 years ago[libFuzzer] [NFC] Fix grammar error with "it's"
Mitch Phillips [Thu, 26 Sep 2019 00:54:30 +0000 (00:54 +0000)]
[libFuzzer] [NFC] Fix grammar error with "it's"

llvm-svn: 372937