platform/upstream/llvm.git
8 years agoInline getInteger as it's too short to be a function. NFC.
Rui Ueyama [Fri, 22 Apr 2016 21:05:04 +0000 (21:05 +0000)]
Inline getInteger as it's too short to be a function. NFC.

llvm-svn: 267219

8 years agoUpdate a comment for r267145.
Rui Ueyama [Fri, 22 Apr 2016 21:02:27 +0000 (21:02 +0000)]
Update a comment for r267145.

llvm-svn: 267218

8 years agoDAGCombiner: Relax alignment restriction when changing store type
Matt Arsenault [Fri, 22 Apr 2016 21:01:41 +0000 (21:01 +0000)]
DAGCombiner: Relax alignment restriction when changing store type

If the target allows the alignment, this should be OK.

llvm-svn: 267217

8 years ago[PGO] change the interface for createPGOFuncNameMetadata()
Rong Xu [Fri, 22 Apr 2016 21:00:17 +0000 (21:00 +0000)]
[PGO] change the interface for createPGOFuncNameMetadata()

This patch changes the interface for createPGOFuncNameMetadata() where we add
another PGOFuncName argument.

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

llvm-svn: 267216

8 years ago[unordered] sink unordered stores at end of blocks
Philip Reames [Fri, 22 Apr 2016 20:53:32 +0000 (20:53 +0000)]
[unordered] sink unordered stores at end of blocks

The existing code turned out to be completely correct when auditted.  Thus, only minor code changes and adding a couple of tests.

llvm-svn: 267215

8 years agoFold compares for distinct allocations
Sanjoy Das [Fri, 22 Apr 2016 20:52:25 +0000 (20:52 +0000)]
Fold compares for distinct allocations

Summary:
We can fold compares to false when two distinct allocations within a
function are compared for equality.

Patch by Anna Thomas!

Reviewers: majnemer, reames, sanjoy

Subscribers: llvm-commits

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

llvm-svn: 267214

8 years agoMove uintX_t typedef to the class definition. NFC.
Rui Ueyama [Fri, 22 Apr 2016 20:41:07 +0000 (20:41 +0000)]
Move uintX_t typedef to the class definition. NFC.

Now it is doable because LinkerScript is a template class.

llvm-svn: 267212

8 years agoCodeGen: Use PLT relocations for relative references to unnamed_addr functions.
Peter Collingbourne [Fri, 22 Apr 2016 20:40:10 +0000 (20:40 +0000)]
CodeGen: Use PLT relocations for relative references to unnamed_addr functions.

The relative vtable ABI (PR26723) needs PLT relocations to refer to virtual
functions defined in other DSOs. The unnamed_addr attribute means that the
function's address is not significant, so we're allowed to substitute it
with the address of a PLT entry.

Also includes a bonus feature: addends for COFF image-relative references.

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

llvm-svn: 267211

8 years ago[unordered] Extend load/store type canonicalization to handle unordered operations
Philip Reames [Fri, 22 Apr 2016 20:33:48 +0000 (20:33 +0000)]
[unordered] Extend load/store type canonicalization to handle unordered operations

Extend the type canonicalization logic to work for unordered atomic loads and stores.  Note that while this change itself is fairly simple and low risk, there's a reasonable chance this will expose problems in the backends by suddenly generating IR they wouldn't have seen before.  Anything of this nature will be an existing bug in the backend (you could write an atomic float load), but this will definitely change the frequency with which such cases are encountered.  If you see problems, feel free to revert this change, but please make sure you collect a test case.

llvm-svn: 267210

8 years agoDAGCombiner: Relax alignment restriction when changing load type
Matt Arsenault [Fri, 22 Apr 2016 20:21:36 +0000 (20:21 +0000)]
DAGCombiner: Relax alignment restriction when changing load type

If the target allows the alignment, this should still be OK.

llvm-svn: 267209

8 years agoELF: Implement basic support for --version-script.
Peter Collingbourne [Fri, 22 Apr 2016 20:21:26 +0000 (20:21 +0000)]
ELF: Implement basic support for --version-script.

This patch only implements support for version scripts of the form:
  { [ global: symbol1; symbol2; [...]; symbolN; ] local: *; };
No wildcards are supported, other than for the local entry. Symbol versioning
is also not supported.

It works by introducing a new Symbol flag which tracks whether a symbol
appears in the global section of a version script.

This patch also simplifies the logic in SymbolBody::isPreemptible(), and
teaches it to handle the case where symbols with default visibility in DSOs
do not appear in the dynamic symbol table because of a version script.

Fixes PR27482.

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

llvm-svn: 267208

8 years agoUpdate test.
Rafael Espindola [Fri, 22 Apr 2016 20:21:25 +0000 (20:21 +0000)]
Update test.

Sorry about the noise.

llvm-svn: 267207

8 years ago[AArch64] Fix optimizeCondBranch logic.
Quentin Colombet [Fri, 22 Apr 2016 20:09:58 +0000 (20:09 +0000)]
[AArch64] Fix optimizeCondBranch logic.

The opcode for the optimized branch does not depend on the size
of the activate bits in the AND masks, but the AND opcode itself.
Indeed, we need to use a X or W variant based on the AND variant
not based on whether the mask fits into the related variant.
Otherwise, we may end up using the W variant of the optimized branch
for 64-bit register inputs!

