platform/upstream/llvm.git
7 years agor600: Add missing datalayout to .ll files
Jan Vesely [Fri, 20 Oct 2017 21:00:31 +0000 (21:00 +0000)]
r600: Add missing datalayout to .ll files

Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu>
Acked-by: Aaron Watry <awatry@gmail.com>
llvm-svn: 316238

7 years ago[globalisel][tablegen] Fix small spelling nits. NFC
Daniel Sanders [Fri, 20 Oct 2017 20:55:29 +0000 (20:55 +0000)]
[globalisel][tablegen] Fix small spelling nits. NFC

ComplexRendererFn -> ComplexRendererFns
Corrected a couple lingering references to tied operands that were missed.

llvm-svn: 316237

7 years ago[Hexagon] Report error instead of crashing on wrong inline-asm constraints
Krzysztof Parzyszek [Fri, 20 Oct 2017 20:24:44 +0000 (20:24 +0000)]
[Hexagon] Report error instead of crashing on wrong inline-asm constraints

llvm-svn: 316236

7 years agoRevert "[OpenMP] Avoid VLAs for some reductions on array sections"
Jonas Hahnfeld [Fri, 20 Oct 2017 20:16:17 +0000 (20:16 +0000)]
Revert "[OpenMP] Avoid VLAs for some reductions on array sections"

This breaks at least two buildbots:
http://lab.llvm.org:8011/builders/clang-cmake-x86_64-avx2-linux/builds/1175
http://lab.llvm.org:8011/builders/clang-atom-d525-fedora-rel/builds/10478

This reverts commit r316229 during local investigation.

llvm-svn: 316235

7 years agoRestrict OMPT to OpenMP version 5.0 and remove old header files
Jonathan Peyton [Fri, 20 Oct 2017 20:14:46 +0000 (20:14 +0000)]
Restrict OMPT to OpenMP version 5.0 and remove old header files

Patch by Simon Convent

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

llvm-svn: 316234

7 years agoCOFF: Add type server pdb files to linkrepro tar file.
Peter Collingbourne [Fri, 20 Oct 2017 19:48:26 +0000 (19:48 +0000)]
COFF: Add type server pdb files to linkrepro tar file.

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

llvm-svn: 316233

7 years agoAdd license envirable for testing Intel compilers
Jonathan Peyton [Fri, 20 Oct 2017 19:45:43 +0000 (19:45 +0000)]
Add license envirable for testing Intel compilers

Patch by Simon Convent

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

llvm-svn: 316232

7 years agoRevert "Logging: Make sure logging machinery is in a consistent state after forking"
Pavel Labath [Fri, 20 Oct 2017 19:44:53 +0000 (19:44 +0000)]
Revert "Logging: Make sure logging machinery is in a consistent state after forking"

The pthread_atfork trick breaks on android, because
pthread_rwlock_unlock detects that it is not the same thread which
locked the lock. This means that the subsequent lock attempt will still
deadlock (only this time it happens deterministically instead of at
random). Reverting to find a better solution.

This reverts commit r316173.

llvm-svn: 316231

7 years agoAdd C++ support for testcases
Jonathan Peyton [Fri, 20 Oct 2017 19:42:32 +0000 (19:42 +0000)]
Add C++ support for testcases

Patch by Simon Convent

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

llvm-svn: 316230

7 years ago[OpenMP] Avoid VLAs for some reductions on array sections
Jonas Hahnfeld [Fri, 20 Oct 2017 19:40:40 +0000 (19:40 +0000)]
[OpenMP] Avoid VLAs for some reductions on array sections

In some cases the compiler can deduce the length of an array section
as constants. With this information, VLAs can be avoided in place of
a constant sized array or even a scalar value if the length is 1.
Example:
int a[4], b[2];
pragma omp parallel reduction(+: a[1:2], b[1:1])
{ }

For chained array sections, this optimization is restricted to cases
where all array sections except the last have a constant length 1.
This trivially guarantees that there are no holes in the memory region
that needs to be privatized.
Example:
int c[3][4];
pragma omp parallel reduction(+: c[1:1][1:2])
{ }

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

llvm-svn: 316229

7 years ago[Hexagon] Reorganize and update instruction patterns
Krzysztof Parzyszek [Fri, 20 Oct 2017 19:33:12 +0000 (19:33 +0000)]
[Hexagon] Reorganize and update instruction patterns

llvm-svn: 316228

7 years agoApply formatting changes
Jonathan Peyton [Fri, 20 Oct 2017 19:30:57 +0000 (19:30 +0000)]
Apply formatting changes

.clang-format's comments are removed and a (hopefully) final
set of formatting changes are applied.

Differential Revision: https://reviews.llvm.org/D38837
Differential Revision: https://reviews.llvm.org/D38920

llvm-svn: 316227

7 years ago[X86][SSE] Add missing _mm_extract_ps fast-isel test
Simon Pilgrim [Fri, 20 Oct 2017 19:29:01 +0000 (19:29 +0000)]
[X86][SSE] Add missing _mm_extract_ps fast-isel test

llvm-svn: 316226

