platform/upstream/llvm.git
6 years ago[libcxx] Implement std::to_address for C++20
Eric Fiselier [Wed, 22 Nov 2017 19:49:21 +0000 (19:49 +0000)]
[libcxx] Implement std::to_address for C++20

Summary: Now implements P0653R2 - Utility to convert to raw pointer.

Reviewers: mclow.lists, EricWF

Reviewed By: EricWF

Subscribers: cfe-commits

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

llvm-svn: 318865

6 years agoImplement p0137r1 - std::launder. Reviewed as https://reviews.llvm.org/D40144
Marshall Clow [Wed, 22 Nov 2017 19:49:03 +0000 (19:49 +0000)]
Implement p0137r1 - std::launder. Reviewed as https://reviews.llvm.org/D40144

llvm-svn: 318864

6 years ago[libcxx][fixup] Mark std::basic_istream::getline tests as failing for previous libcxx...
Volodymyr Sapsai [Wed, 22 Nov 2017 19:36:54 +0000 (19:36 +0000)]
[libcxx][fixup] Mark std::basic_istream::getline tests as failing for previous libcxx versions.

r318862 added a fix for 0-termination input array in case of an error. Previous
libcxx versions don't have the fix and corresponding tests should be failing.

llvm-svn: 318863

6 years ago[libcxx] Make std::basic_istream::getline 0-terminate input array in case of error.
Volodymyr Sapsai [Wed, 22 Nov 2017 18:52:36 +0000 (18:52 +0000)]
[libcxx] Make std::basic_istream::getline 0-terminate input array in case of error.

It covers the cases when the sentry object returns false and when an exception
was thrown. Corresponding standard paragraph is C++14 [istream.unformatted]p21:
  In any case, if n is greater than zero, it then stores a null character
  (using charT()) into the next successive location of the array.

Patch by Reimar Döffinger.

llvm-svn: 318862

6 years agoRemove unnecessary include.
Paul Robinson [Wed, 22 Nov 2017 18:39:26 +0000 (18:39 +0000)]
Remove unnecessary include.

llvm-svn: 318861

6 years ago[OPENMP] Added missed checks for for [simd] based directives.
Alexey Bataev [Wed, 22 Nov 2017 18:34:02 +0000 (18:34 +0000)]
[OPENMP] Added missed checks for for [simd] based directives.

Added missed checks/analysis for safelen/simdlen clauses + linear clause
in for [simd] based directives.

llvm-svn: 318860

6 years ago[scudo] Overhaul hardware CRC32 feature detection
Kostya Kortchinsky [Wed, 22 Nov 2017 18:30:44 +0000 (18:30 +0000)]
[scudo] Overhaul hardware CRC32 feature detection

Summary:
This patch aims at condensing the hardware CRC32 feature detection and making
it slightly more effective on Android.

The following changes are included:
- remove the `CPUFeature` enum, and get rid of one level of nesting of
  functions: we only used CRC32, so we just implement and use
  `hasHardwareCRC32`;
- allow for a weak `getauxval`: the Android toolchain is compiled at API level
  14 for Android ARM, meaning no `getauxval` at compile time, yet we will run
  on API level 27+ devices. The `/proc/self/auxv` fallback can work but is
  worthless for a process like `init` where the proc filesystem doesn't exist
  yet. If a weak `getauxval` doesn't exist, then fallback.
- couple of extra corrections.

Reviewers: alekseyshl

Reviewed By: alekseyshl

Subscribers: kubamracek, aemerson, srhines, kristof.beyls, llvm-commits

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

llvm-svn: 318859

6 years agoCachePruning: Allow limiting the number of files in the cache directory.
Peter Collingbourne [Wed, 22 Nov 2017 18:27:31 +0000 (18:27 +0000)]
CachePruning: Allow limiting the number of files in the cache directory.

The default limit is 1000000 but it can be configured with a cache
policy. The motivation is that some filesystems (notably ext4) have
a limit on the number of files that can be contained in a directory
(separate from the inode limit).

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

llvm-svn: 318857

6 years ago[DwarfDump] -debug-line=offset applies to .dwo too.
Paul Robinson [Wed, 22 Nov 2017 18:23:55 +0000 (18:23 +0000)]
[DwarfDump] -debug-line=offset applies to .dwo too.

llvm-svn: 318856

6 years ago[X86] Spell penryn correctly in some comments. NFC
Craig Topper [Wed, 22 Nov 2017 18:23:40 +0000 (18:23 +0000)]
[X86] Spell penryn correctly in some comments. NFC

llvm-svn: 318855

6 years ago[CodeGen] Fix vtable not receiving hidden visibility when using push(visibility)
Petr Hosek [Wed, 22 Nov 2017 17:59:30 +0000 (17:59 +0000)]
[CodeGen] Fix vtable not receiving hidden visibility when using push(visibility)

This change should resolve https://bugs.llvm.org/show_bug.cgi?id=35022

Patch by Jake Ehrlich

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

llvm-svn: 318853

6 years agoSimplify as-needed handling.
Rafael Espindola [Wed, 22 Nov 2017 17:50:42 +0000 (17:50 +0000)]
Simplify as-needed handling.

This is a reduction of a patch by Rui Ueyama.

llvm-svn: 318852

6 years ago[OPENMP] General improvement of code, NFC.
Alexey Bataev [Wed, 22 Nov 2017 17:19:31 +0000 (17:19 +0000)]
[OPENMP] General improvement of code, NFC.

llvm-svn: 318849

6 years agoFix for OMP doacross implementation on Power
Jonas Hahnfeld [Wed, 22 Nov 2017 17:15:20 +0000 (17:15 +0000)]
Fix for OMP doacross implementation on Power

Power has a weak consistency model so we need memory barriers to
make writes (both from runtime and from user code) available for
all threads.

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

