platform/upstream/llvm.git
8 years ago[LVI] Add select handling
Philip Reames [Mon, 1 Feb 2016 22:57:53 +0000 (22:57 +0000)]
[LVI] Add select handling

Teach LVI to handle select instructions in the exact same way it handles PHI nodes.  This is useful since various parts of the optimizer convert PHI nodes into selects and we don't want these transformations to cause inferior optimization.

Note that this patch does nothing to exploit the implied constraint on the inputs represented by the select condition itself.  That will be a later patch and is blocked on http://reviews.llvm.org/D14476

llvm-svn: 259429

8 years agoAlways build a new TypeSourceInfo for function templates with parameters
Nico Weber [Mon, 1 Feb 2016 22:31:51 +0000 (22:31 +0000)]
Always build a new TypeSourceInfo for function templates with parameters

RecursiveASTVisitor::TraverseFunctionHelper() traverses a function's
ParmVarDecls by going to the function's getTypeSourceInfo if it exists, and
`DEF_TRAVERSE_TYPELOC(FunctionProtoType` then goes to the function's
ParmVarDecls.

For a function template that doesn't have parameters that explicitly depend on
the template parameter, we used to be clever and not build a new
TypeSourceInfo. That meant that when an instantiation of such a template is
visited, its TypeSourceInfo would point to the ParmVarDecls of the template,
not of the instantiation, which then confused clients of RecursiveASTVisitor.

So don't be clever for function templates that have parameters, even if none of
the parameters depend on the type.

Fixes PR26257.
http://reviews.llvm.org/D16478

llvm-svn: 259428

8 years ago[X86][AVX512] Add support for AVX512 VMOVSD/VMOVSS shuffle decoding
Simon Pilgrim [Mon, 1 Feb 2016 22:26:28 +0000 (22:26 +0000)]
[X86][AVX512] Add support for AVX512 VMOVSD/VMOVSS shuffle decoding

llvm-svn: 259427

8 years agoMachoFile should default to using subsections_via_symbols.
Pete Cooper [Mon, 1 Feb 2016 22:24:44 +0000 (22:24 +0000)]
MachoFile should default to using subsections_via_symbols.

When we parse a MachoFile, we set a number of members from the parsed
file, for example, subsectionsViaSymbols.

However, a number of passes, such as ObjCPass, create local copies of
MachoFile and don't get the benefit of setting flags and other fields in
the parser.  Instead we can just give a more sensible default as the parser
will definitely get the correct value from the file anyway.

llvm-svn: 259426

8 years agofunction names start with a lowercase letter; NFC
Sanjay Patel [Mon, 1 Feb 2016 22:23:39 +0000 (22:23 +0000)]
function names start with a lowercase letter; NFC

llvm-svn: 259425

8 years agoFix build problem by lower SmallSet<N> to a reasonable value
Matthias Braun [Mon, 1 Feb 2016 22:18:58 +0000 (22:18 +0000)]
Fix build problem by lower SmallSet<N> to a reasonable value

llvm-svn: 259424

8 years ago[InstCombine] simplify masked scatter/gather intrinsics with zero masks
Sanjay Patel [Mon, 1 Feb 2016 22:10:26 +0000 (22:10 +0000)]
[InstCombine] simplify masked scatter/gather intrinsics with zero masks

A masked scatter with a zero mask means there's no store.
A masked gather with a zero mask means the passthru arg is returned.

This is a continuation of:
http://reviews.llvm.org/rL259369
http://reviews.llvm.org/rL259392

llvm-svn: 259421

8 years ago[X86][AVX512] Add support for AVX512 VINSERTPS shuffle decoding
Simon Pilgrim [Mon, 1 Feb 2016 22:05:50 +0000 (22:05 +0000)]
[X86][AVX512] Add support for AVX512 VINSERTPS shuffle decoding

llvm-svn: 259420

8 years agoSmallSet/SmallPtrSet: Refuse huge Small numbers
Matthias Braun [Mon, 1 Feb 2016 22:05:16 +0000 (22:05 +0000)]
SmallSet/SmallPtrSet: Refuse huge Small numbers

These sets do linear searching in small mode; It is not a good idea to
use huge numbers as the small value here, save people from themselves by
adding a static_assert.

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

llvm-svn: 259419

8 years agoUndoing commit r259366 to debug buildbot failure.
Arpith Chacko Jacob [Mon, 1 Feb 2016 22:02:05 +0000 (22:02 +0000)]
Undoing commit r259366 to debug buildbot failure.
> http://reviews.llvm.org/D16758

llvm-svn: 259418

8 years agoSimplify.
Rafael Espindola [Mon, 1 Feb 2016 21:52:00 +0000 (21:52 +0000)]
Simplify.

Now that we remember the StringRefs when they are first added, we can
write the table in any order.

llvm-svn: 259417

8 years ago[X86][SSE] Regenerated load vector + element extraction tests.
Simon Pilgrim [Mon, 1 Feb 2016 21:46:12 +0000 (21:46 +0000)]
[X86][SSE] Regenerated load vector + element extraction tests.

llvm-svn: 259416

8 years agoUse dyn_cast instead of static_cast.
Pete Cooper [Mon, 1 Feb 2016 21:42:17 +0000 (21:42 +0000)]
Use dyn_cast instead of static_cast.

Now that MachoFile has classof(), we can use dyn_cast instead which
is actually the only safe way to handle this.

Turns out this actually manifests as a bug as we were incorrectly
casting instances which weren't MachoFile in to a MachoFile.