7 years agoAllow /showIncludes with /P
Erich Keane [Fri, 20 Oct 2017 19:18:30 +0000 (19:18 +0000)]
Allow /showIncludes with /P

r213589 was checked in as a solution to
https://bugs.llvm.org/show_bug.cgi?id=20336.

However, it is possible to use /EP with /P
to suppress #line directives AND output to
a file. There is no reason in that case to
suppress /showIncludes.

This was reported here:
https://bugs.llvm.org/show_bug.cgi?id=34997

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

llvm-svn: 316225

7 years agoGNU: do not read the FDE count if omitted
Saleem Abdulrasool [Fri, 20 Oct 2017 18:47:35 +0000 (18:47 +0000)]
GNU: do not read the FDE count if omitted

If there is no binary search table computed, the FDECount encoding is
DW_EH_PE_omit.  Do not attempt to read the FDECount in such a situation
as we will read an incorrect value.  binutils only writes out the
FDECount if the encoding is not DW_EH_PE_omit.

llvm-svn: 316224

7 years ago[x86] avoid FileCheck assert duplication with retl/retq regex; NFC
Sanjay Patel [Fri, 20 Oct 2017 18:35:32 +0000 (18:35 +0000)]
[x86] avoid FileCheck assert duplication with retl/retq regex; NFC

This was suggested in PR35003:
https://bugs.llvm.org/show_bug.cgi?id=35003

32-bit checks may be identical to 64-bit (if we avoid those pesky scalar params!).

I'll check in the script change shortly assuming this doesn't anger any bots.

llvm-svn: 316223

7 years ago[X86][SSE] getTargetShuffleMask - check shuffle input value types. NFCI.
Simon Pilgrim [Fri, 20 Oct 2017 18:07:50 +0000 (18:07 +0000)]
[X86][SSE] getTargetShuffleMask - check shuffle input value types. NFCI.

To help identify shuffle combine issues

llvm-svn: 316222

7 years ago[clang-tidy] Add missing test files in r316090.
Haojian Wu [Fri, 20 Oct 2017 17:54:53 +0000 (17:54 +0000)]
[clang-tidy] Add missing test files in r316090.

llvm-svn: 316221

7 years ago[WebAssembly] MC: Handle (ignore) MCSA_Protected symbol attribute
Sam Clegg [Fri, 20 Oct 2017 17:41:12 +0000 (17:41 +0000)]
[WebAssembly] MC: Handle (ignore) MCSA_Protected symbol attribute

llvm-svn: 316220

7 years agoMake x86 __ehhandler comdat if parent function is
Dave Lee [Fri, 20 Oct 2017 17:04:43 +0000 (17:04 +0000)]
Make x86 __ehhandler comdat if parent function is

Summary:
This change comes from using lld for i686-windows-msvc. Before this change, lld
emits an error of:

    error: relocation against symbol in discarded section: .xdata

It's possible that this could be addressed in lld, but I think this change is
reasonable on its own.

At a high level, this is being generated:

    A (.text comdat) -> B (.text) -> C (.xdata comdat)

Where A is a C++ inline function, which references B, an exception handler
thunk, which references C, the exception handling info.

With this structure, lld will error when applying relocations to B if the C it
references has been discarded (some other C has been selected).

This change checks if A is comdat, and if so places the exception registration
thunk (B) in the comdata group of A (and B).

It appears that MSVC makes the __ehhandler function comdat.

Is it possible that duplicate thunks are being emitted into the final binary
with other linkers, or are they stripping the unused thunks?

Reviewers: rnk, majnemer, compnerd, smeenai

Reviewed By: rnk, compnerd

Subscribers: llvm-commits

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

llvm-svn: 316219

7 years ago[Hexagon] Allow redefinition with immediates for hw loop conversion
Krzysztof Parzyszek [Fri, 20 Oct 2017 16:56:33 +0000 (16:56 +0000)]
[Hexagon] Allow redefinition with immediates for hw loop conversion

Normally, if the registers holding the induction variable's bounds
are redefined inside of the loop's body, the loop cannot be converted
to a hardware loop. However, if the redefining instruction is actually
loading an immediate value into the register, this conversion is both
possible and legal (since the immediate itself will be used in the
loop setup in the preheader).

llvm-svn: 316218

7 years ago[X86] Check all CPU target names.
Simon Pilgrim [Fri, 20 Oct 2017 16:55:51 +0000 (16:55 +0000)]
[X86] Check all CPU target names.

We ignore the 32-bit/64-bit triple but I've tried to use i686 triples for CPUs that don't support x86_64

llvm-svn: 316217

7 years agoX86 Tests: Add tests for vector permutes with variable indices. NFC.
Zvi Rackover [Fri, 20 Oct 2017 15:32:14 +0000 (15:32 +0000)]
X86 Tests: Add tests for vector permutes with variable indices. NFC.

Basic tests which are the equivalent of single-source shufflevector with variable mask.

llvm-svn: 316216

7 years agoRevert "[mips] Reordering callseq* nodes to be linear"
Aleksandar Beserminji [Fri, 20 Oct 2017 14:35:41 +0000 (14:35 +0000)]
Revert "[mips] Reordering callseq* nodes to be linear"

This reverts commit r314507, because the original patch is causing test
failures.