llvm-svn: 318848

6 years ago[CMake] Re-enable libomptarget and restrict tests to Clang 6.0.0
Jonas Hahnfeld [Wed, 22 Nov 2017 17:15:18 +0000 (17:15 +0000)]
[CMake] Re-enable libomptarget and restrict tests to Clang 6.0.0

We have just fixed the codegen of omp_is_initial_device() to reliably work
when offloading to the same device, see commit r316001. This fixes the
failing tests that were the reason why we disabled the library for 5.0.

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

llvm-svn: 318847

6 years agoRemove extra minuses from command option
Tatyana Krasnukha [Wed, 22 Nov 2017 17:07:43 +0000 (17:07 +0000)]
Remove extra minuses from command option

Reviewers: labath, abidh, clayborg, ki.stfu

Reviewed By: labath, abidh, clayborg, ki.stfu

Subscribers: clayborg, ki.stfu, lldb-commits

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

llvm-svn: 318846

6 years ago[AMDGPU] Fix SITargetLowering::LowerCall for pointer info of byval argument
Yaxun Liu [Wed, 22 Nov 2017 16:13:35 +0000 (16:13 +0000)]
[AMDGPU] Fix SITargetLowering::LowerCall for pointer info of byval argument

SITargetLowering::LowerCall uses dummy pointer info for byval argument, which causes
flat load instead of buffer load.

This patch fixes that.

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

llvm-svn: 318844

6 years ago[OPENMP] Do not mark captured variables as artificial in debug info.
Alexey Bataev [Wed, 22 Nov 2017 16:02:03 +0000 (16:02 +0000)]
[OPENMP] Do not mark captured variables as artificial in debug info.

Captured variables should not be marked as artificial parameters in
outlined functions in debug info.

llvm-svn: 318843

6 years ago[DebugInfo] Dump a .debug_line section, including line-number program,
Paul Robinson [Wed, 22 Nov 2017 15:48:30 +0000 (15:48 +0000)]
[DebugInfo] Dump a .debug_line section, including line-number program,
without any compile units.

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

llvm-svn: 318842

6 years ago[AMDGPU][mc][tests] Updated generated lit tests for GFX8/9
Dmitry Preobrazhensky [Wed, 22 Nov 2017 15:47:27 +0000 (15:47 +0000)]
[AMDGPU][mc][tests] Updated generated lit tests for GFX8/9

Summary:
Added tests to better cover features introduced by commit rL318675.
See http://llvm.org/viewvc/llvm-project?view=revision&revision=318675

llvm-svn: 318841

6 years ago[FindAllSymbols] Cache regexes, creating them is expensive
Benjamin Kramer [Wed, 22 Nov 2017 15:38:23 +0000 (15:38 +0000)]
[FindAllSymbols] Cache regexes, creating them is expensive

This is a bit annoying because LLVM regexes are always mutable to store
errors. Assert that there are never errors and fix broken hardcoded
regexes.

llvm-svn: 318840

6 years ago[DWARFv5] Support DW_FORM_strp in the .debug_line.dwo header.
Paul Robinson [Wed, 22 Nov 2017 15:33:17 +0000 (15:33 +0000)]
[DWARFv5] Support DW_FORM_strp in the .debug_line.dwo header.

As a side effect, the .debug_line section will be dumped in physical
order, rather than in the order that compile units refer to their
associated portions of the .debug_line section.  These are probably
always the same order anyway, and no tests noticed the difference.

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

llvm-svn: 318839

6 years ago[DWARF] Fix handling of extended line-number opcodes
Paul Robinson [Wed, 22 Nov 2017 15:14:49 +0000 (15:14 +0000)]
[DWARF] Fix handling of extended line-number opcodes

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

llvm-svn: 318838

6 years ago[OpenMP] Adjust arguments of nvptx runtime functions
Jonas Hahnfeld [Wed, 22 Nov 2017 14:46:49 +0000 (14:46 +0000)]
[OpenMP] Adjust arguments of nvptx runtime functions

In the future the compiler will analyze whether the OpenMP
runtime needs to be (fully) initialized and avoid that overhead
if possible. The functions already take an argument to transfer
that information to the runtime, so pass in the default value 1.
(This is needed for binary compatibility with libomptarget-nvptx
currently being upstreamed.)

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

llvm-svn: 318836

6 years ago[OPENMP] Codegen for `target teams` directive.
Alexey Bataev [Wed, 22 Nov 2017 14:25:55 +0000 (14:25 +0000)]
[OPENMP] Codegen for `target teams` directive.

Added codegen of the clauses for `target teams` directive.

llvm-svn: 318834

6 years agoRemove unused variable.
Tatyana Krasnukha [Wed, 22 Nov 2017 13:35:04 +0000 (13:35 +0000)]
Remove unused variable.

llvm-svn: 318833

6 years agoTest commit. Fix typo in comment.
Tatyana Krasnukha [Wed, 22 Nov 2017 13:03:02 +0000 (13:03 +0000)]
Test commit. Fix typo in comment.

llvm-svn: 318832

6 years ago[MIPS] Write PLT0 entry in case of linking N64 ABI code
Simon Atanasyan [Wed, 22 Nov 2017 12:34:29 +0000 (12:34 +0000)]
[MIPS] Write PLT0 entry in case of linking N64 ABI code

llvm-svn: 318831

6 years agoAdd another test_macros.h include I missed to tuple.by.type.pass.cpp
Billy Robert O'Neal III [Wed, 22 Nov 2017 12:29:17 +0000 (12:29 +0000)]
Add another test_macros.h include I missed to tuple.by.type.pass.cpp

llvm-svn: 318830

