Nicolai Haehnle [Wed, 3 Aug 2016 19:10:13 +0000 (19:10 +0000)]
[InstCombine] Cleanup select-bitext.ll tests
Follow-up to r277596.
llvm-svn: 277633
Ivan Krasin [Wed, 3 Aug 2016 19:08:55 +0000 (19:08 +0000)]
Add CFI tests for -lowertypetests-bitsets-level.
Summary:
-lowertypetests-bitsets-level controls which kinds of bitsets
are generated, as introduced in r277556. This change adds tests
to compiler-rt.
Reviewers: kcc
Differential Revision: https://reviews.llvm.org/D23103
llvm-svn: 277632
Simon Pilgrim [Wed, 3 Aug 2016 19:08:24 +0000 (19:08 +0000)]
[X86][SSE] Enable target shuffle combining to combine multiple shuffle inputs.
We currently only support combining target shuffles that consist of a single source input (plus elements known to be undef/zero).
This patch generalizes the recursive combining of the target shuffle to collect all the inputs, merging any duplicates along the way, into a full set of src ops and its shuffle mask.
We uncover a number of cases where we have failed to combine a unary shuffle because the input has been duplicated and separated during lowering.
This will allow us to combine to 2-input shuffles in a future patch.
Differential Revision: https://reviews.llvm.org/D22859
llvm-svn: 277631
Vedant Kumar [Wed, 3 Aug 2016 19:02:50 +0000 (19:02 +0000)]
Reapply "More fixes to get good error messages for bad archives."
This reverts commit the revert commit r277627. The build errors
mentioned in r277627 were likely caused by an unclean build directory.
Sorry for the noise.
llvm-svn: 277630
Sanjay Patel [Wed, 3 Aug 2016 18:59:03 +0000 (18:59 +0000)]
[InstCombine] use m_APInt to allow icmp (binop X, Y), C folds with constant splat vectors
This removes the restriction for the icmp constant, but as noted by the FIXME comments,
we still need to change individual checks for binop operand constants.
llvm-svn: 277629
Vedant Kumar [Wed, 3 Aug 2016 18:44:32 +0000 (18:44 +0000)]
Revert "More fixes to get good error messages for bad archives."
This reverts commit r277540. It breaks the build with:
../lib/Object/Archive.cpp:264:41: error: return type of out-of-line definition of 'llvm::object::ArchiveMemberHeader::getUID' differs from that in the declaration
Expected<unsigned> ArchiveMemberHeader::getUID() const {
~~~~~~~~~~~~~~~~~~ ^
include/llvm/Object/Archive.h:53:12: note: previous declaration is here
unsigned getUID() const;
~~~~~~~~ ^
llvm-svn: 277627
Krzysztof Parzyszek [Wed, 3 Aug 2016 18:35:48 +0000 (18:35 +0000)]
[Hexagon] Generate COPY/REG_SEQUENCE more aggressively for vectors
llvm-svn: 277626
Duncan P. N. Exon Smith [Wed, 3 Aug 2016 18:19:43 +0000 (18:19 +0000)]
IR: Drop uniquing when an MDNode Value operand is deleted
This is a fix for PR28697.
An MDNode can indirectly refer to a GlobalValue, through a
ConstantAsMetadata. When the GlobalValue is deleted, the MDNode operand
is reset to `nullptr`. If the node is uniqued, this can lead to a
hard-to-detect cache invalidation in a Metadata map that's shared across
an LLVMContext.
Consider:
1. A map from Metadata* to `T` called RemappedMDs.
2. A node that references a global variable, `!{i1* @GV}`.
3. Insert `!{i1* @GV} -> SomeT` in the map.
4. Delete `@GV`, leaving behind `!{null} -> SomeT`.
Looking up the generic and uninteresting `!{null}` gives you `SomeT`,
which is likely related to `@GV`. Worse, `SomeT`'s lifetime may be tied
to the deleted `@GV`.
This occurs in practice in the shared ValueMap used since r266579 in the
IRMover. Other code that handles more than one Module (with different
lifetimes) in the same LLVMContext could hit it too.
The fix here is a partial revert of r225223: in the rare case that an
MDNode operand is a ConstantAsMetadata (i.e., wrapping a node from the
Value hierarchy), drop uniquing if it gets replaced with `nullptr`.
This changes step #4 above to leave behind `distinct !{null} -> SomeT`,
which can't be confused with the generic `!{null}`.
In theory, this can cause some churn in the LLVMContext's MDNode
uniquing map when Values are being deleted. However:
- The number of GlobalValues referenced from uniqued MDNodes is
expected to be quite small. E.g., the debug info metadata schema
only references GlobalValues from distinct nodes.
- Other Constants have the lifetime of the LLVMContext, whose teardown
is careful to drop references before deleting the constants.
As a result, I don't expect a compile time regression from this change.
llvm-svn: 277625
Ehsan Amiri [Wed, 3 Aug 2016 18:17:35 +0000 (18:17 +0000)]
Adding -verify-machineinstrs option to PowerPC tests
Currently we have a number of tests that fail with -verify-machineinstrs.
To detect this cases earlier we add the option to the testcases with the
exception of tests that will currently fail with this option. PR 27456 keeps
track of this failures.
No code review, as discussed with Hal Finkel.
llvm-svn: 277624
Kirill Bobyrev [Wed, 3 Aug 2016 18:15:07 +0000 (18:15 +0000)]
[docs] fix typo in clang-rename docs
clang-rename is a refactoring tool, not "linter" tool. Fix typo in docs.
llvm-svn: 277623
Krzysztof Parzyszek [Wed, 3 Aug 2016 18:13:32 +0000 (18:13 +0000)]
[Hexagon-ish] Add function to print cell map contents in bit tracker
llvm-svn: 277622
Reid Kleckner [Wed, 3 Aug 2016 18:13:14 +0000 (18:13 +0000)]
[ASan] Report illegal instruction exceptions in ASan
Summary:
Respect the handle_sigill common flag and handle_segv flags while we're
at it.
We still handle signals/exceptions differently on Unix and Windows. The
installation process is tricky on Windows, and difficult to push down
into sanitizer_common without concerning it with the different
static/dynamic CRT models on Windows.
Reviewers: kcc, etienneb
Subscribers: llvm-commits, kubabrecka
Differential Revision: https://reviews.llvm.org/D23098
llvm-svn: 277621
Pirama Arumuga Nainar [Wed, 3 Aug 2016 18:08:57 +0000 (18:08 +0000)]
Disable KMP_CANCEL_THREADS on Android
Summary:
Android does not have pthread_cancel. Disable KMP_CANCEL_THREADS if
__ANDROID__ is defined.
Subscribers: tberghammer, srhines, openmp-commits, danalbert
Differential Revision: https://reviews.llvm.org/D23029
llvm-svn: 277618
Nico Weber [Wed, 3 Aug 2016 18:07:28 +0000 (18:07 +0000)]
lld-link: Include the name of bad input files in several "input file is bad" diagnostics.
Also change a few getName() calls to getShortName() calls.
https://reviews.llvm.org/D23123
Part of PR28553.
llvm-svn: 277616
Jason Henline [Wed, 3 Aug 2016 18:04:13 +0000 (18:04 +0000)]
[StreamExecutor] Add KernelLoaderSpec
Summary:
Add definitions for the KernelLoaderSpec and MultiKernelLoaderSpec
classes to StreamExecutor. Instances of these classes are generated by the
compiler in order to provide host code with a handle to device code.
Reviewers: jlebar, tra
Subscribers: parallel_libs-commits
Differential Revision: https://reviews.llvm.org/D23038
llvm-svn: 277615
David Majnemer [Wed, 3 Aug 2016 17:37:10 +0000 (17:37 +0000)]
[CloneFunction] Don't crash if the value map doesn't hold something
It is possible for the value map to not have an entry for some value
that has already been removed.
I don't have a testcase, this is fall-out from a buildbot.
llvm-svn: 277614
Luke Drummond [Wed, 3 Aug 2016 17:31:58 +0000 (17:31 +0000)]
[RenderScript] Always create a new allocation ID in CaptureAllocationInit hook
Due to internal reuse of buffers in the RenderScript runtime by the system allocator,
comparing pointers is not a safe way to check whether an allocation is tracked by lldb.
This change updates the lldb RenderScript internal hook callback to properly
identify and remove old allocations that had have an address that is currently
being tracked.
This change also removes the need for `lldb_private::renderscript::LookupAllocation`
to take a `create` flag, as this is now always the case.
Original Author: <dean@codeplay.com>
Subscribers: lldb-commits
llvm-svn: 277613
Sanjay Patel [Wed, 3 Aug 2016 17:23:08 +0000 (17:23 +0000)]
use local variables; NFC
llvm-svn: 277612
David Majnemer [Wed, 3 Aug 2016 17:12:47 +0000 (17:12 +0000)]
[CloneFunction] Don't remove side effecting calls
We were able to figure out that the result of a call is some constant.
While propagating that fact, we added the constant to the value map.
This is problematic because it results in us losing the call site when
processing the value map.
This fixes PR28802.
llvm-svn: 277611
Weiming Zhao [Wed, 3 Aug 2016 17:05:23 +0000 (17:05 +0000)]
[ARM] Constant Materialize: imms with specific value can be encoded into mov.w
Summary: Thumb2 supports encoding immediates with specific patterns into mov.w by splatting the low 8 bits into other bytes.
Reviewers: john.brawn, jmolloy
Subscribers: jmolloy, aemerson, rengolin, samparker, llvm-commits
Differential Revision: https://reviews.llvm.org/D23090
llvm-svn: 277610
Zachary Turner [Wed, 3 Aug 2016 16:53:21 +0000 (16:53 +0000)]
[msf] Make FPM reader use MappedBlockStream.
MappedBlockSTream can work with any sequence of block data where
the ordering is specified by a list of block numbers. So rather
than manually stitch them together in the case of the FPM, reuse
this functionality so that we can treat the FPM as if it were
contiguous.
Reviewed By: ruiu
Differential Revision: https://reviews.llvm.org/D23066
llvm-svn: 277609
Luke Drummond [Wed, 3 Aug 2016 16:29:45 +0000 (16:29 +0000)]
Fix an unused variable warning in release builds.
``num_params`` was unused in RenderScript ABI fixup pass ``cloneToStructRetFnTy``
and was only used in an `assert()` that the number of function parameters for the cloned
function was correct.
Now we actually use this variable, rather than recomputing it, and avoid the unused variable
warning when building without asserts enabled.
Subscribers: lldb-commits
llvm-svn: 277608
Renato Golin [Wed, 3 Aug 2016 16:20:48 +0000 (16:20 +0000)]
Revert "Teach CorrelatedValuePropagation to mark adds as no wrap"
This reverts commit r277592, trying to fix the AArch64 42VMA buildbot.
llvm-svn: 277607
Benjamin Kramer [Wed, 3 Aug 2016 15:51:10 +0000 (15:51 +0000)]
Hexagon: Use llvm_unreachable. NFC.
llvm-svn: 277605
Etienne Bergeron [Wed, 3 Aug 2016 15:47:40 +0000 (15:47 +0000)]
[compiler-rt] Fix CHECK coding style [NFC]
llvm-svn: 277604
Manuel Klimek [Wed, 3 Aug 2016 15:12:00 +0000 (15:12 +0000)]
Fix bug in conflict check for Replacements::add().
We would not detect conflicts when inserting insertions at the same
offset as previously contained replacements.
llvm-svn: 277603
Elliot Colp [Wed, 3 Aug 2016 15:09:21 +0000 (15:09 +0000)]
Disable shrinking of SNaN constants
When expanding FP constants, we attempt to shrink doubles to floats and perform an extending load.
However, on SystemZ, and possibly on other targets (I've only confirmed the problem on SystemZ), the FP extending load instruction may convert SNaN into QNaN, or may cause an exception. So in the general case, we would still like to shrink FP constants, but SNaNs should be left as doubles.
Differential Revision: https://reviews.llvm.org/D22685
llvm-svn: 277602
Krzysztof Parzyszek [Wed, 3 Aug 2016 15:06:18 +0000 (15:06 +0000)]
[Hexagon] Do not check alignment for unsized types in isLegalAddressingMode
When the same base address is used to load two different data types, LSR
would assume a memory type of "void". This type is not sized and has no
alignment information. Checking for it causes a crash.
llvm-svn: 277601
Nico Weber [Wed, 3 Aug 2016 14:38:52 +0000 (14:38 +0000)]
Revert an unintentional change from r277599
llvm-svn: 277600
Nico Weber [Wed, 3 Aug 2016 14:37:57 +0000 (14:37 +0000)]
Revert 277594, it caused PR28827
llvm-svn: 277599
Sanjay Patel [Wed, 3 Aug 2016 14:25:55 +0000 (14:25 +0000)]
add a vector variant of each test
llvm-svn: 277598
Manuel Klimek [Wed, 3 Aug 2016 14:12:17 +0000 (14:12 +0000)]
Fix quadratic runtime when adding items to tooling::Replacements.
Previously, we would search through all replacements when inserting a
new one to check for overlaps. Instead, make use of the fact that we
already have a set of replacments without overlaps to find the potential
overlap with lower_bound.
Differential Revision: https://reviews.llvm.org/D23119
llvm-svn: 277597
Nicolai Haehnle [Wed, 3 Aug 2016 13:37:56 +0000 (13:37 +0000)]
[InstCombine] Add select-bitext.ll tests
As requested for D22747.
llvm-svn: 277596
Gil Rapaport [Wed, 3 Aug 2016 13:23:43 +0000 (13:23 +0000)]
[Loop Vectorizer] Move store-predication into its own function, remove obsolete comment (NFC)
Differential Revision: https://reviews.llvm.org/D23013
llvm-svn: 277595
Rafael Espindola [Wed, 3 Aug 2016 13:21:16 +0000 (13:21 +0000)]
Remove redundant argument.
llvm-svn: 277594
Artur Pilipenko [Wed, 3 Aug 2016 13:11:39 +0000 (13:11 +0000)]
Teach CorrelatedValuePropagation to mark adds as no wrap
Use LVI to prove that adds do not wrap. The change is motivated by https://llvm.org/bugs/show_bug.cgi?id=28620 bug and it's the first step to fix that problem.
Reviewed By: sanjoy
Differential Revision: http://reviews.llvm.org/D23059
llvm-svn: 277592
Tobias Grosser [Wed, 3 Aug 2016 12:00:07 +0000 (12:00 +0000)]
GPGPU: Mark kernel functions as polly.skip
Otherwise, we would try to re-optimize them with Polly-ACC and possibly even
generate kernels that try to offload themselves, which does not work as the
GPURuntime is not available on the accelerator and also does not make any
sense.
llvm-svn: 277589
Igor Breger [Wed, 3 Aug 2016 10:58:05 +0000 (10:58 +0000)]
[AVX512] Add aliases for vcvttss2si{l|q}, vcvttsd2si{l|q}, vcvttss2usi{l|q}, vcvttsd2usi{l|q} instructions.
Differential Revision: http://reviews.llvm.org/D23111
llvm-svn: 277586
Ismail Donmez [Wed, 3 Aug 2016 10:46:42 +0000 (10:46 +0000)]
Fix the BUILD_SHARED_LIBS=ON build, was getting the following error while linking liblldb.so:
../include/llvm/Target/TargetOptions.h:104: error: undefined reference to 'llvm::TargetRecip::TargetRecip()'
llvm-svn: 277585
Chandler Carruth [Wed, 3 Aug 2016 09:14:03 +0000 (09:14 +0000)]
[PM] Fix a mis-named parameter in parseLoopPass -- the pass manager was
called "FPM" instead of "LPM" in a hold-over from when the code was
modeled on that used to parse function passes.
llvm-svn: 277584
George Rimar [Wed, 3 Aug 2016 08:35:59 +0000 (08:35 +0000)]
[ELF] - Linkerscript: support all kinds of sorting (including nested).
Previously we supported only sorting by name.
When there are nested section sorting commands in linker script, there can be at most 1
level of nesting for section sorting commands.
SORT_BY_NAME (SORT_BY_ALIGNMENT (wildcard section pattern)). It will sort the input
sections by name first, then by alignment if 2 sections have the same name.
SORT_BY_ALIGNMENT (SORT_BY_NAME (wildcard section pattern)). It will sort the input
sections by alignment first, then by name if 2 sections have the same alignment.
SORT_BY_NAME (SORT_BY_NAME (wildcard section pattern)) is treated the same as SORT_
BY_NAME (wildcard section pattern).
SORT_BY_ALIGNMENT (SORT_BY_ALIGNMENT (wildcard section pattern)) is treated the
same as SORT_BY_ALIGNMENT (wildcard section pattern).
All other nested section sorting commands are invalid.
Patch implements that all above.
Differential revision: https://reviews.llvm.org/D23019
llvm-svn: 277583
Chandler Carruth [Wed, 3 Aug 2016 08:16:08 +0000 (08:16 +0000)]
[PM] Add the explicit copy, move, swap, and assignment boilerplate
required by MSVC 2013.
This also makes the repeating pass wrapper assignable. Mildly
unfortunate as it means we can't use a const member for the int, but
that is a really minor invariant to try to preserve at the cost of loss
of regularity of the type. Yet another annoyance of the particular C++
object / move semantic model.
llvm-svn: 277582
Chandler Carruth [Wed, 3 Aug 2016 07:44:48 +0000 (07:44 +0000)]
[PM] Add a generic 'repeat N times' pass wrapper to the new pass
manager.
While this has some utility for debugging and testing on its own, it is
primarily intended to demonstrate the technique for adding custom
wrappers that can provide more interesting interation behavior in
a nice, orthogonal, and composable layer.
Being able to write these kinds of very dynamic and customized controls
for running passes was one of the motivating use cases of the new pass
manager design, and this gives a hint at how they might look. The actual
logic is tiny here, and most of this is just wiring in the pipeline
parsing so that this can be widely used.
I'm adding this now to show the wiring without a lot of business logic.
This is a precursor patch for showing how a "iterate up to N times as
long as we devirtualize a call" utility can be added as a separable and
composable component along side the CGSCC pass management.
Differential Revision: https://reviews.llvm.org/D22405
llvm-svn: 277581
Dean Michael Berris [Wed, 3 Aug 2016 07:21:55 +0000 (07:21 +0000)]
[XRay] Make the xray_instr_map section specification more correct
Summary:
We also add a test to show what currently happens when we create a
section per function and emit an xray_instr_map. This illustrates the
relationship (or lack thereof) between the per-function section and the
xray_instr_map section.
We also change the code generation slightly so that we don't always
create group sections, but rather only do so if a function where the
table is associated with is in a group.
Also in this change:
- Remove the "merge" flag on the xray_instr_map section.
- Test that we're generating the right table for comdat and non-comdat functions.
Reviewers: echristo, majnemer
Subscribers: llvm-commits, mehdi_amini
Differential Revision: https://reviews.llvm.org/D23104
llvm-svn: 277580
Etienne Bergeron [Wed, 3 Aug 2016 07:18:49 +0000 (07:18 +0000)]
[compiler-rt] Remove incorrect folder layout for scudo.
Summary:
This code got landed and it's a mistake.
I suspect an incorrect patch was uploaded/applied.
The folders seems to be created here:
https://reviews.llvm.org/D23018
Reviewers: rnk
Subscribers: llvm-commits, chrisha, kcc
Differential Revision: https://reviews.llvm.org/D23109
llvm-svn: 277579
Etienne Bergeron [Wed, 3 Aug 2016 06:59:46 +0000 (06:59 +0000)]
[extra-tools] Fix extra tools build bot warnings due to incorrect doc
/home/llvmbb/llvm-build-dir/clang-x86_64-debian-fast/llvm.src/tools/clang/tools/extra/clang-tidy/mpi/TypeMismatchCheck.cpp:172:12: warning: parameter 'Complex' not found in the function declaration [-Wdocumentation]
/home/llvmbb/llvm-build-dir/clang-x86_64-debian-fast/llvm.src/tools/clang/tools/extra/clang-tidy/mpi/TypeMismatchCheck.cpp:206:12: warning: parameter 'Complex' not fo
llvm-svn: 277578
Kirill Bobyrev [Wed, 3 Aug 2016 06:54:24 +0000 (06:54 +0000)]
[clang-tidy] address concerns with rL277340
alexfh raised a concern with https://reviews.llvm.org/rL277340
After retabbing indentation of .. code-block:: was increased to 8, 4 spaces
indentation should be enough.
Reviewers: alexfh
llvm-svn: 277577
Etienne Bergeron [Wed, 3 Aug 2016 06:10:15 +0000 (06:10 +0000)]
[clang/test] Fix a flaky unittest on windows
Summary:
The append operator on a shell command for quick command-line is
causing trouble on windows. [NFC]
The easiest way to fix them is to avoid using them.
This patch is an attempt to fix this broken build bot:
clang-x86-win2008-selfhost
http://lab.llvm.org:8011/builders/clang-x86-win2008-selfhost/builds/9523
Reviewers: rnk
Subscribers: cfe-commits, chrisha
Differential Revision: https://reviews.llvm.org/D23105
llvm-svn: 277576
Eric Fiselier [Wed, 3 Aug 2016 05:51:19 +0000 (05:51 +0000)]
Add MSVC specifics to .gitignore. Patch from STL@microsoft.com
llvm-svn: 277575
Eric Fiselier [Wed, 3 Aug 2016 05:50:03 +0000 (05:50 +0000)]
Fix compile error due to mismatched iterator types. Patch from STL@microsoft.com
llvm-svn: 277574
Eric Fiselier [Wed, 3 Aug 2016 05:48:09 +0000 (05:48 +0000)]
Fix an MSVC x64 compiler warning. Patch from STL@microsoft.com
llvm-svn: 277573
Eric Fiselier [Wed, 3 Aug 2016 05:46:36 +0000 (05:46 +0000)]
Silence another occurrence of MSVC's suprious unused warning. Patch from STL@microsoft.com
llvm-svn: 277572
Jonas Paulsson [Wed, 3 Aug 2016 05:46:35 +0000 (05:46 +0000)]
[IfConversion] Bugfix: Don't use undef flag while adding use operands.
IfConversion used to always add the undef flag when adding a use operand
on a newly predicated instruction. This would be an operand for the register
being conditionally redefined. Due to the undef flag, the liveness of this
register prior to the predicated instruction would get lost.
This patch changes this so that such use operands are added only when the
register is live, without the undef flag.
This was reverted but pushed again now, for details follow link below.
Reviewed by Quentin Colombet.
http://reviews.llvm.org/D209077
llvm-svn: 277571
Argyrios Kyrtzidis [Wed, 3 Aug 2016 05:38:53 +0000 (05:38 +0000)]
[index] Fix crash with indexing designated init expressions inside templates.
rdar://
27452869
llvm-svn: 277570
Tobias Grosser [Wed, 3 Aug 2016 05:28:09 +0000 (05:28 +0000)]
Fix a couple of spelling mistakes
llvm-svn: 277569
Rui Ueyama [Wed, 3 Aug 2016 05:28:02 +0000 (05:28 +0000)]
Do not handle zero-sized mergeable section as mergeable.
Mergeable sections with size zero are useless because they don't
actually contain data, and therefore there's no merit ot merge them.
However, in reality, there are object files in the wild containing
such sections. Currently, LLD can't handle them proerply.
This patch makes LLD to handle such sections as if they are non-
mergeable to fix the issue.
Fixes bug 28822.
llvm-svn: 277568
Etienne Bergeron [Wed, 3 Aug 2016 05:03:35 +0000 (05:03 +0000)]
[compilter-rt] Try to fix correctly rL277560
rL277560: [compiler-rt] Fix broken interception unittest
llvm-svn: 277567
Rui Ueyama [Wed, 3 Aug 2016 04:39:42 +0000 (04:39 +0000)]
Include filenames and section names to error messages.
llvm-svn: 277566
David Callahan [Wed, 3 Aug 2016 04:28:39 +0000 (04:28 +0000)]
[ADCE] Refactor anticipating new functionality (NFC)
Summary:
This is the first refactoring before adding new functionality.
Add a class wrapper for the functions and container for
state associated with the transformation.
No functional change
Reviewers: majnemer, nadav, mehdi_amini
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D23065
llvm-svn: 277565
Mehdi Amini [Wed, 3 Aug 2016 03:51:42 +0000 (03:51 +0000)]
RecordStreamer: handle inline asm "lazy_reference" and mark symbols as "used"
llvm-svn: 277564
Kostya Serebryany [Wed, 3 Aug 2016 03:42:55 +0000 (03:42 +0000)]
[sanitizer] remove one redundant loop from the allocator
llvm-svn: 277563
Chandler Carruth [Wed, 3 Aug 2016 03:26:09 +0000 (03:26 +0000)]
[PM] Remove the NDEBUG condition around isModulePassName.
I forgot to do this initially, and added when I saw this fail in
a no-asserts build, but managed to loose the diff from the actual patch
that got submitted. Very sorry.
llvm-svn: 277562
Chandler Carruth [Wed, 3 Aug 2016 03:21:41 +0000 (03:21 +0000)]
[PM] Significantly refactor the pass pipeline parsing to be easier to
reason about and less error prone.
The core idea is to fully parse the text without trying to identify
passes or structure. This is done with a single state machine. There
were various bugs in the logic around this previously that were repeated
and scattered across the code. Having a single routine makes it much
easier to fix and get correct. For example, this routine doesn't suffer
from PR28577.
Then the actual pass construction is handled using *much* easier to read
code and simple loops, with particular pass manager construction sunk to
live with other pass construction. This is especially nice as the pass
managers *are* in fact passes.
Finally, the "implicit" pass manager synthesis is done much more simply
by forming "pre-parsed" structures rather than having to duplicate tons
of logic.
One of the bugs fixed by this was evident in the tests where we accepted
a pipeline that wasn't really well formed. Another bug is PR28577 for
which I have added a test case.
The code is less efficient than the previous code but I'm really hoping
that's not a priority. ;]
Thanks to Sean for the review!
Differential Revision: https://reviews.llvm.org/D22724
llvm-svn: 277561
Etienne Bergeron [Wed, 3 Aug 2016 02:44:30 +0000 (02:44 +0000)]
[compiler-rt] Fix broken interception unittest
Summary:
This patch is fixing a broken unittest which make the win64 bot failing.
The bug was introduce here:
https://reviews.llvm.org/D23046
The interception code is not the same in 32-bit and in 64-bit.
The added unittest can only be patched on 32-bits.
Reviewers: rnk
Subscribers: llvm-commits, chrisha
Differential Revision: https://reviews.llvm.org/D23099
llvm-svn: 277560
George Burgess IV [Wed, 3 Aug 2016 01:22:19 +0000 (01:22 +0000)]
[MSSA] Fix a caching bug.
This fixes a bug where we'd sometimes cache overly-conservative results
with our walker. This bug was made more obvious by r277480, which makes
our cache far more spotty than it was. Test case is llvm-unit, because
we're likely going to use CachingWalker only for def optimization in the
future.
The bug stems from that there was a place where the walker assumed that
`DefNode.Last` was a valid target to cache to when failing to optimize
phis. This is sometimes incorrect if we have a cache hit. The fix is to
use the thing we *can* assume is a valid target to cache to. :)
llvm-svn: 277559
Reid Kleckner [Wed, 3 Aug 2016 01:19:46 +0000 (01:19 +0000)]
Reduce coverage PC buffer size on 32-bit Windows to match 32-bit Linux
In r235779, Timur bumped the buffer size up to 1<<27, or about 134
million coverage points, presumably to handle Chrome. We allocate two
arrays of uptrs with this size, and this reliably exhausts all available
address space on 32-bit Windows (2 allocations of 512MB) when ASan is
also enabled.
Let's reduce the buffer size for now to stabilize the test suite. We can
re-evaluate the approach later when we've brought the Chrome ASan
builders back to life.
Kostya said that Mike reduced the number of instrumented coverage points
that LLVM emits by half since Timur made this change, so reducing this
array size should also be safe.
With this change, the 32-bit ASan tests reliably pass for me on Windows
10.
llvm-svn: 277558
Chandler Carruth [Wed, 3 Aug 2016 01:02:31 +0000 (01:02 +0000)]
[Inliner] clang-format various parts of the inliner prior to changes
here. NFC.
llvm-svn: 277557
Ivan Krasin [Wed, 3 Aug 2016 00:59:38 +0000 (00:59 +0000)]
Add -lowertypetests-bitsets-level to control bitsets generation.
Summary:
Sometimes, bitsets could get really large (>300k entries) and
we might want to drop a check, as it would have a too much cost.
Adding a flag to control how much penalty are we willing to pay
for bitsets.
Reviewers: kcc
Differential Revision: https://reviews.llvm.org/D23088
llvm-svn: 277556
Sanjay Patel [Wed, 3 Aug 2016 00:36:54 +0000 (00:36 +0000)]
add vector test for icmp+sub
llvm-svn: 277555
Kostya Serebryany [Wed, 3 Aug 2016 00:14:10 +0000 (00:14 +0000)]
[sanitizer] refactor TransferBatch to hide the implementation. NFC expected. Second attempt after failed r276383 which was reverted.
llvm-svn: 277554
Daniel Berlin [Wed, 3 Aug 2016 00:01:46 +0000 (00:01 +0000)]
Support for lifetime begin/end markers in the MemorySSA use optimizer
Summary: Depends on D23072
Reviewers: george.burgess.iv
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D23076
llvm-svn: 277553
Artem Belevich [Tue, 2 Aug 2016 23:43:04 +0000 (23:43 +0000)]
[CUDA] Updated CUDA tests that must run w/o CUDA installation.
Fixes test failures after r277542 on systems that don't have
CUDA installed.
llvm-svn: 277552
Matthias Braun [Tue, 2 Aug 2016 23:36:06 +0000 (23:36 +0000)]
CommandFlags.h/llc: Move StopAfter/StartBefore options to llc.
Move those two options to llc:
The options in CommandFlags.h are shared by dsymutil, gold, llc,
llvm-dwp, llvm-lto, llvm-mc, lto, opt.
-stop-after/-start-after only affect codegen passes however only gold and llc
actually create codegen passes and I believe these flags to be only
useful for users of llc. For the other tools they are just highly
confusing: -stop-after claims to "Stop compilation after a specific
pass" which is not true in the context of the "opt" tool.
Differential Revision: https://reviews.llvm.org/D23050
llvm-svn: 277551
Sanjoy Das [Tue, 2 Aug 2016 23:32:53 +0000 (23:32 +0000)]
[Verifier] Add more tests related to non-integral pointers
As suggested by Matt Arsenault in post-commit review.
llvm-svn: 277550
Derek Schuff [Tue, 2 Aug 2016 23:31:56 +0000 (23:31 +0000)]
[WebAssembly] Remove unnecessary subtarget checks in peephole pass
Leftover from D22686; the passes can handle all the instructions
unconditionally; only isel needs to care whether to generate them.
llvm-svn: 277549
Rui Ueyama [Tue, 2 Aug 2016 23:25:59 +0000 (23:25 +0000)]
Fix a test for r277545.
This change should have been submitted with that commit.
llvm-svn: 277548
Devin Coughlin [Tue, 2 Aug 2016 23:24:40 +0000 (23:24 +0000)]
[analyzer] Update two comments in MPI-Checker. NFC.
Correct two comments that do not match the current behavior of the checker.
A patch by Alexander Droste!
Differential Revision: https://reviews.llvm.org/D22670
llvm-svn: 277547
Kostya Serebryany [Tue, 2 Aug 2016 23:23:13 +0000 (23:23 +0000)]
[scudo] add NORETURN to the declaration of dieWithMessage; this should fix a warning in lib/scudo/scudo_termination.cpp
llvm-svn: 277546
Rui Ueyama [Tue, 2 Aug 2016 23:22:46 +0000 (23:22 +0000)]
pdbdump: Do not treat stream 0 pages as allocated pages.
I examined a few PDBs and all of them treated pages for stream 0
are unused, thus they were unmarked in their free page bitmap.
I think we should do the same thing for compatibility.
Differential Revision: https://reviews.llvm.org/D23047
llvm-svn: 277545
Evgeniy Stepanov [Tue, 2 Aug 2016 23:21:30 +0000 (23:21 +0000)]
[safestack] Layout large allocas first to reduce fragmentation.
llvm-svn: 277544
Derek Schuff [Tue, 2 Aug 2016 23:16:09 +0000 (23:16 +0000)]
[WebAssembly] Initial SIMD128 support.
Kicks off the implementation of wasm SIMD128 support (spec:
https://github.com/stoklund/portable-simd/blob/master/portable-simd.md),
adding support for add, sub, mul for i8x16, i16x8, i32x4, and f32x4.
The spec is WIP, and might change in the near future.
Patch by João Porto
Differential Revision: https://reviews.llvm.org/D22686
llvm-svn: 277543
Artem Belevich [Tue, 2 Aug 2016 23:12:51 +0000 (23:12 +0000)]
[CUDA] Fix libdevice selection.
This makes clang's libdevice selection match that of NVCC as described in
http://docs.nvidia.com/cuda/libdevice-users-guide/basic-usage.html#version-selection
If required libdevice variant is not found, driver now fails with an error.
Differential Revision: https://reviews.llvm.org/D23037
llvm-svn: 277542
Tim Northover [Tue, 2 Aug 2016 23:12:36 +0000 (23:12 +0000)]
ARM: only form SMMLS when SUBE flags unused.
In this particular example we wouldn't want the smmls anyway (the value is
actually unused), but in general smmls does not provide the required flags
register so if that SUBE result is used we can't replace it.
llvm-svn: 277541
Kevin Enderby [Tue, 2 Aug 2016 22:58:55 +0000 (22:58 +0000)]
More fixes to get good error messages for bad archives.
Fixed the last incorrect uses of llvm_unreachable() in the code
which were actually just cases of errors in the input Archives.
llvm-svn: 277540
Etienne Bergeron [Tue, 2 Aug 2016 22:51:46 +0000 (22:51 +0000)]
[clang-tidy] Fix missing dependency to static analyzer
Summary:
This patch is fixing the build bot broken for a missing dependency.
The missing dependency is breaking "shared" build.
```
./mpi/TypeMismatchCheck.cpp:
#include "clang/StaticAnalyzer/Checkers/MPIFunctionClassifier.h"
```
I'm not a fan of that fix. It's brining a strange dependency.
Reviewers: alexfh
Subscribers: llvm-commits, chrisha
Differential Revision: https://reviews.llvm.org/D23093
llvm-svn: 277539
Sanjay Patel [Tue, 2 Aug 2016 22:38:33 +0000 (22:38 +0000)]
[InstCombine] replace dyn_casts with matches; NFCI
Clean-up before changing this to allow folds for vectors.
llvm-svn: 277538
Artem Belevich [Tue, 2 Aug 2016 22:37:47 +0000 (22:37 +0000)]
[CUDA] Do not allow using NVPTX target for host compilation.
Differential Revision: https://reviews.llvm.org/D23042
llvm-svn: 277537
Kostya Serebryany [Tue, 2 Aug 2016 22:25:38 +0000 (22:25 +0000)]
[sanitizer] Implement a __asan_default_options() equivalent for Scudo
Summary:
Currently, the Scudo Hardened Allocator only gets its flags via the SCUDO_OPTIONS environment variable.
With this patch, we offer the opportunity for programs to define their own options via __scudo_default_options() which behaves like __asan_default_options() (weak symbol).
A relevant test has been added as well, and the documentation updated accordingly.
I also used this patch as an opportunity to rename a few variables to comply with the LLVM naming scheme, and replaced a use of Report with dieWithMessage for consistency (and to avoid a callback).
Reviewers: llvm-commits, kcc
Differential Revision: https://reviews.llvm.org/D23018
llvm-svn: 277536
Matt Arsenault [Tue, 2 Aug 2016 22:25:04 +0000 (22:25 +0000)]
AMDGPU: fdiv -1, x -> rcp -x
llvm-svn: 277535
Piotr Padlewski [Tue, 2 Aug 2016 22:18:47 +0000 (22:18 +0000)]
Imported statistics types changes
Reviewers: tejohnson, eraman
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D22980
llvm-svn: 277534
George Burgess IV [Tue, 2 Aug 2016 22:17:25 +0000 (22:17 +0000)]
[CFLAA] Be more conservative with values we haven't seen.
There were issues with simply reporting AttrUnknown on
previously-unknown values in CFLAnders. So, we now act *entirely*
conservatively for values we haven't seen before. As in the prior patch
(r277362), writing a lit test for this isn't exactly trivial. If someone
wants a test badly, I'm willing to try to write one.
Patch by Jia Chen.
Differential Revision: https://reviews.llvm.org/D23077
llvm-svn: 277533
Rafael Espindola [Tue, 2 Aug 2016 22:14:57 +0000 (22:14 +0000)]
Support expressions inside FLAGS.
This is an undocumented bfd feature. It is reasonable for making the
scripts a bit more readable.
llvm-svn: 277532
Davide Italiano [Tue, 2 Aug 2016 22:14:00 +0000 (22:14 +0000)]
[ELF] Ignore -g option for compatibility.
Also ld.bfd and ld.gold ignore this options. I hit this one in
the wild, and just ignoring it's trivial, so, let's do it.
llvm-svn: 277531
Daniel Berlin [Tue, 2 Aug 2016 21:57:52 +0000 (21:57 +0000)]
Move to having a single real instructionClobbersQuery
Summary: We really want to move towards MemoryLocOrCall (or fix AA) everywhere, but for now, this lets us have a single instructionClobbersQuery.
Reviewers: george.burgess.iv
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D23072
llvm-svn: 277530
Rui Ueyama [Tue, 2 Aug 2016 21:56:37 +0000 (21:56 +0000)]
PDB: Mark extended file pages as free by default.
BitVector::extend initializes extended bits as true by default.
That is not desirable because new pages should be initially free.
Differential Revision: https://reviews.llvm.org/D23048
llvm-svn: 277529
Krzysztof Parzyszek [Tue, 2 Aug 2016 21:49:20 +0000 (21:49 +0000)]
[Hexagon] Recognize vcombine in copy propagation
llvm-svn: 277528
Michael Zolotukhin [Tue, 2 Aug 2016 21:43:25 +0000 (21:43 +0000)]
[LoopUnroll] Fix a PowerPC test broken by r277524.
llvm-svn: 277527
Hubert Tong [Tue, 2 Aug 2016 21:34:48 +0000 (21:34 +0000)]
[libcxx] basic_regex: add traits_type, string_type
Summary:
In the synopsis in C++11 subclause 28.8 [re.regex], `basic_regex` is
specified to have member typedefs `traits_type` and `string_type`. This
change adds them to libc++.
Reviewers: mclow.lists, rsmith, hubert.reinterpretcast
Subscribers: cfe-commits
Differential Revision: https://reviews.llvm.org/D22698
Patch by Jason Liu!
llvm-svn: 277526
Michael Zolotukhin [Tue, 2 Aug 2016 21:24:14 +0000 (21:24 +0000)]
[LoopUnroll] Switch the default value of -unroll-runtime-epilog back to its original value.
As agreed in post-commit review of r265388, I'm switching the flag to
its original value until the 90% runtime performance regression on
SingleSource/Benchmarks/Stanford/Bubblesort is addressed.
llvm-svn: 277524
Jonathan Coe [Tue, 2 Aug 2016 21:18:37 +0000 (21:18 +0000)]
[clang-tidy] Fix segfault in cppcore-guidelines-special-member-functions check
Summary:
Use a set rather than a vector of defined special member functions so
that multiple declarations of the same function are only counted once.
Move some private static member functions into the cpp file.
Run clang-format on header.
Reviewers: ericLemanissier, Prazek, aaron.ballman
Subscribers: Prazek, cfe-commits, nemanjai
Projects: #clang-tools-extra
Differential Revision: https://reviews.llvm.org/D23008
llvm-svn: 277523