Unfortunately, there's no reliable way of checking for this as it
requires that the file we are looking for has a 0 at exactly the byte
we need for the load of subsectionsViaSymbols.

llvm-svn: 259413

8 years agoMove comments a bit closer to associated code. NFC.
Chad Rosier [Mon, 1 Feb 2016 21:38:31 +0000 (21:38 +0000)]
Move comments a bit closer to associated code. NFC.

llvm-svn: 259411

8 years ago[X86][SSE] Add AVX512 merge consecutive load tests
Simon Pilgrim [Mon, 1 Feb 2016 21:30:50 +0000 (21:30 +0000)]
[X86][SSE] Add AVX512 merge consecutive load tests

Add AVX512F/AVX512BW 512-bit tests.

Add AVX512F tests to existing 128/256-bit tests.

llvm-svn: 259410

8 years agoCode clean up; NFC.
Aaron Ballman [Mon, 1 Feb 2016 21:28:33 +0000 (21:28 +0000)]
Code clean up; NFC.

Patch by Alexander Riccio.

llvm-svn: 259409

8 years ago[CMake] Use LLVM_MAIN_SRC_DIR instead of LLVM_SOURCE_DIR.
Alexey Samsonov [Mon, 1 Feb 2016 21:08:16 +0000 (21:08 +0000)]
[CMake] Use LLVM_MAIN_SRC_DIR instead of LLVM_SOURCE_DIR.

The former will be properly initialized in standalone CMake build of
compiler-rt.

llvm-svn: 259407

8 years agoRegenerate vector blend tests.
Simon Pilgrim [Mon, 1 Feb 2016 21:06:32 +0000 (21:06 +0000)]
Regenerate vector blend tests.

llvm-svn: 259406

8 years agoRegenerate vector sext/zext constant folding tests.
Simon Pilgrim [Mon, 1 Feb 2016 21:01:29 +0000 (21:01 +0000)]
Regenerate vector sext/zext constant folding tests.

llvm-svn: 259405

8 years agoELF: Teach SymbolBody about how to get its addresses.
Rui Ueyama [Mon, 1 Feb 2016 21:00:35 +0000 (21:00 +0000)]
ELF: Teach SymbolBody about how to get its addresses.

Previously, the methods to get symbol addresses were somewhat scattered
in many places. You can use getEntryAddr returns the address of the symbol,
but if you want to get the GOT address for the symbol, you needed to call
Out<ELFT>::Got->getEntryAddr(Sym). This change adds new functions, getVA,
getGotVA, getGotPltVA, and getPltVA to SymbolBody, so that you can use
SymbolBody as the central place to ask about symbols.

http://reviews.llvm.org/D16710

llvm-svn: 259404

8 years agoAvoid inlining call sites in unreachable-terminated block
Jun Bum Lim [Mon, 1 Feb 2016 20:55:11 +0000 (20:55 +0000)]
Avoid inlining call sites in unreachable-terminated block

Summary:
If the normal destination of the invoke or the parent block of the call site is unreachable-terminated, there is little point in inlining the call site unless there is literally zero cost. Unlike my previous change (D15289), this change specifically handle the call sites followed by unreachable in the same basic block for call or in the normal destination for the invoke. This change could be a reasonable first step to conservatively inline call sites leading to an unreachable-terminated block while BFI / BPI is not yet available in inliner.

Reviewers: manmanren, majnemer, hfinkel, davidxl, mcrosier, dblaikie, eraman

Subscribers: dblaikie, davidxl, mcrosier, llvm-commits

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

llvm-svn: 259403

8 years agoRemove extra semicolon. NFC.
Chad Rosier [Mon, 1 Feb 2016 20:54:36 +0000 (20:54 +0000)]
Remove extra semicolon. NFC.

llvm-svn: 259402

8 years ago[SCEV] Clean up isKnownPredicateViaConstantRanges; NFCI
Sanjoy Das [Mon, 1 Feb 2016 20:48:14 +0000 (20:48 +0000)]
[SCEV] Clean up isKnownPredicateViaConstantRanges; NFCI

 - ScalarEvolution::isKnownPredicateViaConstantRanges duplicates some
   logic already present in ConstantRange, use ConstantRange for those
   bits.

 - In some cases ScalarEvolution::isKnownPredicateViaConstantRanges
   returns `false` to mean "definitely false" (e.g. see the
   `LHSRange.getSignedMin().sge(RHSRange.getSignedMax())` case for
   `ICmpInst::ICMP_SLT`), but for `isKnownPredicateViaConstantRanges`,
   `false` actually means "don't know".  Get rid of this extra bit of
   code to avoid confusion.

llvm-svn: 259401

8 years ago[SCEV] Rename isKnownPredicateWithRanges; NFC
Sanjoy Das [Mon, 1 Feb 2016 20:48:10 +0000 (20:48 +0000)]
[SCEV] Rename isKnownPredicateWithRanges; NFC

Make it obvious that it uses constant ranges, and use `Via` instead of
`With`, like other similar functions in SCEV.

llvm-svn: 259400

8 years agoFix infinite recursion in MCAsmStreamer::EmitValueImpl.
Rafael Espindola [Mon, 1 Feb 2016 20:36:49 +0000 (20:36 +0000)]
Fix infinite recursion in MCAsmStreamer::EmitValueImpl.

If a target can only emit 8-bits data, we would loop in EmitValueImpl
since it will try to split a 32-bits data in 1 chunk of 32-bits.

No test since all current targets can emit 32bits at a time.

Patch by Alexandru Guduleasa!