6 years agoAMDGPU: Consider memory dependencies with moved instructions in SILoadStoreOptimizer
Nicolai Haehnle [Wed, 22 Nov 2017 12:25:21 +0000 (12:25 +0000)]
AMDGPU: Consider memory dependencies with moved instructions in SILoadStoreOptimizer

Summary:
This bug seems to have gone unnoticed because critical cases with LDS
instructions are eliminated by the peephole optimizer.

However, equivalent situations arise with buffer loads and stores
as well, so this fixes regressions since r317751 ("AMDGPU: Merge
S_BUFFER_LOAD_DWORD_IMM into x2, x4").

Fixes at least:
KHR-GL45.shader_storage_buffer_object.basic-operations-case1-cs
KHR-GL45.cull_distance.functional
piglit tes-input-gl_ClipDistance.shader_test
... and probably more

Change-Id: I0e371536288eb8e6afeaa241a185266fd45d129d

Reviewers: arsenm, mareko, rampitec

Subscribers: kzhuravl, wdng, yaxunl, dstuttard, tpr, t-tye, llvm-commits

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

llvm-svn: 318829

6 years ago[ELF] Fix DT_MIPS_LOCAL_GOTNO value for thunks and linker scripts
James Henderson [Wed, 22 Nov 2017 12:04:21 +0000 (12:04 +0000)]
[ELF] Fix DT_MIPS_LOCAL_GOTNO value for thunks and linker scripts

The MIPS GOT section has a number of local entries based on the number of pages
needed for output sections referenced by GOT page relocations. The number is
recorded in the DT_MIPS_LOCAL_GOTNO dynamic section tag. However, the dynamic tag
is added before assignAddresses has been called, meaning that any section size used
to calculate the value will not include size modifications caused by, for example,
linker scripts and thunks.

This change moves the calculation of DT_MIPS_LOCAL_GOTNO until writeTo, by which
time the output section sizes have been finalized.

Reviewers: ruiu, rafael

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

llvm-svn: 318828

6 years ago[Docs] Update list of languages clang-format can format
Malcolm Parsons [Wed, 22 Nov 2017 10:47:35 +0000 (10:47 +0000)]
[Docs] Update list of languages clang-format can format

llvm-svn: 318827

6 years agoReturn early. NFC.
Rui Ueyama [Wed, 22 Nov 2017 09:06:42 +0000 (09:06 +0000)]
Return early. NFC.

llvm-svn: 318826

6 years agoAdd more blank lines to separate code chunks.
Rui Ueyama [Wed, 22 Nov 2017 09:06:27 +0000 (09:06 +0000)]
Add more blank lines to separate code chunks.

llvm-svn: 318825

6 years ago[DAGCombiner] Bugfix in isAlias().
Jonas Paulsson [Wed, 22 Nov 2017 08:58:30 +0000 (08:58 +0000)]
[DAGCombiner]  Bugfix in isAlias().

Since i1 is a legal type, this:

  NumBytes = Op1->getMemoryVT().getSizeInBits() >> 3;

is wrong and should be instead

  NumBytes = Op0->getMemoryVT().getStoreSize();

There seems to be more places where this should be fixed outside DAGCombiner.

Review: Hal Finkel
https://bugs.llvm.org/show_bug.cgi?id=35366

llvm-svn: 318824

6 years ago[X86] Add an X86ISD::MSCATTER node for consistency with the X86ISD::MGATHER.
Craig Topper [Wed, 22 Nov 2017 08:10:54 +0000 (08:10 +0000)]
[X86] Add an X86ISD::MSCATTER node for consistency with the X86ISD::MGATHER.

This makes the fact that X86 needs an explicit mask output not part of the type constraint for the ISD::MSCATTER.

This also gives the X86ISD::MGATHER/MSCATTER nodes a common base class simplifying the address selection code in X86ISelDAGToDAG.cpp

llvm-svn: 318823

6 years ago[llvm-tblgen] - Stop using std::string in RecordKeeper.
George Rimar [Wed, 22 Nov 2017 07:53:48 +0000 (07:53 +0000)]
[llvm-tblgen] - Stop using std::string in RecordKeeper.

RecordKeeper::getDef() is a hot place, it shows up in profiling
and it creates std::string instance for each search in RecordMap
though RecordKeeper::RecordMap can use StringRef as a key
instead to avoid that. Patch do that change.

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

llvm-svn: 318822

6 years ago[X86] Lower all ISD::MGATHER nodes to X86ISD:MGATHER.
Craig Topper [Wed, 22 Nov 2017 07:11:03 +0000 (07:11 +0000)]
[X86] Lower all ISD::MGATHER nodes to X86ISD:MGATHER.

Now we consistently represent the mask result without relying on isel ignoring it.

We now have a more general SDNode and type constraints to represent these nodes in isel patterns. This allows us to present both both vXi1 and XMM/YMM mask types with a single set of constraints.

llvm-svn: 318821

6 years ago[SelectionDAG] Add a isel matcher op to check the type of node results other than...
Craig Topper [Wed, 22 Nov 2017 07:11:01 +0000 (07:11 +0000)]
[SelectionDAG] Add a isel matcher op to check the type of node results other than result 0.

I plan to use this to check the type of the mask result of masked gathers in the X86 backend.

llvm-svn: 318820

6 years ago[SCEV] Strengthen variance condition in calculateLoopDisposition
Max Kazantsev [Wed, 22 Nov 2017 06:21:39 +0000 (06:21 +0000)]
[SCEV] Strengthen variance condition in calculateLoopDisposition

Given loops `L1` and `L2` with AddRecs `AR1` and `AR2` varying in them respectively.
When identifying loop disposition of `AR2` w.r.t. `L1`, we only say that it is varying if
`L1` contains `L2`. But there is also a possible situation where `L1` and `L2` are
consecutive sibling loops within the parent loop. In this case, `AR2` is also varying
w.r.t. `L1`, but we don't correctly identify it.

It can lead, for exaple, to attempt of incorrect folding. Consider:
  AR1 = {a,+,b}<L1>
  AR2 = {c,+,d}<L2>
  EXAR2 = sext(AR1)
  MUL = mul AR1, EXAR2
If we incorrectly assume that `EXAR2` is invariant w.r.t. `L1`, we can end up trying to
construct something like: `{a * {c,+,d}<L2>,+,b * {c,+,d}<L2>}<L1>`, which is incorrect
because `AR2` is not available on entrance of `L1`.

Both situations "`L1` contains `L2`" and "`L1` preceeds sibling loop `L2`" can be handled
with one check: "header of `L1` dominates header of `L2`". This patch replaces the old
insufficient check with this one.

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

llvm-svn: 318819

6 years agoAdd some tests for operations on const associative containers. Part of LWG#2542
Marshall Clow [Wed, 22 Nov 2017 06:02:27 +0000 (06:02 +0000)]
Add some tests for operations on const associative containers. Part of LWG#2542

llvm-svn: 318818

6 years ago[SCCP] Pick the right lattice value for constants.
Davide Italiano [Wed, 22 Nov 2017 03:04:55 +0000 (03:04 +0000)]
[SCCP] Pick the right lattice value for constants.

After the dataflow algorithm proves that an argument is constant,
it replaces it value with the integer constant and drops the lattice
value associated to the DEF.

e.g. in the example we have @f() that's called twice:
call @f(undef, ...)
call @f(2, ...)

`undef` MEET 2 = 2 so we replace the argument and all its uses with
the constant 2.

Shortly after, tryToReplaceWithConstantRange() tries to get the lattice
value for the argument we just replaced, causing an assertion.
This function is a little peculiar as it runs when we're doing replacement
and not as part of the solver but still queries the solver.

The fix is that of checking whether we replaced the value already and
get a temporary lattice value for the constant.

Thanks to Zhendong Su for the report!

Fixes PR35357.

llvm-svn: 318817

6 years ago[Driver] Make the use of relax relocations a per target option
Petr Hosek [Wed, 22 Nov 2017 01:38:31 +0000 (01:38 +0000)]
[Driver] Make the use of relax relocations a per target option

The support for relax relocations is dependent on the linker and
different toolchains within the same compiler can be using different
linkers some of which may or may not support relax relocations.

Give toolchains the option to control whether they want to use relax
relocations in addition to the existing (global) build system option.

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

llvm-svn: 318816

6 years ago[X86] Update CPUSupports code to reuse LLVM .def file [NFC]
Erich Keane [Wed, 22 Nov 2017 00:54:01 +0000 (00:54 +0000)]
[X86] Update CPUSupports code to reuse LLVM .def file [NFC]

llvm-svn: 318815

6 years ago[X86] Move the information about the feature bits used by compiler-rt and shared...
Craig Topper [Tue, 21 Nov 2017 23:36:42 +0000 (23:36 +0000)]
[X86] Move the information about the feature bits used by compiler-rt and shared by Host.cpp to a .def file and TargetParser.h so clang can make use of it.

Since we keep Host.cpp and compiler-rt relatively in sync, clang can use this information as a proxy.

llvm-svn: 318814

6 years ago[AST] Fix some Clang-tidy modernize and Include What You Use warnings; other minor...
Eugene Zelenko [Tue, 21 Nov 2017 23:26:08 +0000 (23:26 +0000)]
[AST] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC).

