OSDN Git Service
Craig Topper [Sat, 12 Nov 2016 05:05:27 +0000 (05:05 +0000)]
[AVX-512] Add support for lowering shuffles to VALIGND/VALIGNQ
Summary: VALIGND and VALIGNQ are similar to PALIGNR but instead of working on a 128-bit lane they work on the entire vector register. This change leverages the shuffle rotate detection code used for PALIGNR to detect these cases.
Reviewers: delena, RKSimon
Subscribers: Farhana, llvm-commits
Differential Revision: https://reviews.llvm.org/D26297
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286709
91177308-0d34-0410-b5e6-
96231b3b80d8
Saleem Abdulrasool [Sat, 12 Nov 2016 03:45:21 +0000 (03:45 +0000)]
build: add a dependency on llvm-strings
Since we now have tests for llvm-strings, add a dependency on the tool.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286707
91177308-0d34-0410-b5e6-
96231b3b80d8
Saleem Abdulrasool [Sat, 12 Nov 2016 03:39:21 +0000 (03:39 +0000)]
llvm-strings: ensure that the last string is correctly printed
We would ignore the last string that appeared if the file ended with a printable
character. Ensure that we get the last string.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286706
91177308-0d34-0410-b5e6-
96231b3b80d8
whitequark [Sat, 12 Nov 2016 03:38:30 +0000 (03:38 +0000)]
[OCaml] Adapt to the new attribute C API.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286705
91177308-0d34-0410-b5e6-
96231b3b80d8
whitequark [Sat, 12 Nov 2016 03:38:23 +0000 (03:38 +0000)]
[C API] Fix several null pointer dereferences.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286704
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Sat, 12 Nov 2016 02:55:45 +0000 (02:55 +0000)]
[libFuzzer] one more trophy
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286703
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Sat, 12 Nov 2016 02:27:21 +0000 (02:27 +0000)]
[libFuzzer] use a valid ASCII string for a dummy seed corpus
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286702
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Sat, 12 Nov 2016 02:19:31 +0000 (02:19 +0000)]
[ORC] Add a WrappedHandlerReturn type to map handler return types onto error
return types.
This class allows user provided handlers to return either error-wrapped types
or plain types. In the latter case, the plain type is wrapped with a success
value of Error or Expected<T> type to fit it into the rest of the serialization
machinery.
This patch allows us to remove the RPC unit-test workaround added in r286646.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286701
91177308-0d34-0410-b5e6-
96231b3b80d8
Mehdi Amini [Sat, 12 Nov 2016 01:17:59 +0000 (01:17 +0000)]
Improve `git llvm push` to suggest `git pull` when applying patch fails
Differential Revision: https://reviews.llvm.org/D26565
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286695
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Sat, 12 Nov 2016 00:35:58 +0000 (00:35 +0000)]
One more set of changes to fix formatv() on linux.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286692
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Sat, 12 Nov 2016 00:30:37 +0000 (00:30 +0000)]
Add missing #include.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286691
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Sat, 12 Nov 2016 00:28:10 +0000 (00:28 +0000)]
Fix another problem with formatv().
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286690
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Sat, 12 Nov 2016 00:24:35 +0000 (00:24 +0000)]
[libFuzzer] use less stack
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286689
91177308-0d34-0410-b5e6-
96231b3b80d8
Rui Ueyama [Sat, 12 Nov 2016 00:23:32 +0000 (00:23 +0000)]
Remove extra semicolon.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286688
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Sat, 12 Nov 2016 00:19:11 +0000 (00:19 +0000)]
AMDGPU/SI: Promote i16 = fp_[us]int f32 for VI
Summary: This fixes a regression caused by r286464.
Reviewers: arsenm
Subscribers: kzhuravl, wdng, nhaehnle, yaxunl, llvm-commits, tony-tye
Differential Revision: https://reviews.llvm.org/D26570
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286687
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Sat, 12 Nov 2016 00:18:42 +0000 (00:18 +0000)]
Try to fix build after llvm::formatv() patch.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286686
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Fri, 11 Nov 2016 23:58:11 +0000 (23:58 +0000)]
Fix -Werror build with clang-cl.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286683
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Fri, 11 Nov 2016 23:57:40 +0000 (23:57 +0000)]
[Support] Introduce llvm::formatv() function.
This introduces a new type-safe general purpose formatting
library. It provides compile-time type safety, does not require
a format specifier (since the type is deduced), and provides
mechanisms for extending the format capability to user defined
types, and overriding the formatting behavior for existing types.
This patch additionally adds documentation for the API to the
LLVM programmer's manual.
Mailing List Thread:
http://lists.llvm.org/pipermail/llvm-dev/2016-October/105836.html
Differential Revision: https://reviews.llvm.org/D25587
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286682
91177308-0d34-0410-b5e6-
96231b3b80d8
Rui Ueyama [Fri, 11 Nov 2016 23:41:13 +0000 (23:41 +0000)]
Define DbiStreamBuilder::addSectionContribs.
This patch defines a new function to add a SectionContribs stream
to a PDB file. Unlike SectionMap, SectionContribs contains a list
of input sections as opposed to output sections.
Note that this patch needs improving because currently we do not
set Module field in SectionContribs entries. In a follow-up patch,
I'll add Modules and then fix it after that.
Differential Revision: https://reviews.llvm.org/D26210
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286677
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Fri, 11 Nov 2016 23:35:42 +0000 (23:35 +0000)]
AMDGPU/SI: Fix visit order assumption in SIFixSGPRCopies
Summary:
This pass was assuming that when a PHI instruction defined a register
used by another PHI instruction that the defining insstruction would
be legalized before the using instruction.
This assumption was causing the pass to not legalize some PHI nodes
within divergent flow-control.
This fixes a bug that was uncovered by r285762.
Reviewers: nhaehnle, arsenm
Subscribers: kzhuravl, wdng, nhaehnle, yaxunl, tony-tye, llvm-commits
Differential Revision: https://reviews.llvm.org/D26303
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286676
91177308-0d34-0410-b5e6-
96231b3b80d8
Richard Trieu [Fri, 11 Nov 2016 23:26:28 +0000 (23:26 +0000)]
Print correct directory in merge script.
When providing the project directory to the merge script, print it out in the
commit instructions instead of the default project directory.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286675
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Fri, 11 Nov 2016 23:20:01 +0000 (23:20 +0000)]
[InstCombine] use dyn_cast rather isa+cast; NFC
Follow-up to r286664 cleanup as suggested by Eli. Thanks!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286671
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Fri, 11 Nov 2016 23:12:46 +0000 (23:12 +0000)]
[InstCombine] update test to use FileCheck; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286668
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Fri, 11 Nov 2016 23:06:53 +0000 (23:06 +0000)]
[libFuzzer] do not initialize parts of TracePC -- let them be initialized by the linker. Add no-msan attribute to the memcmp hook.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286665
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Fri, 11 Nov 2016 23:01:20 +0000 (23:01 +0000)]
[InstCombine] clean up foldSelectOpOp(); NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286664
91177308-0d34-0410-b5e6-
96231b3b80d8
Anna Zaks [Fri, 11 Nov 2016 23:01:02 +0000 (23:01 +0000)]
[tsan][llvm] Implement the function attribute to disable TSan checking at run time
This implements a function annotation that disables TSan checking for the
function at run time. The benefit over attribute((no_sanitize("thread")))
is that the accesses within the callees will also be suppressed.
The motivation for this attribute is a guarantee given by the objective C
language that the calls to the reference count decrement and object
deallocation will be synchronized. To model this properly, we would need
to intercept all ref count decrement calls (which are very common in ObjC
due to use of ARC) and also every single message send. Instead, we propose
to just ignore all accesses made from within dealloc at run time. The main
downside is that this still does not introduce any synchronization, which
means we might still report false positives if the code that relies on this
synchronization is not executed from within dealloc. However, we have not seen
this in practice so far and think these cases will be very rare.
Differential Revision: https://reviews.llvm.org/D25858
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286663
91177308-0d34-0410-b5e6-
96231b3b80d8
Adam Nemet [Fri, 11 Nov 2016 22:51:46 +0000 (22:51 +0000)]
[LV] Stop saying "use -Rpass-analysis=loop-vectorize"
This is PR28376.
Unfortunately given the current structure of optimization diagnostics we
lack the capability to tell whether the user has
passed -Rpass-analysis=loop-vectorize since this is local to the
front-end (BackendConsumer::OptimizationRemarkHandler).
So rather than printing this even if the user has already
passed -Rpass-analysis, this patch just punts and stops recommending
this option. I don't think that getting this right is worth the
complexity.
Differential Revision: https://reviews.llvm.org/D26563
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286662
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Fri, 11 Nov 2016 22:50:16 +0000 (22:50 +0000)]
[RPC] Add const qualifier to MemberFnWrapper to make buildbots happy.
This is a temporary fix: The right solution is to make sure addHandler can
support mutable lambdas. I'll add that in a follow-up patch.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286661
91177308-0d34-0410-b5e6-
96231b3b80d8
Rui Ueyama [Fri, 11 Nov 2016 22:41:47 +0000 (22:41 +0000)]
Fix typo in comment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286657
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthias Braun [Fri, 11 Nov 2016 22:39:50 +0000 (22:39 +0000)]
Revert "(origin/master, origin/HEAD) MachineScheduler/ScheduleDAG: Add support to skipping a node."
Revert accidentally committed change.
This reverts commit r286655.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286656
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthias Braun [Fri, 11 Nov 2016 22:37:34 +0000 (22:37 +0000)]
MachineScheduler/ScheduleDAG: Add support to skipping a node.
The DAG mutators in the scheduler cannot really remove DAG nodes as
additional anlysis information such as ScheduleDAGToplogicalSort are
already computed at this point and rely on a fixed number of DAG nodes.
Alleviate the missing removal with a new flag: Setting the new skip
flag on a node ignores it during scheduling.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286655
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthias Braun [Fri, 11 Nov 2016 22:37:31 +0000 (22:37 +0000)]
ScheduleDAGInstrs: Move VRegUses to ScheduleDAGMILive; NFCI
Push VRegUses/collectVRegUses() down the class hierarchy towards its
only user ScheduleDAGMILive.
NFCI: The initialization of the map happens at a later point but that
should not matter.
This is in preparation to allow DAG mutators to merge nodes, which
relies on this map getting computed later.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286654
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthias Braun [Fri, 11 Nov 2016 22:37:28 +0000 (22:37 +0000)]
MachineScheduler: Dump EntrySU/ExitSU if possible
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286653
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthias Braun [Fri, 11 Nov 2016 22:37:26 +0000 (22:37 +0000)]
ScheduleDAG: Identify EntrySU/ExitSU when dumping node ids
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286652
91177308-0d34-0410-b5e6-
96231b3b80d8
Erik Eckstein [Fri, 11 Nov 2016 22:21:39 +0000 (22:21 +0000)]
FunctionComparator: don't rely on argument evaluation order.
This is a follow-up on the recent refactoring of the FunctionMerge pass.
It should fix a fail of the new FunctionComparator unittest whe compiling with MSVC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286648
91177308-0d34-0410-b5e6-
96231b3b80d8
Mehdi Amini [Fri, 11 Nov 2016 22:18:42 +0000 (22:18 +0000)]
Fix static initialization order fiasco in MCTests
Reported by Kostya on llvm-dev, uncovered by an ASAN bot
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286647
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Fri, 11 Nov 2016 22:16:10 +0000 (22:16 +0000)]
[ORC] Temporarily fix the RPCUtils unit test by explicitly specifying a handler
return type.
This should be fixed permanently by having the RPCUtils header recognize the
ErrorSuccess type. I'll commit that in a follow up patch.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286646
91177308-0d34-0410-b5e6-
96231b3b80d8
Piotr Padlewski [Fri, 11 Nov 2016 22:12:15 +0000 (22:12 +0000)]
NFC ProgrammersManual fix
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286645
91177308-0d34-0410-b5e6-
96231b3b80d8
Adrian Prantl [Fri, 11 Nov 2016 22:09:25 +0000 (22:09 +0000)]
Simplify code and address review comments (NFC)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286644
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Fri, 11 Nov 2016 21:55:25 +0000 (21:55 +0000)]
[Orc] Update the BuildingAJIT Chapter 5 server class for the recent RPC changes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286642
91177308-0d34-0410-b5e6-
96231b3b80d8
Adrian Prantl [Fri, 11 Nov 2016 21:48:09 +0000 (21:48 +0000)]
Fix a reference-to-temporary introduced in r286607.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286640
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Fri, 11 Nov 2016 21:42:09 +0000 (21:42 +0000)]
[ORC] Re-apply 286620 with fixes for the ErrorSuccess class.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286639
91177308-0d34-0410-b5e6-
96231b3b80d8
Nemanja Ivanovic [Fri, 11 Nov 2016 21:42:01 +0000 (21:42 +0000)]
[PowerPC] Add remaining vector permute builtins in altivec.h - LLVM portion
This patch corresponds to review:
https://reviews.llvm.org/D26480
Adds all the intrinsics used for various permute builtins that will
be added to altivec.h.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286638
91177308-0d34-0410-b5e6-
96231b3b80d8
Evgeniy Stepanov [Fri, 11 Nov 2016 21:39:26 +0000 (21:39 +0000)]
[cfi] Fix weak functions handling.
When a function pointer is replaced with a jumptable pointer, special
case is needed to preserve the semantics of extern_weak functions.
Since a jumptable entry can not be extern_weak, we emulate that
behaviour by replacing all references to F (the extern_weak function)
with the following expression: F != nullptr ? JumpTablePtr : nullptr.
Extra special care is needed for global initializers, since most (or
probably all) backends can not lower an initializer that includes
this kind of constant expression. Initializers like that are replaced
with a global constructor (i.e. a runtime initializer).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286636
91177308-0d34-0410-b5e6-
96231b3b80d8
Erik Eckstein [Fri, 11 Nov 2016 21:15:13 +0000 (21:15 +0000)]
Make the FunctionComparator of the MergeFunctions pass a stand-alone utility.
This is pure refactoring. NFC.
This change moves the FunctionComparator (together with the GlobalNumberState
utility) in to a separate file so that it can be used by other passes.
For example, the SwiftMergeFunctions pass in the Swift compiler:
https://github.com/apple/swift/blob/master/lib/LLVMPasses/LLVMMergeFunctions.cpp
Details of the change:
*) The big part is just moving code out of MergeFunctions.cpp into FunctionComparator.h/cpp
*) Make FunctionComparator member functions protected (instead of private)
so that a derived comparator class can use them.
Following refactoring helps to share code between the base FunctionComparator
class and a derived class:
*) Add a beginCompare() function
*) Move some basic function property comparisons into a separate function compareSignature()
*) Do the GEP comparison inside cmpOperations() which now has a new
needToCmpOperands reference parameter
https://reviews.llvm.org/D25385
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286632
91177308-0d34-0410-b5e6-
96231b3b80d8
Rui Ueyama [Fri, 11 Nov 2016 20:39:02 +0000 (20:39 +0000)]
Fix -Wpessimizing-move warning.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286629
91177308-0d34-0410-b5e6-
96231b3b80d8
Vyacheslav Klochkov [Fri, 11 Nov 2016 19:55:29 +0000 (19:55 +0000)]
Fixed the lost FastMathFlags for FCmp operations in SLPVectorizer.
Reviewer: Michael Zolotukhin.
Differential Revision: https://reviews.llvm.org/D26543
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286626
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Fri, 11 Nov 2016 19:52:45 +0000 (19:52 +0000)]
[AArch64] Update a FIXME comment to reflect current state. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286625
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Fri, 11 Nov 2016 19:50:39 +0000 (19:50 +0000)]
Bitcode: Change getModuleSummaryIndex() to return an llvm::Expected.
Differential Revision: https://reviews.llvm.org/D26539
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286624
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Fri, 11 Nov 2016 19:50:24 +0000 (19:50 +0000)]
Bitcode: Clean up error handling for certain bitcode query functions.
The functions getBitcodeTargetTriple(), isBitcodeContainingObjCCategory(),
getBitcodeProducerString() and hasGlobalValueSummary() now return errors
via their return value rather than via the diagnostic handler.
To make this work, re-implement these functions using non-member functions
so that they can be used without the LLVMContext required by BitcodeReader.
Differential Revision: https://reviews.llvm.org/D26532
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286623
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Fri, 11 Nov 2016 19:50:10 +0000 (19:50 +0000)]
Bitcode: Prepare to move bitcode readers to free functions.
Make initStream() a free function, and change BitcodeReaderBase ctor to take
a BitstreamCursor.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286622
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Fri, 11 Nov 2016 19:46:46 +0000 (19:46 +0000)]
[ORC] Revert r286620 while I investigate a bot failure.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286621
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Fri, 11 Nov 2016 19:42:44 +0000 (19:42 +0000)]
[ORC] Refactor the ORC RPC utilities to add some new features.
(1) Add support for function key negotiation.
The previous version of the RPC required both sides to maintain the same
enumeration for functions in the API. This means that any version skew between
the client and server would result in communication failure.
With this version of the patch functions (and serializable types) are defined
with string names, and the derived function signature strings are used to
negotiate the actual function keys (which are used for efficient call
serialization). This allows clients to connect to any server that supports a
superset of the API (based on the function signatures it supports).
(2) Add a callAsync primitive.
The callAsync primitive can be used to install a return value handler that will
run as soon as the RPC function's return value is sent back from the remote.
(3) Launch policies for RPC function handlers.
The new addHandler method, which installs handlers for RPC functions, takes two
arguments: (1) the handler itself, and (2) an optional "launch policy". When the
RPC function is called, the launch policy (if present) is invoked to actually
launch the handler. This allows the handler to be spawned on a background
thread, or added to a work list. If no launch policy is used, the handler is run
on the server thread itself. This should only be used for short-running
handlers, or entirely synchronous RPC APIs.
(4) Zero cost cross type serialization.
You can now define serialization from any type to a different "wire" type. For
example, this allows you to call an RPC function that's defined to take a
std::string while passing a StringRef argument. If a serializer from StringRef
to std::string has been defined for the channel type this will be used to
serialize the argument without having to construct a std::string instance.
This allows buffer reference types to be used as arguments to RPC calls without
requiring a copy of the buffer to be made.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286620
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Fri, 11 Nov 2016 19:37:54 +0000 (19:37 +0000)]
[InstCombine] add tests to show size-increasing select transforms
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286619
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Fri, 11 Nov 2016 19:25:48 +0000 (19:25 +0000)]
[AArch64] Add test to show narrow zero store merging is disabled with strict align. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286617
91177308-0d34-0410-b5e6-
96231b3b80d8
Geoff Berry [Fri, 11 Nov 2016 19:25:20 +0000 (19:25 +0000)]
[AArch64] Fix bugs in isel lowering replaceSplatVectorStore.
Summary:
Fix off-by-one indexing error in loop checking that inserted value was a
splat vector.
Add code to check that INSERT_VECTOR_ELT nodes constructing the splat
vector have the expected constant index values.
Reviewers: t.p.northover, jmolloy, mcrosier
Subscribers: aemerson, llvm-commits, rengolin
Differential Revision: https://reviews.llvm.org/D26409
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286616
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Fri, 11 Nov 2016 19:18:45 +0000 (19:18 +0000)]
[sancov] Don't instrument MSVC CRT stdio config helpers
They get called before initialization, which is a problem for winasan.
Test coming in compiler-rt.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286615
91177308-0d34-0410-b5e6-
96231b3b80d8
Evgeniy Stepanov [Fri, 11 Nov 2016 18:49:09 +0000 (18:49 +0000)]
[cfi] Implement cfi-icall using inline assembly.
The current implementation is emitting a global constant that happens
to evaluate to the same bytes + relocation as a jump instruction on
X86. This does not work for PIE executables and shared libraries
though, because we end up with a wrong relocation type. And it has no
chance of working on ARM/AArch64 which use different relocation types
for jump instructions (R_ARM_JUMP24) that is never generated for
data.
This change replaces the constant with module-level inline assembly
followed by a hidden declaration of the jump table. Works fine for
ARM/AArch64, but has some drawbacks.
* Extra symbols are added to the static symbol table, which inflate
the size of the unstripped binary a little. Stripped binaries are not
affected. This happens because jump table declarations must be
external (because their body is in the inline asm).
* Original functions that were anonymous are now named
<original name>.cfi, and it affects symbolization sometimes. This is
necessary because the only user of these functions is the (inline
asm) jump table, so they had to be added to @llvm.used, which does
not allow unnamed functions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286611
91177308-0d34-0410-b5e6-
96231b3b80d8
Adrian Prantl [Fri, 11 Nov 2016 18:22:51 +0000 (18:22 +0000)]
Fix comments according to the LLVM coding guidelines.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286610
91177308-0d34-0410-b5e6-
96231b3b80d8
Adrian Prantl [Fri, 11 Nov 2016 17:50:09 +0000 (17:50 +0000)]
Revert "Use private linkage for MergedGlobals variables" on Darwin.
This is a partial revert of r244615 (http://reviews.llvm.org/D11942),
which caused a major regression in debug info quality.
Turning the artificial __MergedGlobal symbols into private symbols
(l__MergedGlobal) means that the linker will not include them in the
symbol table of the final executable. Without a symbol table entry
dsymutil is not be able to process the debug info for any of the
merged globals and thus drops the debug info for all of them.
This patch is enabling the old behavior for all MachO targets while
leaving all other targets unaffected.
rdar://problem/
29160481
https://reviews.llvm.org/D26531
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286607
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Fri, 11 Nov 2016 17:49:34 +0000 (17:49 +0000)]
[AArch64] Remove lots of redundant code. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286606
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Fri, 11 Nov 2016 17:42:16 +0000 (17:42 +0000)]
[InstCombine] fix formatting of FoldOpIntoSelect(); NFCI
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286604
91177308-0d34-0410-b5e6-
96231b3b80d8
Greg Clayton [Fri, 11 Nov 2016 17:38:14 +0000 (17:38 +0000)]
Fixed issues found by Paul Robinson with my patch for:
https://reviews.llvm.org/D26526
- Fixed DW_FORM_strp to be correctly sized and extracted for DWARF64
- Added some missing strp variants as well
- Fixed comment typo
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286603
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Fri, 11 Nov 2016 17:07:37 +0000 (17:07 +0000)]
[AArch64] Early return and minor renaming/refactoring to ease code review. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286601
91177308-0d34-0410-b5e6-
96231b3b80d8
Greg Clayton [Fri, 11 Nov 2016 16:55:31 +0000 (16:55 +0000)]
Fix windows buildbot where warnings are errors. We had a switch statement where all enumerations were handled, but some compilers don't recognize this. Simplify the logic so that all compilers will know a return value is returned in all cases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286600
91177308-0d34-0410-b5e6-
96231b3b80d8
Greg Clayton [Fri, 11 Nov 2016 16:21:37 +0000 (16:21 +0000)]
Clean up DWARFFormValue by reducing duplicated code and removing DWARFFormValue::getFixedFormSizes()
In preparation for a follow on patch that improves DWARF parsing speed, clean up DWARFFormValue so that we have can get the fixed byte size of a form value given a DWARFUnit or given the version, address byte size and dwarf32/64.
This patch cleans up code so that everyone is using one of the new DWARFFormValue functions:
static Optional<uint8_t> DWARFFormValue::getFixedByteSize(dwarf::Form Form, const DWARFUnit *U = nullptr);
static Optional<uint8_t> DWARFFormValue::getFixedByteSize(dwarf::Form Form, uint16_t Version, uint8_t AddrSize, bool Dwarf32);
This patch changes DWARFFormValue::skipValue() to rely on the output of DWARFFormValue::getFixedByteSize(...) instead of duplicating the code in each function. This will reduce the number of changes we need to make to DWARF to fewer places in DWARFFormValue when we add support for new form.
This patch also starts to support DWARF64 so that we can get correct byte sizes for forms that vary according the DWARF 32/64.
To reduce the code duplication a new FormSizeHelper pure virtual class was created that can be created as a FormSizeHelperDWARFUnit when you have a DWARFUnit, or FormSizeHelperManual where you manually specify the DWARF version, address byte size and DWARF32/DWARF64. There is now a single implementation of a function that gets the fixed byte size (instead of two where one took a DWARFUnit and one took the DWARF version, address byte size and DWARFFormat enum) and one function to skip the form values.
https://reviews.llvm.org/D26526
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286597
91177308-0d34-0410-b5e6-
96231b3b80d8
Nemanja Ivanovic [Fri, 11 Nov 2016 14:41:19 +0000 (14:41 +0000)]
[PowerPC] Add vector conversion builtins to altivec.h - LLVM portion
This patch corresponds to review:
https://reviews.llvm.org/D26307
Adds all the intrinsics used for various conversion builtins that will
be added to altivec.h. These are type conversions between various types of
vectors.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286596
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Fri, 11 Nov 2016 14:17:37 +0000 (14:17 +0000)]
llvm-strings: Fix r286556 to add required libraries.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286594
91177308-0d34-0410-b5e6-
96231b3b80d8
John Brawn [Fri, 11 Nov 2016 14:12:15 +0000 (14:12 +0000)]
Fix test/tools/gold/X86/thinlto_funcimport.ll on non-X86 hosts
Pass -m elf_x86_64 to gold, as is done in other tests.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286593
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Fri, 11 Nov 2016 14:10:12 +0000 (14:10 +0000)]
[AArch64] Enable merging of adjacent zero stores for all subtargets.
This optimization merges adjacent zero stores into a wider store.
e.g.,
strh wzr, [x0]
strh wzr, [x0, #2]
; becomes
str wzr, [x0]
e.g.,
str wzr, [x0]
str wzr, [x0, #4]
; becomes
str xzr, [x0]
Previously, this was only enabled for Kryo and Cortex-A57.
Differential Revision: https://reviews.llvm.org/D26396
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286592
91177308-0d34-0410-b5e6-
96231b3b80d8
Sam Kolton [Fri, 11 Nov 2016 13:41:52 +0000 (13:41 +0000)]
[AMDGPU] TargetStreamer: Fix .note section name
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286591
91177308-0d34-0410-b5e6-
96231b3b80d8
Ulrich Weigand [Fri, 11 Nov 2016 12:48:26 +0000 (12:48 +0000)]
[SystemZ] Support CL(G)T instructions
This adds support for the compare logical and trap (memory)
instructions that were added as part of the miscellaneous
instruction extensions feature with zEC12.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286587
91177308-0d34-0410-b5e6-
96231b3b80d8
Ulrich Weigand [Fri, 11 Nov 2016 12:46:28 +0000 (12:46 +0000)]
[SystemZ] Support load-and-zero-rightmost-byte facility
This adds support for the LZRF/LZRG/LLZRGF instructions that were
added on z13, and uses them for code generation were appropriate.
SystemZDAGToDAGISel::tryRISBGZero is updated again to prefer LLZRGF
over RISBG where both would be possible.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286586
91177308-0d34-0410-b5e6-
96231b3b80d8
Ulrich Weigand [Fri, 11 Nov 2016 12:43:51 +0000 (12:43 +0000)]
[SystemZ] Use LLGT(R) instructions
This adds support for the 31-to-64-bit zero extension instructions
LLGT and LLGTR and uses them for code generation where appropriate.
Since this operation can also be performed via RISBG, we have to
update SystemZDAGToDAGISel::tryRISBGZero so that we prefer LLGT
over RISBG in case both are possible. The patch includes some
simplification to the tryRISBGZero code; this is not intended
to cause any (further) functional change in codegen.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286585
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Fri, 11 Nov 2016 11:51:29 +0000 (11:51 +0000)]
[SelectionDAG] Add support for vector demandedelts in BSWAP opcodes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286582
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Fri, 11 Nov 2016 11:33:21 +0000 (11:33 +0000)]
[X86] Add knownbits vector BSWAP test
In preparation for demandedelts support
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286579
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Fri, 11 Nov 2016 11:23:43 +0000 (11:23 +0000)]
[SelectionDAG] Add support for vector demandedelts in UREM/SREM opcodes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286578
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Fri, 11 Nov 2016 11:11:40 +0000 (11:11 +0000)]
[X86] Add knownbits vector UREM/SREM tests
In preparation for demandedelts support
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286577
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Fri, 11 Nov 2016 10:47:24 +0000 (10:47 +0000)]
[SelectionDAG] Add support for vector demandedelts in UDIV opcodes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286576
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Fri, 11 Nov 2016 10:39:15 +0000 (10:39 +0000)]
[X86] Add knownbits vector UDIV test
In preparation for demandedelts support
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286575
91177308-0d34-0410-b5e6-
96231b3b80d8
Diana Picus [Fri, 11 Nov 2016 08:27:37 +0000 (08:27 +0000)]
[ARM] Add plumbing for GlobalISel
Add GlobalISel skeleton, up to the point where we can select a ret void.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286573
91177308-0d34-0410-b5e6-
96231b3b80d8
Adam Nemet [Fri, 11 Nov 2016 06:11:56 +0000 (06:11 +0000)]
[opt-viewer] Make it work in the absence of hotness information
In this case the index page is sorted by the source location.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286572
91177308-0d34-0410-b5e6-
96231b3b80d8
Mehdi Amini [Fri, 11 Nov 2016 06:04:30 +0000 (06:04 +0000)]
Fix gold plugin after Error API changes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286571
91177308-0d34-0410-b5e6-
96231b3b80d8
Teresa Johnson [Fri, 11 Nov 2016 06:02:04 +0000 (06:02 +0000)]
Fix examples files to reflect header split in r286566.
I missed these files in examples/
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286570
91177308-0d34-0410-b5e6-
96231b3b80d8
Teresa Johnson [Fri, 11 Nov 2016 05:46:30 +0000 (05:46 +0000)]
Add missing file from r286566
Add the new BitcodeWriter.h header, which was missed in my r286566
commit, and should fix all the bot failures.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286569
91177308-0d34-0410-b5e6-
96231b3b80d8
Teresa Johnson [Fri, 11 Nov 2016 05:34:58 +0000 (05:34 +0000)]
Split Bitcode/ReaderWriter.h into separate reader and writer headers
Summary:
Split ReaderWriter.h which contains the APIs into both the BitReader and
BitWriter libraries into BitcodeReader.h and BitcodeWriter.h.
This is to address Chandler's concern about sharing the same API header
between multiple libraries (BitReader and BitWriter). That concern is
why we create a single bitcode library in our downstream build of clang,
which led to r286297 being reverted as it added a dependency that
created a cycle only when there is a single bitcode library (not two as
in upstream).
Reviewers: mehdi_amini
Subscribers: dlj, mehdi_amini, llvm-commits
Differential Revision: https://reviews.llvm.org/D26502
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286566
91177308-0d34-0410-b5e6-
96231b3b80d8
Mandeep Singh Grang [Fri, 11 Nov 2016 04:51:27 +0000 (04:51 +0000)]
[opt-viewer] PEPify opt-viewer.py
Reviewers: anemet
Subscribers: fhahn
Differential Revision: https://reviews.llvm.org/D26535
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286564
91177308-0d34-0410-b5e6-
96231b3b80d8
Mehdi Amini [Fri, 11 Nov 2016 04:50:18 +0000 (04:50 +0000)]
Fix build failure, update llvm-strings for the new Error API
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286563
91177308-0d34-0410-b5e6-
96231b3b80d8
Mehdi Amini [Fri, 11 Nov 2016 04:29:25 +0000 (04:29 +0000)]
Prevent at compile time converting from Error::success() to Expected<T>
This would trigger an assertion at runtime otherwise.
Differential Revision: https://reviews.llvm.org/D26482
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286562
91177308-0d34-0410-b5e6-
96231b3b80d8
Mehdi Amini [Fri, 11 Nov 2016 04:28:40 +0000 (04:28 +0000)]
Make the Error class constructor protected
This is forcing to use Error::success(), which is in a wide majority
of cases a lot more readable.
Differential Revision: https://reviews.llvm.org/D26481
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286561
91177308-0d34-0410-b5e6-
96231b3b80d8
Mehdi Amini [Fri, 11 Nov 2016 04:27:59 +0000 (04:27 +0000)]
CMake: make LLVM_OPTIMIZED_TABLEGEN friendly with LLVM_EXTERNAL_CLANG_SOURCE_DIR
This is need because of clang-tblgen
Differential Revision: https://reviews.llvm.org/D26483
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286560
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Fri, 11 Nov 2016 04:03:29 +0000 (04:03 +0000)]
[ADT/MathExtras] Make buildbot happy again.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286559
91177308-0d34-0410-b5e6-
96231b3b80d8
Saleem Abdulrasool [Fri, 11 Nov 2016 04:00:59 +0000 (04:00 +0000)]
llvm-strings: explicitly include cctype
Include the cctype header to try to fix windows bots.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286558
91177308-0d34-0410-b5e6-
96231b3b80d8
Saleem Abdulrasool [Fri, 11 Nov 2016 03:44:12 +0000 (03:44 +0000)]
llvm-strings: introduce basic strings tool
This is a replacement to binutils' string tool. It prints strings found in a
binary (object file, executable, or archive library). It is rather bare and
not functionally equivalent, however, it lays the groundwork necessary for the
strings tool, enabling iterative development of features to reach feature
parity.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286556
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Fri, 11 Nov 2016 03:07:45 +0000 (03:07 +0000)]
[lli] Simplify the code a bit. No functional change intended.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286555
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Fri, 11 Nov 2016 03:00:00 +0000 (03:00 +0000)]
[IR/DataLayout] Simplify the code using PowerOf2Ceil. NFCI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286554
91177308-0d34-0410-b5e6-
96231b3b80d8
Yaxun Liu [Fri, 11 Nov 2016 02:48:50 +0000 (02:48 +0000)]
AMDGPU: Attempt to fix build failure on x86-64 selfhost build
Remove redundant include file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286552
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Fri, 11 Nov 2016 02:38:24 +0000 (02:38 +0000)]
[ADT/MathExtras] Add tests for PowerOf2Floor (previously untested).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286551
91177308-0d34-0410-b5e6-
96231b3b80d8
Sean Fertile [Fri, 11 Nov 2016 02:33:17 +0000 (02:33 +0000)]
Add a blank line for a test commit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286550
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Fri, 11 Nov 2016 02:22:16 +0000 (02:22 +0000)]
[ADT/MathExtras] Introduce PowerOf2Ceil.
To be used in lld (and probably somewhere else in llvm).
Differential Revision: https://reviews.llvm.org/D26538
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286549
91177308-0d34-0410-b5e6-
96231b3b80d8