OSDN Git Service

android-x86/external-llvm.git
8 years ago[RewriteStatepointsForGC] All constant should have null base pointer
Igor Laevsky [Fri, 27 May 2016 13:13:59 +0000 (13:13 +0000)]
[RewriteStatepointsForGC] All constant should have null base pointer

Currently we consider that each constant has itself as a base value. I.e "base(const) = const".
This introduces couple of problems when we are trying to avoid reporting constants in statepoint live sets:

1. When querying "base( phi(const1, const2) )" we will get "phi(const1, const2)" as a base pointer. Since
   it's not a constant we will record it in a stack map. However on practice we don't want this to happen
   (constant are never relocated).
2. base( phi(const, gc ptr) ) = phi( const, base(gc ptr) ). This particular case imposes challenge on our
   runtime - we don't expect to see constant base pointers other than null. This problems can be avoided
   by treating all constant as if they were derived from null pointer base. I.e in a first case we will
   not include constant pointer in a stack map at all. In a second case we will get "phi(null, base(gc ptr))"
   as a base pointer which is a lot more convenient.

Differential Revision: http://reviews.llvm.org/D20584

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270993 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAttemp to fix build bot after r270987
George Rimar [Fri, 27 May 2016 12:52:30 +0000 (12:52 +0000)]
Attemp to fix build bot after r270987

It was: "Recommit 270977 - [llvm-mc] - Teach llvm-mc to generate zlib styled compression sections."

Fix:
since test requires no zlib available and r270987 changed the
compression flag for llvm-mc to mandatory specify the compression style,
then just add 2 available styles to this test.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270992 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[AMDGPU][llvm-mc] Square-braced-syntax for registers - make ":expr2" optional.
Artem Tamazov [Fri, 27 May 2016 12:50:13 +0000 (12:50 +0000)]
[AMDGPU][llvm-mc] Square-braced-syntax for registers - make ":expr2" optional.

Register numbers may be specified as assembly-time expressions.
This feature can be useful in macros and alike. However, expressions
are supported within sqare braces only.

Sqare braces were initially intended to support specifying of multiple
(pairs/quads...) registers. Syntax like v[8:8] which specifies single register
is also supported. That allows expressions but looks a bit unnatural.

This change supports syntax REG[EXPR].
Tests added.

Differential Revision: http://reviews.llvm.org/D20588

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270990 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAvoid some copies by using const references.
Benjamin Kramer [Fri, 27 May 2016 12:30:51 +0000 (12:30 +0000)]
Avoid some copies by using const references.

clang-tidy's performance-unnecessary-copy-initialization with some manual
fixes. No functional changes intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270988 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoRecommit 270977 - [llvm-mc] - Teach llvm-mc to generate zlib styled compression sections.
George Rimar [Fri, 27 May 2016 12:27:32 +0000 (12:27 +0000)]
Recommit 270977 - [llvm-mc] - Teach llvm-mc to generate zlib styled compression sections.

Fix: updated clang code which was not updated by mistake.

Original commit message:
[llvm-mc] - Teach llvm-mc to generate zlib styled compression sections.

This patch is strongly based on previously reverted D20331.
(because of gnuutils < 2.26 does not support compressed debug sections in non zlib-gnu style)

Difference that this patch supports both zlib and zlib-gnu styles.

-compress-debug-sections option now supports next values:

-compress-debug-sections=zlib-gnu
-compress-debug-sections=zlib
-compress-debug-sections=none
Previously specifying -compress-debug-sections enabled zlib-gnu compression,
so anyone can put "-compress-debug-sections=zlib-gnu" to restore the behavior
that was before this patch for case when compression was enabled.

Differential revision: http://reviews.llvm.org/D20676

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270987 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoApply clang-tidy's misc-static-assert where it makes sense.
Benjamin Kramer [Fri, 27 May 2016 11:36:04 +0000 (11:36 +0000)]
Apply clang-tidy's misc-static-assert where it makes sense.

Also fold conditions into assert(0) where it makes sense. No functional
change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270982 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[sparc] Remove some unused (and undefined) declarations.
Benjamin Kramer [Fri, 27 May 2016 10:19:03 +0000 (10:19 +0000)]
[sparc] Remove some unused (and undefined) declarations.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270981 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[hexagon] Move BlockRanges and RDF stuff into the llvm namespace.
Benjamin Kramer [Fri, 27 May 2016 10:06:40 +0000 (10:06 +0000)]
[hexagon] Move BlockRanges and RDF stuff into the llvm namespace.

No functional change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270980 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[sparc] Move LEON passes into llvm namespace.
Benjamin Kramer [Fri, 27 May 2016 10:06:27 +0000 (10:06 +0000)]
[sparc] Move LEON passes into llvm namespace.

Also give them library visiblity while there.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270979 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoRevert r270977 ([llvm-mc] - Teach llvm-mc to generate zlib styled compression sections.)
George Rimar [Fri, 27 May 2016 10:06:16 +0000 (10:06 +0000)]
Revert r270977 ([llvm-mc] - Teach llvm-mc to generate zlib styled compression sections.)

It broke buildbot:
http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-ubuntu-fast/builds/13585/steps/build/logs/stdio

Initial commit message:
[llvm-mc] - Teach llvm-mc to generate zlib styled compression sections.

This patch is strongly based on previously reverted D20331.
(because of gnuutils < 2.26 does not support compressed debug sections in non zlib-gnu style)

Difference that this patch supports both zlib and zlib-gnu styles.

-compress-debug-sections option now supports next values:

