platform/upstream/llvm.git
7 years agoAMDGPU/SI: Fix crash caused by r284267
Tom Stellard [Fri, 21 Oct 2016 20:25:11 +0000 (20:25 +0000)]
AMDGPU/SI: Fix crash caused by r284267

Reviewers: arsenm, nhaehnle

Subscribers: kzhuravl, wdng, nhaehnle, yaxunl, tony-tye, llvm-commits

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

llvm-svn: 284875

7 years ago[DAG] enhance computeKnownBits to handle SHL with vector splat constant
Sanjay Patel [Fri, 21 Oct 2016 20:16:27 +0000 (20:16 +0000)]
[DAG] enhance computeKnownBits to handle SHL with vector splat constant

Also, use APInt to avoid crashing on types larger than vNi64.

llvm-svn: 284874

7 years ago[clang-tidy] Don't use a SmallSetVector of an enum.
Justin Lebar [Fri, 21 Oct 2016 20:13:39 +0000 (20:13 +0000)]
[clang-tidy] Don't use a SmallSetVector of an enum.

Summary:
This doesn't work after converting SmallSetVector to use DenseSet.

Instead we can just use a SmallVector.

Reviewers: timshen

Subscribers: nemanjai, cfe-commits

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

llvm-svn: 284873

7 years ago[ADT] Compare strings' hashes first before comparing their values.
Justin Lebar [Fri, 21 Oct 2016 20:10:51 +0000 (20:10 +0000)]
[ADT] Compare strings' hashes first before comparing their values.

Summary:
We already have the hashes in hand, and comparing hashes should be much
more discriminatory than comparing the StringRefs' sizes.

Reviewers: rafael

Subscribers: llvm-commits

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

llvm-svn: 284872

7 years ago[ADT] Add CachedHashString.
Justin Lebar [Fri, 21 Oct 2016 20:10:48 +0000 (20:10 +0000)]
[ADT] Add CachedHashString.

Summary:
This is like CachedHashStringRef, but owns its data.

This lets us use strings inside of DenseMaps.

Reviewers: timshen

Subscribers: llvm-commits

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

llvm-svn: 284871

7 years ago[IR] Add DenseMapInfo<CallSite>.
Justin Lebar [Fri, 21 Oct 2016 20:10:44 +0000 (20:10 +0000)]
[IR] Add DenseMapInfo<CallSite>.

Summary:
A CallSite is basically an Instruction*, and you can put Instruction*s
into DenseMaps, so you should be able to do the same with CallSites.

This is used in a later patch.

Reviewers: timshen

Subscribers: llvm-commits

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

llvm-svn: 284870

7 years ago[CUDA] Use FunctionDeclAndLoc for the Sema::LocsWithCUDACallDiags hashtable.
Justin Lebar [Fri, 21 Oct 2016 20:08:52 +0000 (20:08 +0000)]
[CUDA] Use FunctionDeclAndLoc for the Sema::LocsWithCUDACallDiags hashtable.

Summary: NFC

Reviewers: rnk

Subscribers: cfe-commits

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

llvm-svn: 284869

7 years ago[SCEV] Memoize visitMulExpr results in SCEVRewriteVisitor.
Li Huang [Fri, 21 Oct 2016 20:05:21 +0000 (20:05 +0000)]
[SCEV] Memoize visitMulExpr results in SCEVRewriteVisitor.

Summary:
When SCEVRewriteVisitor traverses the SCEV DAG, it may visit the same SCEV
multiple times if this SCEV is referenced by multiple other SCEVs. This has
exponential time complexity in the worst case. Memoizing the results will
avoid re-visiting the same SCEV. Add a map to save the results, and override
the visit function of SCEVVisitor. Now SCEVRewriteVisitor only visit each
SCEV once and thus returns the same result for the same input SCEV.

This patch fixes PR18606, PR18607.

Reviewers: Sanjoy Das, Mehdi Amini, Michael Zolotukhin

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

llvm-svn: 284868

7 years agoFix a bug in the code of llvm-cxxdump in dumpArchive() when
Kevin Enderby [Fri, 21 Oct 2016 20:03:14 +0000 (20:03 +0000)]
Fix a bug in the code of llvm-cxxdump in dumpArchive() when
iterating over an archive with object and non-object members that
would cause an Abort because to was not calling consumeError()
when the code was wanting to ignore a non-object file.

Found by Justin Bogner!

llvm-svn: 284867

7 years ago[libFuzzer] mention one more trophie
Kostya Serebryany [Fri, 21 Oct 2016 20:01:45 +0000 (20:01 +0000)]
[libFuzzer] mention one more trophie

llvm-svn: 284866

7 years agoAnalysis: Move llvm::getConstantRangeFromMetadata to IR library.
Peter Collingbourne [Fri, 21 Oct 2016 19:59:26 +0000 (19:59 +0000)]
Analysis: Move llvm::getConstantRangeFromMetadata to IR library.

We're about to start using it there.

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

llvm-svn: 284865

7 years agoX86: Improve BT instruction selection for 64-bit values.
Peter Collingbourne [Fri, 21 Oct 2016 19:57:55 +0000 (19:57 +0000)]
X86: Improve BT instruction selection for 64-bit values.

If a 64-bit value is tested against a bit which is known to be in the range
[0..31) (modulo 64), we can use the 32-bit BT instruction, which has a slightly
shorter encoding.

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

llvm-svn: 284864