llvm-svn: 318813

6 years agoReplace assert(true) in tests with actual asserts. Reviewed as https://reviews.llvm...
Billy Robert O'Neal III [Tue, 21 Nov 2017 23:03:02 +0000 (23:03 +0000)]
Replace assert(true) in tests with actual asserts. Reviewed as https://reviews.llvm.org/D40324

In a17cd7c641c34b6c4bd4845a4d4fb590cb6c238c Marshall added assert(true) to the vector<bool>::size tests, which break on C1XX:

D:\Contest\gl0qojfu.5pe\src\qa\vc\libs\libcxx\upstream\test\std\containers\sequences\vector.bool\size.pass.cpp(62): error C2220: warning treated as error - no 'object' file generated
d:\contest\gl0qojfu.5pe\src\qa\vc\libs\libcxx\upstream\test\std\containers\sequences\vector.bool\size.pass.cpp(33) : warning C6326: Potential comparison of a constant with another constant.
d:\contest\gl0qojfu.5pe\src\qa\vc\libs\libcxx\upstream\test\std\containers\sequences\vector.bool\size.pass.cpp(52) : warning C6326: Potential comparison of a constant with another constant.

The corresponding test for vector::size asserts assert(c.size() == 3);, so I changed it to do that here.

llvm-svn: 318812

6 years ago[OpenMP] Fix tests after r318789
Richard Trieu [Tue, 21 Nov 2017 22:53:19 +0000 (22:53 +0000)]
[OpenMP] Fix tests after r318789

Update use of __tgt_target that had some 32bit types updated to 64bit.

llvm-svn: 318811

6 years agoRemove a broken win32 locale function redirection
Martin Storsjo [Tue, 21 Nov 2017 22:41:15 +0000 (22:41 +0000)]
Remove a broken win32 locale function redirection

One can't replace vsscanf(_l) with a sscanf(_l) that doesn't
take a va_list.

This has been untouched since it was added in SVN r140728, so
apparently it hasn't been used since. One reason for this mistake
originally might have been that there was no _vsscanf_l until MSVC
2015.

Since it's unused, just remove this define.

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

llvm-svn: 318810

6 years agoSilence some MSVC warnings about not all control paths returning a value; NFC.
Aaron Ballman [Tue, 21 Nov 2017 22:24:13 +0000 (22:24 +0000)]
Silence some MSVC warnings about not all control paths returning a value; NFC.