-compress-debug-sections=zlib-gnu
-compress-debug-sections=zlib
-compress-debug-sections=none
Previously specifying -compress-debug-sections enabled zlib-gnu compression,
so anyone can put "-compress-debug-sections=zlib-gnu" to restore the behavior
that was before this patch for case when compression was enabled.

Differential revision: http://reviews.llvm.org/D20676

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270978 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[llvm-mc] - Teach llvm-mc to generate zlib styled compression sections.
George Rimar [Fri, 27 May 2016 09:58:08 +0000 (09:58 +0000)]
[llvm-mc] - Teach llvm-mc to generate zlib styled compression sections.

This patch is strongly based on previously reverted D20331.
(because of gnuutils < 2.26 does not support compressed debug sections in non zlib-gnu style)

Difference that this patch supports both zlib and zlib-gnu styles.

-compress-debug-sections option now supports next values:

-compress-debug-sections=zlib-gnu
-compress-debug-sections=zlib
-compress-debug-sections=none
Previously specifying -compress-debug-sections enabled zlib-gnu compression,
so anyone can put "-compress-debug-sections=zlib-gnu" to restore the behavior
that was before this patch for case when compression was enabled.

Differential revision: http://reviews.llvm.org/D20676

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270977 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoRevert: r270973 - [X86][SSE] Replace (V)PMOVSX and (V)PMOVZX integer extension intrin...
Simon Pilgrim [Fri, 27 May 2016 09:02:25 +0000 (09:02 +0000)]
Revert: r270973 - [X86][SSE] Replace (V)PMOVSX and (V)PMOVZX integer extension intrinsics with generic IR (llvm)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270976 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[X86][SSE] Replace (V)PMOVSX and (V)PMOVZX integer extension intrinsics with generic...
Simon Pilgrim [Fri, 27 May 2016 08:49:15 +0000 (08:49 +0000)]
[X86][SSE] Replace (V)PMOVSX and (V)PMOVZX integer extension intrinsics with generic IR (llvm)

This patch removes the llvm intrinsics VPMOVSX and (V)PMOVZX sign/zero extension intrinsics and auto-upgrades to SEXT/ZEXT calls instead. We already did this for SSE41 PMOVSX sometime ago so much of that implementation can be reused.

A companion patch (D20684) removes/auto-upgrade the clang intrinsics.

Differential Revision: http://reviews.llvm.org/D20686

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270973 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoLinker: teach the IR mover to return llvm::Error.
Peter Collingbourne [Fri, 27 May 2016 05:21:35 +0000 (05:21 +0000)]
Linker: teach the IR mover to return llvm::Error.

This will be needed in order to consistently return an Error
to clients of the API being developed in D20268.

Differential Revision: http://reviews.llvm.org/D20550

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270967 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[codeview] Remove StreamReader copying method.
Zachary Turner [Fri, 27 May 2016 03:51:53 +0000 (03:51 +0000)]
[codeview] Remove StreamReader copying method.

Since we want to move toward zero-copy access to stream data, we
want to remove all instances of copying operations.  So get rid
of some of those here.

Differential Revision: http://reviews.llvm.org/D20720
Reviewed By: ruiu

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270960 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoDon't allocate unnecessarily in APInt::operator[+-]. NFC.
Pete Cooper [Fri, 27 May 2016 03:42:17 +0000 (03:42 +0000)]
Don't allocate unnecessarily in APInt::operator[+-].  NFC.

APInt::operator+(uint64_t) just forwarded to operator+(const APInt&).

Constructing the APInt for the RHS takes an allocation which isn't
required.  Also, for APInt's in the slow path, operator+ would
call add() internally which iterates over both arrays of values.  Instead
we can use add_1 and sub_1 which only iterate while there is something to do.

Using the memory for 'opt -O2 verify-uselistorder.lto.opt.bc -o opt.bc'
(see r236629 for details), this reduces the number of allocations from
23.9M to 22.7M.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270959 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[LibFuzzer] Refactor declaration of tests in CMake.
Dan Liew [Fri, 27 May 2016 03:14:40 +0000 (03:14 +0000)]
[LibFuzzer] Refactor declaration of tests in CMake.

Add a new CMake function (``add_libfuzzer_test()``) to simplify
declaration of executables for testing LibFuzzer and use it to
reorganise how tests are declared.

Note that configuration of the lit configuration files has been moved
as late as possible because we are going to need to disable some tests
for some platforms and we will need to propagate this information into
the lit configuration.

Note the code for custom mains was removed because no tests are
currently written for this and Kostya seems happy to remove this.

Differential Revision: http://reviews.llvm.org/D20706

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270958 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoRemove use of is_trivially_constructible.
Rui Ueyama [Fri, 27 May 2016 02:47:38 +0000 (02:47 +0000)]
Remove use of is_trivially_constructible.

type_traits header in libstdc++ 4.8 does not define is_trivially_contructible
so the code doesn't compile with it.

In this file we are using the trait for assertion to provide a better
error message. Removing it doesn't change the meaning of the code.

Differential Revision: http://reviews.llvm.org/D20719

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270957 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[Support] Remove a stale comment.
Lang Hames [Fri, 27 May 2016 02:43:15 +0000 (02:43 +0000)]
[Support] Remove a stale comment.