llvm-svn: 259399

8 years ago[ThinLTO] Ensure function summary output order is stable
Teresa Johnson [Mon, 1 Feb 2016 20:16:35 +0000 (20:16 +0000)]
[ThinLTO] Ensure function summary output order is stable

Iterate over the function list instead of a DenseMap of Function pointers
when emitting the function summary into the module.

This fixes PR26419.

llvm-svn: 259398

8 years agoAdd a note on how to create an empty target and use it to attach to
Jim Ingham [Mon, 1 Feb 2016 20:05:37 +0000 (20:05 +0000)]
Add a note on how to create an empty target and use it to attach to
processes whose executables you don't know up front.

llvm-svn: 259396

8 years agoRevert r259143, it broke check-lld on Windows (see PR26388).
Nico Weber [Mon, 1 Feb 2016 20:03:53 +0000 (20:03 +0000)]
Revert r259143, it broke check-lld on Windows (see PR26388).

llvm-svn: 259395

8 years agoAdd a test for r258362.
Rafael Espindola [Mon, 1 Feb 2016 19:56:12 +0000 (19:56 +0000)]
Add a test for r258362.

Thanks to Mehdi for finding it.

llvm-svn: 259394

8 years agoSort checks alphabetically in ReadabilityTidyModule.cpp.
Eugene Zelenko [Mon, 1 Feb 2016 19:47:24 +0000 (19:47 +0000)]
Sort checks alphabetically in ReadabilityTidyModule.cpp.

llvm-svn: 259393

8 years ago[InstCombine] simplify masked store intrinsics with all ones or zeros masks
Sanjay Patel [Mon, 1 Feb 2016 19:39:52 +0000 (19:39 +0000)]
[InstCombine] simplify masked store intrinsics with all ones or zeros masks

A masked store with a zero mask means there's no store.
A masked store with an allOnes mask means it's a normal vector store.

This is a continuation of:
http://reviews.llvm.org/rL259369

llvm-svn: 259392

8 years ago[llvm-nm] Simplify the code a bit. NFCI.
Davide Italiano [Mon, 1 Feb 2016 19:22:16 +0000 (19:22 +0000)]
[llvm-nm] Simplify the code a bit. NFCI.

Fix a style violation while I'm here.

llvm-svn: 259391

8 years ago[ubsan] Stop thinking we can rely on C++ ABI knowledge on Windows
Reid Kleckner [Mon, 1 Feb 2016 19:13:28 +0000 (19:13 +0000)]
[ubsan] Stop thinking we can rely on C++ ABI knowledge on Windows

We already disabled various tests relying on C++ ABI knowledge, but we
still tried to build in this configuration on Windows which was a
mistake.

Fixes PR26415.

llvm-svn: 259388

8 years agoAArch64: Implement missed conditional compare sequences.
Balaram Makam [Mon, 1 Feb 2016 19:13:07 +0000 (19:13 +0000)]
AArch64: Implement missed conditional compare sequences.

Summary:
This is an extension to the existing implementation of r242436 which
restricts to only select inputs. This version fixes missed opportunities
in pr26084 by attempting to lower conditional compare sequences of
and/or trees with setcc leafs. This will additionaly handle the case
when a tree with select input is not a conjunction-disjunction tree
but some of the sub trees are conjunction-disjunction trees.

Reviewers: jmolloy, t.p.northover, mcrosier, MatzeB

Subscribers: mcrosier, llvm-commits, junbuml, haicheng, mssimpso, gberry

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

llvm-svn: 259387

8 years agoAtomize the ObjC category list section.
Pete Cooper [Mon, 1 Feb 2016 19:10:10 +0000 (19:10 +0000)]
Atomize the ObjC category list section.

__DATA, __objc_catlist contains a list of pointers to categories.

We want to atomize it so that the ObjC pass can later optimize and remove
categories.  That will be a later patch.

llvm-svn: 259386

8 years agoAdd test case missing from r259357 (NFC)
Matthew Simpson [Mon, 1 Feb 2016 19:09:24 +0000 (19:09 +0000)]
Add test case missing from r259357 (NFC)

llvm-svn: 259385

8 years ago[AArch64] Simplify prolog/epilog callee save/restore. NFC.
Geoff Berry [Mon, 1 Feb 2016 19:07:06 +0000 (19:07 +0000)]
[AArch64] Simplify prolog/epilog callee save/restore. NFC.

Summary:
Factor out common code for callee-save register pair calculation.  This
is intended to simplify follow-on changes that reduce the number of
registers saved/restored.

Depends on D16732

Reviewers: mcrosier, jmolloy, t.p.northover

Subscribers: aemerson, rengolin, mcrosier, llvm-commits

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

llvm-svn: 259384

8 years agoFix attribute((mode([word|unwind_word]))) for x32
Reid Kleckner [Mon, 1 Feb 2016 18:58:24 +0000 (18:58 +0000)]
Fix attribute((mode([word|unwind_word]))) for x32

Patch by H.J. Lu

```
typedef unsigned int gcc_word __attribute__((mode(word)));
```
and

```
typedef unsigned int gcc_unwind_word __attribute__((mode(unwind_word)));
```
define the largest unsigned integer types which can be stored in a
general purpose register, which may not be the pointer type.  For x32,
they aren't pointer nor unsigned long.  We should

1. Make getUnwindWordWidth and getRegisterWidth virtual,
2. Override them for x32, similar to hasInt128Type.
3. Use getRegisterWidth for __attribute__((mode(word)));

This fixes PR 24706.