llvm-svn: 316215

7 years ago[ARM] Use post-RA MI scheduler when +use-misched is set
Eugene Leviant [Fri, 20 Oct 2017 14:29:17 +0000 (14:29 +0000)]
[ARM] Use post-RA MI scheduler when +use-misched is set

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

llvm-svn: 316214

7 years ago[X86][AVX512] Regenerate regcall tests.
Simon Pilgrim [Fri, 20 Oct 2017 14:13:02 +0000 (14:13 +0000)]
[X86][AVX512] Regenerate regcall tests.

As part of tracking down machine verifier issues (PR27481)

llvm-svn: 316213

7 years ago[clang-refactor] Add "-Inplace" option to the commandline tool.
Haojian Wu [Fri, 20 Oct 2017 12:37:16 +0000 (12:37 +0000)]
[clang-refactor] Add "-Inplace" option to the commandline tool.

Summary:
Change clang-refactor default behavior to print the new code after refactoring
(instead of editing the source files), which would make it easier to use
and debug the refactoring action.

Reviewers: arphaman, ioeric

Reviewed By: arphaman

Subscribers: cfe-commits

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

llvm-svn: 316212

7 years ago[CodeGen] Fix generation of TBAA info for array-to-pointer conversions
Ivan A. Kosarev [Fri, 20 Oct 2017 12:35:17 +0000 (12:35 +0000)]
[CodeGen] Fix generation of TBAA info for array-to-pointer conversions

Resolves:
Fatal error: Offset not zero at the point of scalar access.
http://llvm.org/PR34992

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

llvm-svn: 316211

7 years agotsan: add tests missed in r316209
Dmitry Vyukov [Fri, 20 Oct 2017 12:10:21 +0000 (12:10 +0000)]
tsan: add tests missed in r316209

llvm-svn: 316210

7 years ago[tsan] Add Mutex annotation flag for constant-initialized __tsan_mutex_linker_init...
Dmitry Vyukov [Fri, 20 Oct 2017 12:08:53 +0000 (12:08 +0000)]
[tsan] Add Mutex annotation flag for constant-initialized __tsan_mutex_linker_init behavior

Add a new flag, _⁠_tsan_mutex_not_static, which has the opposite sense
of _⁠_tsan_mutex_linker_init. When the new _⁠_tsan_mutex_not_static flag
is passed to _⁠_tsan_mutex_destroy, tsan ignores the destruction unless
the mutex was also created with the _⁠_tsan_mutex_not_static flag.

This is useful for constructors that otherwise woud set
_⁠_tsan_mutex_linker_init but cannot, because they are declared constexpr.

Google has a custom mutex with two constructors, a "linker initialized"
constructor that relies on zero-initialization and sets
⁠_⁠_tsan_mutex_linker_init, and a normal one which sets no tsan flags.
The "linker initialized" constructor is morally constexpr, but we can't
declare it constexpr because of the need to call into tsan as a side effect.

With this new flag, the normal c'tor can set _⁠_tsan_mutex_not_static,
the "linker initialized" constructor can rely on tsan's lazy initialization,
and _⁠_tsan_mutex_destroy can still handle both cases correctly.

Author: Greg Falcon (gfalcon)
Reviewed in: https://reviews.llvm.org/D39095

llvm-svn: 316209

7 years ago[ValueTracking] Enabling ValueTracking patch by default
Nikolai Bozhenov [Fri, 20 Oct 2017 10:08:47 +0000 (10:08 +0000)]
[ValueTracking] Enabling ValueTracking patch by default
(recommit #2 after checking for timeout issue).

The original patch was an improvement to IR ValueTracking on
non-negative integers. It has been checked in to trunk (D18777,
r284022). But was disabled by default due to performance regressions.
Perf impact has improved. The patch would be enabled by default.

Reviewers: reames, hfinkel

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

Patch by: Olga Chupina <olga.chupina@intel.com>

llvm-svn: 316208

7 years agoAdd test case for LoopSink pass
Max Kazantsev [Fri, 20 Oct 2017 06:40:48 +0000 (06:40 +0000)]
Add test case for LoopSink pass

This test checks that load from constant memory will be sunk regardless of
aliasing stores in the loop.

Patch by Daniil Suchkov!

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

llvm-svn: 316207

7 years ago[AVR] Fix the select-mbb-placement-bug.ll
Dylan McKay [Fri, 20 Oct 2017 04:17:14 +0000 (04:17 +0000)]
[AVR] Fix the select-mbb-placement-bug.ll

llvm-svn: 316205

7 years agoBasic: restore {,u}intptr_t on NetBSD/ARM
Saleem Abdulrasool [Fri, 20 Oct 2017 04:11:28 +0000 (04:11 +0000)]
Basic: restore {,u}intptr_t on NetBSD/ARM

NetBSD uses `long int` for `intptr_t` on ARM.  This was changed in SVN
r316046, referenced against other compilers.  However, NetBSD's
reference was incorrect as the current clang behaviour is more
up-to-date.  Restore the original behaviour for that target.

llvm-svn: 316204

7 years ago[ExecutionEngine] Temporarily remove the ExecutionEngine tls tests.
Lang Hames [Fri, 20 Oct 2017 01:18:00 +0000 (01:18 +0000)]
[ExecutionEngine] Temporarily remove the ExecutionEngine tls tests.

Will re-enable once I figure out why the necessary runtime functions are
missing on some bots.

llvm-svn: 316203

7 years ago[ExecutionEngine] After a heroic dev-meeting hack session, the JIT supports TLS.
Lang Hames [Fri, 20 Oct 2017 00:53:16 +0000 (00:53 +0000)]
[ExecutionEngine] After a heroic dev-meeting hack session, the JIT supports TLS.

Turns on EmulatedTLS support by default in EngineBuilder. ;)