This fixes the last make check verifier issues for AArch64: PR27479.

llvm-svn: 267206

8 years agoAdd missing options that were required to crash.
Rafael Espindola [Fri, 22 Apr 2016 20:07:59 +0000 (20:07 +0000)]
Add missing options that were required to crash.

llvm-svn: 267204

8 years ago[sanitizer] allow zero first parameter in MmapNoAccess; This is a part of r267094...
Kostya Serebryany [Fri, 22 Apr 2016 20:05:52 +0000 (20:05 +0000)]
[sanitizer] allow zero first parameter in MmapNoAccess; This is a part of r267094 that has been reverted

llvm-svn: 267203

8 years agoAdd a reduction of the recent bootstrap failure.
Rafael Espindola [Fri, 22 Apr 2016 20:05:16 +0000 (20:05 +0000)]
Add a reduction of the recent bootstrap failure.

llvm-svn: 267202

8 years agoReorganize LinkerDriver::link and add comments. NFC.
Rui Ueyama [Fri, 22 Apr 2016 19:58:47 +0000 (19:58 +0000)]
Reorganize LinkerDriver::link and add comments. NFC.

llvm-svn: 267201

8 years agoUpdate an out of date comment.
Peter Collingbourne [Fri, 22 Apr 2016 19:56:45 +0000 (19:56 +0000)]
Update an out of date comment.

llvm-svn: 267200

8 years agoPM: Port SinkingPass to the new pass manager
Justin Bogner [Fri, 22 Apr 2016 19:54:10 +0000 (19:54 +0000)]
PM: Port SinkingPass to the new pass manager

llvm-svn: 267199

8 years agoPM: Reorder the functions used for SinkingPass. NFC
Justin Bogner [Fri, 22 Apr 2016 19:54:04 +0000 (19:54 +0000)]
PM: Reorder the functions used for SinkingPass. NFC

This will make the port to the new PM easier to follow.

llvm-svn: 267198

8 years ago[DeadStoreElimination] Shorten beginning of memset overwritten by later stores
Jun Bum Lim [Fri, 22 Apr 2016 19:51:29 +0000 (19:51 +0000)]
[DeadStoreElimination] Shorten beginning of memset overwritten by later stores

Summary: This change will shorten memset if the beginning of memset is overwritten by later stores.

Reviewers: hfinkel, eeckstein, dberlin, mcrosier

Subscribers: mgrang, mcrosier, llvm-commits

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

llvm-svn: 267197

8 years agoPM: Port DCE to the new pass manager
Justin Bogner [Fri, 22 Apr 2016 19:40:41 +0000 (19:40 +0000)]
PM: Port DCE to the new pass manager

Also add a very basic test, since apparently there aren't any tests
for DCE whatsoever to add the new pass version to.

llvm-svn: 267196

8 years agoInline SymbolTable::compareCommons and add comments. NFC.
Rui Ueyama [Fri, 22 Apr 2016 19:34:59 +0000 (19:34 +0000)]
Inline SymbolTable::compareCommons and add comments. NFC.

llvm-svn: 267195

8 years ago Revert "GC entries of SHF_MERGE sections."
Rafael Espindola [Fri, 22 Apr 2016 19:31:35 +0000 (19:31 +0000)]
Revert "GC entries of SHF_MERGE sections."

    This reverts commit r267164.

    Revert "Trying to fix the windows build."

    This reverts commit r267168.

Debugging a bootstrap problem.

llvm-svn: 267194

8 years agoMachineScheduler: Move code to initialize a Candidate out of tryCandidate(); NFC
Matthias Braun [Fri, 22 Apr 2016 19:10:15 +0000 (19:10 +0000)]
MachineScheduler: Move code to initialize a Candidate out of tryCandidate(); NFC

llvm-svn: 267191

8 years ago[LoopUtils] Extend findStringMetadataForLoop to return the value for metadata
Adam Nemet [Fri, 22 Apr 2016 19:10:05 +0000 (19:10 +0000)]
[LoopUtils] Extend findStringMetadataForLoop to return the value for metadata

E.g. for:

  !1 = {"llvm.distribute", i32 1}

it now returns the MDOperand for 1.

I will use this in LoopDistribution to check the value of the metadata.

Note that the change is backward-compatible with its current use in
LoopVersioningLICM.  An Optional implicitly converts to a bool depending
whether it contains a value or not.

llvm-svn: 267190

8 years agoMachineScheduler: Limit the size of the ready list.
Matthias Braun [Fri, 22 Apr 2016 19:09:17 +0000 (19:09 +0000)]
MachineScheduler: Limit the size of the ready list.

Avoid quadratic complexity in unusually large basic blocks by limiting
the size of the ready lists.

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

llvm-svn: 267189

8 years agoELF: Scan for undefined symbols in shlibs and symbols in dynamic lists before LTO.
Peter Collingbourne [Fri, 22 Apr 2016 18:47:52 +0000 (18:47 +0000)]
ELF: Scan for undefined symbols in shlibs and symbols in dynamic lists before LTO.

This ensures that these features work correctly with bitcode files.

llvm-svn: 267188