Reviewers: rnk

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

llvm-svn: 259383

8 years agodocs: Clarify that cfi-unrelated-cast is based on lifetime.
Peter Collingbourne [Mon, 1 Feb 2016 18:55:50 +0000 (18:55 +0000)]
docs: Clarify that cfi-unrelated-cast is based on lifetime.

Also restore Makefile.sphinx which is needed to build the documentation.

llvm-svn: 259382

8 years ago[SystemZ] Fix wrong-code generation for certain always-false conditions
Ulrich Weigand [Mon, 1 Feb 2016 18:31:19 +0000 (18:31 +0000)]
[SystemZ] Fix wrong-code generation for certain always-false conditions

We've found another bug in the code generation logic conditions for a
certain class of always-false conditions, those of the form
   if ((a & 1) < 0)

These only reach the back end when compiling without optimization.

The bug was introduced by the choice of using TEST UNDER MASK
to implement a check for
   if ((a & MASK) < VAL)
as
   if ((a & MASK) == 0)

where VAL is less than the the lowest bit of MASK.  This is correct
in all cases except for VAL == 0, in which case the original
condition is always false, but the replacement isn't.

Fixed by excluding that particular case.

llvm-svn: 259381

8 years ago[NFC] Referencing manual for reason why subregbit is checked
Colin LeMahieu [Mon, 1 Feb 2016 18:15:39 +0000 (18:15 +0000)]
[NFC] Referencing manual for reason why subregbit is checked

llvm-svn: 259380

8 years agoAlways write the session file in UTF-8.
Zachary Turner [Mon, 1 Feb 2016 18:12:59 +0000 (18:12 +0000)]
Always write the session file in UTF-8.

This patch attempts to solve the Python 2 / Python 3 incompatibilities by
introducing a new `encoded_file` abstraction that we use instead of
`io.open()`.  The problem with the builtin implementation of `io.open` is
that `read` and `write` accept and return `unicode` objects, which are not
always convenient to work with in Python 2.  We solve this by making
`encoded_file.open()` return the same object returned by `io.open()` but
with hooked `read()` and `write()` methods.  These hooked methods will
accept binary or text data, and conditionally convert what it gets to a
`unicode` object using the correct encoding.  When calling `read()` it
also does any conversion necessary to convert the output back into the
native `string` type of the running python version.

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

llvm-svn: 259379

8 years agoFix misnamed variable in TestProcessAPI.py
Zachary Turner [Mon, 1 Feb 2016 18:12:54 +0000 (18:12 +0000)]
Fix misnamed variable in TestProcessAPI.py

llvm-svn: 259378

8 years agofix broken check lines
Sanjay Patel [Mon, 1 Feb 2016 17:46:18 +0000 (17:46 +0000)]
fix broken check lines

Without the colon, it doesn't mean anything!

llvm-svn: 259377

8 years agoMove LocInfoType from Sema to AST.
Benjamin Kramer [Mon, 1 Feb 2016 17:42:01 +0000 (17:42 +0000)]
Move LocInfoType from Sema to AST.

While transient and only used during parsing, LocInfoTypes are still used
from ASTDumper and are part of the AST.

llvm-svn: 259376

8 years ago[InstCombine] Don't transform (X+INT_MAX)>=(Y+INT_MAX) -> (X<=Y)
David Majnemer [Mon, 1 Feb 2016 17:37:56 +0000 (17:37 +0000)]
[InstCombine] Don't transform (X+INT_MAX)>=(Y+INT_MAX) -> (X<=Y)

This miscompile came about because we tried to use a transform which was
only appropriate for xor operators when addition was present.

This fixes PR26407.

llvm-svn: 259375

8 years ago[ValueTracking] Improve isKnownNonZero for PHI of non-zero constants
Jun Bum Lim [Mon, 1 Feb 2016 17:03:07 +0000 (17:03 +0000)]
[ValueTracking] Improve isKnownNonZero for PHI of non-zero constants

It is clear that a PHI is a non-zero if all incoming values are non-zero constants.

llvm-svn: 259370

8 years ago[InstCombine] simplify masked load intrinsics with all ones or zeros masks
Sanjay Patel [Mon, 1 Feb 2016 17:00:10 +0000 (17:00 +0000)]
[InstCombine] simplify masked load intrinsics with all ones or zeros masks

A masked load with a zero mask means there's no load.
A masked load with an allOnes mask means it's a normal vector load.

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

llvm-svn: 259369

8 years agoRemove flaky annotation for TestCallWithTimeout on linux
Pavel Labath [Mon, 1 Feb 2016 16:50:28 +0000 (16:50 +0000)]
Remove flaky annotation for TestCallWithTimeout on linux

The test has passed last 100 runs of the buildbot.

llvm-svn: 259368

8 years ago[PrologEpilogInserter] Add some debug output for callee-save frame object allocation
Geoff Berry [Mon, 1 Feb 2016 16:47:51 +0000 (16:47 +0000)]
[PrologEpilogInserter] Add some debug output for callee-save frame object allocation

Reviewers: mcrosier

Subscribers: mcrosier, llvm-commits

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

llvm-svn: 259367

8 years ago[OpenMP] Prevent nesting of target constructs within target code execution regions.
Arpith Chacko Jacob [Mon, 1 Feb 2016 16:32:47 +0000 (16:32 +0000)]
[OpenMP] Prevent nesting of target constructs within target code execution regions.

Summary:
This patch enhances Sema to check for the following restriction:

