platform/upstream/llvm.git
5 years ago[lldb][NFC] Address review comments to StringList for-loop support
Raphael Isemann [Mon, 19 Aug 2019 07:22:19 +0000 (07:22 +0000)]
[lldb][NFC] Address review comments to StringList for-loop support

llvm-svn: 369237

5 years agoRevert [Attributor] Fix: Do not partially resolve returned calls.
David L. Jones [Mon, 19 Aug 2019 07:16:24 +0000 (07:16 +0000)]
Revert [Attributor] Fix: Do not partially resolve returned calls.

This reverts r369160 (git commit f72d9b1c97b41fff48ad1eecbba59a29c171bff4)

r369160 caused some tests to fail under UBSAN. See thread on llvm-commits.

llvm-svn: 369236

5 years ago[lldb] Remove unused inheritance in RegularExpression
Jan Kratochvil [Mon, 19 Aug 2019 07:06:56 +0000 (07:06 +0000)]
[lldb] Remove unused inheritance in RegularExpression

D66174 left inherited llvm::Regex which is now a member variable there.

Approved as a part of: https://reviews.llvm.org/D66392#1634575

llvm-svn: 369235

5 years agoRevert r369230 and r369231
Seiya Nuta [Mon, 19 Aug 2019 06:45:48 +0000 (06:45 +0000)]
Revert r369230 and r369231

Looks these commits break CI builds:

- http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-gn/builds/4159

This commit reverts r369230 and r369231 (git coommit: 4a198a7 and dee9546).

llvm-svn: 369234

5 years ago[MC] Don't emit .symver redirected symbols to the symbol table
Fangrui Song [Mon, 19 Aug 2019 06:17:30 +0000 (06:17 +0000)]
[MC] Don't emit .symver redirected symbols to the symbol table

GNU as keeps the original symbol in the symbol table for defined @ and
@@, but suppresses it in other cases (@@@ or undefined). The original
symbol is usually undesired:
In a shared object, the original symbol can be localized with a version
script, but it is hard to remove/localize in an archive:

1) a post-processing step removes the undesired original symbol
2) consumers (executable) of the archive are built with the
   version script

Moreover, it can cause linker issues like binutils PR/18703 if the
original symbol name and the base name of the versioned symbol is the
same (both ld.bfd and gold have some code to work around defined @ and
@@). In lld, if it sees f and f@v1:

  --version-script =(printf 'v1 {};') => f and f@v1
  --version-script =(printf 'v1 { f; };') => f@v1 and f@@v1

It can be argued that @@@ added on 2000-11-13 corrected the @ and @@ mistake.

This patch catches some more multiple version errors (defined @ and @@),
and consistently suppress the original symbol. This addresses all the
problems listed above.

If the user wants other aliases to the versioned symbol, they can copy
the original symbol to other symbol names with .set directive, e.g.

    .symver f, f@v1  # emit f@v1 but not f into .symtab
    .set f_impl, f   # emit f_impl into .symtab

llvm-svn: 369233

5 years ago[X86] Teach lower1BitShuffle to match right shifts with upper zero elements on types...
Craig Topper [Mon, 19 Aug 2019 05:45:39 +0000 (05:45 +0000)]
[X86] Teach lower1BitShuffle to match right shifts with upper zero elements on types that don't natively support KSHIFT.

We can support these by widening to a supported type,
then shifting all the way to the left and then
back to the right to ensure that we shift in zeroes.

llvm-svn: 369232

5 years ago[llvm-objcopy][MachO] Implement a layout algorithm for executables
Seiya Nuta [Mon, 19 Aug 2019 05:41:33 +0000 (05:41 +0000)]
[llvm-objcopy][MachO] Implement a layout algorithm for executables

Summary: The layout algorithm for relocatable objects and for executable are somewhat different. This patch implements the latter one based on the algorithm in LLD (MachOFileLayout).

Reviewers: alexshap, rupprecht, jhenderson

Reviewed By: alexshap

Subscribers: jakehehrlich, abrachet, llvm-commits

Tags: #llvm

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

llvm-svn: 369231

5 years ago[llvm-objcopy][MachO] Support load commands used in executables/shared libraries
Seiya Nuta [Mon, 19 Aug 2019 05:37:38 +0000 (05:37 +0000)]
[llvm-objcopy][MachO] Support load commands used in executables/shared libraries

Summary:
This patch implements copying some load commands that appear in executables/shared libraries such as the indirect symbol table.

I don't add tests intentionally because this patch is incomplete: we need a layout algorithm for executables/shared libraries. I'll submit it as a separate patch with tests.

Reviewers: alexshap, rupprecht, jhenderson, compnerd

Reviewed By: alexshap

Subscribers: abrachet, mgorny, mgrang, MaskRay, mtrent, jakehehrlich, llvm-commits

Tags: #llvm

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

llvm-svn: 369230

5 years ago[clangd] Update features table in the docs with links to LSP extension proposals
Nathan Ridge [Mon, 19 Aug 2019 05:11:15 +0000 (05:11 +0000)]
[clangd] Update features table in the docs with links to LSP extension proposals

Also update the semantic coloring entry to reflect it being supported in
clangd now.

Reviewers: sammccall

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

Tags: #clang

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

llvm-svn: 369229

5 years ago[X86] Fix the lower1BitShuffle code added in r369215 to correctly pass the widened...
Craig Topper [Mon, 19 Aug 2019 04:08:44 +0000 (04:08 +0000)]
[X86] Fix the lower1BitShuffle code added in r369215 to correctly pass the widened vector to the KSHIFT node.

Not sure how to test this as we have tests that exercise this code,
but nothing failed for the types not matching. Since all the k-registers
use equivalent register classes everything just ends up working.

llvm-svn: 369228

5 years ago[X86] Teach lower1BitShuffle to match KSHIFTR that doesn't use Zeroable and only...
Craig Topper [Mon, 19 Aug 2019 04:08:40 +0000 (04:08 +0000)]
[X86] Teach lower1BitShuffle to match KSHIFTR that doesn't use Zeroable and only relies on undef.

This allows us to widen the type when the KSHIFTR instruction
doesn't exist for the type. If we need to shift in zeroes into
the upper elements we would need more work to guarantee zeroes
when widening.

llvm-svn: 369227