llvm-svn: 318809

6 years agoAdd missing test_macros.h inclusion.
Billy Robert O'Neal III [Tue, 21 Nov 2017 22:16:57 +0000 (22:16 +0000)]
Add missing test_macros.h inclusion.

llvm-svn: 318808

6 years ago[Hexagon] Add HexagonSubtarget::getVectorLength()
Krzysztof Parzyszek [Tue, 21 Nov 2017 22:13:16 +0000 (22:13 +0000)]
[Hexagon] Add HexagonSubtarget::getVectorLength()

llvm-svn: 318807

6 years ago[CodeGen] Detect empty domain because of parameters context.
Michael Kruse [Tue, 21 Nov 2017 22:11:10 +0000 (22:11 +0000)]
[CodeGen] Detect empty domain because of parameters context.

Isl does not allow generating isl_ast_expr from an isl_pw_aff that has an
empty domain (i.e. has no pieces). We already detected the case if the
isl_pw_aff comes with an empty domain.

isl_ast_build also considers the domain empty if it is disjoint with the
parameter context (e.g. parameters values that we exclude by runtime
versioning).

Intersect the access relation domain with the parameter context to
also detect such practically empty access domains. The effective
pointer used in the generated code is unimportand because it will never
be executed.

This fixes llvm.org/PR35362

llvm-svn: 318806

6 years agoObject: Improve COFF irsymtab comdat representation.
Peter Collingbourne [Tue, 21 Nov 2017 22:06:20 +0000 (22:06 +0000)]
Object: Improve COFF irsymtab comdat representation.

Change the representation of COFF comdats so that a COFF linker
is able to accurately resolve comdats between IR and native object
files. Specifically, apply name mangling to comdat names consistently
with native object files, and do not export comdats with an internal
leader because they do not affect symbol resolution.

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

llvm-svn: 318805

6 years agoChange (void) casts to TEST_IGNORE_NODISCARD, as requested by Eric. Reviewed as https...
Billy Robert O'Neal III [Tue, 21 Nov 2017 21:37:26 +0000 (21:37 +0000)]
Change (void) casts to TEST_IGNORE_NODISCARD, as requested by Eric. Reviewed as https://reviews.llvm.org/D40065

llvm-svn: 318804

6 years ago[TableGen] Improve error reporting
Evandro Menezes [Tue, 21 Nov 2017 21:33:52 +0000 (21:33 +0000)]
[TableGen] Improve error reporting

When searching for a resource unit, use the reference location instead of
the definition location in case of an error.

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

llvm-svn: 318803

6 years ago[scudo] Make getNumberOfCPUs Fuchsia compliant v2
Kostya Kortchinsky [Tue, 21 Nov 2017 21:14:00 +0000 (21:14 +0000)]
[scudo] Make getNumberOfCPUs Fuchsia compliant v2

Summary:
This change allows Fuchsia to boot properly using the Scudo allocator.

A first version of this commit was reverted by rL317834 because it broke Android
builds for toolchains generated with older NDKs. This commit introduces a
fall back to solve that issue.

Reviewers: cryptoad, krytarowski, rnk, alekseyshl

Reviewed By: cryptoad, krytarowski, alekseyshl

Subscribers: llvm-commits, srhines, kubamracek, krytarowski

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

llvm-svn: 318802

6 years ago[Hexagon] Make sure that RDF does not remove EH_LABELs
Krzysztof Parzyszek [Tue, 21 Nov 2017 21:05:51 +0000 (21:05 +0000)]
[Hexagon] Make sure that RDF does not remove EH_LABELs

Since EH_LABELs (and other labels) no longer have "side-effects", they
should be checked for separately.

llvm-svn: 318801

6 years ago[X86] Allow vpclmulqdq instructions to be commuted during isel to allow load folding.
Craig Topper [Tue, 21 Nov 2017 21:05:21 +0000 (21:05 +0000)]
[X86] Allow vpclmulqdq instructions to be commuted during isel to allow load folding.

The commuting patterns for the AVX version actually still had priority over the new patterns.

llvm-svn: 318800

6 years ago[X86] Add BITALG, VAES, VBMI2, VNNI, VPCLMULQDQ, and VPOPCNTDQ instructions to icelak...
Craig Topper [Tue, 21 Nov 2017 21:05:18 +0000 (21:05 +0000)]
[X86] Add BITALG, VAES, VBMI2, VNNI, VPCLMULQDQ, and VPOPCNTDQ instructions to icelake CPU.

This is based on table 1-1 of the October 2017 revision of Intel® Architecture Instruction Set Extensions and Future Features Programming Reference

llvm-svn: 318799

6 years ago[clangd] avoid divide by literal zero to satisfy msvc
Sam McCall [Tue, 21 Nov 2017 19:37:35 +0000 (19:37 +0000)]
[clangd] avoid divide by literal zero to satisfy msvc

llvm-svn: 318798

6 years agoAvoid unecessary opsize byte in segment move to memory
Nirav Dave [Tue, 21 Nov 2017 19:28:13 +0000 (19:28 +0000)]
Avoid unecessary opsize byte in segment move to memory

Segment moves to memory are always 16-bit. Remove invalid 32 and 64
bit variants.

Recommiting with missing clang inline assembly test change.

Fixes PR34478.

Reviewers: rnk, craig.topper

Subscribers: llvm-commits, hiraditya

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

llvm-svn: 318797

6 years agoThe offsetof macro is intended to work with subobjects rather than simple identifiers...
Aaron Ballman [Tue, 21 Nov 2017 19:25:38 +0000 (19:25 +0000)]
The offsetof macro is intended to work with subobjects rather than simple identifiers designating a member, making the -Wextended-offsetof diagnostic obsolete as this construct is not an extension. Implements WG14 DR496.