OpenMP 4.5 [2.17 Nesting of Regions]
If a target, target update, target data, target enter data, or
target exit data construct is encountered during execution of a
target region, the behavior is unspecified.

Reviewers: ABataev

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

llvm-svn: 259366

8 years ago[AArch64] Simplify callee-save register save/restore. NFC.
Geoff Berry [Mon, 1 Feb 2016 16:29:19 +0000 (16:29 +0000)]
[AArch64] Simplify callee-save register save/restore. NFC.

Summary:
Simplify callee-save register save/restore code generation by
remembering the size of the callee-save area when it is computed so we
don't have to scan the prologue/epilogue instructions again later to
reconstruct it.

This is intended to simplify follow-on changes that reduce the number of
registers saved/restored.

Reviewers: mcrosier, jmolloy, t.p.northover

Subscribers: aemerson, rengolin, mcrosier, llvm-commits

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

llvm-svn: 259365

8 years ago[LV] Rename RdxPHIsToFix to PHIsToFix (NFC)
Matthew Simpson [Mon, 1 Feb 2016 16:07:01 +0000 (16:07 +0000)]
[LV] Rename RdxPHIsToFix to PHIsToFix (NFC)

In the future, we will vectorize recurrences other than reductions. This patch
renames a few variables and updates their associated comments to enable them to
be reused for non-reduction PHI nodes.

This change was requested in the review for D16197.

llvm-svn: 259364

8 years ago[X86][AVX512VBMI] add encoding and intrinsics for Multishift
Asaf Badouh [Mon, 1 Feb 2016 15:48:21 +0000 (15:48 +0000)]
[X86][AVX512VBMI] add encoding and intrinsics for Multishift

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

llvm-svn: 259363

8 years agoAdd a new check, readability-redundant-control-flow, that check for some forms of...
Aaron Ballman [Mon, 1 Feb 2016 15:31:15 +0000 (15:31 +0000)]
Add a new check, readability-redundant-control-flow, that check for some forms of redundant control flow statements. Currently checks for return statements at the end of a function with a void return type and continue statements at the end of looping statements.

Patch by Richard Thomson.

llvm-svn: 259362

8 years ago[mips] Split large test file into 3 smaller ones.
Vasileios Kalintiris [Mon, 1 Feb 2016 15:19:35 +0000 (15:19 +0000)]
[mips] Split large test file into 3 smaller ones.

Remove the old select.ll file and use select-int.ll, select-flt.ll,
select-dbl.ll for testing selects on integers, floats & doubles respectivelly.

llvm-svn: 259361

8 years ago[mips] Range check uimm16 and fix several bugs this revealed.
Daniel Sanders [Mon, 1 Feb 2016 15:13:31 +0000 (15:13 +0000)]
[mips] Range check uimm16 and fix several bugs this revealed.

Summary:
The bugs were:
* teq and similar take 4-bit unsigned immediates on microMIPS.
* teqi and similar have side-effects like teq do.
* shll_s.w and shra_r.w take 5-bit unsigned immediates.
* The various DSP ext* instructions take a 5-bit immediate.
* repl.qh takes an 8-bit unsigned immediate.
* repl.ph takes a 10-bit unsigned immediate.
* rddsp/wrdsp take a 10-bit unsigned immediate.
* teqi and similar take signed 16-bit immediates (10-bit for microMIPS).
* Out-of-range immediate macros for or/xor take a simm32/simm64 depending
  on architecture. I'll fix the simm64 case properly when I reach simm32.

lui is a bit more lenient than GAS and accepts signed immediates in addition
to unsigned. This is because MipsMCExpr can produce signed values when
constant folding and it currently lacks a way of knowing it should fold to
an unsigned value.

Reviewers: vkalintiris

Subscribers: dsanders, llvm-commits

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

llvm-svn: 259360

8 years agoReapply r259210 with a fix for RegistryTest.cpp.
Aaron Ballman [Mon, 1 Feb 2016 14:11:47 +0000 (14:11 +0000)]
Reapply r259210 with a fix for RegistryTest.cpp.

Patch by Richard Thomson.

llvm-svn: 259359

8 years agoImproved macro emission in dwarf.
Amjad Aboud [Mon, 1 Feb 2016 14:09:41 +0000 (14:09 +0000)]
Improved macro emission in dwarf.
Changed emitting offset of macinfo entry into compiler unit DIE to use "addSectionLabel" method rather than explicitly calculating size/offset of macro entry.

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

llvm-svn: 259358

8 years agoReapply commit r258404 with fix.
Matthew Simpson [Mon, 1 Feb 2016 13:38:29 +0000 (13:38 +0000)]
Reapply commit r258404 with fix.

The previous patch caused PR26364. The fix is to ensure that we don't enter a
cycle when iterating over use-def chains.

llvm-svn: 259357

8 years agoRemove Timer::Initialize routine
Pavel Labath [Mon, 1 Feb 2016 13:29:41 +0000 (13:29 +0000)]
Remove Timer::Initialize routine

Summary:
I've run into an issue when running unit tests, where the underlying problem turned out to be
that we were creating Timer objects (through several layers of indirection) without calling
Timer::Initialize. Since Timer's thread-local storage was not properly initialized, we were
overwriting gtest's own thread-local storage, causing test failures.

Instead of requiring that every test calls Timer::Initialize(), I remove the function altogether:
The thread-local storage can be initialized on-demand, and the g_file variable initialized to
stdout and never changed, so I have simply removed it.

Reviewers: clayborg, zturner, tberghammer

Subscribers: lldb-commits

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

llvm-svn: 259356