5 years ago[X86] Teach lower1BitShuffle to recognize padding a subvector with zeros with V2...
Craig Topper [Mon, 19 Aug 2019 00:39:22 +0000 (00:39 +0000)]
[X86] Teach lower1BitShuffle to recognize padding a subvector with zeros with V2 as the source and V1 as the zero vector.

Shuffle canonicalization can swap the sources so the zero vector
might be V1 and the subvector that's being padded can be V2.

llvm-svn: 369226

5 years ago[X86] Add test case for missed opportunity to recognize a vXi1 shuffle as an insert...
Craig Topper [Mon, 19 Aug 2019 00:39:18 +0000 (00:39 +0000)]
[X86] Add test case for missed opportunity to recognize a vXi1 shuffle as an insert into a zero vector.

We are currently missing this because shuffle canonicalization
puts the zero vector as V1 and the subvector as V2. Our current
code doesn't recognize this case.

llvm-svn: 369225

5 years ago[X86] Add a special case to LowerCONCAT_VECTORSvXi1 to handle concatenating zero...
Craig Topper [Sun, 18 Aug 2019 23:30:11 +0000 (23:30 +0000)]
[X86] Add a special case to LowerCONCAT_VECTORSvXi1 to handle concatenating zero vectors followed by one non-zero vector followed by undef vectors.

For such a case we should only need a KSHIFTL, but we were
previously generating a KSHIFTL followed by a KSHIFTR because
we mistakenly believed we need to zero the undef elements.

llvm-svn: 369224

5 years ago[X86] Add test cases for suboptimal insertion of a vXi1 vector into a larger vector...
Craig Topper [Sun, 18 Aug 2019 23:30:07 +0000 (23:30 +0000)]
[X86] Add test cases for suboptimal insertion of a vXi1 vector into a larger vector with zeros in the lower elements and undef upper elements.

Currently we generate kshifts to clear both the upper and lower
elements, but we only need one kshift.

llvm-svn: 369223

5 years ago[X86] Replace uses of getZeroVector for vXi1 vectors with DAG.getConstant.
Craig Topper [Sun, 18 Aug 2019 23:30:03 +0000 (23:30 +0000)]
[X86] Replace uses of getZeroVector for vXi1 vectors with DAG.getConstant.

vXi1 vectors don't need special handling.

llvm-svn: 369222

5 years ago[cmake] Move blocks out of redundant else( MSVC ); NFC
Hubert Tong [Sun, 18 Aug 2019 22:02:24 +0000 (22:02 +0000)]
[cmake] Move blocks out of redundant else( MSVC ); NFC

Address post-commit comment on D66256 regarding the `else( MSVC )` block
containing only blocks guarded with `LLVM_COMPILER_IS_GCC_COMPATIBLE`,
which would imply `NOT MSVC`.

llvm-svn: 369221

5 years ago[CMake] Update CMAKE_OSX_DEPLOYMENT_TARGET to 10.12.
Jonas Devlieghere [Sun, 18 Aug 2019 21:54:26 +0000 (21:54 +0000)]
[CMake] Update CMAKE_OSX_DEPLOYMENT_TARGET to 10.12.

After LLVM moved to C++14, the RWMutex implementation was removed in
favor of std::shared_timed_mutex, which is only available on macOS
10.12 and later. As a workaround for older deployment targets, I added
   the original RWMutexImpl again, guarded by the deployment target.

When doing a standalone build of LLDB using the Xcode generator, the
CMake cache specifies a minimum deployment target. However, LLVM and
Clang might have been built with a different minimum deployment target.

This is exactly what happened for the Xcode build. LLVM was built with a
minimum deployment target newer than 10.12, using
std::shared_timed_mutex. LLDB on the other hand was built with a minimum
deployment target of 10.11, using the old RWMutexImpl, resulting in
undefined symbols at link-time.

This patch changes the minimum deployment target for the Xcode build to
10.12 to work around this problem. A better solution would involve
synchronizing the minimum deployment or even not setting one at all.

llvm-svn: 369220

5 years ago[ORC] Make sure we linker-mangle symbol names in the SpeculationLayer.
Lang Hames [Sun, 18 Aug 2019 21:29:57 +0000 (21:29 +0000)]
[ORC] Make sure we linker-mangle symbol names in the SpeculationLayer.

If mangling is not performed then speculative lookups will fail.

llvm-svn: 369219

5 years ago[ORC] Remove some dead code.
Lang Hames [Sun, 18 Aug 2019 21:22:14 +0000 (21:22 +0000)]
[ORC] Remove some dead code.

llvm-svn: 369218

5 years ago[Diagnostics] Diagnose misused xor as pow
David Bolvansky [Sun, 18 Aug 2019 19:14:14 +0000 (19:14 +0000)]
[Diagnostics] Diagnose misused xor as pow

Summary:
Motivation:
https://twitter.com/jfbastien/status/1139298419988549632
https://twitter.com/mikemx7f/status/1139335901790625793
https://codesearch.isocpp.org/cgi-bin/cgi_ppsearch?q=10+%5E&search=Search

Reviewers: jfb, rsmith, regehr, aaron.ballman

Reviewed By: aaron.ballman

Subscribers: lebedev.ri, Quuxplusone, erik.pilkington, riccibruno, dexonsmith, cfe-commits

Tags: #clang

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

llvm-svn: 369217

5 years ago[Docs] Test commit
DeForest Richards [Sun, 18 Aug 2019 19:07:10 +0000 (19:07 +0000)]
[Docs] Test commit

Fixes typo - Removes extra space between last word of sentence and period.

llvm-svn: 369216

5 years ago[X86] Improve lower1BitShuffle handling for KSHIFTL on narrow vectors.
Craig Topper [Sun, 18 Aug 2019 18:52:46 +0000 (18:52 +0000)]
[X86] Improve lower1BitShuffle handling for KSHIFTL on narrow vectors.

We can insert the value into a larger legal type and shift that
by the desired amount.

llvm-svn: 369215

5 years ago[clang-format] Fix a bug that joins template closer and =
Owen Pan [Sun, 18 Aug 2019 18:51:39 +0000 (18:51 +0000)]
[clang-format] Fix a bug that joins template closer and =

Also fixes the documentation for SpaceBeforeAssignmentOperators.

See discussions at https://reviews.llvm.org/D66332

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

llvm-svn: 369214

5 years agoFix signed/unsigned comparison warning. NFCI.
Simon Pilgrim [Sun, 18 Aug 2019 17:26:30 +0000 (17:26 +0000)]
Fix signed/unsigned comparison warning. NFCI.