7 years ago[X86][AVX512BWVL] Added support for lowering v16i16 shuffles to AVX512BWVL vpermw
Simon Pilgrim [Fri, 21 Oct 2016 19:54:38 +0000 (19:54 +0000)]
[X86][AVX512BWVL] Added support for lowering v16i16 shuffles to AVX512BWVL vpermw

llvm-svn: 284863

7 years agoUse a CachedHashString for comdats too.
Rafael Espindola [Fri, 21 Oct 2016 19:49:42 +0000 (19:49 +0000)]
Use a CachedHashString for comdats too.

We were already using it in the larger sets/maps. This provides about
1% speedup in linking xul and chromium.

llvm-svn: 284862

7 years ago[pdb] added support for dumping globals stream
Bob Haarman [Fri, 21 Oct 2016 19:43:19 +0000 (19:43 +0000)]
[pdb] added support for dumping globals stream

Summary: This adds support for dumping the globals stream from PDB files using llvm-pdbdump, similar to the support we have for the publics stream.

Reviewers: ruiu, zturner

Subscribers: beanz, mgorny, modocache

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

llvm-svn: 284861

7 years ago[X86][AVX512BWVL] Added support for combining target v16i16 shuffles to AVX512BWVL...
Simon Pilgrim [Fri, 21 Oct 2016 19:40:29 +0000 (19:40 +0000)]
[X86][AVX512BWVL] Added support for combining target v16i16 shuffles to AVX512BWVL vpermw

llvm-svn: 284860

7 years ago[clang-move] Support moving template class forward declarations.
Haojian Wu [Fri, 21 Oct 2016 19:26:43 +0000 (19:26 +0000)]
[clang-move] Support moving template class forward declarations.

llvm-svn: 284859

7 years ago[X86][AVX512] Added support for combining target shuffles to AVX512 vpermpd/vpermq...
Simon Pilgrim [Fri, 21 Oct 2016 19:18:09 +0000 (19:18 +0000)]
[X86][AVX512] Added support for combining target shuffles to AVX512 vpermpd/vpermq/vpermps/vpermd/vpermw

llvm-svn: 284858

7 years ago[RDF] Use RegisterId typedef more consistently, NFC
Krzysztof Parzyszek [Fri, 21 Oct 2016 19:12:13 +0000 (19:12 +0000)]
[RDF] Use RegisterId typedef more consistently, NFC

llvm-svn: 284857

7 years agoRemove move constructors that are identical to the generated default move ctor.
Benjamin Kramer [Fri, 21 Oct 2016 18:55:07 +0000 (18:55 +0000)]
Remove move constructors that are identical to the generated default move ctor.

llvm-svn: 284856

7 years ago[StripGCRelocates] New pass to remove gc.relocates added by RS4GC
Anna Thomas [Fri, 21 Oct 2016 18:43:16 +0000 (18:43 +0000)]
[StripGCRelocates] New pass to remove gc.relocates added by RS4GC

Summary:
Utility pass to remove gc.relocates created by rewrite statepoints for GC.
With respect to safepoint verification, the IR generated would be incorrect, and cannot run
as such.

This would be a single transformation on the final optimized IR.
The benefit of the pass is for easy analysis when the IRs are 'polluted' by too
many gc.relocates.
Added tests.

test run: All RS4GC tests with -verify option. Local downstream tests on large
IR files. This also works when the pointer being gc.relocated is another
gc.relocate.

Reviewers: sanjoy, reames

Subscribers: beanz, mgorny, llvm-commits

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

llvm-svn: 284855

7 years ago[CMake] Fix standalone build
Chris Bieneman [Fri, 21 Oct 2016 18:38:44 +0000 (18:38 +0000)]
[CMake] Fix standalone build

not and FileCheck targets may not be defined in standalone builds.

llvm-svn: 284854

7 years agoFor llvm-objdump for Mach-O files add printing of
Kevin Enderby [Fri, 21 Oct 2016 18:22:35 +0000 (18:22 +0000)]
For llvm-objdump for Mach-O files add printing of
the ARM_THREAD_STATE in the same format as
otool-classic(1) on darwin.

Also remove an extra space in printing the initprot to make
the output match otool-classic(1) on darwin.

rdar://28851457

llvm-svn: 284852

7 years agoAdd the new stdcpp formatters to the Xcode project.
Jim Ingham [Fri, 21 Oct 2016 18:18:25 +0000 (18:18 +0000)]
Add the new stdcpp formatters to the Xcode project.

llvm-svn: 284851

7 years ago[SCEVAffinator] Make precise modular math more correct.
Eli Friedman [Fri, 21 Oct 2016 18:08:02 +0000 (18:08 +0000)]
[SCEVAffinator] Make precise modular math more correct.

Integer math in LLVM IR is modular. Integer math in isl is
arbitrary-precision. Modeling LLVM IR math correctly in isl requires
either adding assumptions that math doesn't actually overflow, or
explicitly wrapping the math. However, expressions with the "nsw" flag
are special; we can pretend they're arbitrary-precision because it's
undefined behavior if the result wraps. SCEV expressions based on IR
instructions with an nsw flag also carry an nsw flag (roughly; actually,
the real rule is a bit more complicated, but the details don't matter
here).

Before this patch, SCEV flags were also overloaded with an additional
function: the ZExt code was mutating SCEV expressions as a hack to
indicate to checkForWrapping that we don't need to add assumptions to
the operand of a ZExt; it'll add explicit wrapping itself. This kind of
works... the problem is that if anything else ever touches that SCEV
expression, it'll get confused by the incorrect flags.