8 years ago[EarlyCSE/CVP] Add stats for CVPs and make sure to account for any Changes.
Chad Rosier [Fri, 22 Apr 2016 18:47:21 +0000 (18:47 +0000)]
[EarlyCSE/CVP] Add stats for CVPs and make sure to account for any Changes.

llvm-svn: 267187

8 years agoFix a bug involving deferred decl emission and PCH
Reid Kleckner [Fri, 22 Apr 2016 18:46:33 +0000 (18:46 +0000)]
Fix a bug involving deferred decl emission and PCH

For various reasons, involving dllexport and class linkage compuations,
we have to wait until after the semicolon after a class declaration to
emit inline methods. These are "deferred" decls. Before this change,
finishing the tag decl would trigger us to deserialize some PCH so that
we could make a "pretty" IR-level type. Deserializing the PCH triggered
calls to HandleTopLevelDecl, which, when done, checked the deferred decl
list, and emitted some dllexported decls that weren't ready.

Avoid this re-entrancy. Deferred decls should not get emitted when a tag
is finished, they should only be emitted after a real top level decl in
the main file.

llvm-svn: 267186

8 years ago[AArch64] When creating MRS instruction, make sure the destination register is
Quentin Colombet [Fri, 22 Apr 2016 18:46:17 +0000 (18:46 +0000)]
[AArch64] When creating MRS instruction, make sure the destination register is
declared as a definition.

This fixes the machine verifier error for CodeGen/AArch64/nzcv-save.ll.

llvm-svn: 267185

8 years agoELF: Implement --export-dynamic-symbol.
Peter Collingbourne [Fri, 22 Apr 2016 18:44:06 +0000 (18:44 +0000)]
ELF: Implement --export-dynamic-symbol.

llvm-svn: 267184

8 years agoELF: Move Visibility, IsUsedInRegularObj and MustBeInDynSym flags to Symbol.
Peter Collingbourne [Fri, 22 Apr 2016 18:42:48 +0000 (18:42 +0000)]
ELF: Move Visibility, IsUsedInRegularObj and MustBeInDynSym flags to Symbol.

These are properties of a symbol name, rather than a particular instance
of a symbol in an object file. We can simplify the code by collecting these
properties in Symbol.

The MustBeInDynSym flag has been renamed ExportDynamic, as its semantics
have been changed to be the same as those of --dynamic-list and
--export-dynamic-symbol, which do not cause hidden symbols to be exported.

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

llvm-svn: 267183

8 years ago[LoopVersioningLICM] Add test coverage for llvm.loop.licm_versioning.disable
Adam Nemet [Fri, 22 Apr 2016 18:34:50 +0000 (18:34 +0000)]
[LoopVersioningLICM] Add test coverage for llvm.loop.licm_versioning.disable

In the next change, I am generalizing the function
findStringMetadataForLoop and I want to make sure I don't break this.
Looks like there was no coverage for this so far.

llvm-svn: 267182

8 years ago[LTO] Create Undefined Bitcode symbol when we drop a comdat member.
Davide Italiano [Fri, 22 Apr 2016 18:26:33 +0000 (18:26 +0000)]
[LTO] Create Undefined Bitcode symbol when we drop a comdat member.

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

llvm-svn: 267181

8 years ago[AArch64][AdvSIMDScalar] Update the kill flags correctly.
Quentin Colombet [Fri, 22 Apr 2016 18:09:14 +0000 (18:09 +0000)]
[AArch64][AdvSIMDScalar] Update the kill flags correctly.

We used to simply set the kill flags to true when transforming a scalar
instruction to a vector one.
SrcScalar1 = copy SrcVector1
... = opScalar SrcScalar1
=>
SrcScalar1 = copy SrcVector1
... = opVector SrcVector1<kill>

This is obviously wrong. The proper update consists in:
1. Propagate the kill status from the copy to the new opVector
2. Reset the kill status on the copy, since the live-range of
   SrcVector1 got extended.

This fixes some of the machine verifier errors for AArch64 with make check.

llvm-svn: 267180

8 years agotest: split test into two runs
Saleem Abdulrasool [Fri, 22 Apr 2016 18:06:51 +0000 (18:06 +0000)]
test: split test into two runs

Rather than checking both stdout and stderr simultaneously, split it into two
tests.  This apparently breaks on Windows where MSVCRT does not buffer output
correctly.  NFC.

Thanks to chapuni for bringing the issue to my attention!

llvm-svn: 267179

8 years ago[Hexagon] Use common Pat classes for selecting code for intrinsics
Krzysztof Parzyszek [Fri, 22 Apr 2016 18:05:55 +0000 (18:05 +0000)]
[Hexagon] Use common Pat classes for selecting code for intrinsics

llvm-svn: 267178

8 years ago[SimplifyCFG] Add final missing implications to isImpliedTrueByMatchingCmp.
Chad Rosier [Fri, 22 Apr 2016 17:57:34 +0000 (17:57 +0000)]
[SimplifyCFG] Add final missing implications to isImpliedTrueByMatchingCmp.

Summary: eq imply [u|s]ge and [u|s]le are true.

Remove redundant logic by implementing isImpliedFalseByMatchingCmp(Pred1, Pred2)
as isImpliedTrueByMatchingCmp(Pred1, getInversePredicate(Pred2)).