This comment was included in Peter Collingbourne's original version of
StringError (see http://reviews.llvm.org/D20550), where it made sense. It was
accidentally copied over with the rest of the class, but no longer applies.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270956 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoForm objc_storeStrong in the presence of bitcasts.
Pete Cooper [Fri, 27 May 2016 02:13:53 +0000 (02:13 +0000)]
Form objc_storeStrong in the presence of bitcasts.

objc_storeStrong can be formed from a sequence such as

  %0 = tail call i8* @objc_retain(i8* %p) nounwind
  %tmp = load i8*, i8** @x, align 8
  store i8* %0, i8** @x, align 8
  tail call void @objc_release(i8* %tmp) nounwind

The code was already looking through bitcasts for most of the values
involved, but had missed one case where the pointer operand for the
store was a bitcast.  Ultimately the pointer for the load and store
have to be the same value, after stripping casts.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270955 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[codeview] #include missing header breaking builds.
Zachary Turner [Fri, 27 May 2016 02:12:35 +0000 (02:12 +0000)]
[codeview] #include missing header breaking builds.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270954 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[codeview,pdb] Try really hard to conserve memory when reading.
Zachary Turner [Fri, 27 May 2016 01:54:44 +0000 (01:54 +0000)]
[codeview,pdb] Try really hard to conserve memory when reading.

PDBs can be extremely large.  We're already mapping the entire
PDB into the process's address space, but to make matters worse
the blocks of the PDB are not arranged contiguously.  So, when
we have something like an array or a string embedded into the
stream, we have to make a copy.  Since it's convenient to use
traditional data structures to iterate and manipulate these
records, we need the memory to be contiguous.

As a result of this, we were using roughly twice as much memory
as the file size of the PDB, because every stream was copied
out and re-stitched together contiguously.

This patch addresses this by improving the MappedBlockStream
to allocate from a BumpPtrAllocator only when a read requires
a discontiguous read.  Furthermore, it introduces some data
structures backed by a stream which can iterate over both
fixed and variable length records of a PDB.  Since everything
is backed by a stream and not a buffer, we can read almost
everything from the PDB with zero copies.

Differential Revision: http://reviews.llvm.org/D20654
Reviewed By: ruiu

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270951 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[Support] Rename unconvertibleErrorCode to inconvertibleErrorCode.
Lang Hames [Fri, 27 May 2016 01:54:25 +0000 (01:54 +0000)]
[Support] Rename unconvertibleErrorCode to inconvertibleErrorCode.

Based on a totally scientific, 30 second google search "in-" appears to be the
preferred prefix.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270950 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[Support] Add a StringError convenience class to Error.h
Lang Hames [Fri, 27 May 2016 01:37:32 +0000 (01:37 +0000)]
[Support] Add a StringError convenience class to Error.h

StringError can be used to represent Errors that aren't recoverable based on
the error type, but that have a useful error message that can be reported to
the user or logged.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270948 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[libFuzzer] make check-fuzzer a bit faster
Kostya Serebryany [Fri, 27 May 2016 01:12:21 +0000 (01:12 +0000)]
[libFuzzer] make check-fuzzer a bit faster

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270947 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[LoopUnrollAnalyzer] Bail out instead of dying with assert when facing huge index.
Michael Zolotukhin [Fri, 27 May 2016 00:55:16 +0000 (00:55 +0000)]
[LoopUnrollAnalyzer] Bail out instead of dying with assert when facing huge index.

This fixes PR27902.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270946 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[libFuzzer] make OOM-handling more portable. Instead of sending a signal to the main...
Kostya Serebryany [Fri, 27 May 2016 00:54:15 +0000 (00:54 +0000)]
[libFuzzer] make OOM-handling more portable. Instead of sending a signal to the main fuzzing thread, print the message in the getrusage thread and exit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270945 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoValueMapper: fix typo in minor optimization on constant mapping (NFC)
Mehdi Amini [Fri, 27 May 2016 00:32:12 +0000 (00:32 +0000)]
ValueMapper: fix typo in minor optimization on constant mapping (NFC)

If every operands of a constant are mapping to themselves, and the
type does not change, we have an early exit as acknowledged in the
comment:

  // Otherwise, we have some other constant to remap.  Start by checking to see
  // if all operands have an identity remapping.

However instead of checking for identity the code was checking if the
operands were mapped to the constant itself, which is rarely true.

As a consequence, the coverage report showed that the early exit was
never taken.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270944 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agopdbdump: print out the name of the stream 0.
Rui Ueyama [Fri, 27 May 2016 00:32:07 +0000 (00:32 +0000)]
pdbdump: print out the name of the stream 0.

Differential Revision: http://reviews.llvm.org/D20712

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270943 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[libFuzzer] more refactoring: make sure CurrentUnitData is awlays a valid pointer...
Kostya Serebryany [Fri, 27 May 2016 00:21:33 +0000 (00:21 +0000)]
[libFuzzer] more refactoring: make sure CurrentUnitData is awlays a valid pointer to read from

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270942 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agopdbdump: Add -raw-all to enable all -raw-* flags.
Rui Ueyama [Thu, 26 May 2016 23:26:55 +0000 (23:26 +0000)]
pdbdump: Add -raw-all to enable all -raw-* flags.

Differential Revision: http://reviews.llvm.org/D20707

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270937 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoSort my entry in CODE_OWNERS.TXT
Hans Wennborg [Thu, 26 May 2016 23:10:37 +0000 (23:10 +0000)]
Sort my entry in CODE_OWNERS.TXT

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270936 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[CodeGen] Fix problem with X86 byte registers in CriticalAntiDepBreaker
Mitch Bodart [Thu, 26 May 2016 23:08:52 +0000 (23:08 +0000)]
[CodeGen] Fix problem with X86 byte registers in CriticalAntiDepBreaker

CriticalAntiDepBreaker was not correctly tracking defs of the high X86 byte
registers, leading to incorrect use of a busy register to break an
antidependence.

Fixes pr27681, and its duplicates pr27580, pr27804.

Differential Revision: http://reviews.llvm.org/D20456

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270935 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoFix typo.
Rui Ueyama [Thu, 26 May 2016 23:01:05 +0000 (23:01 +0000)]
Fix typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270934 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAttach profile summary in IR based instrumentation pass.
Easwaran Raman [Thu, 26 May 2016 22:57:11 +0000 (22:57 +0000)]
Attach profile summary in IR based instrumentation pass.

Differential revision: http://reviews.llvm.org/D20655

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270933 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoSDAG: Use an Optional<> instead of a sigil value. NFC
Justin Bogner [Thu, 26 May 2016 22:29:34 +0000 (22:29 +0000)]
SDAG: Use an Optional<> instead of a sigil value. NFC

This just makes it a bit more clear that we don't intend to use a
deleted node for anything here.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270931 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[libFuzzer] more refactoring around CurrentUnit. Also add a threading test on which...
Kostya Serebryany [Thu, 26 May 2016 22:17:32 +0000 (22:17 +0000)]
[libFuzzer] more refactoring around CurrentUnit. Also add a threading test on which we currently have a race (when reporting bugs from multiple threads)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270929 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[LibFuzzer] Add missing #include<string>
Dan Liew [Thu, 26 May 2016 21:54:25 +0000 (21:54 +0000)]
[LibFuzzer] Add missing #include<string>

This partially fixes the compilation of the LibFuzzer unit test
on OSX using AppleClang.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270926 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[LoopUnrollAnalyzer] Fix a crash in analyzeLoopUnrollCost.
Michael Zolotukhin [Thu, 26 May 2016 21:42:51 +0000 (21:42 +0000)]
[LoopUnrollAnalyzer] Fix a crash in analyzeLoopUnrollCost.

Condition might be simplified to a Constant, but it doesn't have to be
ConstantInt, so we should dyn_cast, instead of cast.

This fixes PR27886.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270924 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoPR26055: Speed up LiveDebugValues::transferDebugValue()
Adrian Prantl [Thu, 26 May 2016 21:42:47 +0000 (21:42 +0000)]
PR26055: Speed up LiveDebugValues::transferDebugValue()

This patch builds upon r270776 and speeds up
LiveDebugValues::transferDebugValue() by adding an index that maps each
DebugVariable to its open VarLoc.

The transferDebugValue() function needs to close all open ranges for a
given DebugVariable. Iterating over the set bits of OpenRanges is
prohibitively slow in practice. I experimented with using the sorted map
of VarLocs in the UniqueVector to iterate only over the range of VarLocs
with a given DebugVariable, but the binary search turned out to be even
more expensive than just iterating over the set bits in OpenRanges.
Instead, this patch exploits the fact that there can only be one open
location for each DebugVariable and redundantly stores this location in a
DenseMap.

This patch brings the time spent in the LiveDebugValues pass down to an
almost neglectiable amount.

http://llvm.org/bugs/show_bug.cgi?id=26055
http://reviews.llvm.org/D20636
rdar://problem/24091200

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270923 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[libFuzzer] refactor: hide CurrentUnitData inside an interface function. NFC
Kostya Serebryany [Thu, 26 May 2016 21:32:30 +0000 (21:32 +0000)]
[libFuzzer] refactor: hide CurrentUnitData inside an interface function. NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270922 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[Docs][WritingAnLLVMBackend] Makefiles are deprecated
Chris Bieneman [Thu, 26 May 2016 21:31:56 +0000 (21:31 +0000)]
[Docs][WritingAnLLVMBackend] Makefiles are deprecated

Summary: * docs/WritingAnLLVMBackend.rst: Makefiles are no longer used. The users should use CMakeLists.txt. In order to add the target, the TARGETS_TO_BUILD is replaced with LLVM_ALL_TARGETS.

Reviewers: gribozavr, void, beanz

Subscribers: llvm-commits

Patch By: Visoiu Mistrih Francis (thegameg)

Differential Revision: http://reviews.llvm.org/D20700

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270921 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[obj2yaml][yaml2obj] Support for MachO lazy bindings
Chris Bieneman [Thu, 26 May 2016 21:29:39 +0000 (21:29 +0000)]
[obj2yaml][yaml2obj] Support for MachO lazy bindings

This adds support for YAML round tripping dyld info lazy bindings. The storage and format of these is the same as regular bind opcodes, they are just interpreted differently by dyld, and can have DONE opcodes in the middle of the opcode lists.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270920 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[Kaleidoscope][BuildingAJIT] Remove leftover debugging output statements.
Lang Hames [Thu, 26 May 2016 21:27:52 +0000 (21:27 +0000)]
[Kaleidoscope][BuildingAJIT] Remove leftover debugging output statements.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270919 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[Kaleidoscope][BuildingAJIT] Fix strong emphasis markup by removing whitespace.
Lang Hames [Thu, 26 May 2016 21:21:18 +0000 (21:21 +0000)]
[Kaleidoscope][BuildingAJIT] Fix strong emphasis markup by removing whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270918 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[Kaleidoscope][BuildingAJIT] Add docs for Chapter 3 of the Building A JIT
Lang Hames [Thu, 26 May 2016 21:17:06 +0000 (21:17 +0000)]
[Kaleidoscope][BuildingAJIT] Add docs for Chapter 3 of the Building A JIT
tutorial.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270917 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[Error] Make ECError only constructible via errorCodeToError.
Lang Hames [Thu, 26 May 2016 21:15:58 +0000 (21:15 +0000)]
[Error] Make ECError only constructible via errorCodeToError.

This enforces idiomatic usage of ECError removing the option to construct them
using make_error.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270916 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAdd myself as the code owner for SCEV and IndVarSimplify
Sanjoy Das [Thu, 26 May 2016 21:12:44 +0000 (21:12 +0000)]
Add myself as the code owner for SCEV and IndVarSimplify

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270915 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[Kaleidoscope][BuildingAJIT] Add explicit dependence on TransformUtils to Chapter3.
Lang Hames [Thu, 26 May 2016 21:00:29 +0000 (21:00 +0000)]
[Kaleidoscope][BuildingAJIT] Add explicit dependence on TransformUtils to Chapter3.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270914 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[LibFuzzer] Emit error if LLVM_USE_SANITIZER is not correctly set.
Dan Liew [Thu, 26 May 2016 20:55:09 +0000 (20:55 +0000)]
[LibFuzzer] Emit error if LLVM_USE_SANITIZER is not correctly set.

Previously CMake would successfully configure and compile (with warnings
about ``-fsanitize-coverage=...`` being unused) but the tests LibFuzzer
tests would fail.

Differential Revision: http://reviews.llvm.org/D20662

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270913 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[LibFuzzer] Allow LibFuzzer to be built in modes other than RELEASE.
Dan Liew [Thu, 26 May 2016 20:55:05 +0000 (20:55 +0000)]
[LibFuzzer] Allow LibFuzzer to be built in modes other than RELEASE.

Previously the flags were only being set correctly when the
build type was "Release". Now the build should work properly
for all the supported build types. When building libFuzzer
the optimization level respects whatever is used for the
rest of LLVM but for the LibFuzzer tests we force -O0.

Differential Revision: http://reviews.llvm.org/D20558

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270912 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[obj2yaml][yaml2obj] Support for MachO weak bindings
Chris Bieneman [Thu, 26 May 2016 20:50:05 +0000 (20:50 +0000)]
[obj2yaml][yaml2obj] Support for MachO weak bindings

This adds support for YAML round tripping dyld info weak bindings. The storage and format of these is the same as regular bind opcodes, they are just interpreted differently by dyld.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270911 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[Kaleidoscope][BuildingAJIT] Add code for Chapter 3.
Lang Hames [Thu, 26 May 2016 20:35:39 +0000 (20:35 +0000)]
[Kaleidoscope][BuildingAJIT] Add code for Chapter 3.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270909 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[Orc] Don't create empty globals modules in the CompileOnDemandLayer.
Lang Hames [Thu, 26 May 2016 20:33:37 +0000 (20:33 +0000)]
[Orc] Don't create empty globals modules in the CompileOnDemandLayer.

Global variables and aliases are emitted eagerly, but there may not be any in
the incoming module. In that case, we can save some memory and compile time by
not building, emitting and tracking an empty globals module.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270908 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agocoff: fix weak alias to local.
Rafael Espindola [Thu, 26 May 2016 20:31:00 +0000 (20:31 +0000)]
coff: fix weak alias to local.

We were creating a weak external that tried to reference a static symbol. That
would always fail to link with link.exe.

We now create an external symbol in the same position as the local and refer
to that. This works with link.exe and matches what gas does.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270906 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[libFuzzer] when there is a leak in the existing corpus report the reproducer properly
Kostya Serebryany [Thu, 26 May 2016 20:25:49 +0000 (20:25 +0000)]
[libFuzzer] when there is a leak in the existing corpus report the reproducer properly

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270905 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoDon't use recursion to print out the PrettyStackTrace after a crash. If the
Richard Smith [Thu, 26 May 2016 20:21:55 +0000 (20:21 +0000)]
Don't use recursion to print out the PrettyStackTrace after a crash. If the
crash was due to a stack overflow, chances are good that this would also cause
a stack overflow.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270903 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAdd new .def file to module map.
Richard Smith [Thu, 26 May 2016 20:13:50 +0000 (20:13 +0000)]
Add new .def file to module map.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270902 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[obj2yaml][yaml2obj] Support for MachO bind opcodes
Chris Bieneman [Thu, 26 May 2016 20:06:14 +0000 (20:06 +0000)]
[obj2yaml][yaml2obj] Support for MachO bind opcodes

This adds support for YAML round tripping dyld info bind opcodes. Bind opcodes can have signed or unsigned LEB128 data, and they can have symbols associated with them.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270901 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[libFuzzer] reimplement the way we do -only_ascii to allow more 'const' in function...
Kostya Serebryany [Thu, 26 May 2016 20:03:02 +0000 (20:03 +0000)]
[libFuzzer] reimplement the way we do -only_ascii to allow more 'const' in function declarations. Add a test for -only_ascii. NFC intended

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270900 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[Kaleidoscope][BuildingAJIT] Fix a bug in the symbol resolver in Chapter2.
Lang Hames [Thu, 26 May 2016 19:44:33 +0000 (19:44 +0000)]
[Kaleidoscope][BuildingAJIT] Fix a bug in the symbol resolver in Chapter2.

Symbol resolution should be done on the top layer of the stack unless there's a
good reason to do otherwise. In this case it would have worked because
OptimizeLayer::addModuleSet eagerly passes all modules down to the
CompileLayer, meaning that searches in CompileLayer will find the definitions.
In later chapters where the top layer's addModuleSet isn't a pass-through, this
would break.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270899 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[Hexagon] Enable the post-RA scheduler
Krzysztof Parzyszek [Thu, 26 May 2016 19:44:28 +0000 (19:44 +0000)]
[Hexagon] Enable the post-RA scheduler

The aggressive anti-dependency breaker can rename the restored callee-
saved registers. To prevent this, mark these registers are live on all
paths to the return/tail-call instructions, and add implicit use operands
for them to these instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270898 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[AArch64] Generate rev16/rev32 from bswap + srl when upper bits are known zero.
Chad Rosier [Thu, 26 May 2016 19:41:33 +0000 (19:41 +0000)]
[AArch64] Generate rev16/rev32 from bswap + srl when upper bits are known zero.

Canonicalize (srl (bswap i32 x), 16) to (rotr (bswap i32 x), 16), if the high
16-bits of x are zero. Similarly, canonicalize (srl (bswap i64 x), 32) to
(rotr (bswap i64 x), 32), if the high 32-bits of x are zero.

test_rev_w_srl16:            test_rev_w_srl16:
  and w8, w0, #0xffff          and     w8, w0, #0xffff
  rev w8, w8           --->    rev16   w0, w8
  lsr     w0, w8, #16

test_rev_x_srl32:            test_rev_x_srl32:
  rev x8, x8           --->    rev32   x0, x8
  lsr x0, x8, #32

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270896 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAMDGPU/SI: Enable load-store-opt by default.
Changpeng Fang [Thu, 26 May 2016 19:35:29 +0000 (19:35 +0000)]
AMDGPU/SI: Enable load-store-opt by default.

Summary: Enable load-store-opt by default, and update LIT tests.

Reviewers: arsenm

Differential Revision: http://reviews.llvm.org/D20694

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270894 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[BasicAA] Extend inbound GEP negative offset logic to GlobalVariables
Michael Kuperstein [Thu, 26 May 2016 19:30:49 +0000 (19:30 +0000)]
[BasicAA] Extend inbound GEP negative offset logic to GlobalVariables

r270777 improved the precision of alloca vs. inbounbds GEP alias queries: if
we have (a) an inbounds GEP and (b) a pointer based on an alloca, and the
beginning of the object the GEP points to would have a negative offset with
respect to the alloca, then the GEP can not alias pointer (b).

This makes the same logic fire when (b) is based on a GlobalVariable instead
of an alloca.

Differential Revision: http://reviews.llvm.org/D20652

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270893 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[MemCpyOpt] Don't perform callslot optimization across may-throw calls
David Majnemer [Thu, 26 May 2016 19:24:24 +0000 (19:24 +0000)]
[MemCpyOpt] Don't perform callslot optimization across may-throw calls

An exception could prevent a store from occurring but MemCpyOpt's
callslot optimization would fire anyway, causing the store to occur.

This fixes PR27849.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270892 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agocoff: fix the section of weak symbols.
Rafael Espindola [Thu, 26 May 2016 18:48:23 +0000 (18:48 +0000)]
coff: fix the section of weak symbols.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270889 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[BBVectorize] Don't vectorize selects with a scalar condition and vector operands.
Michael Kuperstein [Thu, 26 May 2016 18:43:57 +0000 (18:43 +0000)]
[BBVectorize] Don't vectorize selects with a scalar condition and vector operands.

This fixes PR27879.

Differential Revision: http://reviews.llvm.org/D20659

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270888 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAdd test/CodeGen/MIR/Hexagon/lit.local.cfg
Krzysztof Parzyszek [Thu, 26 May 2016 18:35:45 +0000 (18:35 +0000)]
Add test/CodeGen/MIR/Hexagon/lit.local.cfg

Require that Hexagon is a registered target.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270887 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoDo not rename registers that do not start an independent live range
Krzysztof Parzyszek [Thu, 26 May 2016 18:22:53 +0000 (18:22 +0000)]
Do not rename registers that do not start an independent live range

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270885 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agocoff: fix the value of weak definitions.
Rafael Espindola [Thu, 26 May 2016 18:04:53 +0000 (18:04 +0000)]
coff: fix the value of weak definitions.

It looks like this doesn't get a lot of use.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270883 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoDon't allocate in APInt::slt. NFC.
Pete Cooper [Thu, 26 May 2016 17:40:07 +0000 (17:40 +0000)]
Don't allocate in APInt::slt.  NFC.

APInt::slt was copying the LHS and RHS in to temporaries then making
them unsigned so that it could use an unsigned comparision.  It did
this even on the paths which were trivial to give results for, such
as the sign bit of the LHS being set while RHS was not set.

This changes the logic to return out immediately in the trivial cases,
and use an unsigned comparison in the remaining cases.  But this time,
just use the unsigned comparison directly without creating any temporaries.

This works because, for example:
  true = (-2 slt -1) = (0xFE ult 0xFF)

Also added some tests explicitly for slt with APInt's larger than 64-bits
so that this new code is tested.

Using the memory for 'opt -O2 verify-uselistorder.lto.opt.bc -o opt.bc'
(see r236629 for details), this reduces the number of allocations from
26.8M to 23.9M.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270881 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[CaptureTracking] Volatile operations capture their memory location
David Majnemer [Thu, 26 May 2016 17:36:22 +0000 (17:36 +0000)]
[CaptureTracking] Volatile operations capture their memory location

The memory location that corresponds to a volatile operation is very
special.  They are observed by the machine in ways which we cannot
reason about.

Differential Revision: http://reviews.llvm.org/D20555

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270879 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoInit member structs in constructor.
Artem Belevich [Thu, 26 May 2016 17:29:20 +0000 (17:29 +0000)]
Init member structs in constructor.

Fixes build error on windows where MSVC does not
support list initialization inside member initializer list.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270877 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoRevert 270865 -- unexplained bot failure on linux/ppcle
Xinliang David Li [Thu, 26 May 2016 17:27:22 +0000 (17:27 +0000)]
Revert 270865 -- unexplained bot failure on linux/ppcle

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270876 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[Orc] Merge some common code for creating CompileCallbackManagers and
Lang Hames [Thu, 26 May 2016 17:20:35 +0000 (17:20 +0000)]
[Orc] Merge some common code for creating CompileCallbackManagers and
IndirectStubsManagers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270874 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[NVPTX] Added NVVMIntrRange pass
Artem Belevich [Thu, 26 May 2016 17:02:56 +0000 (17:02 +0000)]
[NVPTX] Added NVVMIntrRange pass

NVVMIntrRange adds !range metadata to calls of NVVM intrinsics
that return values within known limited range.

This allows LLVM to generate optimal code for indexing arrays
based on tid/ctaid which is a frequently used pattern in CUDA code.

Differential Revision: http://reviews.llvm.org/D20644

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270872 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[AMDGPU][llvm-mc] s_getreg/setreg* - hwreg - factor out strings/literals etc.
Artem Tamazov [Thu, 26 May 2016 17:00:33 +0000 (17:00 +0000)]
[AMDGPU][llvm-mc] s_getreg/setreg* - hwreg - factor out strings/literals etc.

Hwreg(...) syntax implementation unified with sendmsg(...).
Common strings moved to Utils
MathExtras.h functionality utilized.
Added missing build dependency in Disassembler.

Differential Revision: http://reviews.llvm.org/D20381

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270871 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[CMake] Restrict libxar linkage to just llvm-objdump
Chris Bieneman [Thu, 26 May 2016 16:32:40 +0000 (16:32 +0000)]
[CMake] Restrict libxar linkage to just llvm-objdump

At some point we're going to need libObject to have this dependency, but as it is now this is causing too many headaches. This commit will reduce the linkage to just llvm-objdump where it is strictly needed, and we'll cross the libObject bridge later when we need it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270866 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoUse new interface in Triple /NFC
Xinliang David Li [Thu, 26 May 2016 16:28:01 +0000 (16:28 +0000)]
Use new interface in Triple /NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270865 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoUndo a suboptimal clang-format decision. NFC
Adrian Prantl [Thu, 26 May 2016 16:06:04 +0000 (16:06 +0000)]
Undo a suboptimal clang-format decision. NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270861 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoSince some time clang itself figures out the default for ms-compatibility-version...
Ismail Donmez [Thu, 26 May 2016 15:52:23 +0000 (15:52 +0000)]
Since some time clang itself figures out the default for ms-compatibility-version  and uses it. Trying to figure it out during build is redundant and also will not work when the environment variable VSINSTALLDIR is not defined (which is not defined if you don't install whole Visual Studio but use Visual C++ Build Tools package).

Tested by bootstrapping clang with clang-cl.

Differential Revision: http://reviews.llvm.org/D20672

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270860 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoFix build warning introduced in r270552 "[AMDGPU][llvm-mc] Disassembler: support...
Artem Tamazov [Thu, 26 May 2016 15:52:16 +0000 (15:52 +0000)]
Fix build warning introduced in r270552 "[AMDGPU][llvm-mc] Disassembler: support for TTMP/TBA/TMA registers."

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270859 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[X86][SSE] When lowering a 256-bit shuffle as PMOVZX, reduce the input vector to...
Simon Pilgrim [Thu, 26 May 2016 15:40:36 +0000 (15:40 +0000)]
[X86][SSE] When lowering a 256-bit shuffle as PMOVZX, reduce the input vector to the lower 128-bit subvector.

Most often as not this is what it started out as, the extraction is zero-cost on AVX and the PMOVZX/PMOVSX folding logic is based around 128-bit loads.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270858 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[Hexagon] Select the aggressive anti-dependency breaker
Krzysztof Parzyszek [Thu, 26 May 2016 15:38:50 +0000 (15:38 +0000)]
[Hexagon] Select the aggressive anti-dependency breaker

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270857 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[AMDGPU] Remove exit-on-error flag from test (PR27762)
Diana Picus [Thu, 26 May 2016 15:24:55 +0000 (15:24 +0000)]
[AMDGPU] Remove exit-on-error flag from test (PR27762)

Similar to r269948, but for argument lowering.

Fixes PR27762

Differential Revision: http://reviews.llvm.org/D20430

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270856 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[BPF] Remove exit-on-error flag in test (PR27767)
Diana Picus [Thu, 26 May 2016 15:23:50 +0000 (15:23 +0000)]
[BPF] Remove exit-on-error flag in test (PR27767)

The exit-on-error flag is needed to avoid an assert where
llvm::SelectionDAGISel::LowerArguments doesn't create enough arguments. Fill up
with zeroes to reach the right number of args.

Fixes PR27767.

Differential Revision: http://reviews.llvm.org/D20571

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270855 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[InstCombine] Catch more bswap cases missed due to zext and truncs.
Chad Rosier [Thu, 26 May 2016 14:58:51 +0000 (14:58 +0000)]
[InstCombine] Catch more bswap cases missed due to zext and truncs.

Fixes PR27824.
Differential Revision: http://reviews.llvm.org/D20591.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270853 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[X86][SSE] Added load_zext_16i8_to_8i32 test
Simon Pilgrim [Thu, 26 May 2016 14:45:30 +0000 (14:45 +0000)]
[X86][SSE] Added load_zext_16i8_to_8i32 test

Odd issue with input vector not being folded into pmovzx on AVX2+ targets

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270852 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[ThinLTO] Resolve LinkOnceAny
Teresa Johnson [Thu, 26 May 2016 14:16:52 +0000 (14:16 +0000)]
[ThinLTO] Resolve LinkOnceAny

Summary:
Ensure we keep prevailing copy of LinkOnceAny by converting it to
WeakAny.

Rename odr_resolution test to the now more appropriate weak_resolution
(weak in the linker sense includes linkonce).

Reviewers: joker.eph

Subscribers: llvm-commits, joker.eph

Differential Revision: http://reviews.llvm.org/D20634

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270850 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[AArch64] Generate a BFI/BFXIL from 'or (and X, MaskImm), OrImm'.
Chad Rosier [Thu, 26 May 2016 13:27:56 +0000 (13:27 +0000)]
[AArch64] Generate a BFI/BFXIL from 'or (and X, MaskImm), OrImm'.

If and only if the value being inserted sets only known zero bits.

This combine transforms things like

  and w8, w0, #0xfffffff0
  movz w9, #5
  orr w0, w8, w9

into

  movz w8, #5
  bfxil w0, w8, #0, #4

The combine is tuned to make sure we always reduce the number of instructions.
We avoid churning code for what is expected to be performance neutral changes
(e.g., converted AND+OR to OR+BFI).

Differential Revision: http://reviews.llvm.org/D20387

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270846 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoUse shouldAssumeDSOLocal on AArch64.
Rafael Espindola [Thu, 26 May 2016 12:42:55 +0000 (12:42 +0000)]
Use shouldAssumeDSOLocal on AArch64.

This reduces code duplication and now AArch64 also handles PIE.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270844 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[AVX512] Fix intrinsic cmp{sd|ss} lowering.
Igor Breger [Thu, 26 May 2016 12:42:25 +0000 (12:42 +0000)]
[AVX512] Fix intrinsic cmp{sd|ss} lowering.

Differential Revision: http://reviews.llvm.org/D20615

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270843 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAdd auto-exporting of symbols from tools so that plugins work on Windows
John Brawn [Thu, 26 May 2016 11:16:43 +0000 (11:16 +0000)]
Add auto-exporting of symbols from tools so that plugins work on Windows

The problem with plugins on Windows is that when building a plugin DLL it needs
to explicitly link against something (an exe or DLL) if it uses symbols from
that thing, and that thing must explicitly export those symbols. Also there's a
limit of 65535 symbols that can be exported. This means that currently plugins
only work on Windows when using BUILD_SHARED_LIBS, and that doesn't work with
MSVC.

This patch adds an LLVM_EXPORT_SYMBOLS_FOR_PLUGINS option, which when enabled
automatically exports from all LLVM tools the symbols that a plugin could want
to use so that a plugin can link against a tool directly. Plugins can specify
what tool they link against by using PLUGIN_TOOL argument to llvm_add_library.
The option can also be enabled on Linux, though there all it should do is
restrict the set of symbols that are exported as by default all symbols are
exported.

This option is currently OFF by default, as while I've verified that it works
with MSVC, linux gcc, and cygwin gcc, I haven't tried mingw gcc and I have no
idea what will happen on OSX. Also unfortunately we can't turn on
LLVM_ENABLE_PLUGINS when the option is ON as bugpoint-passes needs to be
loaded by both bugpoint.exe and opt.exe which is incompatible with this
approach. Also currently clang plugins don't work with this approach, which
will be fixed in future patches.

Differential Revision: http://reviews.llvm.org/D18826

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270839 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[X86][F16C] Added F16C fast-isel tests to match clang/test/CodeGen/f16c-builtins.c
Simon Pilgrim [Thu, 26 May 2016 10:26:56 +0000 (10:26 +0000)]
[X86][F16C] Added F16C fast-isel tests to match clang/test/CodeGen/f16c-builtins.c

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270837 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[X86][AVX2] Added gather fast-isel tests to match clang/test/CodeGen/avx2-builtins.c
Simon Pilgrim [Thu, 26 May 2016 10:07:05 +0000 (10:07 +0000)]
[X86][AVX2] Added gather fast-isel tests to match clang/test/CodeGen/avx2-builtins.c

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270835 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[Sparc] Extend the assembler printing support for Sparc back-end.
Chris Dewhurst [Thu, 26 May 2016 07:28:31 +0000 (07:28 +0000)]
[Sparc] Extend the assembler printing support for Sparc back-end.

Allows display of floating-point registers and display of assembler meta-data output.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270829 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[MergedLoadStoreMotion] Don't transform across may-throw calls
David Majnemer [Thu, 26 May 2016 07:11:09 +0000 (07:11 +0000)]
[MergedLoadStoreMotion] Don't transform across may-throw calls

It is unsafe to hoist a load before a function call which may throw, the
throw might prevent a pointer dereference.

Likewise, it is unsafe to sink a store after a call which may throw.
The caller might be able to observe the difference.

This fixes PR27858.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270828 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[ConstantFold] NFC cleanup after previous change.
Adam Nemet [Thu, 26 May 2016 07:08:09 +0000 (07:08 +0000)]
[ConstantFold] NFC cleanup after previous change.

Merge two conditions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270827 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[ConstantFold] Fix incorrect index rewrites for GEPs
Adam Nemet [Thu, 26 May 2016 07:08:05 +0000 (07:08 +0000)]
[ConstantFold] Fix incorrect index rewrites for GEPs

Summary:
If an index for a vector or array type is out-of-range GEP constant
folding tries to factor it into preceding dimensions.  The code however
does not consider addressing of structure field padding which should not
qualify as out-of-range index.

As demonstrated by the testcase, this can occur if the indexing
performed on a vector type and the preceding index is an array type.

SROA generates GEPs for example involving padding bytes as it slices an
alloca.

My fix disables this folding if the element type is a vector type.  I
believe that this is the only way we can end up with padding.  (We have
no access to DataLayout so I am not sure if there is actual robust way
of actually checking the presence of padding.)

Reviewers: majnemer

Subscribers: llvm-commits, Gerolf

Differential Revision: http://reviews.llvm.org/D20663

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270826 91177308-0d34-0410-b5e6-96231b3b80d8