Instead, with this patch, we make the decision about whether to
explicitly wrap the math a bit earlier, basing the decision purely on
the SCEV expression itself, and not its users.

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

llvm-svn: 284848

7 years agoI hadn't fixed all the instances of the old marker for scripted format strings; do...
Enrico Granata [Fri, 21 Oct 2016 18:03:55 +0000 (18:03 +0000)]
I hadn't fixed all the instances of the old marker for scripted format strings; do so now

llvm-svn: 284847

7 years agoUse FileCheck's -strict-whitespace option instead of sed.
Rui Ueyama [Fri, 21 Oct 2016 17:50:26 +0000 (17:50 +0000)]
Use FileCheck's -strict-whitespace option instead of sed.

llvm-svn: 284846

7 years ago[polly] Change SmallPtrSet which are being iterated into SmallSetVector
Mandeep Singh Grang [Fri, 21 Oct 2016 17:29:10 +0000 (17:29 +0000)]
[polly] Change SmallPtrSet which are being iterated into SmallSetVector

Summary: Otherwise the lack of an iteration order results in non-determinism in codegen.

Reviewers: _jdoerfert, zinob, grosser

Tags: #polly

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

llvm-svn: 284845

7 years ago[DAG] fold negation of sign-bit
Sanjay Patel [Fri, 21 Oct 2016 17:24:26 +0000 (17:24 +0000)]
[DAG] fold negation of sign-bit

0 - X --> 0, if the sub is NUW
0 - X --> 0, if X is 0 or the minimum signed value and the sub is NSW
0 - X --> X, if X is 0 or the minimum signed value

This is the DAG equivalent of:
https://reviews.llvm.org/rL284649

plus the fold for the NUW case which already existed in InstSimplify.

Note that we miss a vector fold because of a deficiency in the DAG version of
computeKnownBits().

llvm-svn: 284844

7 years agoRemoved unused function argument. NFC.
Artem Belevich [Fri, 21 Oct 2016 17:15:46 +0000 (17:15 +0000)]
Removed unused function argument. NFC.

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

llvm-svn: 284843

7 years ago[x86] add tests for potential negation folds
Sanjay Patel [Fri, 21 Oct 2016 16:56:29 +0000 (16:56 +0000)]
[x86] add tests for potential negation folds

These are the backend equivalents for the tests added in r284627.
The patterns may emerge late, so we should have folds for these in the DAG too.

llvm-svn: 284842

7 years ago[Hexagon] Handle spills of partially defined double vector registers
Krzysztof Parzyszek [Fri, 21 Oct 2016 16:38:29 +0000 (16:38 +0000)]
[Hexagon] Handle spills of partially defined double vector registers

After register allocation it is possible to have a spill of a register
that is only partially defined. That in itself it fine, but creates a
problem for double vector registers. Stores of such registers are pseudo
instructions that are expanded into pairs of individual vector stores,
and in case of a partially defined source, one of the stores may use
an entirely undefined register. To avoid this, track the defined parts
and only generate actual stores for those.

llvm-svn: 284841

7 years ago[WebAssembly] Fix for 0xc call_indirect changes
Derek Schuff [Fri, 21 Oct 2016 16:38:07 +0000 (16:38 +0000)]
[WebAssembly] Fix for 0xc call_indirect changes

Summary:
Need to reorder the operands to have the callee as the last argument.
Adds a pseudo-instruction, and a pass to lower it into a real
call_indirect.

This is the first of two options for how to fix the problem.

Reviewers: dschuff, sunfish

Subscribers: jfb, beanz, mgorny, llvm-commits

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

llvm-svn: 284840

7 years agoSet the vectorizer MaxInterleaveFactor for Exynos.
Abderrazek Zaafrani [Fri, 21 Oct 2016 16:28:27 +0000 (16:28 +0000)]
Set the vectorizer MaxInterleaveFactor for Exynos.

llvm-svn: 284839

7 years agoFix -Wunused-variable warning in libFuzzer
Reid Kleckner [Fri, 21 Oct 2016 16:26:27 +0000 (16:26 +0000)]
Fix -Wunused-variable warning in libFuzzer

llvm-svn: 284838

7 years ago[X86][SSE] Regenerated sext/zext constant folding tests and added i686 tests
Simon Pilgrim [Fri, 21 Oct 2016 16:22:16 +0000 (16:22 +0000)]
[X86][SSE] Regenerated sext/zext constant folding tests and added i686 tests

llvm-svn: 284837

7 years agoRemove unnecessary x86 backend requirements from OpenMP tests
Reid Kleckner [Fri, 21 Oct 2016 16:09:20 +0000 (16:09 +0000)]
Remove unnecessary x86 backend requirements from OpenMP tests

Clang can generate LLVM IR for x86 without a registered x86 backend.

llvm-svn: 284836

7 years ago[X86] Use DAG::getBuildVector helper wrapper where possible. NFCI.
Simon Pilgrim [Fri, 21 Oct 2016 16:07:51 +0000 (16:07 +0000)]
[X86] Use DAG::getBuildVector helper wrapper where possible. NFCI.

llvm-svn: 284835

7 years ago[MachineMemOperand][AtomicSDNode] Remove getSuccessOrdering()
Konstantin Zhuravlyov [Fri, 21 Oct 2016 16:02:35 +0000 (16:02 +0000)]
[MachineMemOperand][AtomicSDNode] Remove getSuccessOrdering()

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