llvm-svn: 267177

8 years agoPoint link to CODE_OWNERS.txt to klaus instead of viewvc.
Michael Kuperstein [Fri, 22 Apr 2016 17:41:12 +0000 (17:41 +0000)]
Point link to CODE_OWNERS.txt to klaus instead of viewvc.

llvm-svn: 267176

8 years agoHave isKnownNotFullPoison be smarter around control flow
Sanjoy Das [Fri, 22 Apr 2016 17:41:06 +0000 (17:41 +0000)]
Have isKnownNotFullPoison be smarter around control flow

Summary:
(... while still not using a PostDomTree)

The way we use isKnownNotFullPoison from SCEV today, the new CFG walking
logic will not trigger for any realistic cases -- it will kick in only
for situations where we could have merged the contiguous basic blocks
anyway[0], since the poison generating instruction dominates all of its
non-PHI uses (which are the only uses we consider right now).

However, having this change in place will allow a later bugfix to break
fewer llvm-lit tests.

[0]: i.e. cases where block A branches to block B and B is A's only
successor and A is B's only predecessor.

Reviewers: broune, bjarke.roune

Subscribers: mcrosier, llvm-commits

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

llvm-svn: 267175

8 years ago[Hexagon] Properly close live range in HexagonBlockRanges ---add testcase
Krzysztof Parzyszek [Fri, 22 Apr 2016 17:30:13 +0000 (17:30 +0000)]
[Hexagon] Properly close live range in HexagonBlockRanges ---add testcase

llvm-svn: 267174

8 years ago[Hexagon] Properly close live range in HexagonBlockRanges
Krzysztof Parzyszek [Fri, 22 Apr 2016 17:27:22 +0000 (17:27 +0000)]
[Hexagon] Properly close live range in HexagonBlockRanges

llvm-svn: 267173

8 years agoPM: Remove some redundant name() methods
Justin Bogner [Fri, 22 Apr 2016 17:25:43 +0000 (17:25 +0000)]
PM: Remove some redundant name() methods

These passes all get names from PassInfoMixin already, we don't need
to override them.

llvm-svn: 267172

8 years ago[SimplifyCFG] Add missing implications to isImpliedTrueByMatchingCmp.
Chad Rosier [Fri, 22 Apr 2016 17:14:12 +0000 (17:14 +0000)]
[SimplifyCFG] Add missing implications to isImpliedTrueByMatchingCmp.

Summary: [u|s]gt and [u|s]lt imply [u|s]ge and [u|s]le are true, respectively.
I've simplified the existing tests and added additional tests to cover the new
cases mentioned above.  I've also added tests for all the cases where the
first compare doesn't imply anything about the second compare.

llvm-svn: 267171

8 years ago[SimplifyCFG] Simplify code review by temporarily removing this test file.
Chad Rosier [Fri, 22 Apr 2016 17:14:08 +0000 (17:14 +0000)]
[SimplifyCFG] Simplify code review by temporarily removing this test file.

A followup commit will replace these tests with simplified and more inclusive
tests.  The diff is unreadable if this were to be done in a single commit.

llvm-svn: 267170

8 years agounwind: unify some more macros
Saleem Abdulrasool [Fri, 22 Apr 2016 17:11:05 +0000 (17:11 +0000)]
unwind: unify some more macros

The macros were defined identically across both cases.  Unify the definitions to
have a single definition for _LIBUWNIND_{HIDDEN,EXPORT} and _LIBUNWIND_LOG.
NFC.

llvm-svn: 267169

8 years agoTrying to fix the windows build.
Rafael Espindola [Fri, 22 Apr 2016 17:10:28 +0000 (17:10 +0000)]
Trying to fix the windows build.

llvm-svn: 267168

8 years ago[AMDGPU] Insert nop pass: take care of outstanding feedback
Konstantin Zhuravlyov [Fri, 22 Apr 2016 17:04:51 +0000 (17:04 +0000)]
[AMDGPU] Insert nop pass: take care of outstanding feedback

- Switch few loops to range-based for loops
- Fix nop insertion at the end of BB
- Fix formatting
- Check for endpgm

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

llvm-svn: 267167

8 years ago[mips][microMIPS] Revert commit r266861.
Zoran Jovanovic [Fri, 22 Apr 2016 16:53:15 +0000 (16:53 +0000)]
[mips][microMIPS] Revert commit r266861.
Commit r266861 was the reason for failing tests in LLVM test suite.

llvm-svn: 267166

8 years ago[Hexagon] Teach mux expansion how to deal with undef predicates
Krzysztof Parzyszek [Fri, 22 Apr 2016 16:47:01 +0000 (16:47 +0000)]
[Hexagon] Teach mux expansion how to deal with undef predicates

llvm-svn: 267165

8 years agoGC entries of SHF_MERGE sections.
Rafael Espindola [Fri, 22 Apr 2016 16:46:08 +0000 (16:46 +0000)]
GC entries of SHF_MERGE sections.

It is a fairly direct extension of the gc algorithm. For merge sections
instead of remembering just a live bit, we remember which offsets were
used.

This reduces the .rodata sections in chromium from 9648861 to 9477472
bytes.