llvm-svn: 318796

6 years agoRun polly-update-format. NFC.
Michael Kruse [Tue, 21 Nov 2017 19:25:26 +0000 (19:25 +0000)]
Run polly-update-format. NFC.

polly-check-format has been failing since at least r318517,
due to more than one cause.

llvm-svn: 318795

6 years agoAdd an AST matcher for hasDefaultArgument() to match on parameter declarations that...
Aaron Ballman [Tue, 21 Nov 2017 19:22:34 +0000 (19:22 +0000)]
Add an AST matcher for hasDefaultArgument() to match on parameter declarations that have a default value.

Patch by Julie Hockett.

llvm-svn: 318794

6 years ago[clangd] use u8 strings in tests to avoid problems on windows
Sam McCall [Tue, 21 Nov 2017 19:10:22 +0000 (19:10 +0000)]
[clangd] use u8 strings in tests to avoid problems on windows

llvm-svn: 318793

6 years ago[X86] Sort bits in getHostCPUFeatures again.
Craig Topper [Tue, 21 Nov 2017 18:50:41 +0000 (18:50 +0000)]
[X86] Sort bits in getHostCPUFeatures again.

llvm-svn: 318792

6 years ago[clangd] Add JSON tests with invalid unicode
Sam McCall [Tue, 21 Nov 2017 18:40:43 +0000 (18:40 +0000)]
[clangd] Add JSON tests with invalid unicode

llvm-svn: 318791

6 years ago[Clang][OpenMP] New clang/libomptarget map interface: new function signatures, libomp...
George Rokos [Tue, 21 Nov 2017 18:26:41 +0000 (18:26 +0000)]
[Clang][OpenMP] New clang/libomptarget map interface: new function signatures, libomptarget-side

This is the libomptarget-side patch which changes the __tgt_* API function signatures in preparation for the new map interface.
Changes are: Device IDs 32bits --> 64bits, Flags 32bits --> 64bits

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

llvm-svn: 318790

6 years ago[Clang][OpenMP] New clang/libomptarget map interface: new function signatures, clang...
George Rokos [Tue, 21 Nov 2017 18:25:12 +0000 (18:25 +0000)]
[Clang][OpenMP] New clang/libomptarget map interface: new function signatures, clang-side

This clang patch changes the __tgt_* API function signatures in preparation for the new map interface.
Changes are: Device IDs 32bits --> 64bits, Flags 32bits --> 64bits

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

llvm-svn: 318789

6 years ago[AArch64] Mark mrs of TPIDR_EL0 (thread pointer) as *having* side effects.
Chad Rosier [Tue, 21 Nov 2017 18:08:34 +0000 (18:08 +0000)]
[AArch64] Mark mrs of TPIDR_EL0 (thread pointer) as *having* side effects.

This partially reverts r298851.  The the underlying issue is that we don't
currently model the dependency between mrs (read system register) and
msr (write system register) instructions.

Something like the below should never be reordered:

 msr TPIDR_EL0, x0  ;; set thread pointer
 mrs x8, TPIDR_EL0  ;; read thread pointer

but was being reordered after r298851.  The functional part of the patch
that wasn't reverted needed to remain in place in order to not break
r299462.

PR35317

llvm-svn: 318788

6 years agoFix r318786
Hans Wennborg [Tue, 21 Nov 2017 18:00:01 +0000 (18:00 +0000)]
Fix r318786

llvm-svn: 318787

6 years agoremoved unused private method decl. NFC
Nuno Lopes [Tue, 21 Nov 2017 17:53:19 +0000 (17:53 +0000)]
removed unused private method decl. NFC

llvm-svn: 318786

6 years agoAdd -finstrument-function-entry-bare flag
Hans Wennborg [Tue, 21 Nov 2017 17:30:34 +0000 (17:30 +0000)]
Add -finstrument-function-entry-bare flag

This is an instrumentation flag that's similar to
-finstrument-functions, but it only inserts calls on function entry, the
calls are inserted post-inlining, and they don't take any arugments.

This is intended for users who want to instrument function entry with
minimal overhead.

(-pg would be another alternative, but forces frame pointer emission and
affects link flags, so is probably best left alone to be used for
generating gcov data.)

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

llvm-svn: 318785

6 years agoRename test/Transforms/CountingFunctionInserter -> EntryExitInstrumenter
Hans Wennborg [Tue, 21 Nov 2017 17:22:19 +0000 (17:22 +0000)]
Rename test/Transforms/CountingFunctionInserter -> EntryExitInstrumenter

The pass was renamed in r318195.

llvm-svn: 318784

6 years agoEntryExitInstrumenter: support __cyg_profile_func_enter_bare
Hans Wennborg [Tue, 21 Nov 2017 17:22:19 +0000 (17:22 +0000)]
EntryExitInstrumenter: support __cyg_profile_func_enter_bare

It works just like __cyg_profile_func_enter but takes no arguments.

llvm-svn: 318783

6 years ago[clangd] Include the right header for std::isxdigit
Sam McCall [Tue, 21 Nov 2017 17:18:30 +0000 (17:18 +0000)]
[clangd] Include the right header for std::isxdigit

llvm-svn: 318782

6 years ago[OPENMP] Initial support for asynchronous data update, NFC.
Alexey Bataev [Tue, 21 Nov 2017 17:08:48 +0000 (17:08 +0000)]
[OPENMP] Initial support for asynchronous data update, NFC.

OpenMP 5.0 introduces asynchronous data update/dependecies clauses on
target data directives. Patch adds initial support for outer task
regions to use task-based codegen for future async target data
directives.

llvm-svn: 318781