llvm-svn: 284834

7 years ago[X86][SSE] Regenerated chained pmovsx store tests and added i686 tests
Simon Pilgrim [Fri, 21 Oct 2016 15:51:24 +0000 (15:51 +0000)]
[X86][SSE] Regenerated chained pmovsx store tests and added i686 tests

llvm-svn: 284833

7 years agoTest commit
Abderrazek Zaafrani [Fri, 21 Oct 2016 15:24:08 +0000 (15:24 +0000)]
Test commit

llvm-svn: 284832

7 years agoFix incorrect header order introduced in rL284830
Tamas Berghammer [Fri, 21 Oct 2016 15:05:03 +0000 (15:05 +0000)]
Fix incorrect header order introduced in rL284830

llvm-svn: 284831

7 years agoAdd data formatter for libstdc++ unique_ptr
Tamas Berghammer [Fri, 21 Oct 2016 15:02:44 +0000 (15:02 +0000)]
Add data formatter for libstdc++ unique_ptr

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

llvm-svn: 284830

7 years agoAdd data formatter for libstdc++ tuple
Tamas Berghammer [Fri, 21 Oct 2016 15:02:38 +0000 (15:02 +0000)]
Add data formatter for libstdc++ tuple

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

llvm-svn: 284829

7 years agoImprove the libstdc++ smart pointer formatters
Tamas Berghammer [Fri, 21 Oct 2016 15:02:32 +0000 (15:02 +0000)]
Improve the libstdc++ smart pointer formatters

* Display the strong/weak count in the summary
* Display the pointed object as a synthetic member
* Create synthetic children for weak/strong count

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

llvm-svn: 284828

7 years ago[LVI] Fix a bug with a guard being the very first instruction in a BB not taken into...
Artur Pilipenko [Fri, 21 Oct 2016 15:02:21 +0000 (15:02 +0000)]
[LVI] Fix a bug with a guard being the very first instruction in a BB not taken into account

While looking for guards use reverse iterator and scan up to rend() not to begin()

llvm-svn: 284827

7 years agofix variable names; NFCI
Sanjay Patel [Fri, 21 Oct 2016 14:58:30 +0000 (14:58 +0000)]
fix variable names; NFCI

Because we're just 'or-ing' these 2 variables later in the code, I
don't think there's a logical bug here, but of course the string with
"no size" is the one that should have the size suffix stripped off.

llvm-svn: 284826

7 years ago[AMDGPU][mc] Fix ds_min/max[_rtn]_f32 - extra source operand removed.
Artem Tamazov [Fri, 21 Oct 2016 14:49:22 +0000 (14:49 +0000)]
[AMDGPU][mc] Fix ds_min/max[_rtn]_f32 - extra source operand removed.

Fixes Bug 28215. Lit tests updated.

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

llvm-svn: 284825

7 years ago[DAG] use SDNode flags 'nsz' to enable fadd/fsub with zero folds
Sanjay Patel [Fri, 21 Oct 2016 14:36:58 +0000 (14:36 +0000)]
[DAG] use SDNode flags 'nsz' to enable fadd/fsub with zero folds

As discussed in D24815, let's start the process of killing off the broken fast-math global
state housed in TargetOptions and eliminate the need for function-level fast-math attributes.

Here we enable two similar folds that are possible when we don't care about signed-zero:
fadd nsz x, 0 --> x
fsub nsz 0, x --> -x

Note that although the test cases include a 'sin' function call, I'm side-stepping the
FMF-on-calls question (and lack of support in the DAG) for now. It's not needed for these
tests - isNegatibleForFree/GetNegatedExpression just look through a ISD::FSIN node.

Also, when we create an FNEG node and propagate the Flags of the FSUB to it, this doesn't
actually do anything today because Flags are silently dropped for any node that is not a
binary operator.

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

llvm-svn: 284824

7 years ago[X86][AVX2] Begun generalizing lowering to VPERMD/VPERMPS in preparation for AVX512...
Simon Pilgrim [Fri, 21 Oct 2016 13:00:47 +0000 (13:00 +0000)]
[X86][AVX2] Begun generalizing lowering to VPERMD/VPERMPS in preparation for AVX512 support.

llvm-svn: 284823

7 years agoWdocumentation fix
Simon Pilgrim [Fri, 21 Oct 2016 12:51:16 +0000 (12:51 +0000)]
Wdocumentation fix

llvm-svn: 284822

7 years ago[X86][AVX512] Add mask/maskz writemask support to subvector broadcast shuffle decode...
Simon Pilgrim [Fri, 21 Oct 2016 12:14:24 +0000 (12:14 +0000)]
[X86][AVX512] Add mask/maskz writemask support to subvector broadcast shuffle decode comments

llvm-svn: 284821

7 years ago[ELF] Add sh_link field to .ARM.exidx sections for relocatable links
Peter Smith [Fri, 21 Oct 2016 11:25:33 +0000 (11:25 +0000)]
[ELF] Add sh_link field to .ARM.exidx sections for relocatable links

When doing a relocatable link the .ARM.exidx sections with the
SHF_LINK_ORDER flag set need to set the sh_link field to the executable
section they describe. We find the appropriate OutputSection by
following the sh_link field of the .ARM.exidx InputSections.

The getOutputSectionName() function rules make sure that when there are
multiple .ARM.exidx InputSections in an OutputSection they all have the
same sh_link field.

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

llvm-svn: 284820