llvm-svn: 316200

7 years agoDisabling the transformation introduced in r315888
Nemanja Ivanovic [Fri, 20 Oct 2017 00:36:46 +0000 (00:36 +0000)]
Disabling the transformation introduced in r315888

The commit at https://reviews.llvm.org/rL315888 is causing some failures
with internal testing. Disabling this code until we can resolve the issues.

llvm-svn: 316199

7 years agoRevert r316193.
Richard Smith [Fri, 20 Oct 2017 00:25:07 +0000 (00:25 +0000)]
Revert r316193.

This patch breaks users using -fno-canonical-prefixes, for whom resolving
symlinks is not acceptable.

llvm-svn: 316195

7 years agoTry to shorten system header paths when using -MD depfiles
Peter Wu [Thu, 19 Oct 2017 23:53:27 +0000 (23:53 +0000)]
Try to shorten system header paths when using -MD depfiles

GCC tries to shorten system headers in depfiles using its real path
(resolving components like ".." and following symlinks). Mimic this
feature to ensure that the Ninja build tool detects the correct
dependencies when a symlink changes directory levels, see
https://github.com/ninja-build/ninja/issues/1330

An option to disable this feature is added in case "these changed header
paths may conflict with some compilation environments", see
https://gcc.gnu.org/ml/gcc-patches/2012-09/msg00287.html

Note that the original feature request for GCC
(https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52974) also included paths
preprocessed output (-E) and diagnostics. That is not implemented now
since I am not sure if it breaks something else.

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

llvm-svn: 316193

7 years ago[XRay] [docs] Document how to generate flamegraphs from xray traces.
Keith Wyss [Thu, 19 Oct 2017 22:35:09 +0000 (22:35 +0000)]
[XRay] [docs] Document how to generate flamegraphs from xray traces.

Summary:
Updated the XRayExample docs with instructions for using the llvm-xray stacks
command.

Reviewers: dberris

Subscribers: llvm-commits

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

llvm-svn: 316192

7 years agoFix an unsigned integer overflow in regex that lead to a bad memory access. Found...
Marshall Clow [Thu, 19 Oct 2017 22:10:41 +0000 (22:10 +0000)]
Fix an unsigned integer overflow in regex that lead to a bad memory access. Found by OSS-Fuzz

llvm-svn: 316191

7 years ago[Transforms] Fix some Clang-tidy modernize and Include What You Use warnings; other...
Eugene Zelenko [Thu, 19 Oct 2017 22:07:16 +0000 (22:07 +0000)]
[Transforms] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC).

llvm-svn: 316190

7 years ago[RISCV] Add missing hunk from r316188
Alex Bradbury [Thu, 19 Oct 2017 21:43:29 +0000 (21:43 +0000)]
[RISCV] Add missing hunk from r316188

r316188 didn't set guessInstructionProperties=1 as it should have done.

llvm-svn: 316189

7 years ago[RISCV] Initial codegen support for ALU operations
Alex Bradbury [Thu, 19 Oct 2017 21:37:38 +0000 (21:37 +0000)]
[RISCV] Initial codegen support for ALU operations

This adds the minimum necessary to support codegen for simple ALU operations
on RV32. Prolog and epilog insertion, support for memory operations etc etc
follow in future patches.

Leave guessInstructionProperties=1 until https://reviews.llvm.org/D37065 is
reviewed and lands.

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

llvm-svn: 316188

7 years ago[Transforms] Fix some Clang-tidy modernize and Include What You Use warnings; other...
Eugene Zelenko [Thu, 19 Oct 2017 21:21:30 +0000 (21:21 +0000)]
[Transforms] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC).

llvm-svn: 316187

7 years agoThese attributes are not supported by GCC and should not be in the gnu namespace...
Aaron Ballman [Thu, 19 Oct 2017 21:20:28 +0000 (21:20 +0000)]
These attributes are not supported by GCC and should not be in the gnu namespace. Switching from the GCC spelling to the GNU spelling so that they are only supported with __attribute__(()).

llvm-svn: 316186

7 years agoAdd an svn project to contain the files that appear at the root of the
James Y Knight [Thu, 19 Oct 2017 21:09:49 +0000 (21:09 +0000)]
Add an svn project to contain the files that appear at the root of the
monorepo.

llvm-svn: 316185

7 years agoThese attributes are supported by GCC with the gnu vendor namespace for C++11-style...
Aaron Ballman [Thu, 19 Oct 2017 21:09:39 +0000 (21:09 +0000)]
These attributes are supported by GCC with the gnu vendor namespace for C++11-style attributes. Enabling the gnu namespace by switching to the GCC spelling.