llvm-svn: 369213

5 years ago[X86] isTargetShuffleEquivalent - add BUILD_VECTOR matching
Simon Pilgrim [Sun, 18 Aug 2019 17:15:26 +0000 (17:15 +0000)]
[X86] isTargetShuffleEquivalent - add BUILD_VECTOR matching

Add similar functionality to isShuffleEquivalent - if the mask elements don't match, try matching the BUILD_VECTOR scalars instead.

As target shuffles need to handle SM_Sentinel values, this can get a bit tricky, so commit just adds actual mask element index handling - full SM_SentinelZero support will be added when the need arises.

Also, enables support in matchVectorShuffleWithPACK

llvm-svn: 369212

5 years ago[X86] isTargetShuffleEquivalent - early out on illegal shuffle masks. NFCI.
Simon Pilgrim [Sun, 18 Aug 2019 16:37:58 +0000 (16:37 +0000)]
[X86] isTargetShuffleEquivalent - early out on illegal shuffle masks. NFCI.

Simplifies shuffle mask comparisons by just bailing out if the shuffle mask has any out of range values - will make an upcoming patch much simpler.

llvm-svn: 369211

5 years ago[X86][SSE] Improve PACKSS shuffle tests to better match codegen from D61129
Simon Pilgrim [Sun, 18 Aug 2019 15:39:04 +0000 (15:39 +0000)]
[X86][SSE] Improve PACKSS shuffle tests to better match codegen from D61129

D61129 creates 'concat + trunc' style patterns (at the 128-bit subvector level)

llvm-svn: 369209

5 years ago[MC] MCFixup - Fix cppcheck + MSVC analyzer uninitialized member variable warnings...
Simon Pilgrim [Sun, 18 Aug 2019 13:29:12 +0000 (13:29 +0000)]
[MC] MCFixup - Fix cppcheck + MSVC analyzer uninitialized member variable warnings. NFCI.

llvm-svn: 369208

5 years ago[InstCombine] Cherry-pick NFC cleanups of foldShiftIntoShiftInAnotherHandOfAndInICmp...
Roman Lebedev [Sun, 18 Aug 2019 12:26:33 +0000 (12:26 +0000)]
[InstCombine] Cherry-pick NFC cleanups of foldShiftIntoShiftInAnotherHandOfAndInICmp() from D66383

llvm-svn: 369207

5 years ago[Diagnostics] Improve -Wsizeof-pointer-div
David Bolvansky [Sun, 18 Aug 2019 10:10:09 +0000 (10:10 +0000)]
[Diagnostics] Improve -Wsizeof-pointer-div

Emit diag note with a location of pointer declaration.
Revisited/added tests.

llvm-svn: 369206

5 years ago[TargetLowering] Teach computeRegisterProperties to only widen v3i16/v3f16 vectors...
Craig Topper [Sun, 18 Aug 2019 06:28:06 +0000 (06:28 +0000)]
[TargetLowering] Teach computeRegisterProperties to only widen v3i16/v3f16 vectors to the next power of 2 type if that's legal.

These were recently made simple types. This restores their
behavior back to something like their EVT legalization.

We might be able to fix the code in type legalization where the
assert was failing, but I didn't investigate too much as I had
already looked at the computeRegisterProperties code during the
review for v3i16/v3f16.

Most of the test changes restore the X86 codegen back to what
it looked like before the recent change. The test case in
vec_setcc.ll and is a reduced version of the reproducer from
the fuzzer.

Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=16490

llvm-svn: 369205

5 years ago[SelectionDAG] Add a node creation debug message to getMachineNode.
Craig Topper [Sun, 18 Aug 2019 06:28:00 +0000 (06:28 +0000)]
[SelectionDAG] Add a node creation debug message to getMachineNode.

llvm-svn: 369204

5 years agoAMDGPU: Fix iterator error when lowering SI_END_CF
Matt Arsenault [Sun, 18 Aug 2019 00:20:44 +0000 (00:20 +0000)]
AMDGPU: Fix iterator error when lowering SI_END_CF

If the instruction is the last in the block, there is no next
instruction but the iteration still needs to look at the new block.

llvm-svn: 369203

5 years agoAMDGPU: Disambiguate v3f16 format in load/store tables
Matt Arsenault [Sun, 18 Aug 2019 00:20:43 +0000 (00:20 +0000)]
AMDGPU: Disambiguate v3f16 format in load/store tables

Currently the searchable tables report the number of dwords. These
round to the same number for 3 and 4 component d16
instructions. Change this to report the number of elements so this
isn't ambiguous.

llvm-svn: 369202

5 years agoTableGen: Revert changes from r369038
Matt Arsenault [Sun, 18 Aug 2019 00:20:42 +0000 (00:20 +0000)]
TableGen: Revert changes from r369038

These aren't needed for a specific use yet, and I meant to not commit
these.

llvm-svn: 369201

5 years ago[X86] Add a one use check to the combineStore code that handles v16i16->v16i8 truncat...
Craig Topper [Sat, 17 Aug 2019 22:46:15 +0000 (22:46 +0000)]
[X86] Add a one use check to the combineStore code that handles v16i16->v16i8 truncate+store by extending to v16i32 and then emitting a v16i32->v16i8 truncstore.

This prevent us from emitting a separate truncate and a truncating
store instruction.

llvm-svn: 369200

5 years ago[BPF] Fix bpf llvm-objdump issues.
Yonghong Song [Sat, 17 Aug 2019 22:12:00 +0000 (22:12 +0000)]
[BPF] Fix bpf llvm-objdump issues.

Commit https://reviews.llvm.org/D57939 ("[DWARF] Refactor
RelocVisitor and fix computation of SHT_RELA-typed relocation entries)
made a change for relocation resolution when operating
on an object file.

The change unfortunately broke BPF as given SymbolValue (S) and
Addent (A), previously relocation is resolved to
    S + A
and after the change, it is resolved to
    S

This patch fixed the issue by resolving relocation correctly.

It looks not all relocation resolution reaches here and I did not
trace down exactly when. But I do find if the object file includes
codes in two different ELF sections than default ".text",
the above bug will be triggered.

This patch included a trivial two function source code to
demonstrate this issue. The relocation for .debug_loc is resolved
incorrectly due to this and llvm-objdump cannot display source
annotated assembly.

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

llvm-svn: 369199