7 years agoAdd TestMultipleHits.py
Pavel Labath [Fri, 21 Oct 2016 11:14:04 +0000 (11:14 +0000)]
Add TestMultipleHits.py

This tests that lldb handles the situation when a single instruction triggers
multiple watchpoint hits. It currently fails on arm due to what appears to be a
lldb-server bug (pr30758).

llvm-svn: 284819

7 years ago[LoopUnroll] Keep the loop test only on the first iteration of max-or-zero loops
John Brawn [Fri, 21 Oct 2016 11:08:48 +0000 (11:08 +0000)]
[LoopUnroll] Keep the loop test only on the first iteration of max-or-zero loops

When we have a loop with a known upper bound on the number of iterations, and
furthermore know that either the number of iterations will be either exactly
that upper bound or zero, then we can fully unroll up to that upper bound
keeping only the first loop test to check for the zero iteration case.

Most of the work here is in plumbing this 'max-or-zero' information from the
part of scalar evolution where it's detected through to loop unrolling. I've
also gone for the safe default of 'false' everywhere but howManyLessThans which
could probably be improved.

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

llvm-svn: 284818

7 years agoRevert "Fix a race condition between "ephemeral watchpoint disable/enable" and contin...
Pavel Labath [Fri, 21 Oct 2016 10:52:11 +0000 (10:52 +0000)]
Revert "Fix a race condition between "ephemeral watchpoint disable/enable" and continue in commands."

This reverts commit r284795, as it breaks watchpoint handling on arm (and
presumable all architectures that report watchpoint hits without executing the
tripping instruction).

There seems to be something fundamentally wrong with this patch: it uses
process_sp->AddPreResumeAction to re-enable the watchpoint, but the whole point
of the step-over-watchpoint logic (which AFAIK is the only user of this class) is
to disable the watchpoint *after* we resume to do the single step.

I have no idea how to fix this except by reverting the offending patch.

llvm-svn: 284817

7 years ago[X86][AVX] Add 32-bit target tests for vector lzcnt/tzcnt to demonstrate missed foldi...
Simon Pilgrim [Fri, 21 Oct 2016 10:50:52 +0000 (10:50 +0000)]
[X86][AVX] Add 32-bit target tests for vector lzcnt/tzcnt to demonstrate missed folding opportunities

llvm-svn: 284816

7 years agoRemove non-existing file from modulemap.
Benjamin Kramer [Fri, 21 Oct 2016 10:19:37 +0000 (10:19 +0000)]
Remove non-existing file from modulemap.

This picked up a builtin header if it happened to be available.

llvm-svn: 284815

7 years ago[AArch64] Corrected spill size for DDD register class. NFCI
Bjorn Pettersson [Fri, 21 Oct 2016 09:53:42 +0000 (09:53 +0000)]
[AArch64] Corrected spill size for DDD register class. NFCI

Summary:
The spill size was incorrectly set to 196 bits,
which isn't a multiple of 8. This problem was detected when
experimenting with asserts that the spill size should be a
multiple of the byte size.

New corrected value for the spill size is set to 192 bits.

Note that tablegen (RegisterInfoEmitter) will divide the
size set in the RegisterClass definition by 8. So this
change should not have any impact on the tablegen output
(trunc(192/8) == trunc(196/8) == 24 bytes).

Reviewers: t.p.northover

Subscribers: llvm-commits, aemerson, rengolin

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

llvm-svn: 284814

7 years agoFix WebAssembly test after r284757.
Benjamin Kramer [Fri, 21 Oct 2016 09:51:41 +0000 (09:51 +0000)]
Fix WebAssembly test after r284757.

The change to MachineSink shuffles code around, disable it.

llvm-svn: 284813

7 years ago[Support] Fix AlignOf test on i386-linux.
Benjamin Kramer [Fri, 21 Oct 2016 09:15:57 +0000 (09:15 +0000)]
[Support] Fix AlignOf test on i386-linux.

On i386 alignof(double) = 8 is not the same as alignof(struct { double
}) = 4. This used to be not an issue because the old implementation
always measured alignment inside of structs. Wrap a dummy struct around
the test to avoid this issue.

llvm-svn: 284812

7 years agoRevert "DR583, DR1512: Implement a rewrite to C++'s 'composite pointer type' rules."
Renato Golin [Fri, 21 Oct 2016 08:03:49 +0000 (08:03 +0000)]
Revert "DR583, DR1512: Implement a rewrite to C++'s 'composite pointer type' rules."

This reverts commit r284800, as it failed all ARM/AArch64 bots.

llvm-svn: 284811

7 years ago[ELF] Add DebugInfoDWARF dependency
George Rimar [Fri, 21 Oct 2016 07:46:24 +0000 (07:46 +0000)]
[ELF] Add DebugInfoDWARF dependency

rL284708 introduces a link error when building with BUILD_SHARED_LIBS:

undefined reference to `llvm::DWARFContext::parseCompileUnits()'
undefined reference to `llvm::DWARFContextInMemory::DWARFContextInMemory(
                            llvm::object::ObjectFile const&,
                            llvm::LoadedObjectInfo const*)'
The functions are available in libDebugInfoDWARF, from llvm.

Patch by Visoiu Mistrih Francis

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

llvm-svn: 284810

7 years ago[ELF][MIPS] Put local GOT entries accessed via a 16-bit index first
Simon Atanasyan [Fri, 21 Oct 2016 07:22:30 +0000 (07:22 +0000)]
[ELF][MIPS] Put local GOT entries accessed via a 16-bit index first