llvm-svn: 316184

7 years ago[SelectionDAG] Add a check to getVectorShuffle to ensure that the only negative index...
Craig Topper [Thu, 19 Oct 2017 20:59:41 +0000 (20:59 +0000)]
[SelectionDAG] Add a check to getVectorShuffle to ensure that the only negative index we allow is -1.

llvm-svn: 316183

7 years ago[X86] Remove LowerEXTRACT_SUBVECTOR handler. All EXTRACT_SUBVECTORs are marked as...
Craig Topper [Thu, 19 Oct 2017 20:59:40 +0000 (20:59 +0000)]
[X86] Remove LowerEXTRACT_SUBVECTOR handler. All EXTRACT_SUBVECTORs are marked as legal.

llvm-svn: 316182

7 years agoAMDGPU: Parse r600 CPU name early and expose FMAF capability
Jan Vesely [Thu, 19 Oct 2017 20:40:13 +0000 (20:40 +0000)]
AMDGPU: Parse r600 CPU name early and expose FMAF capability

Improve amdgcn macro test
Differential Revision: https://reviews.llvm.org/D38667

llvm-svn: 316181

7 years ago[COFF] Avoid forward declaring StringSet, fix build
Martin Storsjo [Thu, 19 Oct 2017 20:19:16 +0000 (20:19 +0000)]
[COFF] Avoid forward declaring StringSet, fix build

This should fix the build after SVN r316178, which worked fine
on GCC 5.4, but failed on clang with errors like these:

MinGW.h:26:3: error: too few template arguments for class template 'StringSet'
  StringSet<> ExcludeSymbols;
  ^
lld/Common/LLVM.h:28:30: note: template is declared here
  template<typename T> class StringSet;

Don't forward declare and add the using directive in the main
lld/Common/LLVM.h header, but just qualify the class name
in MinGW.h instead.

llvm-svn: 316180

7 years ago[CGExprScalar] Add missing types in function GetIntrinsic
Guozhi Wei [Thu, 19 Oct 2017 20:11:23 +0000 (20:11 +0000)]
[CGExprScalar] Add missing types in function GetIntrinsic

In function GetIntrinsic, not all types are covered. Types double and long long are missed, type long is wrongly treated same as int, it should be same as long long. These problems cause compiler crashes when compiling code in PR31161. This patch fixed the problem.

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

llvm-svn: 316179

7 years ago[COFF] Move MinGW specific functions/classes to a separate file. NFC.
Martin Storsjo [Thu, 19 Oct 2017 19:49:38 +0000 (19:49 +0000)]
[COFF] Move MinGW specific functions/classes to a separate file. NFC.

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

llvm-svn: 316178

7 years ago[Sema] Fix assertion failure when checking for unused variables in a dependent context.
Benjamin Kramer [Thu, 19 Oct 2017 19:07:13 +0000 (19:07 +0000)]
[Sema] Fix assertion failure when checking for unused variables in a dependent context.

llvm-svn: 316177

7 years ago[X86][AES] Test AES intrinsics on 32/64-bit targets with/without VEX encoding
Simon Pilgrim [Thu, 19 Oct 2017 19:05:04 +0000 (19:05 +0000)]
[X86][AES] Test AES intrinsics on 32/64-bit targets with/without VEX encoding

Don't just test on 32-bit

llvm-svn: 316176

7 years agoThe cost of splitting a large vector instruction is not being taken into account...
Graham Yiu [Thu, 19 Oct 2017 18:16:31 +0000 (18:16 +0000)]
The cost of splitting a large vector instruction is not being taken into account by the getUserCost function. This was leading to some loops being over unrolled. The cost of a vector instruction is now being multiplied by the cost of the type legalization. This will return a more accurate cost.

Committing on behalf on Brad Nemanich (brad.nemanich@ibm.com)

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

llvm-svn: 316174

7 years agoLogging: Make sure logging machinery is in a consistent state after forking
Pavel Labath [Thu, 19 Oct 2017 17:40:51 +0000 (17:40 +0000)]
Logging: Make sure logging machinery is in a consistent state after forking

Summary:
We had a bug where if we had forked (in the ProcessLauncherPosixFork)
while another thread was writing a log message, we would deadlock. This
happened because the fork child inherited the locked log rwmutex, which
would never get unlocked. This meant the child got stuck trying to
disable all log channels.

The bug existed for a while but only started being apparent after
D37930, which started using ThreadLauncher (which uses logging) instead
of std::thread (which does not) for launching TaskPool threads.

The fix is to use pthread_atfork to make sure noone is writing a log
message while we are forking.

Reviewers: zturner, eugene, clayborg

Subscribers: lldb-commits

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

llvm-svn: 316173

7 years agoFix UB - signed integer overflow in regex. Thanks to Tim Shen for the patch. Reviewed...
Marshall Clow [Thu, 19 Oct 2017 17:39:16 +0000 (17:39 +0000)]
Fix UB - signed integer overflow in regex. Thanks to Tim Shen for the patch. Reviewed as https://reviews.llvm.org/D39066