5 years ago[lldb][NFC] Remove unused MaterializeInitializer and MaterializeInternalVariable
Raphael Isemann [Sat, 17 Aug 2019 21:57:51 +0000 (21:57 +0000)]
[lldb][NFC] Remove unused MaterializeInitializer and MaterializeInternalVariable

llvm-svn: 369198

5 years ago[NFC][InstCombine] Some tests for 'shift amount reassoc in bit test - trunc-of-lshr...
Roman Lebedev [Sat, 17 Aug 2019 21:35:33 +0000 (21:35 +0000)]
[NFC][InstCombine] Some tests for 'shift amount reassoc in bit test - trunc-of-lshr' (PR42399)

Finally, the fold i was looking forward to :)

The legality check is muddy, i doubt  i've groked the full generalization,
but it handles all the cases i care about, and can come up with:
https://rise4fun.com/Alive/26j

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

llvm-svn: 369197

5 years ago[SemaDeclCXX] Allow inheriting constructor declaration to specify a cv-qualified...
Tan S. B. [Sat, 17 Aug 2019 20:57:52 +0000 (20:57 +0000)]
[SemaDeclCXX] Allow inheriting constructor declaration to specify a cv-qualified type

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

llvm-svn: 369196

5 years ago[analyzer] Turn an assert into an if condition
Kristof Umann [Sat, 17 Aug 2019 16:49:54 +0000 (16:49 +0000)]
[analyzer] Turn an assert into an if condition

Shocker, turns out that terminator conditions that are binary operators
aren't always logical operators.

llvm-svn: 369195

5 years agoRecommit r369190 "[llvm-readobj/llvm-readelf] - Improve/cleanup the error reporting...
George Rimar [Sat, 17 Aug 2019 16:07:18 +0000 (16:07 +0000)]
Recommit r369190 "[llvm-readobj/llvm-readelf] - Improve/cleanup the error reporting API."

Fix: Add a `consumeError` call removed by mistake to 'printStackSize',
this should fix the "Expected<T> must be checked before access or destruction." reported by following bot:
http://lab.llvm.org:8011/builders/clang-x64-windows-msvc/builds/9743/steps/stage%201%20check/logs/stdio

Original commit message:
Currently we have the following functions for error reporting:

LLVM_ATTRIBUTE_NORETURN void reportError(Twine Msg);
void reportError(Error Err, StringRef Input);
void reportWarning(Twine Msg);
void reportWarning(StringRef Input, Error Err);
void warn(llvm::Error Err);
void error(std::error_code EC);

Problems are: naming is inconsistent, arguments order is inconsistent,
some of the functions looks excessive.

After applying this patch we have:

void reportError(Error Err, StringRef Input);
void reportError(std::error_code EC, StringRef Input);
void reportWarning(Error Err, StringRef Input);

I'd be happy to remove reportError(std::error_code EC, StringRef Input) too, but it
is used by COFF heavily.

Test cases were updated, they show an improvement introduced.

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

llvm-svn: 369194