Some MIPS relocations used to access GOT entries are able to manipulate
16-bit index. The other ones like R_MIPS_CALL_HI16/LO16 can handle
32-bit indexes. 16-bit relocations are generated by default. The 32-bit
relocations are generated by -mxgot flag passed to compiler. Usually
these relocation are not mixed in the same code but files like crt*.o
contain 16-bit relocations so even if all "user's" code compiled with
-mxgot flag a few 16-bit relocations might come to the linking phase.

Now LLD does not differentiate local GOT entries accessed via a 16-bit
and 32-bit indexes. That might lead to relocation's overflow if 16-bit
entries are allocated to far from the beginning of the GOT.

The patch introduces new "part" of MIPS GOT dedicated to the local GOT
entries accessed by 32-bit relocations. That allows to put local GOT
entries accessed via a 16-bit index first and escape relocation's overflow.

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

llvm-svn: 284809

7 years ago[AVX-512] Add tests to show opportunities for commuting vpermi2/vpermt2 instructions.
Craig Topper [Fri, 21 Oct 2016 05:55:40 +0000 (05:55 +0000)]
[AVX-512] Add tests to show opportunities for commuting vpermi2/vpermt2 instructions.

Commuting will be added in a future commit.

llvm-svn: 284808

7 years agoclang-format: [JS] Fix template string ASI.
Martin Probst [Fri, 21 Oct 2016 05:11:38 +0000 (05:11 +0000)]
clang-format: [JS] Fix template string ASI.

Summary:
Previously, automatic semicolon insertion would add an unwrapped line
when a template string contained a line break.

    var x = `foo${
        bar}`;

Would be formatted with `bar...` on a separate line and no indent.

Reviewers: djasper

Subscribers: cfe-commits, klimek

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

llvm-svn: 284807

7 years agoSimplify. NFC.
Rui Ueyama [Fri, 21 Oct 2016 04:52:13 +0000 (04:52 +0000)]
Simplify. NFC.

llvm-svn: 284806

7 years agoAdd comments.
Rui Ueyama [Fri, 21 Oct 2016 04:52:11 +0000 (04:52 +0000)]
Add comments.

llvm-svn: 284805

7 years agoSimplify by merging a lambda with addSymbol. NFC.
Rui Ueyama [Fri, 21 Oct 2016 04:32:46 +0000 (04:32 +0000)]
Simplify by merging a lambda with addSymbol. NFC.

llvm-svn: 284804

7 years agoDo not create .shstrtab and use .strtab instead.
Rui Ueyama [Fri, 21 Oct 2016 03:23:23 +0000 (03:23 +0000)]
Do not create .shstrtab and use .strtab instead.

In-memory ELF object files created here are consumed immediately,
so as long as the generated files are syntactically correct, we don't
care about the details.

llvm-svn: 284803

7 years agoDon't try to use !Previous.empty() as a proxy for "Is this a redeclaration?" --
Richard Smith [Fri, 21 Oct 2016 03:15:03 +0000 (03:15 +0000)]
Don't try to use !Previous.empty() as a proxy for "Is this a redeclaration?" --
we don't collapse that down to a single entry if it's not a redeclaration.
Instead, set the Redeclaration bit on the Declarator to indicate whether a
function is a redeclaration (which may not have been linked into the
redeclaration chain if it's a dependent context friend).

Fixes a rejects-valid; see testcase.

llvm-svn: 284802

7 years ago[ModuleMap] Add more module entries to cover some non modular headers
Bruno Cardoso Lopes [Fri, 21 Oct 2016 03:14:27 +0000 (03:14 +0000)]
[ModuleMap] Add more module entries to cover some non modular headers

These modules are necessary on Darwin to allow modules with
'no_undeclared_includes' (introduced in clang r284797) to work properly
while using libc++ headers.

Patch extracted from a suggested module.modulemap from Richard Smith!

llvm-svn: 284801

7 years agoDR583, DR1512: Implement a rewrite to C++'s 'composite pointer type' rules.
Richard Smith [Fri, 21 Oct 2016 02:36:37 +0000 (02:36 +0000)]
DR583, DR1512: Implement a rewrite to C++'s 'composite pointer type' rules.
This has two significant effects:

1) Direct relational comparisons between null pointer constants (0 and nullopt)
   and pointers are now ill-formed. This was always the case for C, and it
   appears that C++ only ever permitted by accident. For instance, cases like
     nullptr < &a
   are now rejected.

2) Comparisons and conditional operators between differently-cv-qualified
   pointer types now work, and produce a composite type that both source
   pointer types can convert to (when possible). For instance, comparison
   between 'int **' and 'const int **' is now valid, and uses an intermediate
   type of 'const int *const *'.

Clang previously supported #2 as an extension.

We do not accept the cases in #1 as an extension. I've tested a fair amount of
code to check that this doesn't break it, but if it turns out that someone is
relying on this, we can easily add it back as an extension.

llvm-svn: 284800

7 years agoGuard GetEscapedHostname against a nullptr hostname.
Jason Molenda [Fri, 21 Oct 2016 02:32:08 +0000 (02:32 +0000)]
Guard GetEscapedHostname against a nullptr hostname.
This can happen if you debug an iOS corefile on
a mac, where PlatformPOSIX::GetHostname ends up
not providing a hostname because we're working
with a platform of remote-ios.

llvm-svn: 284799

