]> granicus.if.org Git - llvm/log
llvm
7 years agoConvert the last uses of ErrorOr in COFF.h.
Rafael Espindola [Wed, 11 Oct 2017 17:33:11 +0000 (17:33 +0000)]
Convert the last uses of ErrorOr in COFF.h.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315480 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoConvert a few ErrorOr to Expected.
Rafael Espindola [Wed, 11 Oct 2017 17:23:15 +0000 (17:23 +0000)]
Convert a few ErrorOr to Expected.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315477 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[NFC] Convert OptimizationRemarkEmitter old emit() calls to new closure
Vivek Pandya [Wed, 11 Oct 2017 17:12:59 +0000 (17:12 +0000)]
[NFC] Convert OptimizationRemarkEmitter old emit() calls to new closure
parameterized emit() calls

Summary: This is not functional change to adopt new emit() API added in r313691.

Reviewed By: anemet

Subscribers: llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315476 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoConvert a couple of ErrorOr to Expected. NFC.
Rafael Espindola [Wed, 11 Oct 2017 17:05:24 +0000 (17:05 +0000)]
Convert a couple of ErrorOr to Expected. NFC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315475 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoRemove an unused include.
Rafael Espindola [Wed, 11 Oct 2017 16:58:32 +0000 (16:58 +0000)]
Remove an unused include.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315474 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoConvert an ErrorOr to Expected.
Rafael Espindola [Wed, 11 Oct 2017 16:56:33 +0000 (16:56 +0000)]
Convert an ErrorOr to Expected.

getRelocationAddend should never be called on non SHT_RELA sections,
but changing that requires changing RelocVisitor.h.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315473 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[Hexagon] Handle non-immediate operands to A2_addi in getIncrementValue
Krzysztof Parzyszek [Wed, 11 Oct 2017 16:15:31 +0000 (16:15 +0000)]
[Hexagon] Handle non-immediate operands to A2_addi in getIncrementValue

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315472 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoSpelling mistake in comment. NFCI.
Simon Pilgrim [Wed, 11 Oct 2017 16:10:05 +0000 (16:10 +0000)]
Spelling mistake in comment. NFCI.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315471 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[X86] Remove MVT::i1 handling code from LowerTRUNCATE
Craig Topper [Wed, 11 Oct 2017 16:05:05 +0000 (16:05 +0000)]
[X86] Remove MVT::i1 handling code from LowerTRUNCATE

Summary: I don't think this is necessary with i1 being illegal now.

Reviewers: RKSimon, zvi, guyblank

Reviewed By: RKSimon

Subscribers: llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315469 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[Pipeliner] Fix offset value for instrs dependent on post-inc load/stores
Krzysztof Parzyszek [Wed, 11 Oct 2017 15:59:51 +0000 (15:59 +0000)]
[Pipeliner] Fix offset value for instrs dependent on post-inc load/stores

The software pipeliner and the packetizer try to break dependence
between the post-increment instruction and the dependent memory
instructions by changing the base register and the offset value.
However, in some cases, the existing logic didn't work properly
and created incorrect offset value.

Patch by Jyotsna Verma.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315468 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[Pipeliner] Improve serialization order for post-increments
Krzysztof Parzyszek [Wed, 11 Oct 2017 15:51:44 +0000 (15:51 +0000)]
[Pipeliner] Improve serialization order for post-increments

The pipeliner is generating a serial sequence that causes poor
register allocation when a post-increment instruction appears
prior to the use of the post-increment register. This occurs when
there is a circular set of dependences involved with a sequence
of instructions in the same cycle. In this case, there is no
serialization of the parallel semantics that will not cause an
additional register to be allocated.

This patch fixes the problem by changing the instructions so that
the post-increment instruction is used by the subsequent
instruction, which enables the register allocator to make a
better decision and not require another register.

Patch by Brendon Cahoon.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315466 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[InstCombine] add baseline tests for D38531; NFC
Sanjay Patel [Wed, 11 Oct 2017 14:29:17 +0000 (14:29 +0000)]
[InstCombine] add baseline tests for D38531; NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315461 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[DAGCombiner] convert insertelement of bitcasted vector into shuffle
Sanjay Patel [Wed, 11 Oct 2017 14:12:16 +0000 (14:12 +0000)]
[DAGCombiner] convert insertelement of bitcasted vector into shuffle

Eg:
insert v4i32 V, (v2i16 X), 2 --> shuffle v8i16 V', X', {0,1,2,3,8,9,6,7}

This is a generalization of the IR fold in D38316 to handle insertion into a non-undef vector.
We may want to abandon that one if we can't find value in squashing the more specific pattern sooner.

We're using the existing legal shuffle target hook to avoid AVX512 horror with vXi1 shuffles.

There may be room for improvement in the shuffle lowering here, but that would be follow-up work.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315460 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoRevert "[dsymutil] Timestmap verification for __swift_ast"
Jonas Devlieghere [Wed, 11 Oct 2017 13:51:30 +0000 (13:51 +0000)]
Revert "[dsymutil] Timestmap verification for __swift_ast"

This reverts commit r315456.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315458 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[TargetLowering] Correctly track NumFixedArgs field of CallLoweringInfo
Alex Bradbury [Wed, 11 Oct 2017 13:48:45 +0000 (13:48 +0000)]
[TargetLowering] Correctly track NumFixedArgs field of CallLoweringInfo

The NumFixedArgs field of CallLoweringInfo is used by
TargetLowering::LowerCallTo to determine whether a given argument is passed
using the vararg calling convention or not (specifically, to set IsFixed for
each ISD::OutputArg).