llvm-svn: 267164

8 years agoThis reverts commit r267154 and r267161.
Rafael Espindola [Fri, 22 Apr 2016 16:39:59 +0000 (16:39 +0000)]
This reverts commit r267154 and r267161.

It turns out that this will read data from the section to properly
handle Elf_Rel implicit addends.

Sorry for the noise.

Original messages:

Try to fix Windows lld build.

Move getRelocTarget to ObjectFile.
It doesn't use anything from the InputSection.

llvm-svn: 267163

8 years ago[Hexagon] Add definitions for trap/pause instructions
Krzysztof Parzyszek [Fri, 22 Apr 2016 16:25:00 +0000 (16:25 +0000)]
[Hexagon] Add definitions for trap/pause instructions

Also add tests for other instructions from HexagonSystemInst.td.

llvm-svn: 267162

8 years agoTry to fix Windows lld build.
Nico Weber [Fri, 22 Apr 2016 15:23:02 +0000 (15:23 +0000)]
Try to fix Windows lld build.

llvm\tools\lld\ELF\MarkLive.cpp(49): error C2872: 'ObjectFile': ambiguous symbol
llvm\tools\lld\elf\InputFiles.h(100): note: could be 'lld::elf::ObjectFile'
llvm\include\llvm/Object/IRObjectFile.h(26): note: or       'llvm::object::ObjectFile'
llvm\tools\lld\ELF\MarkLive.cpp(133): note: see reference to function template instantiation
    'void forEachSuccessor<ELFT>(lld::elf::InputSection<ELFT> *,
                                 std::function<void (lld::elf::InputSectionBase<ELFT> *)>)'
    being compiled with
                [ ELFT=llvm::object::ELF32LE ]
llvm\tools\lld\ELF\MarkLive.cpp(136): note: see reference to function template instantiation
    'void lld::elf::markLive<llvm::object::ELF32LE>(lld::elf::SymbolTable<llvm::object::ELF32LE> *)
    being compiled

llvm-svn: 267161

8 years agoPostRAHazardRecocgnizer: Fix unused-private-field warning
Tom Stellard [Fri, 22 Apr 2016 15:11:08 +0000 (15:11 +0000)]
PostRAHazardRecocgnizer: Fix unused-private-field warning

llvm-svn: 267160

8 years ago[Hexagon] Add definitions for circular and bit-reverse loads/stores
Krzysztof Parzyszek [Fri, 22 Apr 2016 14:58:46 +0000 (14:58 +0000)]
[Hexagon] Add definitions for circular and bit-reverse loads/stores

llvm-svn: 267159

8 years agoRevert "[LSAN] Fix test swapcontext.cc on MIPS"
Renato Golin [Fri, 22 Apr 2016 14:56:30 +0000 (14:56 +0000)]
Revert "[LSAN] Fix test swapcontext.cc on MIPS"

This reverts commit r266716, as it breaks the self-hosting on Thumb2 buildbot.

llvm-svn: 267158

8 years ago[MemorySSA] Fix bug in CachingMemorySSAWalker::invalidateInfo
Geoff Berry [Fri, 22 Apr 2016 14:44:10 +0000 (14:44 +0000)]
[MemorySSA] Fix bug in CachingMemorySSAWalker::invalidateInfo

Summary:
CachingMemorySSAWalker::invalidateInfo was using IsCall to determine
which cache map needed to be cleared of entries referring to the invalidated
MemoryAccess, but there could also be entries referring to it in the
other cache map (value entries, not key entries).  This change just
clears both tables to be conservatively correct.

Also add a verifyRemoved() function, called when expensive
checks (i.e. XDEBUG) are enabled to verify that the invalidated
MemoryAccess object is not referenced in any of the caches.

Reviewers: dberlin, george.burgess.iv

Subscribers: mcrosier, llvm-commits

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

llvm-svn: 267157

8 years agoCodeGen: Add a stand-alone hazard recognizer pass
Tom Stellard [Fri, 22 Apr 2016 14:43:50 +0000 (14:43 +0000)]
CodeGen: Add a stand-alone hazard recognizer pass

Summary:
This new pass allows targets to use the hazard recognizer without having
to also run one of the schedulers.  This is useful when compiling with
optimizations disabled for targets that still need noop hazards
to be handled correctly.

Reviewers: hfinkel, atrick

Subscribers: arsenm, llvm-commits

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

llvm-svn: 267156

8 years ago[clang-tidy] fix link in Release Notes
Haojian Wu [Fri, 22 Apr 2016 14:43:39 +0000 (14:43 +0000)]
[clang-tidy] fix link in Release Notes

Summary: This is intended to fix https://llvm.org/bugs/show_bug.cgi?id=27426

Patch by Kirill Bobyrev!

Reviewers: alexfh, LegalizeAdulthood, hokein

Subscribers: cfe-commits

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

llvm-svn: 267155

8 years agoMove getRelocTarget to ObjectFile.
Rafael Espindola [Fri, 22 Apr 2016 14:17:14 +0000 (14:17 +0000)]
Move getRelocTarget to ObjectFile.

It doesn't use anything from the InputSection.

llvm-svn: 267154