6 years ago[clangd] Satisfy GCC: 'changes meaning of Error'
Sam McCall [Tue, 21 Nov 2017 17:02:24 +0000 (17:02 +0000)]
[clangd] Satisfy GCC: 'changes meaning of Error'

llvm-svn: 318780

6 years agoFix test/OpenMP/nvptx_data_sharing.cpp
Jonas Hahnfeld [Tue, 21 Nov 2017 16:49:11 +0000 (16:49 +0000)]
Fix test/OpenMP/nvptx_data_sharing.cpp

This was an oversight that stayed in the test from development.

llvm-svn: 318779

6 years ago[clangd] Fix dumb && || bug from r318774
Sam McCall [Tue, 21 Nov 2017 16:44:16 +0000 (16:44 +0000)]
[clangd] Fix dumb && || bug from r318774

llvm-svn: 318778

6 years ago[ARM] Remove pre-UAL FLDM/FSTM aliases
Oliver Stannard [Tue, 21 Nov 2017 16:20:25 +0000 (16:20 +0000)]
[ARM] Remove pre-UAL FLDM/FSTM aliases

These are pre-UAL syntax, and we don't support any other pre-UAL instructions,
with the exception of FLDMX/FSTMX, which don't have a UAL equivalent. Therefore
there's no reason to keep them or their AsmParser hacks around.

With the AsmParser hacks removed, the FLDMX and FSTMX instructions get the same
operand diagnostics as the UAL instructions.

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

llvm-svn: 318777

6 years ago[ASTImporter] Support new AST nodes:
Aleksei Sidorin [Tue, 21 Nov 2017 16:08:41 +0000 (16:08 +0000)]
[ASTImporter] Support new AST nodes:

 * UnresolvedUsingType
 * EmptyDecl
 * NamespaceAliasDecl
 * UsingDecl
 * UsingShadowDecl
 * UsingDirectiveDecl
 * UnresolvedUsingValueDecl
 * UnresolvedUsingTypenameDecl

Refactor error handling in ImportTemplateArgumentLoc() method.
Add a test for inline namespaces.

llvm-svn: 318776

6 years ago[sanitizer] Define SANITIZER_USE_GETAUXVAL for Android
Kostya Kortchinsky [Tue, 21 Nov 2017 16:08:07 +0000 (16:08 +0000)]
[sanitizer] Define SANITIZER_USE_GETAUXVAL for Android

Summary:
Android for API level >= 21 has `getauxval`. Enable `SANITIZER_USE_GETAUXVAL`
when those requirements are met. Correct a typo in the header.

Reviewers: alekseyshl

Reviewed By: alekseyshl

Subscribers: srhines, llvm-commits, kubamracek

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

llvm-svn: 318775

6 years ago[clangd] Add parsing and value inspection to JSONExpr.
Sam McCall [Tue, 21 Nov 2017 16:00:53 +0000 (16:00 +0000)]
[clangd] Add parsing and value inspection to JSONExpr.

Summary:
This will replace the places where we're using YAMLParser to parse JSON now:
  - the new marshalling code (T::parse()) should handle fewer cases and require
    fewer explicit casts
  - we'll early-reject invalid JSON that YAMLParser accepts
  - we'll be able to fix protocol-parsing bugs caused by the fact that YAML can
    only parse forward

I plan to do the conversion as soon as this lands, but I don't want it in one
patch as the protocol.cpp changes are conflict-prone.

Reviewers: ioeric

Subscribers: ilya-biryukov, cfe-commits

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

llvm-svn: 318774

6 years ago[OpenMP] Add implicit data sharing support when offloading to NVIDIA GPUs using OpenM...
Gheorghe-Teodor Bercea [Tue, 21 Nov 2017 15:54:54 +0000 (15:54 +0000)]
[OpenMP] Add implicit data sharing support when offloading to NVIDIA GPUs using OpenMP device offloading

Summary:
This patch is part of the development effort to add support in the current OpenMP GPU offloading implementation for implicitly sharing variables between a target region executed by the team master thread and the worker threads within that team.

This patch is the first of three required for successfully performing the implicit sharing of master thread variables with the worker threads within a team. The remaining two patches are:
- Patch D38978 to the LLVM NVPTX backend which ensures the lowering of shared variables to an device memory which allows the sharing of references;
- Patch (coming soon) is a patch to libomptarget runtime library which ensures that a list of references to shared variables is properly maintained.

A simple code snippet which illustrates an implicit data sharing situation is as follows:

```
#pragma omp target
{
   // master thread only
   int v;
   #pragma omp parallel
   {
      // worker threads
      // use v
   }
}
```

Variable v is implicitly shared from the team master thread which executes the code in between the target and parallel directives. The worker threads must operate on the latest version of v, including any updates performed by the master.

The code generated in this patch relies on the LLVM NVPTX patch (mentioned above) which prevents v from being lowered in the thread local memory of the master thread thus making the reference to this variable un-shareable with the workers. This ensures that the code generated by this patch is correct.
Since the parallel region is outlined the passing of arguments to the outlined regions must preserve the original order of arguments. The runtime therefore maintains a list of references to shared variables thus ensuring their passing in the correct order. The passing of arguments to the outlined parallel function is performed in a separate function which the data sharing infrastructure constructs in this patch. The function is inlined when optimizations are enabled.

Reviewers: hfinkel, carlo.bertolli, arpith-jacob, Hahnfeld, ABataev, caomhin

Reviewed By: ABataev

Subscribers: cfe-commits, jholewinski

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

llvm-svn: 318773

6 years agoAdd MemorySSA as loop dependency, disabled by default [NFC].
Alina Sbirlea [Tue, 21 Nov 2017 15:45:46 +0000 (15:45 +0000)]
Add MemorySSA as loop dependency, disabled by default [NFC].