Firstly, CallLoweringInfo::setLibCallee and CallLoweringInfo::setCallee both
incorrectly set NumFixedArgs based on the _previous_ args list. Secondly,
TargetLowering::LowerCallTo failed to increment NumFixedArgs when modifying
the argument list so a pointer is passed for the return value.

If your backend uses the IsFixed property or directly accesses NumFixedArgs,
it is _possible_ this change could result in codegen changes (although the
previous behaviour would have been incorrect). No such cases have been
identified during code review for any in-tree architecture.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315457 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[dsymutil] Timestmap verification for __swift_ast
Jonas Devlieghere [Wed, 11 Oct 2017 13:34:52 +0000 (13:34 +0000)]
[dsymutil] Timestmap verification for __swift_ast

This patch adds timestamp verification for swiftmodule files.

 - A new flag is provided to allows us to continue testing of the code
   for embedding the__swift_ast. (git doesn't maintain timestamps)
 - Adds a new test for fat (arm) binaries.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315456 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[RISCV] Fix build after r315327
Alex Bradbury [Wed, 11 Oct 2017 12:09:06 +0000 (12:09 +0000)]
[RISCV] Fix build after r315327

Differential Revision: https://reviews.llvm.org/D38779
Patch by Chih-Mao Chen.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315455 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[mips] Add missing tests from rL315451
Simon Dardis [Wed, 11 Oct 2017 11:45:06 +0000 (11:45 +0000)]
[mips] Add missing tests from rL315451

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315454 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[mips] Add support for parsing target specific flags for MIR
Simon Dardis [Wed, 11 Oct 2017 11:11:35 +0000 (11:11 +0000)]
[mips] Add support for parsing target specific flags for MIR

Reviewers: atanasyan

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315451 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agollvm/module.modulemap: Create LLVM_MC_TableGen. It is used by llvm-tblgen.
NAKAMURA Takumi [Wed, 11 Oct 2017 11:08:52 +0000 (11:08 +0000)]
llvm/module.modulemap: Create LLVM_MC_TableGen. It is used by llvm-tblgen.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315450 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agollvm/module.modulemap: Move Support_TargetRegistry to let LLVMSupport free from MC.
NAKAMURA Takumi [Wed, 11 Oct 2017 11:08:50 +0000 (11:08 +0000)]
llvm/module.modulemap: Move Support_TargetRegistry to let LLVMSupport free from MC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315449 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[NFC] Fix variables used only for assert in GVN
Max Kazantsev [Wed, 11 Oct 2017 10:31:49 +0000 (10:31 +0000)]
[NFC] Fix variables used only for assert in GVN

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315448 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[llvm-rc] Fix spelling in message
Simon Dardis [Wed, 11 Oct 2017 10:14:22 +0000 (10:14 +0000)]
[llvm-rc] Fix spelling in message

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315447 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[TableGen] Tidy up CodeGenSchedule.cpp
Javed Absar [Wed, 11 Oct 2017 09:33:23 +0000 (09:33 +0000)]
[TableGen] Tidy up CodeGenSchedule.cpp

Use range_loop where it simplifies.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315446 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[Asm] Add debug tracing in table-generated assembly matcher
Oliver Stannard [Wed, 11 Oct 2017 09:17:43 +0000 (09:17 +0000)]
[Asm] Add debug tracing in table-generated assembly matcher

This adds debug tracing to the table-generated assembly instruction matcher,
enabled by the -debug-only=asm-matcher option.

The changes in the target AsmParsers are to add an MCInstrInfo reference under
a consistent name, so that we can use it from table-generated code. This was
already being used this way for targets that use deprecation warnings, but 5
targets did not have it, and Hexagon had it under a different name to the other
backends.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315445 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[X86] Added tests for TESTM and TESTNM (NFC)
Uriel Korach [Wed, 11 Oct 2017 08:39:25 +0000 (08:39 +0000)]
[X86] Added tests for TESTM and TESTNM (NFC)

Adding this test files now so after another commit that will add a new pattern for
TESTM and TESTNM instructions will show the improvemnts that have been done.

Change-Id: If3908b7f91897d764053312365a2bc1de78b291d

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315443 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[GVN] Prevent LoadPRE from hoisting across instructions that don't pass control flow...
Max Kazantsev [Wed, 11 Oct 2017 08:10:43 +0000 (08:10 +0000)]
[GVN] Prevent LoadPRE from hoisting across instructions that don't pass control flow to successors

This patch fixes the miscompile that happens when PRE hoists loads across guards and
other instructions that don't always pass control flow to their successors. PRE is now prohibited
to hoist across such instructions because there is no guarantee that the load standing after such
instruction is still valid before such instruction. For example, a load from under a guard may be
invalid before the guard in the following case:
  int array[LEN];
  ...
  guard(0 <= index && index < LEN);
  use(array[index]);

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315440 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[LICM] Disallow sinking of unordered atomic loads into loops
Max Kazantsev [Wed, 11 Oct 2017 07:26:45 +0000 (07:26 +0000)]
[LICM] Disallow sinking of unordered atomic loads into loops

Sinking of unordered atomic load into loop must be disallowed because it turns
a single load into multiple loads. The relevant section of the documentation
is: http://llvm.org/docs/Atomics.html#unordered, specifically the Notes for
Optimizers section. Here is the full text of this section:

> Notes for optimizers
> In terms of the optimizer, this **prohibits any transformation that
> transforms a single load into multiple loads**, transforms a store into
> multiple stores, narrows a store, or stores a value which would not be
> stored otherwise. Some examples of unsafe optimizations are narrowing
> an assignment into a bitfield, rematerializing a load, and turning loads
> and stores into a memcpy call. Reordering unordered operations is safe,
> though, and optimizers should take advantage of that because unordered
> operations are common in languages that need them.

Patch by Daniil Suchkov!

Reviewed By: reames
Differential Revision: https://reviews.llvm.org/D38392

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315438 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[IRCE] Do not process empty safe ranges
Max Kazantsev [Wed, 11 Oct 2017 06:53:07 +0000 (06:53 +0000)]
[IRCE] Do not process empty safe ranges

IRCE should not apply when the safe iteration range is proved to be empty.
In this case we do unneeded job creating pre/post loops and then never
go to the main loop.

This patch makes IRCE not apply to empty safe ranges, adds test for this
situation and also modifies one of existing tests where it used to happen
slightly.

Reviewed By: anna
Differential Revision: https://reviews.llvm.org/D38577

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315437 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[GVN] Don't replace constants with constants.
Davide Italiano [Wed, 11 Oct 2017 04:21:51 +0000 (04:21 +0000)]
[GVN] Don't replace constants with constants.

This fixes PR34908. Patch by Alex Crichton!

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315429 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoRevert "[llvm-objcopy] Add support for --strip-sections to remove all section headers...
Jake Ehrlich [Wed, 11 Oct 2017 02:42:29 +0000 (02:42 +0000)]
Revert "[llvm-objcopy] Add support for --strip-sections to remove all section headers leaving only program headers and loadable segment data"

This reverts commit rL315412

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315417 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoWIN32_FIND_DATA -> WIN32_FIND_DATAW.
Peter Collingbourne [Wed, 11 Oct 2017 02:09:06 +0000 (02:09 +0000)]
WIN32_FIND_DATA -> WIN32_FIND_DATAW.

Should fix mingw bot.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315413 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[llvm-objcopy] Add support for --strip-sections to remove all section headers leaving...
Jake Ehrlich [Wed, 11 Oct 2017 01:59:06 +0000 (01:59 +0000)]
[llvm-objcopy] Add support for --strip-sections to remove all section headers leaving only program headers and loadable segment data

elf utils implements a particularly extreme form of stripping that I'd
like to support. eu-strip has an option called "strip-sections" that
removes all section headers and leaves only program headers and the
segment data. I have implemented this option partly as a test but mainly
because in Fuchsia we would like to use this option to minimize the size
of our executables. The other strip options that are on my list include
--strip-all and --strip-debug. This is a preliminary implementation that
I'd like to start using in Fuchsia builds if possible. This change
implements such a stripping option for llvm-objcopy

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315412 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[MC] Have MCObjectStreamer take its MCAsmBackend argument via unique_ptr.
Lang Hames [Wed, 11 Oct 2017 01:57:21 +0000 (01:57 +0000)]
[MC] Have MCObjectStreamer take its MCAsmBackend argument via unique_ptr.

MCObjectStreamer owns its MCAsmBackend -- this fixes the types to reflect that,
and allows us to remove another instance of MCObjectStreamer's weird "holding
ownership via someone else's reference" trick.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315410 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoSilence MSVC warnings about unsigned wrapping without UB
Reid Kleckner [Wed, 11 Oct 2017 01:40:38 +0000 (01:40 +0000)]
Silence MSVC warnings about unsigned wrapping without UB

Of course, casting an unsigned value too large for 'int' is UB. So,
write out the ternary. LLVM folds it to ADD anyway.

Fixes the warning from r303693 a different way.

Thanks to Erich Keane for pointing this out!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315406 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[X86] Remove temporary std::string creation from shuffle comment printing. We can...
Craig Topper [Wed, 11 Oct 2017 00:46:09 +0000 (00:46 +0000)]
[X86] Remove temporary std::string creation from shuffle comment printing. We can just write directly to the raw_ostream.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315399 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[X86] Add 128-bit version of vbroadcasti32x2 to shuffle comment decoding.
Craig Topper [Wed, 11 Oct 2017 00:11:53 +0000 (00:11 +0000)]
[X86] Add 128-bit version of vbroadcasti32x2 to shuffle comment decoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315395 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoCodeGen: Minor cleanups to use MachineInstr::getMF. NFC
Justin Bogner [Tue, 10 Oct 2017 23:50:49 +0000 (23:50 +0000)]
CodeGen: Minor cleanups to use MachineInstr::getMF. NFC

Since r315388 we have a shorter way to say this, so we'll replace
MI->getParent()->getParent() with MI->getMF() in a few places.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315390 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoCodeGen: Add MachineInstr::getMF(). NFC
Justin Bogner [Tue, 10 Oct 2017 23:34:01 +0000 (23:34 +0000)]
CodeGen: Add MachineInstr::getMF(). NFC

Similarly to how Instruction has getFunction, this adds a less verbose
way to write MI->getParent()->getParent(). I'll follow up shortly with
a change that changes a bunch of the uses.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315388 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[llvm-objcopy] Add ability to remove multiple sections by name
Jake Ehrlich [Tue, 10 Oct 2017 23:02:43 +0000 (23:02 +0000)]
[llvm-objcopy] Add ability to remove multiple sections by name

This change adds the ability to use the "-R"/"-remove-section" option
multiple times.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315385 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[Transforms] Fix some Clang-tidy modernize and Include What You Use warnings; other...
Eugene Zelenko [Tue, 10 Oct 2017 22:49:55 +0000 (22:49 +0000)]
[Transforms] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315383 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[X86] Add broadcast patterns that allow a scalar_to_vector between the broadcast...
Craig Topper [Tue, 10 Oct 2017 22:40:31 +0000 (22:40 +0000)]
[X86] Add broadcast patterns that allow a scalar_to_vector between the broadcast and the load.

We already have these patterns for AVX512VL, but not AVX1 or 2.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315382 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[CodeGen] Fix some Clang-tidy modernize and Include What You Use warnings; other...
Eugene Zelenko [Tue, 10 Oct 2017 22:33:29 +0000 (22:33 +0000)]
[CodeGen] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315380 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoSupport: Have directory_iterator::status() return FindFirstFileEx/FindNextFile result...
Peter Collingbourne [Tue, 10 Oct 2017 22:19:46 +0000 (22:19 +0000)]
Support: Have directory_iterator::status() return FindFirstFileEx/FindNextFile results on Windows.

This allows clients to avoid an unnecessary fs::status() call on each
directory entry. Because the information returned by FindFirstFileEx
is a subset of the information returned by a regular status() call,
I needed to extract a base class from file_status that contains only
that information.

On my machine, this reduces the time required to enumerate a ThinLTO
cache directory containing 520k files from almost 4 minutes to less
than 2 seconds.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315378 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoMake the ELFFile constructor private.
Rafael Espindola [Tue, 10 Oct 2017 22:17:49 +0000 (22:17 +0000)]
Make the ELFFile constructor private.

With this all clients have to use the new create method which returns
an Expected.

Fixes a crash on invalid input.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315376 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[SparsePropagation] Let the Instruction work list hold Values.
Matthew Simpson [Tue, 10 Oct 2017 22:14:12 +0000 (22:14 +0000)]
[SparsePropagation] Let the Instruction work list hold Values.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315375 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[SparsePropagation] Use SmallVector for work lists
Matthew Simpson [Tue, 10 Oct 2017 21:33:48 +0000 (21:33 +0000)]
[SparsePropagation] Use SmallVector for work lists

This patch changes the work lists from std::vector to SmallVector, which
matches the SCCP implementation. This patch also updates some related comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315373 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[llvm-objcopy] Fix latent bug that allowed some Sections to be improperly cast to...
Jake Ehrlich [Tue, 10 Oct 2017 21:28:22 +0000 (21:28 +0000)]
[llvm-objcopy] Fix latent bug that allowed some Sections to be improperly cast to StringTableSections

If a Section had Type SHT_STRTAB (which could happen if you had a
.dynstr section) it was possible to cast Section to StringTableSection
and get away with any operation that was supported by SectionBase
without it being noticed. This change makes this bug easier to notice
and fixes it where it occurred. It also made me realize that there was
some duplication of efforts in the loop that calls ::initialize. These
issues are all fixed by this change.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315372 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoMake the ELFObjectFile constructor private.
Rafael Espindola [Tue, 10 Oct 2017 21:21:16 +0000 (21:21 +0000)]
Make the ELFObjectFile constructor private.

This forces every user to use the new create method that returns an
Expected. This in turn propagates better error messages.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315371 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoRevert "Classify llvm-cfi-verify."
Vlad Tsyrklevich [Tue, 10 Oct 2017 21:21:13 +0000 (21:21 +0000)]
Revert "Classify llvm-cfi-verify."

This reverts commit r315363. It has a simple build failure, but more
importantly I want to confirm that unit tests run in check-all to make
sure that they don't silently break in the future.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315370 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoUse the first instruction's count to estimate the funciton's entry frequency.
Dehao Chen [Tue, 10 Oct 2017 21:13:50 +0000 (21:13 +0000)]
Use the first instruction's count to estimate the funciton's entry frequency.

Summary: In the current implementation, we only have accurate profile count for standalone symbols. For inlined functions, we do not have entry count data because it's not available in LBR. In this patch, we use the first instruction's frequency to estimiate the function's entry count, especially for inlined functions. This may be inaccurate due to debug info in optimized code. However, this is a better estimate than the static 80/20 estimation we have in the current implementation.

Reviewers: tejohnson, davidxl

Reviewed By: tejohnson

Subscribers: sanjoy, llvm-commits, aprantl

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315369 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[x86] fix prefix typos for CHECK lines; NFC
Sanjay Patel [Tue, 10 Oct 2017 21:12:47 +0000 (21:12 +0000)]
[x86] fix prefix typos for CHECK lines; NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315368 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[X86] Fix some patterns that select VLX instructions, but were incorrectly also check...
Craig Topper [Tue, 10 Oct 2017 21:07:14 +0000 (21:07 +0000)]
[X86] Fix some patterns that select VLX instructions, but were incorrectly also checking presence of BWI instructions.

The EVEX->VEX pass probably obscures this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315365 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoSimplify. NFC.
Rafael Espindola [Tue, 10 Oct 2017 21:03:46 +0000 (21:03 +0000)]
Simplify. NFC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315364 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoClassify llvm-cfi-verify.
Vlad Tsyrklevich [Tue, 10 Oct 2017 20:59:08 +0000 (20:59 +0000)]
Classify llvm-cfi-verify.

Summary: Move llvm-cfi-verify into a class in preparation for CFI analysis to come.

Reviewers: vlad.tsyrklevich

Reviewed By: vlad.tsyrklevich

Subscribers: mgorny, llvm-commits, pcc, kcc

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315363 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[mips] Correct the instruction predicates for microMIPSr3
Simon Dardis [Tue, 10 Oct 2017 20:52:53 +0000 (20:52 +0000)]
[mips] Correct the instruction predicates for microMIPSr3

Rather than using the AdditionalPredicates mechanism to guard
the microMIPS instructions, use the existing predicates to properly
guard those instructions.

This also resolves a case where an instruction pattern was incorrectly
available for microMIPS32R6, which caused a register allocation failure
as the registers specified in the pattern were not available.

Reviewers: nitesh.jain, atanasyan

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315362 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoAMDGPU: Fix missing skipFunction calls
Matt Arsenault [Tue, 10 Oct 2017 20:48:36 +0000 (20:48 +0000)]
AMDGPU: Fix missing skipFunction calls

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315361 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoAMDGPU: Fix failure to select branch with optnone
Matt Arsenault [Tue, 10 Oct 2017 20:34:49 +0000 (20:34 +0000)]
AMDGPU: Fix failure to select branch with optnone

opt-bisect/optnone disable the AMDGPUUniformAnnotateValues pass.
The heuristic in the custom selector for brcond deferred the
branch uniformity check to the pattern, which would fail.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315360 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoConvert condition to an early exit (NFC).
Adrian Prantl [Tue, 10 Oct 2017 20:33:43 +0000 (20:33 +0000)]
Convert condition to an early exit (NFC).

<rdar://problem/34689604>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315359 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoAMDGPU: Fix incorrect selection of pseudo-branches
Matt Arsenault [Tue, 10 Oct 2017 20:22:07 +0000 (20:22 +0000)]
AMDGPU: Fix incorrect selection of pseudo-branches

These should only be used if the machine structurizer is enabled.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315357 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[SparseSolver] Rename getLatticeState to getExistingValueState (NFC)
Matthew Simpson [Tue, 10 Oct 2017 20:19:34 +0000 (20:19 +0000)]
[SparseSolver] Rename getLatticeState to getExistingValueState (NFC)

The new name clarifies the function's relation to getValueState. That is,
unlike getValueState, the state of a given value will not be initialized if
it's not already in the map.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315356 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoConvert two uses of ErrorOr to Expected.
Rafael Espindola [Tue, 10 Oct 2017 20:00:07 +0000 (20:00 +0000)]
Convert two uses of ErrorOr to Expected.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315354 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[AMDGPU] Lower enqueued blocks and generate runtime metadata
Yaxun Liu [Tue, 10 Oct 2017 19:39:48 +0000 (19:39 +0000)]
[AMDGPU] Lower enqueued blocks and generate runtime metadata

This patch adds a post-linking pass which replaces the function pointer of enqueued
block kernel with a global variable (runtime handle) and adds
runtime-handle attribute to the enqueued block kernel.

In LLVM CodeGen the runtime-handle metadata will be translated to
RuntimeHandle metadata in code object. Runtime allocates a global buffer
for each kernel with RuntimeHandel metadata and saves the kernel address
required for the AQL packet into the buffer. __enqueue_kernel function
in device library knows that the invoke function pointer in the block
literal is actually runtime handle and loads the kernel address from it
and puts it into AQL packet for dispatching.

This cannot be done in FE since FE cannot create a unique global variable
with external linkage across LLVM modules. The global variable with internal
linkage does not work since optimization passes will try to replace loads
of the global variable with its initialization value.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315352 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoSupport: On Windows, use CreateFileW to delete files in sys::fs::remove().
Peter Collingbourne [Tue, 10 Oct 2017 19:39:46 +0000 (19:39 +0000)]
Support: On Windows, use CreateFileW to delete files in sys::fs::remove().

This saves a call to stat().

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315351 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[opt-viewer] Don't Decode HTML bytes for Python 2
Roman Lebedev [Tue, 10 Oct 2017 19:34:15 +0000 (19:34 +0000)]
[opt-viewer] Don't Decode HTML bytes for Python 2

Summary:
D36624 added some python3 compatibility. But that fix has a problem..

With python2 (which is specified by `#!/usr/bin/env python2.7`), if the env variables do not specify the UTF8,
and the source file is UTF8 (contains non-ASCII symbols), then the `.decode('utf-8')` causes the following exception:
```
Reading YAML files...
Rendering HTML files...
        8 of 41Traceback (most recent call last):
  File "/build/llvm/tools/opt-viewer/opt-viewer.py", line 277, in <module>
    print_progress)
  File "/build/llvm/tools/opt-viewer/opt-viewer.py", line 213, in generate_report
    should_print_progress)
  File "/build/llvm/tools/opt-viewer/optpmap.py", line 45, in pmap
    result = map(_wrapped_func, func_and_args, *args, **kwargs)
  File "/build/llvm/tools/opt-viewer/optpmap.py", line 25, in _wrapped_func
    return func(argument)
  File "/build/llvm/tools/opt-viewer/opt-viewer.py", line 174, in _render_file
    SourceFileRenderer(source_dir, output_dir, filename).render(remarks)
  File "/build/llvm/tools/opt-viewer/opt-viewer.py", line 125, in render
    self.render_source_lines(self.source_stream, line_remarks)
  File "/build/llvm/tools/opt-viewer/opt-viewer.py", line 79, in render_source_lines
    </tr>'''.format(**locals()), file=self.stream)
UnicodeEncodeError: 'ascii' codec can't encode character u'\xf4' in position 47: ordinal not in range(128)
```
This is similar to https://bugs.llvm.org/show_bug.cgi?id=33548, which was fixed by https://reviews.llvm.org/D37661

Unlike that fix, here, *removing* `.decode('utf-8')` actually fixes it.

Since i assume that the original fix is needed, i simply made
that fix conditional, since for python2 it actually breaks things.

Reviewers: modocache, anemet

Reviewed By: anemet

Subscribers: fhahn, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315350 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoTry to make gcc happy.
Rafael Espindola [Tue, 10 Oct 2017 19:27:51 +0000 (19:27 +0000)]
Try to make gcc happy.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315349 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoReturn Expected from createRTDyldELFObject.
Rafael Espindola [Tue, 10 Oct 2017 19:14:30 +0000 (19:14 +0000)]
Return Expected from createRTDyldELFObject.

No functionality change, it just makes it easier to use Expected in
Object.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315348 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoSimplify. NFC.
Rafael Espindola [Tue, 10 Oct 2017 19:07:10 +0000 (19:07 +0000)]
Simplify. NFC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315347 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[llvm-objcopy] Add support for removing sections
Jake Ehrlich [Tue, 10 Oct 2017 18:47:09 +0000 (18:47 +0000)]
[llvm-objcopy] Add support for removing sections

This change adds support for removing sections using the -R field (as
GNU objcopy does as well). This change should let us add many helpful
tests and is a proper stepping stone for adding more general kinds of
stripping.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315346 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoRevert "temporary"
Jake Ehrlich [Tue, 10 Oct 2017 18:32:22 +0000 (18:32 +0000)]
Revert "temporary"

I forgot to add a proper commit message. I'm reverting this
to fix that.

This reverts commit r315344.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315345 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agotemporary
Jake Ehrlich [Tue, 10 Oct 2017 18:28:15 +0000 (18:28 +0000)]
temporary

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315344 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoDebug Info: Fix the SDLoc propagation for a DAGCombiner rule
Adrian Prantl [Tue, 10 Oct 2017 18:08:32 +0000 (18:08 +0000)]
Debug Info: Fix the SDLoc propagation for a DAGCombiner rule

This patch ensures that the rule:
  fold (zext (load x)) -> (zext (truncate (zextload x)))
propagates the SDLoc of the load to the zextload.

<rdar://problem/33755881>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315340 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[llvm-objdump] Disable leak checking on an llvm-objdump test
Francis Ricci [Tue, 10 Oct 2017 17:50:57 +0000 (17:50 +0000)]
[llvm-objdump] Disable leak checking on an llvm-objdump test

Summary:
This leak doesn't reproduce locally on macOS 10.12, but is causing
buildbot failures. Disable leak checking until it can be fixed.

Reviewers: sqlbyme, qcolombet, enderby, bruno

Reviewed By: bruno

Subscribers: bruno, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315337 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[WebAssembly] Update MCObjectWriter and associated interfaces after r315327
Derek Schuff [Tue, 10 Oct 2017 17:31:43 +0000 (17:31 +0000)]
[WebAssembly] Update MCObjectWriter and associated interfaces after r315327

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315335 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[lit] Only enable LSan on darwin when clang supports it
Francis Ricci [Tue, 10 Oct 2017 17:21:32 +0000 (17:21 +0000)]
[lit] Only enable LSan on darwin when clang supports it

Summary:
LSan on darwin doesn't exist on older versions of clang,
causing non-boostrapped sanitized buildbots to fail

Reviewers: kubamracek, qcolombet, sqlbyme, zturner, modocache

Reviewed By: zturner

Subscribers: llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315333 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[MC] Add another missing <memory> include left out of r315327.
Lang Hames [Tue, 10 Oct 2017 16:59:01 +0000 (16:59 +0000)]
[MC] Add another missing <memory> include left out of r315327.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315332 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[MC] Add a missing <memory> include left out of r315327.
Lang Hames [Tue, 10 Oct 2017 16:58:26 +0000 (16:58 +0000)]
[MC] Add a missing <memory> include left out of r315327.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315331 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoRevert "[SCCP] Propagate integer range info for parameters in IPSCCP."
Bruno Cardoso Lopes [Tue, 10 Oct 2017 16:37:57 +0000 (16:37 +0000)]
Revert "[SCCP] Propagate integer range info for parameters in IPSCCP."

This reverts commit r315288. This is part of fixing segfault introduced
in:

http://green.lab.llvm.org/green/job/clang-stage2-configure-Rlto/21675/

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315329 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoRevert "[SCCP] Fix mem-sanitizer failure introduced by r315288."
Bruno Cardoso Lopes [Tue, 10 Oct 2017 16:37:51 +0000 (16:37 +0000)]
Revert "[SCCP] Fix mem-sanitizer failure introduced by r315288."

This reverts commit r315294. Part of fixing seg fault introduced in:
http://green.lab.llvm.org/green/job/clang-stage2-configure-Rlto/21675/

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315328 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[MC] Thread unique_ptr<MCObjectWriter> through the create.*ObjectWriter
Lang Hames [Tue, 10 Oct 2017 16:28:07 +0000 (16:28 +0000)]
[MC] Thread unique_ptr<MCObjectWriter> through the create.*ObjectWriter
functions.

This makes the ownership of the resulting MCObjectWriter clear, and allows us
to remove one instance of MCObjectStreamer's bizarre "holding ownership via
someone else's reference" trick.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315327 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[WebAssembly] Narrow the scope of WebAssemblyFixFunctionBitcasts
Jacob Gravelle [Tue, 10 Oct 2017 16:20:18 +0000 (16:20 +0000)]
[WebAssembly] Narrow the scope of WebAssemblyFixFunctionBitcasts

Summary:
The pass to fix function bitcasts generates thunks for functions that
are called directly with a mismatching signature. It was also generating
thunks in cases where the function was address-taken, causing aliasing
problems in otherwise valid cases.
This patch tightens the restrictions for when the pass runs.

Reviewers: sunfish, dschuff

Subscribers: jfb, sbc100, llvm-commits, aheejin

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315326 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[X86][AVX512] Regenerate element insertion/extraction tests
Simon Pilgrim [Tue, 10 Oct 2017 15:58:54 +0000 (15:58 +0000)]
[X86][AVX512] Regenerate element insertion/extraction tests

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315322 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[TableGen] Convert VarDef to range_loop. NFC.
Javed Absar [Tue, 10 Oct 2017 15:58:45 +0000 (15:58 +0000)]
[TableGen] Convert VarDef to range_loop. NFC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315321 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[mips] Duplicate the reciprocal instruction definitions for FP32
Simon Dardis [Tue, 10 Oct 2017 14:41:11 +0000 (14:41 +0000)]
[mips] Duplicate the reciprocal instruction definitions for FP32

Add instruction definitions for FP32 mode for recip.d and rsqrt.d.

Previously these instructions were only defined when targeting the
full 64-bit FPU model but were not guarded properly.

Reviewers: nitesh.jain, atanasyan

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315318 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoRe-land "[llvm-dwarfdump] Print type names in DW_AT_type DIEs"
Jonas Devlieghere [Tue, 10 Oct 2017 14:15:25 +0000 (14:15 +0000)]
Re-land "[llvm-dwarfdump] Print type names in DW_AT_type DIEs"

This patch adds printing for DW_AT_type DIEs like it is already the case
for DW_AT_specification DIEs. This is a rather naive approach and only a
start. We should have pretty printers for different languages.

Recommit after being reverted in r315299.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315316 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[PowerPC] Add missing record form instructions to the P9 Scheduling Model
Stefan Pintilie [Tue, 10 Oct 2017 13:45:35 +0000 (13:45 +0000)]
[PowerPC] Add missing record form instructions to the P9 Scheduling Model

A number of record form instructions were missing from the P9 scheduling
model. Added those instructions and marked the P9 model as complete.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315313 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[x86] add tests for insertelement; NFC
Sanjay Patel [Tue, 10 Oct 2017 13:45:25 +0000 (13:45 +0000)]
[x86] add tests for insertelement; NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315312 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoafter fixing the i386 case
Uriel Korach [Tue, 10 Oct 2017 13:43:09 +0000 (13:43 +0000)]
after fixing the i386 case

Change-Id: If6fe0b6ec01f111115fb734fe31c0e152dbc165f

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315311 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[mips] Partially fix PR34391
Simon Dardis [Tue, 10 Oct 2017 13:34:45 +0000 (13:34 +0000)]
[mips] Partially fix PR34391

Previously, the parsing of the 'subu $reg, ($reg,) imm' relied on a parser
which also rendered the operand to the instruction. In some cases the
general parser could construct an MCExpr which was not a MCConstantExpr
which MipsAsmParser was expecting.

Address this by altering the special handling to cope with unexpected inputs
and fine-tune the handling of cases where an register name that is not
available in the current ABI is regarded as not a match for the custom parser
but also not as an outright error.

Also enforces the binutils restriction that only constants are accepted.

This partially resolves PR34391.

Thanks to Ed Maste for reporting the issue!

Reviewers: nitesh.jain, arichardson

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315310 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[DAGCombine] Fix for shuffle to vector extend for non power 2 vectors
David Stuttard [Tue, 10 Oct 2017 12:45:45 +0000 (12:45 +0000)]
[DAGCombine] Fix for shuffle to vector extend for non power 2 vectors

Summary:
See https://llvm.org/PR33743 for more details

It seems that for non-power of 2 vector sizes, the algorithm can produce
non-matching sizes for input and result causing an assert.

This usually isn't a problem as the isAnyExtend check will weed these out, but
in some cases (most often with lots of undefined values for the mask indices) it
can pass this check for non power of 2 vectors.

Adding in an extra check that ensures that bit size will match for the result
and input (as required)

Subscribers: nhaehnle

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315307 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[ARM, Asm] Harden GNU LDRD/STRD aliases against invalid inputs
Oliver Stannard [Tue, 10 Oct 2017 12:38:22 +0000 (12:38 +0000)]
[ARM, Asm] Harden GNU LDRD/STRD aliases against invalid inputs

Previously, the code that implemented the GNU assembler aliases for the
LDRD and STRD instructions (where the second register is omitted)
assumed that the input was a valid instruction. This caused assertion
failures for every example in ldrd-strd-gnu-bad-inst.s.

This improves this code so that it bails out if the instruction is not
in the expected format, the check bails out, and the asm parser is run
on the unmodified instruction.

It also relaxes the alias on thumb targets, so that unaligned pairs of
registers can be used. The restriction that Rt must be even-numbered
only applies to the ARM versions of these instructions.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315305 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[ARM, Asm] Add diagnostics for floating-point register operands
Oliver Stannard [Tue, 10 Oct 2017 12:35:09 +0000 (12:35 +0000)]
[ARM, Asm] Add diagnostics for floating-point register operands

This adds diagnostic strings for the ARM floating-point register
classes, which will be used when these classes are expected by the
assembler, but the provided operand is not valid.

One of these, DPR, requires C++ code to select the correct error
message, as that class contains different registers depending on the
FPU. The rest can all have their diagnostic strings stored in the
tablegen decription of them.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315304 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[ARM, Asm] Add diagnostics for general-purpose register operands
Oliver Stannard [Tue, 10 Oct 2017 12:31:53 +0000 (12:31 +0000)]
[ARM, Asm] Add diagnostics for general-purpose register operands

This adds diagnostic strings for the ARM general-purpose register
classes, which will be used when these classes are expected by the
assembler, but the provided operand is not valid.

One of these, rGPR, requires C++ code to select the correct error
message, as that class contains different registers in pre-v8 and v8
targets. The rest can all have their diagnostic strings stored in the
tablegen description of them.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315303 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoAMDGPU: Split MUBUF offset into aligned components
Nicolai Haehnle [Tue, 10 Oct 2017 12:22:23 +0000 (12:22 +0000)]
AMDGPU: Split MUBUF offset into aligned components

Summary:
Atomic buffer operations do not work (and trap on gfx9) when the
components are unaligned, even if their sum is aligned.

Previously, we generated an offset of 4156 without an SGPR by
splitting it as 4095 + 61 (immediate + inline constant). The
highest offset for which we can do this correctly is 4156 = 4092 + 64.

Fixes dEQP-GLES31.functional.ssbo.atomic.*

Reviewers: arsenm

Subscribers: kzhuravl, wdng, yaxunl, dstuttard, tpr, llvm-commits, t-tye

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315302 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoRevert "[llvm-dwarfdump] Print type names in DW_AT_type DIEs"
Jonas Devlieghere [Tue, 10 Oct 2017 11:49:56 +0000 (11:49 +0000)]
Revert "[llvm-dwarfdump] Print type names in DW_AT_type DIEs"

This reverts commit r315297.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315299 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[llvm-dwarfdump] Print type names in DW_AT_type DIEs
Jonas Devlieghere [Tue, 10 Oct 2017 11:24:41 +0000 (11:24 +0000)]
[llvm-dwarfdump] Print type names in DW_AT_type DIEs

This patch adds printing for DW_AT_type DIEs like it is already the case
for DW_AT_specification DIEs. This is a rather naive approach and only a
start. We should have pretty printers for different languages.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315297 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[AsmParser] Add DiagnosticString to register classes in tablegen
Oliver Stannard [Tue, 10 Oct 2017 11:00:40 +0000 (11:00 +0000)]
[AsmParser] Add DiagnosticString to register classes in tablegen

This allows a DiagnosticType and/or DiagnosticString to be associated
with a RegisterClass in tablegen, so that we can emit diagnostics in the
assembler when a register operand is incorrect.

DiagnosticType creates a predictable enum value, which gets returned as
the error code when an operand does not match, and can be used by the
assembly parser to map to a user-facing diagnostic. DiagnosticString
creates an anonymous enum value (currently based on the tablegen class
name), and a function to map from enum values to strings will be
generated. Both of these work the same was as they do for AsmOperand.

This isn't used by any targets yet, but has one (positive) side-effect.
It improves the diagnostic codes returned by validateOperandClass - we
always want to emit the diagnostic that relates to the expected operand
class, but this wasn't always being done when the expected and actual
classes were completely different (token/register/custom). This causes a
few AArch64 diagnostics to be improved, as Match_InvalidOperand was
being returned instead of a specific diagnostic type.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315295 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[SCCP] Fix mem-sanitizer failure introduced by r315288.
Florian Hahn [Tue, 10 Oct 2017 10:33:45 +0000 (10:33 +0000)]
[SCCP] Fix mem-sanitizer failure introduced by r315288.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315294 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[X86][SKYLAKE] Update regression test to differentiate between HASWELL and SKYLAKE...
Gadi Haber [Tue, 10 Oct 2017 09:53:18 +0000 (09:53 +0000)]
[X86][SKYLAKE] Update regression test to differentiate between HASWELL and SKYLAKE scheduling.<NFC>

NFC.
Updated 6 regression tests to differentiate between HASWELL and SKYLAKE scheduling information.

The fix is in preparation of a patch to update the information of the Skylake Client scheduling to include the appropriate load and store latencies.

Reviewers: zvi, RKSimon
Differential Revision: https://reviews.llvm.org/D38685

Change-Id: Ifc6b98d9eaf266913698f24c766fd994fc977555

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315291 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[SCCP] Propagate integer range info for parameters in IPSCCP.
Florian Hahn [Tue, 10 Oct 2017 09:32:38 +0000 (09:32 +0000)]
[SCCP] Propagate integer range info for parameters in IPSCCP.

Summary:
This updates the SCCP solver to use of the ValueElement lattice for
parameters, which provides integer range information. The range
information is used to remove unneeded icmp instructions.

For the following function, f() can be optimized to `ret i32 2` with
this change

  source_filename = "sccp.c"
  target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
  target triple = "x86_64-unknown-linux-gnu"

  ; Function Attrs: norecurse nounwind readnone uwtable
  define i32 @main() local_unnamed_addr #0 {
  entry:
    %call = tail call fastcc i32 @f(i32 1)
    %call1 = tail call fastcc i32 @f(i32 47)
    %add3 = add nsw i32 %call, %call1
    ret i32 %add3
  }

  ; Function Attrs: noinline norecurse nounwind readnone uwtable
  define internal fastcc i32 @f(i32 %x) unnamed_addr #1 {
  entry:
    %c1 = icmp sle i32 %x, 100

    %cmp = icmp sgt i32 %x, 300
    %. = select i1 %cmp, i32 1, i32 2
    ret i32 %.
  }

  attributes #1 = { noinline }

Reviewers: davide, sanjoy, efriedma, dberlin

Reviewed By: davide, dberlin

Subscribers: mcrosier, gberry, mssimpso, dberlin, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315288 91177308-0d34-0410-b5e6-96231b3b80d8