5 years agoRevert r369190, r369192 ([llvm-readobj/llvm-readelf] - Improve/cleanup the error...
George Rimar [Sat, 17 Aug 2019 15:36:06 +0000 (15:36 +0000)]
Revert r369190, r369192 ([llvm-readobj/llvm-readelf] - Improve/cleanup the error reporting API.)

It caused multiple BB failtures:

http://lab.llvm.org:8011/builders/clang-x64-windows-msvc/builds/9743/steps/stage%201%20check/logs/stdio
http://lab.llvm.org:8011/builders/clang-cmake-x86_64-sde-avx512-linux/builds/26042/steps/ninja%20check%201/logs/FAIL%3A%20LLVM%3A%3Astack-sizes.test

llvm-svn: 369193

5 years ago[llvm-readobj] - An attemp to fix BB after r369191.
George Rimar [Sat, 17 Aug 2019 15:24:16 +0000 (15:24 +0000)]
[llvm-readobj] - An attemp to fix BB after r369191.

Few BB failed with the following error:

Command Output (stderr):
--
/home/buildbots/ppc64be-clang-lnt-test/clang-ppc64be-lnt/llvm/test/tools/llvm-readobj/stack-sizes.test:263:19: error: BADSECTION-OUT: expected string not found in input
# BADSECTION-OUT: 8 ?
                  ^
<stdin>:4:1: note: scanning from here

^

It doesn't reproduce on ubuntu/windows I have. Also, seems many of the bots
are happy too.

This slightly reorders the code to make fouts().flush() call earlier,
like it was before the r369191.

llvm-svn: 369192

5 years ago[CodeGen] Do the Simple Early Return in block-placement pass to optimize the blocks
Kang Zhang [Sat, 17 Aug 2019 14:37:05 +0000 (14:37 +0000)]
[CodeGen] Do the Simple Early Return in block-placement pass to optimize the blocks

Summary:

Fix a bug of preducessors.

In `block-placement` pass, it will create some patterns for unconditional we can do the simple early retrun.
But the `early-ret` pass is before `block-placement`, we don't want to run it again.
This patch is to do the simple early return to optimize the blocks at the last of `block-placement`.

Reviewed By: efriedma

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

llvm-svn: 369191

5 years ago[llvm-readobj/llvm-readelf] - Improve/cleanup the error reporting API.
George Rimar [Sat, 17 Aug 2019 14:36:40 +0000 (14:36 +0000)]
[llvm-readobj/llvm-readelf] - Improve/cleanup the error reporting API.

urrently we have the following functions for error reporting:

--
LLVM_ATTRIBUTE_NORETURN void reportError(Twine Msg);
void reportError(Error Err, StringRef Input);
void reportWarning(Twine Msg);
void reportWarning(StringRef Input, Error Err);
void warn(llvm::Error Err);
void error(std::error_code EC);
---

Problems are: naming is inconsistent, arguments order is inconsistent,
some of the functions looks excessive.

After applying this patch we have:

---
LLVM_ATTRIBUTE_NORETURN void reportError(Error Err, StringRef Input);
LLVM_ATTRIBUTE_NORETURN void reportError(std::error_code EC, StringRef Input);
void reportWarning(Error Err, StringRef Input);
---

I'd be happy to remove reportError(std::error_code EC, StringRef Input) too, but it
is used by COFF heavily.

Test cases were updated, they show an improvement introduced.

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

llvm-svn: 369190

5 years ago[test] - Remove precomiled openbsd-phdrs.elf-x86-64 objects.
George Rimar [Sat, 17 Aug 2019 14:23:30 +0000 (14:23 +0000)]
[test] - Remove precomiled openbsd-phdrs.elf-x86-64 objects.

There are 2 similar openbsd-phdrs.elf-x86-64 objects committed and
used in test/Object and test/tools/llvm-objdump test cases.

There is no reason to have them, we can use YAML instead. Patch does that.

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

llvm-svn: 369189

5 years ago[circular_raw_ostream] Delegate is_displayed to contained stream
Troy A. Johnson [Sat, 17 Aug 2019 14:20:41 +0000 (14:20 +0000)]
[circular_raw_ostream] Delegate is_displayed to contained stream

raw_ostream has an is_displayed() member function that determines if the stream
is connected to a console for display or is connected to a file/pipe. By
default, is_displayed() returns false, and derived classes like raw_fd_ostream
override it. Because circular_raw_ostream wraps another stream, its result for
is_displayed() should be the same as that stream.

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

llvm-svn: 369188

5 years ago[ELF] Replace local variable hasExportDynamic with config->exportDynamic. NFC
Fangrui Song [Sat, 17 Aug 2019 10:04:18 +0000 (10:04 +0000)]
[ELF] Replace local variable hasExportDynamic with config->exportDynamic. NFC

llvm-svn: 369187

5 years agoRevert Revert [AArch64InstrInfo] Stop getInstSizeInBytes returning non-zero for meta...
Paul Walker [Sat, 17 Aug 2019 09:22:36 +0000 (09:22 +0000)]
Revert Revert [AArch64InstrInfo] Stop getInstSizeInBytes returning non-zero for meta instructions.

This reverts r369132 (git commit 19301d75f086caae1a495d267f5d0264b225942d)

llvm-svn: 369186

5 years agoRevert [AArch64InstrInfo] Stop getInstSizeInBytes returning non-zero for meta instruc...
Paul Walker [Sat, 17 Aug 2019 09:22:28 +0000 (09:22 +0000)]
Revert [AArch64InstrInfo] Stop getInstSizeInBytes returning non-zero for meta instructions.

This reverts r369133 (git commit 2632c677f85cba1ac2aef5d68aaf8af0f5b3c944)

llvm-svn: 369185

5 years ago[ELF][PPC] Fix getRelExpr for R_PPC64_REL16_HI
Fangrui Song [Sat, 17 Aug 2019 06:28:03 +0000 (06:28 +0000)]
[ELF][PPC] Fix getRelExpr for R_PPC64_REL16_HI

Fixes https://github.com/ClangBuiltLinux/linux/issues/640

R_PPC64_REL16_HI was incorrectly computed as an R_ABS relocation.
rLLD368964 made it a linker failure. Change it to use R_PC to fix the
failures.

Add ppc64-reloc-rel.s for these R_PPC64_REL* tests.

llvm-svn: 369184

5 years ago[X86] Support -mlong-double-80
Troy A. Johnson [Sat, 17 Aug 2019 04:20:24 +0000 (04:20 +0000)]
[X86] Support -mlong-double-80

Add an option group for all of the -mlong-double-* options and make
-mlong-double-80 restore the default long double behavior for X86.  The
motivations are that GNU accepts the -mlong-double-80 option and that complex
Makefiles often need a way of undoing earlier options. Prior to this commit, if
one chooses 64-bit or 128-bit long double for X86, there is no way to undo that
choice and restore the 80-bit behavior.

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

llvm-svn: 369183

5 years ago[clang-doc] Fix casting not working in gcc 5.4.0
Diego Astiazaran [Sat, 17 Aug 2019 01:45:03 +0000 (01:45 +0000)]
[clang-doc] Fix casting not working in gcc 5.4.0

An implicit cast of std::string to llvm::SmallString<> was breaking GCC 5.4.0 builder.
A pair using llvm::SmallString<> now uses std::string.

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

llvm-svn: 369182

5 years ago[MemorySSA] Loop passes should mark MSSA preserved when available.
Alina Sbirlea [Sat, 17 Aug 2019 01:02:12 +0000 (01:02 +0000)]
[MemorySSA] Loop passes should mark MSSA preserved when available.

This patch applies only to the new pass manager.
Currently, when MSSA Analysis is available, and pass to each loop pass, it will be preserved by that loop pass.
Hence, mark the analysis preserved based on that condition, vs the current `EnableMSSALoopDependency`. This leaves the global flag to affect only the entry point in the loop pass manager (in FunctionToLoopPassAdaptor).

llvm-svn: 369181

5 years ago[Fuchsia] Create the VMO during initialization, not during exit
Petr Hosek [Sat, 17 Aug 2019 00:54:22 +0000 (00:54 +0000)]
[Fuchsia] Create the VMO during initialization, not during exit

We want to avoid doing expensive work during atexit since the process
might be terminated before we can publish the VMO and write out the
symbolizer markup, so move the VMO creation to the initialization
phase and only write data during the atexit phase.

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

llvm-svn: 369180

5 years agoSimplify code (NFC).
Adrian Prantl [Sat, 17 Aug 2019 00:38:58 +0000 (00:38 +0000)]
Simplify code (NFC).

llvm-svn: 369179

5 years ago[llvm-readobj] Unwrap the value first to avoid the error
Petr Hosek [Sat, 17 Aug 2019 00:07:26 +0000 (00:07 +0000)]
[llvm-readobj] Unwrap the value first to avoid the error

This addresses the issue introduced in r369169, we need to unwrap
the value first before we can check whether it's empty. This also
swaps the two branches to put the common path first which should
be NFC.

llvm-svn: 369177

5 years agoAdd LLDB dataformatters for llvm::StringRef and lldb_private::ConstString
Adrian Prantl [Fri, 16 Aug 2019 23:47:57 +0000 (23:47 +0000)]
Add LLDB dataformatters for llvm::StringRef and lldb_private::ConstString

These data formatters make the string value appear in Xcode's
variables view (and on the command line) without having to expand the
data structure.

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

llvm-svn: 369175

5 years agoRevert r367891 - "[InstCombine] combine mul+shl separated by zext"
Sanjay Patel [Fri, 16 Aug 2019 23:36:28 +0000 (23:36 +0000)]
Revert r367891 - "[InstCombine] combine mul+shl separated by zext"

This reverts commit 5dbb90bfe14ace30224239cac7c61a1422fa5144.

As noted in the post-commit thread for r367891, this can create
a multiply that is lowered to a libcall that may not exist.

We need to improve the backend decomposition for integer multiply
before trying to re-land this (if it's still worthwhile after
doing the backend work).

llvm-svn: 369174

5 years agoReland "[ARM] push LR before __gnu_mcount_nc"
Jian Cai [Fri, 16 Aug 2019 23:30:16 +0000 (23:30 +0000)]
Reland "[ARM] push LR before __gnu_mcount_nc"

This relands r369147 with fixes to unit tests.

https://reviews.llvm.org/D65019

llvm-svn: 369173

5 years ago[AArch64][GlobalISel] Fix an assertion during G_UNMERGE selection for s128 types.
Amara Emerson [Fri, 16 Aug 2019 23:23:40 +0000 (23:23 +0000)]
[AArch64][GlobalISel] Fix an assertion during G_UNMERGE selection for s128 types.

llvm-svn: 369172

5 years ago[ORC] Re-introduce self-dependence accidentally dropped from a unit test.
Lang Hames [Fri, 16 Aug 2019 23:20:54 +0000 (23:20 +0000)]
[ORC] Re-introduce self-dependence accidentally dropped from a unit test.

llvm-svn: 369171

5 years agoRevert "[X86] Support -mlong-double-80"
Troy A. Johnson [Fri, 16 Aug 2019 23:18:22 +0000 (23:18 +0000)]
Revert "[X86] Support -mlong-double-80"

This reverts commit 250aafa2c4a1bc2395edfe8d4365545bbe56fffe.
Caused buildbot failures -- still investigating.

llvm-svn: 369170

5 years ago[llvm-readobj] Fallback to PT_NOTE if file doesn't have sections
Petr Hosek [Fri, 16 Aug 2019 23:15:40 +0000 (23:15 +0000)]
[llvm-readobj] Fallback to PT_NOTE if file doesn't have sections

This is useful when trying to read notes from stripped files and matches
the behavior of GNU readelf and eu-readelf.

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

llvm-svn: 369169

5 years ago[CodeGenPrepare] Fix use-after-free
Sanjay Patel [Fri, 16 Aug 2019 23:10:34 +0000 (23:10 +0000)]
[CodeGenPrepare] Fix use-after-free

If OptimizeExtractBits() encountered a shift instruction with no operands at all,
it would erase the instruction, but still return false.

This previously didn’t matter because its caller would always return after
processing the instruction, but https://reviews.llvm.org/D63233 changed the
function’s caller to fall through if it returned false, which would then cause
a use-after-free detectable by ASAN.

This change makes OptimizeExtractBits return true if it removes a shift
instruction with no users, terminating processing of the instruction.

Patch by: @brentdax (Brent Royal-Gordon)

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

llvm-svn: 369168

5 years agoRevert [X86] SimplifyDemandedVectorElts - attempt to recombine target shuffle using...
Jordan Rupprecht [Fri, 16 Aug 2019 23:08:56 +0000 (23:08 +0000)]
Revert [X86] SimplifyDemandedVectorElts - attempt to recombine target shuffle using DemandedElts mask (reapplied)

This reverts r368662 (git commit 1a8d790cf5f89c1df718844f13e934e39bef6ef5)

The compile-time regression repro is in https://bugs.llvm.org/show_bug.cgi?id=43024

llvm-svn: 369167

5 years ago[InstCombine][NFC] reuse-constant-from-select-in-icmp.ll - check branch_weights too
Roman Lebedev [Fri, 16 Aug 2019 23:06:37 +0000 (23:06 +0000)]
[InstCombine][NFC] reuse-constant-from-select-in-icmp.ll - check branch_weights too

llvm-svn: 369166

5 years agoRevert "[TSan] Don't guard #include <xpc/xpc.h>"
Julian Lettner [Fri, 16 Aug 2019 22:58:13 +0000 (22:58 +0000)]
Revert "[TSan] Don't guard #include <xpc/xpc.h>"

This reverts commit 8191585b36eb4963002cce43fb2e79e7fb05c3d6.

llvm-svn: 369165

5 years ago[TSan] Add interceptors for os_unfair_lock
Julian Lettner [Fri, 16 Aug 2019 22:41:25 +0000 (22:41 +0000)]
[TSan] Add interceptors for os_unfair_lock

llvm-svn: 369164

5 years ago[InstCombine][NFC] Revisit tests in reuse-constant-from-select-in-icmp.ll
Roman Lebedev [Fri, 16 Aug 2019 22:40:06 +0000 (22:40 +0000)]
[InstCombine][NFC] Revisit tests in reuse-constant-from-select-in-icmp.ll

llvm-svn: 369163

5 years ago[ARM] Preserve liveness in ARMConstantIslands.
Eli Friedman [Fri, 16 Aug 2019 22:20:14 +0000 (22:20 +0000)]
[ARM] Preserve liveness in ARMConstantIslands.

We currently don't use liveness information after this point, but it can
be useful to catch bugs using -verify-machineinstrs, and optimizations
could potentially use this information in the future.

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

llvm-svn: 369162

5 years ago[doc] Fix some minor formatting issues.
Richard Smith [Fri, 16 Aug 2019 22:08:39 +0000 (22:08 +0000)]
[doc] Fix some minor formatting issues.

llvm-svn: 369161

5 years ago[Attributor] Fix: Do not partially resolve returned calls.
Johannes Doerfert [Fri, 16 Aug 2019 21:59:52 +0000 (21:59 +0000)]
[Attributor] Fix: Do not partially resolve returned calls.

By partially resolving returned calls we did not record that they were
not fully resolved which caused odd behavior down the line. We could
also end up with some, but not all, returned values of the callee in the
returned values map of the caller, another odd behavior we want to
avoid.

llvm-svn: 369160

5 years ago[Attributor] Fix: Make sure we set the changed flag
Johannes Doerfert [Fri, 16 Aug 2019 21:55:01 +0000 (21:55 +0000)]
[Attributor] Fix: Make sure we set the changed flag

The flag was updated *before* we actually run the visitor callback so we
might miss updates.

llvm-svn: 369159

5 years ago[CaptureTracking] Allow null to be in either icmp operand
Johannes Doerfert [Fri, 16 Aug 2019 21:53:49 +0000 (21:53 +0000)]
[CaptureTracking] Allow null to be in either icmp operand

Summary:
Before we required the comparison against null to be "canonical", hence
null to be operand #1. This patch allows null to be in either operand,
similar to the handling of loaded globals that follows.

Reviewers: sanjoy, hfinkel, aykevl, sstefan1, uenoku

Subscribers: hiraditya, bollu, llvm-commits

Tags: #llvm

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

llvm-svn: 369158

5 years ago[clang-format] Fix the bug that joins template closer and > or >>
Owen Pan [Fri, 16 Aug 2019 21:49:17 +0000 (21:49 +0000)]
[clang-format] Fix the bug that joins template closer and > or >>

Also fixes a buggy test case.

See PR42404

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

llvm-svn: 369157

5 years ago[CodeGenPrepare] fix RUN line settings
Sanjay Patel [Fri, 16 Aug 2019 21:37:49 +0000 (21:37 +0000)]
[CodeGenPrepare] fix RUN line settings

I'm not sure if this was running as expected with a broken triple.

llvm-svn: 369156

5 years ago[Attributor] Add all missing attribute definitions/symbols
Johannes Doerfert [Fri, 16 Aug 2019 21:31:11 +0000 (21:31 +0000)]
[Attributor] Add all missing attribute definitions/symbols

As a preparation to "on-demand" abstract attribute generation we need
implementations for all attributes (as they can be queried and then
created on-demand where we now fail to find one).

Reviewers: uenoku, sstefan1

Subscribers: hiraditya, bollu, llvm-commits

Tags: #llvm

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

llvm-svn: 369155

5 years ago[RWMutex] Simplify availability check
Jonas Devlieghere [Fri, 16 Aug 2019 21:25:40 +0000 (21:25 +0000)]
[RWMutex] Simplify availability check

Check for the actual version number for the scenarios where the macOS
version isn't available (__MAC_10_12).

llvm-svn: 369154

5 years ago[Utility] Reimplement RegularExpression on top of llvm::Regex
Jonas Devlieghere [Fri, 16 Aug 2019 21:25:36 +0000 (21:25 +0000)]
[Utility] Reimplement RegularExpression on top of llvm::Regex

Originally I wanted to remove the RegularExpression class in Utility and
replace it with llvm::Regex. However, during that transition I noticed
that there are several places where need the regular expression string.
So instead I propose to keep the RegularExpression class and make it a
thin wrapper around llvm::Regex.

This patch also removes the workaround for empty regular expressions.
The result is that we are now (more or less) POSIX conformant.

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

llvm-svn: 369153

5 years ago[X86] Support -mlong-double-80
Troy A. Johnson [Fri, 16 Aug 2019 21:00:22 +0000 (21:00 +0000)]
[X86] Support -mlong-double-80

Add an option group for all of the -mlong-double-* options and make
-mlong-double-80 restore the default long double behavior for X86.  The
motivations are that GNU accepts the -mlong-double-80 option and that complex
Makefiles often need a way of undoing earlier options. Prior to this commit, if
one chooses 64-bit or 128-bit long double for X86, there is no way to undo that
choice and restore the 80-bit behavior.

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

llvm-svn: 369152

5 years ago[X86] Use Register/MCRegister in more places in X86
Craig Topper [Fri, 16 Aug 2019 20:50:23 +0000 (20:50 +0000)]
[X86] Use Register/MCRegister in more places in X86

This was a quick pass through some obvious places. I haven't tried the clang-tidy check.

I also replaced the zeroes in getX86SubSuperRegister with X86::NoRegister which is the real sentinel name.

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

llvm-svn: 369151

5 years ago[TSan] Don't guard #include <xpc/xpc.h>
Julian Lettner [Fri, 16 Aug 2019 20:43:09 +0000 (20:43 +0000)]
[TSan] Don't guard #include <xpc/xpc.h>

The xpc_connection_* APIs that we are intercepting are available
starting at macOS 10.7. This is old enough so that we don't need to
guard them.

llvm-svn: 369150

5 years agoRevert "[ARM] push LR before __gnu_mcount_nc"
Jian Cai [Fri, 16 Aug 2019 20:40:21 +0000 (20:40 +0000)]
Revert "[ARM] push LR before __gnu_mcount_nc"

This reverts commit f4cf3b959333f62b7a7b2d7771f7010c9d8da388.

llvm-svn: 369149

5 years ago[Test Commit] Fix typo in diagtool.rst
Troy A. Johnson [Fri, 16 Aug 2019 20:26:48 +0000 (20:26 +0000)]
[Test Commit] Fix typo in diagtool.rst

Test commit after obtaining commit access.

llvm-svn: 369148

5 years ago[ARM] push LR before __gnu_mcount_nc
Jian Cai [Fri, 16 Aug 2019 20:21:08 +0000 (20:21 +0000)]
[ARM] push LR before __gnu_mcount_nc

Push LR register before calling __gnu_mcount_nc as it expects the value of LR register to be the top value of
the stack on ARM32.

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

llvm-svn: 369147

5 years ago[OPENMP5.0]Diagnose global variables in lambda not marked as declare
Alexey Bataev [Fri, 16 Aug 2019 20:15:02 +0000 (20:15 +0000)]
[OPENMP5.0]Diagnose global variables in lambda not marked as declare
target.

According to OpenMP 5.0, if a lambda declaration and definition appears between a declare target directive and the matching end declare target directive, all variables that are captured by the lambda expression must also appear in a to clause.

llvm-svn: 369146

5 years agoStop abusing SuppressAllDiagnostics when speculatively determining
Richard Smith [Fri, 16 Aug 2019 19:53:22 +0000 (19:53 +0000)]
Stop abusing SuppressAllDiagnostics when speculatively determining
whether an expression would be valid during error recovery.

llvm-svn: 369145

5 years ago[Attributor] Towards a more structured deduction pattern
Johannes Doerfert [Fri, 16 Aug 2019 19:51:23 +0000 (19:51 +0000)]
[Attributor] Towards a more structured deduction pattern

Summary:
This is the first commit aiming to structure the attribute deduction.
The base idea is that we have default propagation patterns as listed
below on top of which we can add specific, e.g., context sensitive,
logic.

Deduction patterns used in this patch:
  - argument states are determined from call site argument states,
    see AAAlignArgument and AAArgumentFromCallSiteArguments.
  - call site argument states are determined as if they were floating
    values, see AAAlignCallSiteArgument and AAAlignFloating.
  - floating value states are determined by traversing the def-use chain
    and combining the states determined for the leaves, see
    AAAlignFloating and genericValueTraversal.
  - call site return states are determined from function return states,
    see AAAlignCallSiteReturned and AACallSiteReturnedFromReturned.
  - function return states are determined from returned value states,
    see AAAlignReturned and AAReturnedFromReturnedValues.

Through this strategy all logic for alignment is concentrated in the
AAAlignFloating::updateImpl method.

Note: This commit works on its own but is part of a larger change that
involves "on-demand" creation of abstract attributes that will
participate in the fixpoint iteration. Without this part, we sometimes
do not have an AAAlign abstract attribute to query, loosing information
we determined before. All tests have appropriate FIXMEs and the
information will be recovered once we added all parts.

Reviewers: sstefan1, uenoku

Subscribers: hiraditya, bollu, llvm-commits

Tags: #llvm

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

llvm-svn: 369144

5 years ago[Attributor][NFC] Introduce aliases for call site attributes
Johannes Doerfert [Fri, 16 Aug 2019 19:49:00 +0000 (19:49 +0000)]
[Attributor][NFC] Introduce aliases for call site attributes

Until we have call site specific liveness and/or value information there
is no need to do call site specific deduction. Though, we need the
symbols in follow up patches that make Attributor::getAAFor return a
reference.

llvm-svn: 369143

5 years ago[Attributor] Introduce initialize calls and move code to keep attributes concise
Johannes Doerfert [Fri, 16 Aug 2019 19:36:17 +0000 (19:36 +0000)]
[Attributor] Introduce initialize calls and move code to keep attributes concise

Summary:
This patch should not change the behavior except that the added
initialize methods might indicate an optimistic fixpoint earlier. The
code movement is done to keep the attribute definitions in a single
block where it makes sense. No functional changes intended there.

Reviewers: uenoku, sstefan1

Subscribers: hiraditya, bollu, llvm-commits

Tags: #llvm

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

llvm-svn: 369142

5 years ago[ORC] Remove some stray debugging output accidentally left in r368707
Lang Hames [Fri, 16 Aug 2019 19:33:37 +0000 (19:33 +0000)]
[ORC] Remove some stray debugging output accidentally left in r368707

llvm-svn: 369141

5 years ago[InstCombine] canonicalize a scalar-select-of-vectors to vector select
Sanjay Patel [Fri, 16 Aug 2019 18:51:30 +0000 (18:51 +0000)]
[InstCombine] canonicalize a scalar-select-of-vectors to vector select

This pattern may arise more frequently with an enhancement to SLP vectorization suggested in PR42755:
https://bugs.llvm.org/show_bug.cgi?id=42755
...but we should handle this pattern to make things easier for the backend either way.

For all in-tree targets that I looked at, codegen for typical vector sizes looks better when we change
to a vector select, so this is safe to do without a cost model (in other words, as a target-independent
canonicalization).

For example, if the condition of the select is a scalar, we end up with something like this on x86:

vpcmpgtd %xmm0, %xmm1, %xmm0
vpextrb $12, %xmm0, %eax
testb $1, %al
jne LBB0_2
  ## %bb.1:
vmovaps %xmm3, %xmm2
  LBB0_2:
vmovaps %xmm2, %xmm0

Rather than the splat-condition variant:

vpcmpgtd %xmm0, %xmm1, %xmm0
vpshufd $255, %xmm0, %xmm0      ## xmm0 = xmm0[3,3,3,3]
vblendvps %xmm0, %xmm2, %xmm3, %xmm0

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

llvm-svn: 369140

5 years ago[clang-doc] Redesign of generated HTML files
Diego Astiazaran [Fri, 16 Aug 2019 18:38:11 +0000 (18:38 +0000)]
[clang-doc] Redesign of generated HTML files

The new design includes a header (contains the project name), a main section, and a footer.
The main section is divided into three subsections. Left, middle, right. The left section contains the general index, the middle contains the info's data, and the right contains the index for the info's content.
The CSS has been updated.
A flag --project-name is added.
The Attributes attribute of the TagNode struct is now a vector of pairs because these attributes should be rendered in the insertion order.
The functions (cpp and js) that converts an Index tree structure into HTML were slightly modified; the first ul tag created is now a ol tag. The inner lists are still ul.

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

llvm-svn: 369139

5 years agoEscape % in printf format string.
Evgeniy Stepanov [Fri, 16 Aug 2019 18:23:54 +0000 (18:23 +0000)]
Escape % in printf format string.

Fixes branch-relax-block-size.mir on the ASan builder.

llvm-svn: 369138

5 years ago[WebAssembly] Forbid use of EM_ASM with setjmp/longjmp
Guanzhong Chen [Fri, 16 Aug 2019 18:21:08 +0000 (18:21 +0000)]
[WebAssembly] Forbid use of EM_ASM with setjmp/longjmp

Summary:
We tried to support EM_ASM with setjmp/longjmp in binaryen. But with dynamic
linking thrown into the mix, the code is no longer understandable and cannot
be maintained. We also discovered more bugs in the EM_ASM handling code.

To ensure maintainability and correctness of the binaryen code, EM_ASM will
no longer be supported with setjmp/longjmp. This is probably fine since the
support was added recently and haven't be published.

Reviewers: tlively, sbc100, jgravelle-google, kripken

Reviewed By: tlively, kripken

Subscribers: dschuff, hiraditya, aheejin, sunfish, llvm-commits

Tags: #llvm

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

llvm-svn: 369137

5 years ago[X86] resolveTargetShuffleInputs - add DemandedElts variant. NFCI.
Simon Pilgrim [Fri, 16 Aug 2019 18:13:22 +0000 (18:13 +0000)]
[X86] resolveTargetShuffleInputs - add DemandedElts variant. NFCI.

Nothing calls this yet, everything still goes through the non (all) DemandedElts wrapper.

llvm-svn: 369136

5 years ago[AArch64][GlobalISel] Lower G_SHUFFLE_VECTOR with 1 elt src and 1 elt mask.
Amara Emerson [Fri, 16 Aug 2019 18:06:53 +0000 (18:06 +0000)]
[AArch64][GlobalISel] Lower G_SHUFFLE_VECTOR with 1 elt src and 1 elt mask.

Again, it's weird that these are allowed. Since lowering support was added in
r368709 we started crashing on compiling the neon intrinsics test in the test
suite. This fixes the lowering to fold the 1 elt src/mask case into copies.

llvm-svn: 369135