8 years ago[EarlyCSE] Don't add the overflow flags to the hash
David Majnemer [Fri, 22 Apr 2016 14:12:50 +0000 (14:12 +0000)]
[EarlyCSE] Don't add the overflow flags to the hash

We take the intersection of overflow flags while CSE'ing.
This permits us to consider two instructions with different overflow
behavior to be replaceable.

llvm-svn: 267153

8 years agoEmit code16 in assembly in 16-bit mode
Nirav Dave [Fri, 22 Apr 2016 13:36:11 +0000 (13:36 +0000)]
Emit code16 in assembly in 16-bit mode

Summary:
When generating assembly using -m16 we must explicitly mark it as
16-bit. Emit .code16 at beginning of file. Fixes wrong results when
using -fno-integrated-as.

Reviewers: dwmw2

Subscribers: llvm-commits

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

llvm-svn: 267152

8 years ago[mips] Fix select patterns for MIPS64
Simon Dardis [Fri, 22 Apr 2016 13:19:22 +0000 (13:19 +0000)]
[mips] Fix select patterns for MIPS64

When targetting MIPS64R6 some of the patterns for select were guarded by a
broken predicate. The predicate was supposed to test if a constant value
could fit in a 16 bit zero-extended field. Instead the value was tested to
fit in a 16 bit sign-extended field. For negative constants of native word
width this resulted in wrong code generation.

Reviewers: vkalintiris, dsanders

Differential Review: http://reviews.llvm.org/D19378

llvm-svn: 267151

8 years agoDocument source_filename in LangRef.
Teresa Johnson [Fri, 22 Apr 2016 13:09:17 +0000 (13:09 +0000)]
Document source_filename in LangRef.

Summary: Add documentation for new LLVM IR source_filename identifier.

Reviewers: joker.eph, majnemer

Subscribers: llvm-commits

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

llvm-svn: 267150

8 years ago[mips] Fix a small typo that would leave BLTZC out of getAnalyzableBrOpc().'
Vasileios Kalintiris [Fri, 22 Apr 2016 13:05:51 +0000 (13:05 +0000)]
[mips] Fix a small typo that would leave BLTZC out of getAnalyzableBrOpc().'

llvm-svn: 267149

8 years agoRevert r267049, r26706[16789], r267071 - Refactor raw pdb dumper into library
Daniel Sanders [Fri, 22 Apr 2016 12:04:42 +0000 (12:04 +0000)]
Revert r267049, r26706[16789], r267071 - Refactor raw pdb dumper into library

r267049 broke multiple buildbots (e.g. clang-cmake-mips, and clang-x86_64-linux-selfhost-modules) which the follow-ups have not yet resolved and this is preventing subsequent committers from being notified about additional failures on the affected buildbots.

llvm-svn: 267148

8 years agoSimplify. NFC.
Rafael Espindola [Fri, 22 Apr 2016 11:46:28 +0000 (11:46 +0000)]
Simplify. NFC.

llvm-svn: 267147

8 years agoBail for complex execution contexts of invariant loads
Johannes Doerfert [Fri, 22 Apr 2016 11:41:14 +0000 (11:41 +0000)]
Bail for complex execution contexts of invariant loads

llvm-svn: 267146

8 years ago[ELF] - Implemented linkerscript ALIGN command
George Rimar [Fri, 22 Apr 2016 11:40:53 +0000 (11:40 +0000)]
[ELF] - Implemented linkerscript ALIGN command

ALIGN(exp)
Return the location counter (.) aligned to the next exp boundary. (https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/4/html/Using_ld_the_GNU_Linker/expressions.html)

Patch implements this command.
This fixes PR27406.

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

llvm-svn: 267145

8 years agoAMDGPU/SI: Add test missed in rL266865
Nikolay Haustov [Fri, 22 Apr 2016 11:39:43 +0000 (11:39 +0000)]
AMDGPU/SI: Add test missed in rL266865

llvm-svn: 267144

8 years agoEarly exit for addInvariantLoads
Johannes Doerfert [Fri, 22 Apr 2016 11:38:44 +0000 (11:38 +0000)]
Early exit for addInvariantLoads

llvm-svn: 267143

8 years agoBail for complex alias checks
Johannes Doerfert [Fri, 22 Apr 2016 11:38:19 +0000 (11:38 +0000)]
Bail for complex alias checks

llvm-svn: 267142

8 years agoRepair doxygen comment [NFC]
Johannes Doerfert [Fri, 22 Apr 2016 11:36:13 +0000 (11:36 +0000)]
Repair doxygen comment [NFC]

llvm-svn: 267141

8 years agoRecommitted r267132 "[ELF] - implemented ternary operator for linkerscript expressions"
George Rimar [Fri, 22 Apr 2016 11:28:54 +0000 (11:28 +0000)]
Recommitted r267132 "[ELF] - implemented ternary operator for linkerscript expressions"
With fix: removed redundant Dot parameter.

Original commit message:
[ELF] - implemented ternary operator for linkerscript expressions

Patch implements ternary operator for linkerscript expressions.
Like:

SECTIONS {
 . = 0x1 ? 0x2 : 0x3;
...
}

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

llvm-svn: 267140

8 years ago[InstCombine] Preserve fast math flags when combining PHIs
Silviu Baranga [Fri, 22 Apr 2016 11:21:36 +0000 (11:21 +0000)]
[InstCombine] Preserve fast math flags when combining PHIs