7 years ago[Driver][Darwin] Pass -no_deduplicate to ld64
Bruno Cardoso Lopes [Fri, 21 Oct 2016 01:49:14 +0000 (01:49 +0000)]
[Driver][Darwin] Pass -no_deduplicate to ld64

Recent versions of ld64 run a deduplicate pass, which is on by default.
Disable the pass by using -no_deduplicate in certain condition and
enhance total compile time.

rdar://problem/25455336

llvm-svn: 284798

7 years ago[Modules] Add 'no_undeclared_includes' module map attribute
Bruno Cardoso Lopes [Fri, 21 Oct 2016 01:41:56 +0000 (01:41 +0000)]
[Modules] Add 'no_undeclared_includes' module map attribute

The 'no_undeclared_includes' attribute should be used in a module to
tell that only non-modular headers and headers from used modules are
accepted.

The main motivation behind this is to prevent dep cycles between system
libraries (such as darwin) and libc++.

Patch by Richard Smith!

llvm-svn: 284797

7 years agoRevert "[GVN/PRE] Hoist global values outside of loops."
Davide Italiano [Fri, 21 Oct 2016 01:37:02 +0000 (01:37 +0000)]
Revert "[GVN/PRE] Hoist global values outside of loops."

There's no agreement about this patch. I personally find the
PRE machinery of the current GVN hard enough to reason about
that I'm not sure I'll try to land this again, instead of working
on the rewrite).

llvm-svn: 284796

7 years agoFix a race condition between "ephemeral watchpoint disable/enable" and continue in...
Jim Ingham [Fri, 21 Oct 2016 00:06:38 +0000 (00:06 +0000)]
Fix a race condition between "ephemeral watchpoint disable/enable" and continue in commands.

Also, watchpoint commands, like breakpoint commands, need to run in async mode.

This was causing intermittent failures in TestWatchpointCommandPython.py, which is now solid.

llvm-svn: 284795

7 years agoRevert 9 changes from r284793, they still fail on some bots
Reid Kleckner [Thu, 20 Oct 2016 23:30:39 +0000 (23:30 +0000)]
Revert 9 changes from r284793, they still fail on some bots

llvm-svn: 284794

7 years agoRemove 24 instances of 'REQUIRES: shell'
Reid Kleckner [Thu, 20 Oct 2016 23:11:45 +0000 (23:11 +0000)]
Remove 24 instances of 'REQUIRES: shell'

Tests fall into one of the following categories:

- The requirement was unnecessary