llvm-svn: 316172

7 years agoAMDGPU/Docs: Fix unreadable characters
Konstantin Zhuravlyov [Thu, 19 Oct 2017 17:12:55 +0000 (17:12 +0000)]
AMDGPU/Docs: Fix unreadable characters

llvm-svn: 316171

7 years ago[Hexagon] Fix store conversion from rr to io in optimize addressing modes
Krzysztof Parzyszek [Thu, 19 Oct 2017 16:59:22 +0000 (16:59 +0000)]
[Hexagon] Fix store conversion from rr to io in optimize addressing modes

llvm-svn: 316170

7 years agoExecutionEngine: adjust COFF i386 tautological asserts
Saleem Abdulrasool [Thu, 19 Oct 2017 16:57:40 +0000 (16:57 +0000)]
ExecutionEngine: adjust COFF i386 tautological asserts

Modify static_casts to not be tautological in some COFF i386
relocations.

Patch by Alex Langford!

llvm-svn: 316169

7 years ago[RISCV] RISCVAsmParser: early exit if RISCVOperand isn't immediate as expected
Alex Bradbury [Thu, 19 Oct 2017 16:22:51 +0000 (16:22 +0000)]
[RISCV] RISCVAsmParser: early exit if RISCVOperand isn't immediate as expected

This is necessary to avoid an assertion in the included test case and similar
assembler inputs.

llvm-svn: 316168

7 years ago[RISCV][NFC] Drop unused parameter from createImm helper in RISCVAsmParser
Alex Bradbury [Thu, 19 Oct 2017 16:09:20 +0000 (16:09 +0000)]
[RISCV][NFC] Drop unused parameter from createImm helper in RISCVAsmParser

llvm-svn: 316167

7 years agoFix nodiscard for volatile references
Erich Keane [Thu, 19 Oct 2017 15:58:58 +0000 (15:58 +0000)]
Fix nodiscard for volatile references

As reported here https://bugs.llvm.org/show_bug.cgi?id=34988
[[nodiscard]] warnings were not being suppressed for
volatile-ref return values.

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

llvm-svn: 316166

7 years ago[AMDGPU] Fix bug in enqueued block codegen due to an extra line
Yaxun Liu [Thu, 19 Oct 2017 15:56:13 +0000 (15:56 +0000)]
[AMDGPU] Fix bug in enqueued block codegen due to an extra line

llvm-svn: 316165

7 years agoRevert r315992 because of a found miscompilation failure
Nikolai Bozhenov [Thu, 19 Oct 2017 15:36:18 +0000 (15:36 +0000)]
Revert r315992 because of a found miscompilation failure

llvm-svn: 316164

7 years ago[ELF] - Simplify. NFC.
George Rimar [Thu, 19 Oct 2017 15:03:59 +0000 (15:03 +0000)]
[ELF] - Simplify. NFC.

llvm-svn: 316163

7 years ago[X86] Replace custom scalar integer absolute matching with ISD::ABS lowering.
Simon Pilgrim [Thu, 19 Oct 2017 15:02:24 +0000 (15:02 +0000)]
[X86] Replace custom scalar integer absolute matching with ISD::ABS lowering.

x86 has its own copy of integer absolute pattern matching to combine directly to a SUB+CMOV.

This patch removes the x86 combine and adds custom lowering support for ISD::ABS instead, allowing us to use the DAGCombiner version.

Additional test cases are already covered by iabs.ll (rL315706 and rL315711).

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

llvm-svn: 316162

7 years agoFix MSVC signed/unsigned comparison warning
Simon Pilgrim [Thu, 19 Oct 2017 15:00:31 +0000 (15:00 +0000)]
Fix MSVC signed/unsigned comparison warning

llvm-svn: 316161

7 years ago[X86] Add scalar (abs (abs x)) -> (abs x) combine test.
Simon Pilgrim [Thu, 19 Oct 2017 14:59:26 +0000 (14:59 +0000)]
[X86] Add scalar (abs (abs x)) -> (abs x) combine test.

Before landing D38895

llvm-svn: 316160

7 years ago[RISCV] Prepare for the use of variable-sized register classes
Alex Bradbury [Thu, 19 Oct 2017 14:29:03 +0000 (14:29 +0000)]
[RISCV] Prepare for the use of variable-sized register classes

While parameterising by XLen, also take the opportunity to clean up the
formatting of the RISCV .td files.

This commit unifies the in-tree code with my patchset at
<https://github.com/lowrisc/riscv-llvm>.

llvm-svn: 316159

7 years agoRevert rL316156 due to failure on APFloatTest.fromToStringSpecials
Max Kazantsev [Thu, 19 Oct 2017 12:22:39 +0000 (12:22 +0000)]
Revert rL316156 due to failure on APFloatTest.fromToStringSpecials

llvm-svn: 316158

7 years ago[analyzer] Dump signed integers in SymIntExpr and IntSymExpr correctly
Gabor Horvath [Thu, 19 Oct 2017 11:58:21 +0000 (11:58 +0000)]
[analyzer] Dump signed integers in SymIntExpr and IntSymExpr correctly

Patch by: Adam Balogh!

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

llvm-svn: 316157