8 years agoRemove the egregious PCHContainer layering hack that doesn't seem to be necessary...
Benjamin Kramer [Mon, 1 Feb 2016 13:22:39 +0000 (13:22 +0000)]
Remove the egregious PCHContainer layering hack that doesn't seem to be necessary anymore.

llvm-svn: 259355

8 years agoScopInfo: Correct schedule construction
Tobias Grosser [Mon, 1 Feb 2016 11:54:13 +0000 (11:54 +0000)]
ScopInfo: Correct schedule construction

For schedule generation we assumed that the reverse post order traversal used by
the domain generation is sufficient, however it is not. Once a loop is
discovered, we have to completely traverse it, before we can generate the
schedule for any block/region that is only reachable through a loop exiting
block.

To this end, we add a "loop stack" that will keep track of loops we
discovered during the traversal but have not yet traversed completely.
We will never visit a basic block (or region) outside the most recent
(thus smallest) loop in the loop stack but instead queue such blocks
(or regions) in a waiting list. If the waiting list is not empty and
(might) contain blocks from the most recent loop in the loop stack the
next block/region to visit is drawn from there, otherwise from the
reverse post order iterator.

We exploit the new property of loops being always completed before additional
loops are processed, by removing the LoopSchedules map and instead keep all
information in LoopStack. This clarifies that we indeed always only keep a
stack of in-process loops, but will never keep incomplete schedules for an
arbitrary set of loops. As a result, we can simplify some of the existing code.

This patch also adds some more documentation about how our schedule construction
works.

This fixes http://llvm.org/PR25879

This patch is an modified version of Johannes Doerfert's initial fix.

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

llvm-svn: 259354

8 years agoclang-format: Fix incorrect pointer detection in lambdas in constructor
Daniel Jasper [Mon, 1 Feb 2016 11:21:07 +0000 (11:21 +0000)]
clang-format: Fix incorrect pointer detection in lambdas in constructor
initializers.

Before:
  Constructor() : member([](A *a, B * b) {}) {}

After:
  Constructor() : member([](A *a, B *b) {}) {}

llvm-svn: 259353

8 years agoclang-format: Add option to disable string literal formatting.
Daniel Jasper [Mon, 1 Feb 2016 11:21:02 +0000 (11:21 +0000)]
clang-format: Add option to disable string literal formatting.

llvm-svn: 259352

8 years agoclang-format: Fix alignment of trailing multiline columns.
Daniel Jasper [Mon, 1 Feb 2016 11:20:55 +0000 (11:20 +0000)]
clang-format: Fix alignment of trailing multiline columns.

llvm-svn: 259351

8 years agoclang-format: [JS] Treat "in" as a proper operator.
Daniel Jasper [Mon, 1 Feb 2016 11:20:47 +0000 (11:20 +0000)]
clang-format: [JS] Treat "in" as a proper operator.

llvm-svn: 259350

8 years agoWebAssembly NFC: simplify control flow
JF Bastien [Mon, 1 Feb 2016 10:46:16 +0000 (10:46 +0000)]
WebAssembly NFC: simplify control flow

This should now be easier to read.

llvm-svn: 259349

8 years agoDWARF RenderScript vendor extension
Ewan Crawford [Mon, 1 Feb 2016 10:39:24 +0000 (10:39 +0000)]
DWARF RenderScript vendor extension

Patch adds a DWARF language vendor extension for RenderScript.
We are already using this identifier in LLDB with a hard coded value, so it's preferable to use a LLVM generated enum instead.
The language is intended to be added to the next version of the standard.
See http://www.dwarfstd.org/ShowIssue.php?issue=150331.1

Reviewers:  dexonsmith, echristo
Subscribers: probinson domipheus, srhines, llvm-commits
Differential Revision: http://reviews.llvm.org/D16409

llvm-svn: 259348

8 years agoScopInfo: Drop dead code in schedule description
Tobias Grosser [Mon, 1 Feb 2016 10:07:43 +0000 (10:07 +0000)]
ScopInfo: Drop dead code in schedule description

In https://llvm.org/svn/llvm-project/polly/trunk@251870 code was committed to
avoid a failure in the presence of infinite loops, but the test case committed
along with this change passes without the actual change. I looked back into the
code and also checked with the original committer (Johannes), but could not find
the reason why the code is needed. The introduction of LoopStacks for
buildSchedule in one of the next commits will make it even more clear that this
code is not needed, but I remove this ahead of time to facilitate bisecting in
case I missed something.

llvm-svn: 259347

8 years agoAVX512: fix mask handling for gather/scatter/prefetch intrinsics.
Igor Breger [Mon, 1 Feb 2016 09:57:15 +0000 (09:57 +0000)]
AVX512: fix mask handling for gather/scatter/prefetch intrinsics.

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

llvm-svn: 259346

8 years ago[analyzer] Use a wider integer type for an array index.
Artem Dergachev [Mon, 1 Feb 2016 09:29:17 +0000 (09:29 +0000)]
[analyzer] Use a wider integer type for an array index.

Avoids unexpected overflows while performing pointer arithmetics in 64-bit code.
Moreover, neither PointerDiffType nor 'int' can be used as a common array index
type because arrays may have size (and indexes) more than PTRDIFF_MAX but less
than SIZE_MAX.

Patch by Aleksei Sidorin!

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

llvm-svn: 259345

8 years agoSet correct ThreadStopInfo in case of trace event
Abhishek Aggarwal [Mon, 1 Feb 2016 09:01:42 +0000 (09:01 +0000)]
Set correct ThreadStopInfo in case of trace event