- Additional quoting was required for backslashes in paths (see "sed -e
  's/\\/\\\\/g'") in the sanitizer tests.

- OpenMP used 'REQUIRES: shell' as a proxy for the test failing on
  Windows. Those tests fail there reliably, so use XFAIL instead.

I tried not to remove shell requirements that were added to suppress
flaky test failures, but if I screwed up, we can add it back as needed.

llvm-svn: 284793

7 years agoAdd an API to remove an action from the Process PreResumeActions.
Jim Ingham [Thu, 20 Oct 2016 22:50:00 +0000 (22:50 +0000)]
Add an API to remove an action from the Process PreResumeActions.

llvm-svn: 284792

7 years agoRemove an unnecessary and incorrect check for num locations of a breakpoint
Jim Ingham [Thu, 20 Oct 2016 22:49:06 +0000 (22:49 +0000)]
Remove an unnecessary and incorrect check for num locations of a breakpoint
by grubbing the break list output.  If you pass a number of locations into
the run_break_* functions, they will check that this is right for you.

llvm-svn: 284791

7 years agoAttempt to fix buildbots.
Rui Ueyama [Thu, 20 Oct 2016 22:29:22 +0000 (22:29 +0000)]
Attempt to fix buildbots.

llvm-svn: 284790

7 years agoFix cross-endianness RuntimeDyld relocation for ARM
Keno Fischer [Thu, 20 Oct 2016 22:15:56 +0000 (22:15 +0000)]
Fix cross-endianness RuntimeDyld relocation for ARM

rL284780 fixed the PREL31 relocation and added a test for it. Being
the first such test for ARM relocations, it exposed incorrect endianness
assumptions (causing buildbot failures on big-endian hosts). Fix that by
using the same helpers used for the x86 case.

llvm-svn: 284789

7 years agoframe.script became script.frame a while ago; fix up the docs
Enrico Granata [Thu, 20 Oct 2016 22:10:07 +0000 (22:10 +0000)]
frame.script became script.frame a while ago; fix up the docs

llvm-svn: 284788

7 years agoThis debugging message has been left in the code for years, until one day it randomly...
Enrico Granata [Thu, 20 Oct 2016 22:05:21 +0000 (22:05 +0000)]
This debugging message has been left in the code for years, until one day it randomly hit on some corrupted memory

It is misleading to users in its current form, and only interesting to me - remove it

rdar://28812568

llvm-svn: 284787

7 years agoMove code from InputFile to ELFCreator to decouple the two files.
Rui Ueyama [Thu, 20 Oct 2016 21:57:06 +0000 (21:57 +0000)]
Move code from InputFile to ELFCreator to decouple the two files.

Now that only one non-member function is exported from ELFCreator.h.
All the details are handled internally in ELFCreator.cpp file.

llvm-svn: 284786

7 years agoRe-commit r284753, reverted in r284778, with a fix for PR30749.
Richard Smith [Thu, 20 Oct 2016 21:53:09 +0000 (21:53 +0000)]
Re-commit r284753, reverted in r284778, with a fix for PR30749.

Original commit message:

[c++1z] Teach composite pointer type computation how to compute the composite
pointer type of two function pointers with different noexcept specifications.
While I'm here, also teach it how to merge dynamic exception specifications.

llvm-svn: 284785

7 years ago[SCEV] Add a threshold to restrict number of mul operands to be inlined into SCEV
Li Huang [Thu, 20 Oct 2016 21:38:39 +0000 (21:38 +0000)]
[SCEV] Add a threshold to restrict number of mul operands to be inlined into SCEV

This is to avoid inlining too many multiplication operands into a SCEV, which could
take exponential time in the worst case.

Reviewers: Sanjoy Das, Mehdi Amini, Michael Zolotukhin

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

llvm-svn: 284784

7 years ago[clang] Remove FileEntry copy-constructor
Alexander Shaposhnikov [Thu, 20 Oct 2016 21:20:35 +0000 (21:20 +0000)]
[clang] Remove FileEntry copy-constructor

Code cleanup: address FIXME in the file
include/clang/Basic/FileManager.h and remove
copy-constructor of the class FileEntry.

Test plan: make check-clang

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

llvm-svn: 284782

7 years agoRevert "Disable swiftcall test on windows: More brutal way to appease windows bots"
Reid Kleckner [Thu, 20 Oct 2016 21:17:28 +0000 (21:17 +0000)]
Revert "Disable swiftcall test on windows: More brutal way to appease windows bots"

This reverts commit r284174. The tests pass for me locally. It must have
been a 2015 only crash.

Fixes PR30699

llvm-svn: 284781

7 years agoFix PREL31 relocation on ARM
Keno Fischer [Thu, 20 Oct 2016 21:15:29 +0000 (21:15 +0000)]
Fix PREL31 relocation on ARM

Summary:
This is a 31bits relative relocation instead of a 32bits absolute relocation.

Reviewers: t.p.northover, peter.smith, rengolin

Subscribers: aemerson, llvm-commits, samparker

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

llvm-svn: 284780

7 years ago[X86] Enable interleaved memory access by default
Michael Kuperstein [Thu, 20 Oct 2016 21:04:31 +0000 (21:04 +0000)]
[X86] Enable interleaved memory access by default

This lets the loop vectorizer generate interleaved memory accesses on x86.

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

llvm-svn: 284779

7 years agoRevert r284753 "[c++1z] Teach composite pointer type computation how to compute the...
Hans Wennborg [Thu, 20 Oct 2016 20:54:32 +0000 (20:54 +0000)]
Revert r284753 "[c++1z] Teach composite pointer type computation how to compute the composite"

It caused PR30749.

llvm-svn: 284778

7 years agoFix off-by-one error in PPCaching.cpp token annotation assertion
Reid Kleckner [Thu, 20 Oct 2016 20:53:20 +0000 (20:53 +0000)]
Fix off-by-one error in PPCaching.cpp token annotation assertion

This assert is intended to defend against backtracking into the middle
of a sequence of tokens that is being replaced with an annotation, but
it's OK if we backtrack to the exact position of the start of the
annotation sequence. Use a <= comparison instead of <.

Fixes PR25946

llvm-svn: 284777

7 years agollvm-dwarfdump is now used in a test, so add a depedency on the tool.
Rui Ueyama [Thu, 20 Oct 2016 20:50:00 +0000 (20:50 +0000)]
llvm-dwarfdump is now used in a test, so add a depedency on the tool.

llvm-svn: 284776

7 years ago[Driver] Refactor DetectDistro() parameters to take VFS ref only. NFC
Michal Gorny [Thu, 20 Oct 2016 20:45:40 +0000 (20:45 +0000)]
[Driver] Refactor DetectDistro() parameters to take VFS ref only. NFC

Refactor the DetectDistro() function to take a single vfs::FileSystem
reference only, instead of Driver and llvm::Triple::ArchType.
The ArchType parameter was not used anyway, and Driver was only used to
obtain the VFS.

Aside to making the API simpler and more transparent, it makes it
easier to add unit tests for the function in the future -- since
the tests would need only to provide an appropriate VFS.

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

llvm-svn: 284774

7 years agoadding new symbols to llvm-symbolizer symbol test
Mike Aizatsky [Thu, 20 Oct 2016 20:33:54 +0000 (20:33 +0000)]
adding new symbols to llvm-symbolizer symbol test

llvm-svn: 284773

7 years ago[MSSA] Avoid unnecessary use walks when calling getClobberingMemoryAccess
Daniel Berlin [Thu, 20 Oct 2016 20:13:45 +0000 (20:13 +0000)]
[MSSA] Avoid unnecessary use walks when calling getClobberingMemoryAccess

Summary:
This allows us to mark when uses have been optimized.
This lets us avoid rewalking (IE when people call getClobberingAccess on everything), and also
enables us to later relax the requirement of use optimization during updates with less cost.

Reviewers: george.burgess.iv

Subscribers: llvm-commits

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

llvm-svn: 284771

7 years ago[Driver] Parse Debian version as integer when possible. NFC
Michal Gorny [Thu, 20 Oct 2016 20:13:35 +0000 (20:13 +0000)]
[Driver] Parse Debian version as integer when possible. NFC

Replace the string matching for /etc/debian_version with split
integer/string matching algorithm. When the file contains 'major.minor'
version number, parse the major version as integer and use a switch
clause to match it. Otherwise, attempt 'codename/sid' matching using
a StringSwitch.

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

llvm-svn: 284770