7 years agoFix APFloat from string conversion for Inf
Serguei Katkov [Thu, 19 Oct 2017 11:16:03 +0000 (11:16 +0000)]
Fix APFloat from string conversion for Inf

The method IEEEFloat::convertFromStringSpecials() does not recognize
the "+Inf" and "-Inf" strings but these strings are printed for
the double Infinities by the IEEEFloat::toString().

This patch adds the "+Inf" and "-Inf" strings to the list of recognized
patterns in IEEEFloat::convertFromStringSpecials().

Reviewers: sberg, bogner, majnemer, timshen, rnk, skatkov, gottesmm, bkramer, scanon
Reviewed By: skatkov
Subscribers: apilipenko, reames, llvm-commits
Differential Revision: https://reviews.llvm.org/D38030

llvm-svn: 316156

7 years ago[ARM GlobalISel] Fix liveins in test. NFC
Diana Picus [Thu, 19 Oct 2017 09:28:19 +0000 (09:28 +0000)]
[ARM GlobalISel] Fix liveins in test. NFC

llvm-svn: 316155

7 years ago[ARM GlobalISel] Remove redundant tests
Diana Picus [Thu, 19 Oct 2017 08:50:28 +0000 (08:50 +0000)]
[ARM GlobalISel] Remove redundant tests

These test cases don't really add anything that isn't covered by other
tests as well, so we can safely remove them.

llvm-svn: 316154

7 years agoRevert 316150 which reinstated r316025.
Vassil Vassilev [Thu, 19 Oct 2017 08:44:19 +0000 (08:44 +0000)]
Revert 316150 which reinstated r316025.

It fails on some bots and now we know how to reproduce it.

llvm-svn: 316153

7 years agoFix a few nits in RenamingAction.
Haojian Wu [Thu, 19 Oct 2017 08:20:55 +0000 (08:20 +0000)]
Fix a few nits in RenamingAction.

* Add missing override keyword.
* avoid unnecessary copy of std::string.

llvm-svn: 316152

7 years agoConst fix for YAMLParser.
Sam McCall [Thu, 19 Oct 2017 08:13:49 +0000 (08:13 +0000)]
Const fix for YAMLParser.

llvm-svn: 316151

7 years agoReinstate r316025, reverted in r316029.
Vassil Vassilev [Thu, 19 Oct 2017 08:04:22 +0000 (08:04 +0000)]
Reinstate r316025, reverted in r316029.

Original commit message:
"[cmake] Use find_package to discover zlib

This allows us to use standard cmake utilities to point to non-system zlib
locations.

Patch by Oksana Shadura and me (D39002)."

The new patch brings back the old behavior in the cases where find_package
cannot find zlib.

llvm-svn: 316150

7 years ago[Headers] Fix typoed __ARM_DWARF_EH__ ifdefs
Martin Storsjo [Thu, 19 Oct 2017 07:40:45 +0000 (07:40 +0000)]
[Headers] Fix typoed __ARM_DWARF_EH__ ifdefs

These typos appeared in SVN r309226 and r309327.

llvm-svn: 316149

7 years ago[COFF] Exclude certain static libraries and object files when exporting all symbols
Martin Storsjo [Thu, 19 Oct 2017 06:56:04 +0000 (06:56 +0000)]
[COFF] Exclude certain static libraries and object files when exporting all symbols

This more or less matches what GNU ld does.

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

llvm-svn: 316148

7 years ago[Coverage] Simplify r316141. NFC.
Vedant Kumar [Thu, 19 Oct 2017 06:16:23 +0000 (06:16 +0000)]
[Coverage] Simplify r316141. NFC.

llvm-svn: 316147

7 years ago[NFC][IRCE] Filter out empty ranges early
Max Kazantsev [Thu, 19 Oct 2017 05:33:28 +0000 (05:33 +0000)]
[NFC][IRCE] Filter out empty ranges early

llvm-svn: 316146

7 years ago[MergeFunctions] Don't blindly RAUW a GlobalValue with a ConstantExpr.
whitequark [Thu, 19 Oct 2017 04:47:48 +0000 (04:47 +0000)]
[MergeFunctions] Don't blindly RAUW a GlobalValue with a ConstantExpr.

MergeFunctions uses (through FunctionComparator) a map of GlobalValues
to identifiers because it needs to compare functions and globals
do not have an inherent total order. Thus, FunctionComparator
(through GlobalNumberState) has a ValueMap<GlobalValue *>.

r315852 added a RAUW on globals that may have been previously
encountered by the FunctionComparator, which would replace
a GlobalValue * key with a ConstantExpr *, which is illegal.

This commit adjusts that code path to remove the function being
replaced from the ValueMap as well.

llvm-svn: 316145

7 years agoSimplify.
Rafael Espindola [Thu, 19 Oct 2017 01:32:18 +0000 (01:32 +0000)]
Simplify.

llvm-svn: 316144

7 years agoFix buffer overflow.
Rafael Espindola [Thu, 19 Oct 2017 01:25:48 +0000 (01:25 +0000)]
Fix buffer overflow.

We were reading past the end of the buffer.

llvm-svn: 316143