Summary:
 - The patch solves Bug 23478 and Bug 19311. Resolving
   Bug 23478 also resolves Bug 23039.
      Correct ThreadStopInfo is set for Linux and FreeBSD
      platforms.

 - Summary:
      When a trace event is reported, we need to check
      whether the trace event lands at a breakpoint site.

      If it lands at a breakpoint site then set the thread's
      StopInfo with the reason 'breakpoint'. Else, set the reason
      to be 'Trace'.

Change-Id: I0af9765e782fd74bc0cead41548486009f8abb87
Signed-off-by: Abhishek Aggarwal <abhishek.a.aggarwal@intel.com>
Reviewers: jingham, emaste, lldb-commits, clayborg, ovyalov

Subscribers: emaste

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

llvm-svn: 259344

8 years ago[X86][SSE] Find source of the inserted element of INSERTPS
Simon Pilgrim [Mon, 1 Feb 2016 08:59:30 +0000 (08:59 +0000)]
[X86][SSE] Find source of the inserted element of INSERTPS

Minor patch to trace back through target shuffles to the source of the inserted element in a (V)INSERTPS shuffle.

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

llvm-svn: 259343

8 years agoAVX512 : Fix SETCCE lowering for KNL 32 bit.
Igor Breger [Mon, 1 Feb 2016 07:56:09 +0000 (07:56 +0000)]
AVX512 : Fix SETCCE lowering for KNL 32 bit.

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

llvm-svn: 259342

8 years ago[dsymutil] Skip mach-o paired relocations
Frederic Riss [Mon, 1 Feb 2016 04:43:14 +0000 (04:43 +0000)]
[dsymutil] Skip mach-o paired relocations

Noticed while working on scattered relocations.
I do not think these relocs can actually happen in the debug_info section,
but if they happen the code would mishandle them. Explicitely skip them
and warn if we encounter one.

llvm-svn: 259341

8 years ago[X86] Cleanup the WinEHState pass
David Majnemer [Mon, 1 Feb 2016 04:28:59 +0000 (04:28 +0000)]
[X86] Cleanup the WinEHState pass

Remove unnecessary includes and class state.

No functional change intended.

llvm-svn: 259340

8 years ago[dsymutil] Support scattered relocs.
Frederic Riss [Mon, 1 Feb 2016 03:44:22 +0000 (03:44 +0000)]
[dsymutil] Support scattered relocs.