Summary:
When optimizing PHIs which have inputs floating point binary
operators, we preserve all IR flags except the fast math
flags.

This change removes the logic which tracked some of the IR flags
(no wrap, exact) and replaces it by doing an and on the IR flags of
all inputs to the PHI - which will also handle the fast math
flags.

Reviewers: majnemer

Subscribers: llvm-commits

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

llvm-svn: 267139

8 years ago[mips][microMIPS] Implement SLT, SLTI, SLTIU, SLTU microMIPS32r6 instructions
Hrvoje Varga [Fri, 22 Apr 2016 11:18:40 +0000 (11:18 +0000)]
[mips][microMIPS] Implement SLT, SLTI, SLTIU, SLTU microMIPS32r6 instructions
Differential Revision: http://reviews.llvm.org/D19354

llvm-svn: 267137

8 years agoRevert "[sanitizer] Allow the sanitizer allocator to use a non-fixed address range...
Renato Golin [Fri, 22 Apr 2016 11:18:14 +0000 (11:18 +0000)]
Revert "[sanitizer] Allow the sanitizer allocator to use a non-fixed address range. An allocator with a non-fixed address range will be attack-resistan. NFC for the sanitizers at this point."

This reverts commit r267094, because it broke a lot of MSAN tests in AArch64.
Being NFC and all, this needs some deeper investigation before it goes in again.

llvm-svn: 267136