7 years ago[CMake] Allow parent projects to use in-source builds
Chris Bieneman [Thu, 19 Oct 2017 00:43:48 +0000 (00:43 +0000)]
[CMake] Allow parent projects to use in-source builds

LLVM checks if it is performing an in-source build and then stop the
build. However, this check is also triggered if LLVM is being build as
part of a parent project, which prevents the parent project itself from
using in-source builds. For example, CMake allows a parent project to
specify the output of its subproject:

add_subdirectory(llvm llvm_build)

This tells CMake to conduct an out-tree build of LLVM, which without
this patch will still fails because what is being tested is the parent
project, not LLVM. This is fixed by using the "CURRENT" variable, which
is only concerned by the CMakeLists that is actually bein processed at
the moment.

Tests:
Ran `make check-llvm`.

Patch by Henrique Jung <henriquenj_AT_gmail_DOT_com>

llvm-svn: 316142

7 years ago[llvm-cov] Move LineCoverageIterator to libCoverage. NFC.
Vedant Kumar [Wed, 18 Oct 2017 23:58:28 +0000 (23:58 +0000)]
[llvm-cov] Move LineCoverageIterator to libCoverage. NFC.

LineCoverageIterator makes it easy for clients of coverage data to
determine line execution counts for a file or function. The coverage
iteration logic is tricky enough that it really pays not to have
multiple copies of it. Hopefully having just one implementation in LLVM
will make the iteration logic easier to test, reuse, and update.

This commit is NFC but I've added a unit test to go along with it just
because it's easy to do now.

llvm-svn: 316141

7 years ago[llvm-cov] Use the coverage namespace. NFC.
Vedant Kumar [Wed, 18 Oct 2017 23:58:27 +0000 (23:58 +0000)]
[llvm-cov] Use the coverage namespace. NFC.

This is a simple code cleanup. It will facilitate moving
LineCoverageIterator to libCoverage.

llvm-svn: 316140

7 years agoGISel: Canonicalize select tests using update_mir_test_checks
Justin Bogner [Wed, 18 Oct 2017 23:33:31 +0000 (23:33 +0000)]
GISel: Canonicalize select tests using update_mir_test_checks

This runs `udpate_mir_test_checks --add-vreg-checks` on the tests taht
are already more or less in the format that generates, so that there
will be less churn in some upcoming changes.

llvm-svn: 316139

7 years agoAArch64/GISel: Modernize the localizer test
Justin Bogner [Wed, 18 Oct 2017 23:26:24 +0000 (23:26 +0000)]
AArch64/GISel: Modernize the localizer test

llvm-svn: 316138

7 years agoCanonicalize a large number of mir tests using update_mir_test_checks
Justin Bogner [Wed, 18 Oct 2017 23:18:12 +0000 (23:18 +0000)]
Canonicalize a large number of mir tests using update_mir_test_checks

This converts a large and somewhat arbitrary set of tests to use
update_mir_test_checks. I ran the script on all of the tests I expect
to need to modify for an upcoming mir syntax change and kept the ones
that obviously didn't change the tests in ways that might make it
harder to understand.

llvm-svn: 316137

7 years agoDon't suppress instantiation of definitions for variables subject to explicit
Richard Smith [Wed, 18 Oct 2017 22:45:01 +0000 (22:45 +0000)]
Don't suppress instantiation of definitions for variables subject to explicit
instantiation declarations if they are usable from constant expressions.

We are permitted to instantiate in these cases, and required to do so in order
to have an initializer available for use within constant evaluation.

llvm-svn: 316136

7 years ago[PM] Refactor the bounds checking pass to remove a method only called in
Chandler Carruth [Wed, 18 Oct 2017 22:42:36 +0000 (22:42 +0000)]
[PM] Refactor the bounds checking pass to remove a method only called in
one place.

llvm-svn: 316135

7 years agoupdate_mir_test_checks: Support adding checks for vreg classes
Justin Bogner [Wed, 18 Oct 2017 22:39:55 +0000 (22:39 +0000)]
update_mir_test_checks: Support adding checks for vreg classes

This is a temporary hack to support adding checks for the "registers:"
block of mir functions. This is necessary to convert a number of tests
so that there's less churn when we change the MIR printer to put the
vreg classes on defs instead of in their own block.

llvm-svn: 316134

7 years agoupdate_mir_test_checks: Improve message when updating fails
Justin Bogner [Wed, 18 Oct 2017 22:36:08 +0000 (22:36 +0000)]
update_mir_test_checks: Improve message when updating fails

llvm-svn: 316133

7 years agoFix capitalization of parameter
Erich Keane [Wed, 18 Oct 2017 22:17:16 +0000 (22:17 +0000)]
Fix capitalization of parameter

The .cpp file has this properly capitalized, but
the header does not.  Simply fixed it.

llvm-svn: 316132

7 years ago[AMDGPU] Corrections to memory model description.
Tony Tye [Wed, 18 Oct 2017 22:16:55 +0000 (22:16 +0000)]
[AMDGPU] Corrections to memory model description.

 - Add description on nontemporal support.
 - Correct OpenCL sequentially consistent and fence code sequences.
 - Minor test cleanup.

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

llvm-svn: 316131