Although it seems like clang will never emit scattered relocations in
the debug information (at least I couldn't find a way), we have too
support them for the benefit of other compilers.
As clang doesn't generate them, the included testcase was produced
from hacked up assembly.

llvm-svn: 259339

8 years agoRevert r258580 and r258581.
David Majnemer [Mon, 1 Feb 2016 03:29:38 +0000 (03:29 +0000)]
Revert r258580 and r258581.

Those commits created an artificial edge from a cleanup to a synthesized
catchswitch in order to get the MSVC personality routine to execute
cleanups which don't cleanupret and are not wrapped by a catchswitch.

This worked well enough but is not a complete solution in situations
where there the cleanup infinite loops.

However, the real deal breaker behind this approach comes about from a
degenerate case where the cleanup is post-dominated by unreachable *and*
throws an exception.  This ends poorly because the catchswitch will
inadvertently catch the exception.

Because of this we should go back to our previous behavior of not
executing certain cleanups (identical behavior with the Itanium ABI
implementation in clang, GCC and ICC).

N.B. I think this could be salvaged by making the catchpad rethrow the
exception and properly transforming throwing calls in the cleanup into
invokes.

llvm-svn: 259338

8 years agoScopInfo: use std::distance to shorten code [NFC]
Tobias Grosser [Mon, 1 Feb 2016 01:55:08 +0000 (01:55 +0000)]
ScopInfo: use std::distance to shorten code [NFC]

llvm-svn: 259337

8 years ago[TableGen] Store result of getInstructionsByEnumValue in an ArrayRef instead of accid...
Craig Topper [Mon, 1 Feb 2016 01:33:42 +0000 (01:33 +0000)]
[TableGen] Store result of getInstructionsByEnumValue in an ArrayRef instead of accidentally copying to a vector.

llvm-svn: 259336

8 years agoMark DR1250 as implemented
David Majnemer [Mon, 1 Feb 2016 01:33:17 +0000 (01:33 +0000)]
Mark DR1250 as implemented

We implemented this DR back in r258768 but forgot to mark it as
implemented.

llvm-svn: 259335

8 years ago[MCDwarf] Fix encoding of line tables with weird custom parameters
Frederic Riss [Sun, 31 Jan 2016 22:06:35 +0000 (22:06 +0000)]
[MCDwarf] Fix encoding of line tables with weird custom parameters

With poorly chosen custom parameters, the line table encoding logic would
sometimes end up generating a special opcode bigger than 255, which is wrong.
The set of default parameters that LLVM uses isn't subject to this bug.

When carefully chosing the line table parameters, it's impossible to fall into the
corner case that this patch fixes. The standard however doesn't require that these
parameters be carefully chosen. And even if it did, we shouldn't generate broken
encoding.

Add a unittest for this specific encoding bug, and while at it, create some unit
tests for the encoding logic using different sets of parameters.

llvm-svn: 259334

8 years agoReplace utostr_32 use with utostr to match removal from llvm.
Craig Topper [Sun, 31 Jan 2016 20:36:20 +0000 (20:36 +0000)]
Replace utostr_32 use with utostr to match removal from llvm.

llvm-svn: 259333

8 years agocmake: Add additional libraries to fix the darwin shared library build
Tobias Grosser [Sun, 31 Jan 2016 20:25:46 +0000 (20:25 +0000)]
cmake: Add additional libraries to fix the darwin shared library build

darwin requires the additional linkages of...

LLVMBitReader
LLVMMCParser
LLVMObject
LLVMProfileData
LLVMTarget
LLVMVectorize

as the darwin requires all of the weak undefined symbols in a library to be
resolved when linking it against an executable (unless
-Wl,-undefined,dynamic_lookup is used to override the default behavior of
-Wl,-undefined,error).

Contributed-by: Jack Howarth
llvm-svn: 259332

8 years agoRemove utostr_32 as it has no uses anymore.
Craig Topper [Sun, 31 Jan 2016 20:00:26 +0000 (20:00 +0000)]
Remove utostr_32 as it has no uses anymore.

llvm-svn: 259331

8 years agoReplace usages of llvm::utostr_32 with just llvm::utostr. While this is less efficien...
Craig Topper [Sun, 31 Jan 2016 20:00:24 +0000 (20:00 +0000)]
Replace usages of llvm::utostr_32 with just llvm::utostr. While this is less efficient, its unclear the few places that were using the _32 version were doing so for efficiency.

llvm-svn: 259330

8 years agoMerge utohex_buffer into utohexstr, it's only caller. Also change utohexstr to use...
Craig Topper [Sun, 31 Jan 2016 20:00:22 +0000 (20:00 +0000)]
Merge utohex_buffer into utohexstr, it's only caller. Also change utohexstr to use the std::string constructor that takes a start and end pointer. This saves a call to strlen. NFC

llvm-svn: 259329

8 years agoadd helper function for minnum/maxnum ; NFC
Sanjay Patel [Sun, 31 Jan 2016 16:35:23 +0000 (16:35 +0000)]
add helper function for minnum/maxnum ; NFC

llvm-svn: 259326

8 years agouse range-based for loop; NFC
Sanjay Patel [Sun, 31 Jan 2016 16:34:48 +0000 (16:34 +0000)]
use range-based for loop; NFC

llvm-svn: 259325

8 years agofix formatting; NFC
Sanjay Patel [Sun, 31 Jan 2016 16:34:11 +0000 (16:34 +0000)]
fix formatting; NFC

llvm-svn: 259324

8 years agosimplify; NFC
Sanjay Patel [Sun, 31 Jan 2016 16:33:33 +0000 (16:33 +0000)]
simplify; NFC

llvm-svn: 259323

8 years agoclean up; NFC
Sanjay Patel [Sun, 31 Jan 2016 16:32:23 +0000 (16:32 +0000)]
clean up; NFC

function names, comments, formatting, typos

llvm-svn: 259322

8 years agoWebAssembly: more failures are gone
JF Bastien [Sun, 31 Jan 2016 08:19:40 +0000 (08:19 +0000)]
WebAssembly: more failures are gone

llvm-svn: 259321

8 years agoWebAssembly: update expected failures
JF Bastien [Sun, 31 Jan 2016 08:05:05 +0000 (08:05 +0000)]
WebAssembly: update expected failures

r259305 fixed a few assertions around FrameIndex, and I forgot to update these failures despite having run the torture tests.

llvm-svn: 259320

8 years ago[dsymutil] Fix FileCheck command.
Frederic Riss [Sun, 31 Jan 2016 04:39:16 +0000 (04:39 +0000)]
[dsymutil] Fix FileCheck command.

Damn case-insensitive filesystem...

llvm-svn: 259319

8 years ago[dsymutil] Fix handling of common symbols.
Frederic Riss [Sun, 31 Jan 2016 04:29:34 +0000 (04:29 +0000)]
[dsymutil] Fix handling of common symbols.

llvm-dsymutil was misinterpreting the value of common symbols as their
address when it actually contains their size. This didn't impact
llvm-dsymutil's ability to link the debug information for common symbols
because these are always found by name and not by address. Things could
however go wrong when the size of a common object matched the object
file address of another symbol. Depending on the link order of the symbols
the common object might incorrectly evict this other object from the
address to symbol mapping, and then link the evicted symbol with a wrong
binary address.

Use the new ability to have symbols without an object file address to fix
this.

llvm-svn: 259318

8 years ago[dsymutil] Allow debug map mappings with no object file address. NFC
Frederic Riss [Sun, 31 Jan 2016 04:29:22 +0000 (04:29 +0000)]
[dsymutil] Allow debug map mappings with no object file address. NFC

This change just changes the data structure that ties symbol names,
object file address and linked binary addresses to accept mappings
with no object file address. Such symbol mappings are not fed into
the debug map yet, so this patch is NFC.
A subsequent patch will make use of this functionality for common
symbols.

llvm-svn: 259317

8 years agoReplace usage of llvm::utostr_32 with just llvm::utostr. While this is less efficient...
Craig Topper [Sun, 31 Jan 2016 04:20:03 +0000 (04:20 +0000)]
Replace usage of llvm::utostr_32 with just llvm::utostr. While this is less efficient, its unclear that the one place using the _32 version was doing so for efficiency.

llvm-svn: 259316

8 years ago[SelectionDAG] Eliminate exponential behavior in WalkChainUsers
Tim Shen [Sun, 31 Jan 2016 03:59:34 +0000 (03:59 +0000)]
[SelectionDAG] Eliminate exponential behavior in WalkChainUsers

llvm-svn: 259315