Summary:
First step in adding MemorySSA as dependency for loop pass manager.
Adding the dependency under a flag.

New pass manager: MSSA pointer in LoopStandardAnalysisResults can be null.
Legacy and new pass manager: Use cl::opt EnableMSSALoopDependency. Disabled by default.

Reviewers: sanjoy, davide, gberry

Subscribers: mehdi_amini, Prazek, llvm-commits

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

llvm-svn: 318772

6 years ago[ARM] Don't omit non-default predication code
Oliver Stannard [Tue, 21 Nov 2017 15:34:15 +0000 (15:34 +0000)]
[ARM] Don't omit non-default predication code

This was causing the (invalid) predicated versions of the NEON VRINTX and
VRINTZ instructions to be accepted, with the condition code being ignored.

Also, there is no NEON VRINTR instruction, so that part of the check was not
necessary.

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

llvm-svn: 318771

6 years ago[Asm] Improve "too few operands" errors
Oliver Stannard [Tue, 21 Nov 2017 15:16:50 +0000 (15:16 +0000)]
[Asm] Improve "too few operands" errors

- We can still emit this error if the actual instruction has two or more
  operands missing compared to the expected one.
- We should only emit this error once per instruction.

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

llvm-svn: 318770

6 years ago[Asm] Finish matching once end of formal and actual lists reached (NFC)
Oliver Stannard [Tue, 21 Nov 2017 15:12:05 +0000 (15:12 +0000)]
[Asm] Finish matching once end of formal and actual lists reached (NFC)

This is NFC, as the matcher would continue looping up to the maximum
number of operands with no effect, but this should improve performance a
bit, and makes the debug trace clearer.

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

llvm-svn: 318769

6 years agoRevert r318759 due to make check-all failure on Windows
Sander de Smalen [Tue, 21 Nov 2017 15:07:43 +0000 (15:07 +0000)]
Revert r318759 due to make check-all failure on Windows

llvm-svn: 318768

6 years agoAdd target triples to openmp-offload-gpu.c
Jonas Hahnfeld [Tue, 21 Nov 2017 15:06:28 +0000 (15:06 +0000)]
Add target triples to openmp-offload-gpu.c

This might fix the failure on Green Dragon.

llvm-svn: 318767

6 years ago[ARM] Add diagnostics for SPR/DPR lists
Oliver Stannard [Tue, 21 Nov 2017 15:06:01 +0000 (15:06 +0000)]
[ARM] Add diagnostics for SPR/DPR lists

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

llvm-svn: 318766

6 years ago[demangler] Document some features that the demangler doesn't yet support, NFC
Erik Pilkington [Tue, 21 Nov 2017 15:04:08 +0000 (15:04 +0000)]
[demangler] Document some features that the demangler doesn't yet support, NFC

llvm-svn: 318765

6 years ago[InstCombine] Test for PR35354: unable to vectorize loop with std::max
Alexey Bataev [Tue, 21 Nov 2017 14:49:13 +0000 (14:49 +0000)]
[InstCombine] Test for PR35354: unable to vectorize loop with std::max
on floats, NFC.

llvm-svn: 318764

6 years ago[OpenMP] Consistently use cubin extension for nvlink
Jonas Hahnfeld [Tue, 21 Nov 2017 14:44:45 +0000 (14:44 +0000)]
[OpenMP] Consistently use cubin extension for nvlink

This was previously done in some places, but for example not for
bundling so that single object compilation with -c failed. In
addition cubin was used for all file types during unbundling which
is incorrect for assembly files that are passed to ptxas.
Tighten up the tests so that we can't regress in that area.

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

llvm-svn: 318763

6 years ago[AMDGPU] SDWA: remove omod src operand for VOP2b instructions
Sam Kolton [Tue, 21 Nov 2017 14:11:59 +0000 (14:11 +0000)]
[AMDGPU] SDWA: remove omod src operand for VOP2b instructions

Summary: VOP2b instructions (v_subbrev_u32, v_add_i32 ...) shouldn't support OMod operand in SDWA encoding

Reviewers: rampitec, dp

Subscribers: arsenm, kzhuravl, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye

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

llvm-svn: 318761

6 years ago[RISCV][NFC] Remove unnecessary {} around single statement if block
Alex Bradbury [Tue, 21 Nov 2017 12:41:41 +0000 (12:41 +0000)]
[RISCV][NFC] Remove unnecessary {} around single statement if block

Almost too trivial to worry about, but it seems worth having consistency with
upcoming commits.

llvm-svn: 318760

6 years ago[TableGen] AsmMatcher: Fix bug with reported diagnostic for operand.
Sander de Smalen [Tue, 21 Nov 2017 12:26:06 +0000 (12:26 +0000)]
[TableGen] AsmMatcher: Fix bug with reported diagnostic for operand.

Summary:
The generated diagnostic by the AsmMatcher isn't always applicable to the AsmOperand.

This is because the code will only update the diagnostic if it is more specific than the previous diagnostic. However, when having validated operands and 'moved on' to a next operand (for some instruction/alias for which all previous operands are valid), if the diagnostic is InvalidOperand, than that should be set as the diagnostic, not the more specific message about a previous operand for some other instruction/alias candidate.

Reviewers: craig.topper, olista01, rengolin, stoklund

Reviewed By: olista01

Subscribers: javed.absar, llvm-commits

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

llvm-svn: 318759

6 years ago[X86][XOP] Add missing scheduler classes to XOP instructions
Simon Pilgrim [Tue, 21 Nov 2017 12:02:18 +0000 (12:02 +0000)]
[X86][XOP] Add missing scheduler classes to XOP instructions

All match equivalent basic classes (WritePHAdd, WriteFAdd etc.) according to both the AMD 15h SOG and Agner's tables.

llvm-svn: 318758