8 years ago[clang][AVX512][Builtin] adding intrinsics for vf{n}madd{ss|sd} and vf{n}sub{ss|sd...
Michael Zuckerman [Fri, 22 Apr 2016 10:56:24 +0000 (10:56 +0000)]
[clang][AVX512][Builtin] adding intrinsics for vf{n}madd{ss|sd} and vf{n}sub{ss|sd} instruction set

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

llvm-svn: 267135

8 years agoRevert r267132 as it broke buildbot.
George Rimar [Fri, 22 Apr 2016 10:51:34 +0000 (10:51 +0000)]
Revert r267132 as it broke buildbot.

llvm-svn: 267134

8 years agoRenumber ThreadSanitizer-provided thread IDs to match LLDB thread numbers.
Kuba Brecka [Fri, 22 Apr 2016 10:40:14 +0000 (10:40 +0000)]
Renumber ThreadSanitizer-provided thread IDs to match LLDB thread numbers.

llvm-svn: 267133

8 years ago[ELF] - implemented ternary operator for linkerscript expressions
George Rimar [Fri, 22 Apr 2016 10:35:34 +0000 (10:35 +0000)]
[ELF] - implemented ternary operator for linkerscript expressions

Patch implements ternary operator for linkerscript expressions.
Like:

SECTIONS {
 . = 0x1 ? 0x2 : 0x3;
...
}

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

llvm-svn: 267132

8 years agoFix some non-standard parts of our test suite. Reported by STL
Eric Fiselier [Fri, 22 Apr 2016 10:33:56 +0000 (10:33 +0000)]
Fix some non-standard parts of our test suite. Reported by STL

llvm-svn: 267131

8 years ago[mips][microMIPS] Add R_MICROMIPS_PC18_S3 relocation
Zoran Jovanovic [Fri, 22 Apr 2016 10:15:12 +0000 (10:15 +0000)]
[mips][microMIPS] Add R_MICROMIPS_PC18_S3 relocation

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

llvm-svn: 267130

8 years ago[Clang][AVX512][BUILTIN] Adding scalar intrinsics for rsqrt14 ,rcp14, getexp and...
Michael Zuckerman [Fri, 22 Apr 2016 10:06:10 +0000 (10:06 +0000)]
[Clang][AVX512][BUILTIN] Adding scalar intrinsics for rsqrt14 ,rcp14, getexp and getmant instruction set

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

llvm-svn: 267129

8 years agoFix -Wunused-variable in non-asserts build.
Eric Liu [Fri, 22 Apr 2016 09:50:31 +0000 (09:50 +0000)]
Fix -Wunused-variable in non-asserts build.

llvm-svn: 267128

8 years agoRevert r267098 - [MachineCombiner] Support for floating-point FMA on ARM64
Daniel Sanders [Fri, 22 Apr 2016 09:37:26 +0000 (09:37 +0000)]
Revert r267098 - [MachineCombiner] Support for floating-point FMA on ARM64

It introduced buildbot failures on clang-cmake-mips, clang-ppc64le-linux, among others.

llvm-svn: 267127

8 years ago[ASAN] Use struct instead of array in sancov.py
Sagar Thakur [Fri, 22 Apr 2016 09:20:22 +0000 (09:20 +0000)]
[ASAN] Use struct instead of array in sancov.py

Summary: When using 32-bit python with 64-bit asan the pc array in sancov.py cannot fit in 64-bit pc's because the type-code 'L' for
arrays in python corresponds to the C type long which is only of 4 bytes. Because of this some of the coverage tool tests fail on
mips. To fix these test possible solutions are to use 64-bit python or use struct.unpack with the 'Q' type-code. We have used
struct.unpack with 'Q' type code since it is not appropriate to have a 64-bit python on all hosts.

Reviewed by kcc, aizatsky

Differential: http://reviews.llvm.org/D18817
llvm-svn: 267126

8 years ago[OPENMP] Fix for PR27463: Privatizing struct fields with array type
Alexey Bataev [Fri, 22 Apr 2016 09:05:03 +0000 (09:05 +0000)]
[OPENMP] Fix for PR27463: Privatizing struct fields with array type
causes code generation failure.

The codegen part of firstprivate clause for member decls used type of
original variable without skipping reference type from
OMPCapturedExprDecl. Patch fixes this problem.

llvm-svn: 267125

8 years agoUpdate comment in lldb-enumerations.h
Pavel Labath [Fri, 22 Apr 2016 08:41:07 +0000 (08:41 +0000)]
Update comment in lldb-enumerations.h

llvm-svn: 267124

8 years ago[X86]: Changing cost for “TRUNCATE v16i32 to v16i8” in SSE4.1 mode.
Ashutosh Nema [Fri, 22 Apr 2016 08:34:05 +0000 (08:34 +0000)]
[X86]: Changing cost for “TRUNCATE v16i32 to v16i8” in SSE4.1 mode.

Summary:
rL256194 transforms truncations between vectors of integers into PACKUS/PACKSS
operations during DAG combine. This generates better code for truncate, so cost
of truncate needs to be changed but looks like it got changed only in SSE2 table
Whereas this change is also applicable for SSE4.1, so the cost of truncate needs
to be changed for that as well. Cost of “TRUNCATE v16i32 to v16i8” & “TRUNCATE
v16i16 to v16i8” should be same in SSE4.1 & SSE2 table. Removing their cost from
SSE4.1, so it will fall back to SSE2.

Reviewers: Simon Pilgrim
llvm-svn: 267123

8 years ago[Sparc] This provides support for itineraries on Sparc.
Chris Dewhurst [Fri, 22 Apr 2016 08:17:17 +0000 (08:17 +0000)]
[Sparc] This provides support for itineraries on Sparc.

Specifically, itineraries for LEON processors has been added, along with several LEON processor Subtargets. Although currently all these targets are pretty much identical, support for features that will differ among these processors will be added in the very near future.

The different Instruction Itinerary Classes (IICs) added are sufficient to differentiate between the instruction timings used by LEON and, quite probably, by generic Sparc processors too, but the focus of the exercise has been for LEON processors, as the requirement of my project. If the IICs are not sufficient for other Sparc processor types and you want to add a new itinerary for one of those, it should be relatively trivial to adapt this.

As none of the LEON processors has Quad Floats, or is a Version 9 processor, none of those instructions have itinerary classes defined and revert to the default "NoItinerary" instruction itinerary.

Phabricator Review: http://reviews.llvm.org/D19359

llvm-svn: 267121

8 years agoThe following code would not work before this patch, due to the inability to take...
Chris Dewhurst [Fri, 22 Apr 2016 08:13:47 +0000 (08:13 +0000)]
The following code would not work before this patch, due to the inability to take the address of a global object:

void func1() {

...
}

int main(int argc, char** argv) {

void (*pFunc)();
pFunc = &func1
pFunc();
...
}

Phabricator review: http://reviews.llvm.org/D19368

llvm-svn: 267120

8 years agoAdd missing include of <algorithm>
Marshall Clow [Fri, 22 Apr 2016 07:39:05 +0000 (07:39 +0000)]
Add missing include of <algorithm>

llvm-svn: 267119

8 years ago[index] Add SymbolSubKinds for ObjC IB annotations.
Argyrios Kyrtzidis [Fri, 22 Apr 2016 07:21:16 +0000 (07:21 +0000)]
[index] Add SymbolSubKinds for ObjC IB annotations.

llvm-svn: 267118

8 years ago[index] Add a SymbolSubKind for an ObjC unit test.
Argyrios Kyrtzidis [Fri, 22 Apr 2016 07:21:10 +0000 (07:21 +0000)]
[index] Add a SymbolSubKind for an ObjC unit test.

llvm-svn: 267117

8 years ago[index] Change SymbolCXXTemplateKind to a 'SymbolSubKinds' bitset.
Argyrios Kyrtzidis [Fri, 22 Apr 2016 07:21:04 +0000 (07:21 +0000)]
[index] Change SymbolCXXTemplateKind to a 'SymbolSubKinds' bitset.

This provides a more general and flexible way to annotate special symbols.

llvm-svn: 267116

8 years agoRevert "Initial implementation of optimization bisect support."
Vedant Kumar [Fri, 22 Apr 2016 06:51:37 +0000 (06:51 +0000)]
Revert "Initial implementation of optimization bisect support."

This reverts commit r267022, due to an ASan failure:

  http://lab.llvm.org:8080/green/job/clang-stage2-cmake-RgSan_check/1549

llvm-svn: 267115

8 years ago[mips][microMIPS] Implement DVP, EVP and JALRC.HB instructions
Zlatko Buljan [Fri, 22 Apr 2016 06:44:34 +0000 (06:44 +0000)]
[mips][microMIPS] Implement DVP, EVP and JALRC.HB instructions
Differential Revision: http://reviews.llvm.org/D18687

llvm-svn: 267114