OSDN Git Service

android-x86/external-llvm.git
6 years agoSubtarget support for parameterized register class information
Krzysztof Parzyszek [Thu, 14 Sep 2017 20:44:20 +0000 (20:44 +0000)]
Subtarget support for parameterized register class information

Implement "checkFeatures" and emitting HW mode check code.

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

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

6 years ago[TargetTransformInfo] Detect 0 latency instructions
Guozhi Wei [Thu, 14 Sep 2017 19:20:02 +0000 (19:20 +0000)]
[TargetTransformInfo] Detect 0 latency instructions

For instructions that unlikely generate machine instructions, they should also have 0 latency.

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

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

6 years agoRemove usages of deprecated std::unary_function and std::binary_function.
Benjamin Kramer [Thu, 14 Sep 2017 18:33:25 +0000 (18:33 +0000)]
Remove usages of deprecated std::unary_function and std::binary_function.

These are removed in C++17. We still have some users of
unary_function::argument_type, so just spell that typedef out. No
functionality change intended.

Note that many of the argument types are actually wrong :)

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

6 years agoAMDGPU: Fix assert on alloca of array of struct
Matt Arsenault [Thu, 14 Sep 2017 18:02:29 +0000 (18:02 +0000)]
AMDGPU: Fix assert on alloca of array of struct

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

6 years ago[bpf] Fix test to always use little endian.
Simon Dardis [Thu, 14 Sep 2017 17:55:50 +0000 (17:55 +0000)]
[bpf] Fix test to always use little endian.

r313055 broke the big endian buildbots as the CHECK lines contained little
endian data but -triple bpf uses the host endian.

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

6 years ago[test] Fix TestDWARFDieRangeInfoIntersects
Jonas Devlieghere [Thu, 14 Sep 2017 17:46:23 +0000 (17:46 +0000)]
[test] Fix TestDWARFDieRangeInfoIntersects

Fixes heap buffer overflow triggered in DWARF verifier, detected by ASAN.

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

6 years agoAMDGPU: Stop modifying SP in call sequences
Matt Arsenault [Thu, 14 Sep 2017 17:37:40 +0000 (17:37 +0000)]
AMDGPU: Stop modifying SP in call sequences

Because the stack growth direction and addressing is done
in the same direction, modifying SP at the beginning of the
call sequence was incorrect. If we had a stack passed argument,
we would end up skipping that number of bytes before pushing
arguments, leaving unused/inconsistent space.

The callee creates fixed stack objects in its frame, so
the space necessary for these is already logically allocated
in the callee, so we just let the callee increment SP if
it really requires it.

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

6 years agoInvoke GetInlineCost for legality check before inline functions in SampleProfileLoader.
Dehao Chen [Thu, 14 Sep 2017 17:29:56 +0000 (17:29 +0000)]
Invoke GetInlineCost for legality check before inline functions in SampleProfileLoader.

Summary: SampleProfileLoader inlines hot functions if it is inlined in the profiled binary. However, the inline needs to be guarded by legality check, otherwise it could lead to correctness issues.

Reviewers: eraman, davidxl

Reviewed By: eraman

Subscribers: vitalybuka, sanjoy, llvm-commits

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

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

6 years ago[mips] Implement the 'dext' aliases and it's disassembly alias.
Simon Dardis [Thu, 14 Sep 2017 17:27:53 +0000 (17:27 +0000)]
[mips] Implement the 'dext' aliases and it's disassembly alias.

The other members of the dext family of instructions (dextm, dextu) are
traditionally handled by the assembler selecting the right variant of
'dext' depending on the values of the position and size operands.

When these instructions are disassembled, rather than reporting the
actual instruction, an equivalent aliased form of 'dext' is generated
and is reported. This is to mimic the behaviour of binutils.

Reviewers: slthakur, nitesh.jain, atanasyan

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

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

6 years agoAdapt more testcases for llvm-dwarfdump changes.
Adrian Prantl [Thu, 14 Sep 2017 17:27:03 +0000 (17:27 +0000)]
Adapt more testcases for llvm-dwarfdump changes.

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

6 years agoAMDGPU: Make frame register caller preserved
Matt Arsenault [Thu, 14 Sep 2017 17:14:57 +0000 (17:14 +0000)]
AMDGPU: Make frame register caller preserved

Using SplitCSR for the frame register was very broken. Often
the copies in the prolog and epilog were optimized out, in addition
to them being inserted after the true prolog where the FP
was clobbered.

I have a hacky solution which works that continues to use
split CSR, but for now this is simpler and will get to working
programs.

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

6 years agoSilence warning about unused variable in release build
Krzysztof Parzyszek [Thu, 14 Sep 2017 17:08:26 +0000 (17:08 +0000)]
Silence warning about unused variable in release build

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

6 years agollvm-dwarfdump: support dumping static archives.
Adrian Prantl [Thu, 14 Sep 2017 17:01:53 +0000 (17:01 +0000)]
llvm-dwarfdump: support dumping static archives.

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

6 years agoTableGen support for parameterized register class information
Krzysztof Parzyszek [Thu, 14 Sep 2017 16:56:21 +0000 (16:56 +0000)]
TableGen support for parameterized register class information

This replaces TableGen's type inference to operate on parameterized
types instead of MVTs, and as a consequence, some interfaces have
changed:
- Uses of MVTs are replaced by ValueTypeByHwMode.
- EEVT::TypeSet is replaced by TypeSetByHwMode.

This affects the way that types and type sets are printed, and the
tests relying on that have been updated.

There are certain users of the inferred types outside of TableGen
itself, namely FastISel and GlobalISel. For those users, the way
that the types are accessed have changed. For typical scenarios,
these replacements can be used:
- TreePatternNode::getType(ResNo) -> getSimpleType(ResNo)
- TreePatternNode::hasTypeSet(ResNo) -> hasConcreteType(ResNo)
- TypeSet::isConcrete -> TypeSetByHwMode::isValueTypeByHwMode(false)

For more information, please refer to the review page.

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

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

6 years ago[lit] Force site configs to be run before source-tree configs
Zachary Turner [Thu, 14 Sep 2017 16:47:58 +0000 (16:47 +0000)]
[lit] Force site configs to be run before source-tree configs

This patch simplifies LLVM's lit infrastructure by enforcing an ordering
that a site config is always run before a source-tree config.

A significant amount of the complexity from lit config files arises from
the fact that inside of a source-tree config file, we don't yet know if
the site config has been run.  However it is *always* required to run
a site config first, because it passes various variables down through
CMake that the main config depends on.  As a result, every config
file has to do a bunch of magic to try to reverse-engineer the location
of the site config file if they detect (heuristically) that the site
config file has not yet been run.

This patch solves the problem by emitting a mapping from source tree
config file to binary tree site config file in llvm-lit.py. Then, during
discovery when we find a config file, we check to see if we have a
target mapping for it, and if so we use that instead.

This mechanism is generic enough that it does not affect external users
of lit. They will just not have a config mapping defined, and everything
will work as normal.

On the other hand, for us it allows us to make many simplifications:

* We are guaranteed that a site config will be executed first
* Inside of a main config, we no longer have to assume that attributes
  might not be present and use getattr everywhere.
* We no longer have to pass parameters such as --param llvm_site_config=<path>
  on the command line.
* It is future-proof, meaning you don't have to edit llvm-lit.in to add
  support for new projects.
* All of the duplicated logic of trying various fallback mechanisms of
  finding a site config from the main config are now gone.

One potentially noteworthy thing that was required to implement this
change is that whereas the ninja check targets previously used the first
method to spawn lit, they now use the second. In particular, you can no
longer run lit.py against the source tree while specifying the various
`foo_site_config=<path>` parameters.  Instead, you need to run
llvm-lit.py.

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

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

6 years ago[tblgen] Remove uses of std::ptr_fun, it's removed in C++17.
Benjamin Kramer [Thu, 14 Sep 2017 16:30:31 +0000 (16:30 +0000)]
[tblgen] Remove uses of std::ptr_fun, it's removed in C++17.

No functionality change intended.

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

6 years ago[IfConversion] More simple, correct dead/kill liveness handling
Krzysztof Parzyszek [Thu, 14 Sep 2017 15:53:11 +0000 (15:53 +0000)]
[IfConversion] More simple, correct dead/kill liveness handling

Patch by Jesper Antonsson.

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

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

6 years ago[mips] Implement the 'dins' aliases.
Simon Dardis [Thu, 14 Sep 2017 15:17:50 +0000 (15:17 +0000)]
[mips] Implement the 'dins' aliases.

Traditionally GAS has provided automatic selection between dins, dinsm and
dinsu. Binutils also disassembles all instructions in that family as 'dins'
rather than the actual instruction.

Reviewers: slthakur

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

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

6 years ago[InstSimplify] fold sdiv/srem based on compare of dividend and divisor
Sanjay Patel [Thu, 14 Sep 2017 14:59:07 +0000 (14:59 +0000)]
[InstSimplify] fold sdiv/srem based on compare of dividend and divisor

This should bring signed div/rem analysis up to the same level as unsigned.
We use icmp simplification to determine when the divisor is known greater than the dividend.

Each positive test is followed by a negative test to show that we're not overstepping the boundaries of the known bits.
There are extra tests for the signed-min-value special cases.

Alive proofs:
http://rise4fun.com/Alive/WI5

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

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

6 years agoAdd newline to end of test file. NFC.
Chad Rosier [Thu, 14 Sep 2017 14:48:59 +0000 (14:48 +0000)]
Add newline to end of test file. NFC.

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

6 years agoTest commit.
Aleksandar Beserminji [Thu, 14 Sep 2017 14:34:04 +0000 (14:34 +0000)]
Test commit.

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

6 years ago[InstSimplify] clean up div/rem handling; NFCI
Sanjay Patel [Thu, 14 Sep 2017 14:09:11 +0000 (14:09 +0000)]
[InstSimplify] clean up div/rem handling; NFCI

The idea to make an 'isDivZero' helper was suggested for the signed case in D37713:
https://reviews.llvm.org/D37713

This clean-up makes it clear that D37713 is just filling the gap for signed div/rem,
removes unnecessary code, and allows us to remove a bit of duplicated code from the
planned improvement in D37713.

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

6 years ago[X86] Regenerate test. NFCI.
Simon Pilgrim [Thu, 14 Sep 2017 13:00:27 +0000 (13:00 +0000)]
[X86] Regenerate test. NFCI.

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

6 years agoRegenerate test (broadcast comment). NFCI.
Simon Pilgrim [Thu, 14 Sep 2017 12:41:19 +0000 (12:41 +0000)]
Regenerate test (broadcast comment). NFCI.

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

6 years ago[Hexagon] Make getMemAccessSize return size in bytes
Krzysztof Parzyszek [Thu, 14 Sep 2017 12:06:40 +0000 (12:06 +0000)]
[Hexagon] Make getMemAccessSize return size in bytes

It used to return the actual field value from the instruction descriptor.
There is no reason for that, that value is not interesting in any way and
the specifics of its encoding in the descriptor should not be exposed.

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

6 years ago[X86] When applying the shuffle-to-zero-extend transformation on floating point,...
Ayman Musa [Thu, 14 Sep 2017 12:06:38 +0000 (12:06 +0000)]
[X86] When applying the shuffle-to-zero-extend transformation on floating point, bitcast to integer first.

Fix issue described in PR34577.

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

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

6 years ago[dwarfdump] Add DWARF verifiers for address ranges
Jonas Devlieghere [Thu, 14 Sep 2017 11:33:42 +0000 (11:33 +0000)]
[dwarfdump] Add DWARF verifiers for address ranges

This patch started as an attempt to rebase Greg's differential (D32821).
The result is both quite similar and different at the same time. It adds
the following checks:

 - Verify that all address ranges in a DIE are valid.
 - Verify that no ranges within the DIE overlap.
 - Verify that no ranges overlap with the ranges of a sibling.
 - Verify that children are completely contained in its (direct)
   parent's address range. (unless both are subprograms)

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

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

6 years ago[mips] Pick the right variant of DINS upfront and enable target instruction verification
Simon Dardis [Thu, 14 Sep 2017 10:58:00 +0000 (10:58 +0000)]
[mips] Pick the right variant of DINS upfront and enable target instruction verification

This patch complements D16810 "[mips] Make isel select the correct DEXT variant
up front.". Now ISel picks the right variant of DINS, so now there is no need
to replace DINS with the appropriate variant during
MipsMCCodeEmitter::encodeInstruction().

This patch also enables target specific instruction verification for ins, dins,
dinsm, dinsu, ext, dext, dextm, dextu. These instructions have constraints that
are checked when generating MipsISD::Ins and MipsISD::Ext nodes, but these
constraints are not checked during instruction selection. Adding machine
verification should catch outstanding cases.

Finally, correct a bug that instruction verification uncovered, where the
position operand of a DINSU generated during lowering was being silently
and accidently corrected to the correct value.

Reviewers: slthakur

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

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

6 years agoRevert "[dwarfdump] Add DWARF verifiers for address ranges"
Jonas Devlieghere [Thu, 14 Sep 2017 10:49:15 +0000 (10:49 +0000)]
Revert "[dwarfdump] Add DWARF verifiers for address ranges"

This reverts commit r313250.

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

6 years ago[DAGCombine] (shl (or x, c1), c2) -> (or (shl x, c2), c1 << c2)
Simon Pilgrim [Thu, 14 Sep 2017 10:38:30 +0000 (10:38 +0000)]
[DAGCombine] (shl (or x, c1), c2) -> (or (shl x, c2), c1 << c2)

We already have a combine for this pattern when the input to shl is add, so we just need to enable the transformation when the input is or.

Original patch by @tstellar

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

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

6 years ago[dwarfdump] Add DWARF verifiers for address ranges
Jonas Devlieghere [Thu, 14 Sep 2017 10:38:18 +0000 (10:38 +0000)]
[dwarfdump] Add DWARF verifiers for address ranges

This patch started as an attempt to rebase Greg's differential (D32821).
The result is both quite similar and different at the same time. It adds
the following checks:

 - Verify that all address ranges in a DIE are valid.
 - Verify that no ranges within the DIE overlap.
 - Verify that no ranges overlap with the ranges of a sibling.
 - Verify that children are completely contained in its (direct)
   parent's address range. (unless both are subprograms)

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

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

6 years agoFix line endings. NFCI.
Simon Pilgrim [Thu, 14 Sep 2017 10:30:54 +0000 (10:30 +0000)]
Fix line endings. NFCI.

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

6 years agoFix line endings. NFCI.
Simon Pilgrim [Thu, 14 Sep 2017 10:30:22 +0000 (10:30 +0000)]
Fix line endings. NFCI.

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

6 years ago[SelectionDAG] ComputeNumSignBits - cleanup ROTL/ROTR wrapping to match DAGCombine...
Simon Pilgrim [Thu, 14 Sep 2017 10:28:01 +0000 (10:28 +0000)]
[SelectionDAG] ComputeNumSignBits - cleanup ROTL/ROTR wrapping to match DAGCombine etc.

Use RotAmt.urem(VTBits) instead of AND(RotAmt, VTBits - 1)

TBH I don't expect non-power-of-2 types to be created, but it makes the logic clearer and matches what we do in other rotation combines.

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

6 years ago[XRay][DebugInfo] Update the test to use a specific target
Dean Michael Berris [Thu, 14 Sep 2017 09:58:25 +0000 (09:58 +0000)]
[XRay][DebugInfo] Update the test to use a specific target

Follow-up to D37791.

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

6 years ago[PM/CGSCC] Teach the CGSCC pass manager components to gracefully handle
Chandler Carruth [Thu, 14 Sep 2017 08:33:57 +0000 (08:33 +0000)]
[PM/CGSCC] Teach the CGSCC pass manager components to gracefully handle
invalidated SCCs even when we do not have an updated SCC to redirect
towards.

This comes up in a fairly subtle and surprising circumstance: we need to
have a connected but internal node in the call graph which later becomes
a disconnected island, and then gets deleted. All of this needs to
happen mid-CGSCC walk. Because it is disconnected, we have no way of
computing a new "current" SCC when it gets deleted. Instead, we need to
explicitly check for a deleted "current" SCC and bail out of the current
CGSCC step. This will bubble all the way up to the post-order walk and
then resume correctly.

I've included minimal tests for this bug. The specific behavior
matches something we've seen in the wild with the new PM combined with
ThinLTO and sample PGO, but I've not yet confirmed whether this is the
only issue there.

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

6 years ago[XRay][DebugInfo] Remove -debug-compile from test invocation of llc
Dean Michael Berris [Thu, 14 Sep 2017 07:54:54 +0000 (07:54 +0000)]
[XRay][DebugInfo] Remove -debug-compile from test invocation of llc

This breaks bootstrap builds, and is actually unnecessary. Tested
locally and it seems we can remove -debug-comile just fine.

Follow-up to D37791.

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

6 years ago[LV] Fix maximum legal VF calculation
Alon Kom [Thu, 14 Sep 2017 07:40:02 +0000 (07:40 +0000)]
[LV] Fix maximum legal VF calculation

This patch fixes pr34283, which exposed that the computation of
maximum legal width for vectorization was wrong, because it relied
on MaxInterleaveFactor to obtain the maximum stride used in the loop,
however not all strided accesses in the loop have an interleave-group
associated with them.
Instead of recording the maximum stride in the loop, which can be over
conservative (e.g. if the access with the maximum stride is not involved
in the dependence limitation), this patch tracks the actual maximum legal
width imposed by accesses that are involved in dependencies.

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

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

6 years agoRecommit r313234 "[llvm-readobj] - Refactor printGroupSections methods."
George Rimar [Thu, 14 Sep 2017 07:32:52 +0000 (07:32 +0000)]
Recommit r313234 "[llvm-readobj] - Refactor printGroupSections methods."

With fix in formatting for GNU style output.

Original commit message:
This refactors GNUStyle<ELFT>::printGroupSections and
LLVMStyle<ELFT>::printGroupSections to split out all
duplicated code.

After the change these methods just prints the data provided
by introduced getGroups in a corresponding LLVM/GNU format.

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

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

6 years agoRevert r313234 "[llvm-readobj] - Refactor printGroupSections methods."
George Rimar [Thu, 14 Sep 2017 07:26:14 +0000 (07:26 +0000)]
Revert r313234 "[llvm-readobj] - Refactor printGroupSections methods."

It broke BB.

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

6 years ago[llvm-readobj] - Refactor printGroupSections methods.
George Rimar [Thu, 14 Sep 2017 07:17:04 +0000 (07:17 +0000)]
[llvm-readobj] - Refactor printGroupSections methods.

This refactors GNUStyle<ELFT>::printGroupSections and
LLVMStyle<ELFT>::printGroupSections to split out all
duplicated code.

After the change these methods just prints the data provided
by introduced getGroups in a corresponding LLVM/GNU format.

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

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

6 years ago[XRay][CodeGen] Use the current function symbol as the associated symbol for the...
Dean Michael Berris [Thu, 14 Sep 2017 07:08:23 +0000 (07:08 +0000)]
[XRay][CodeGen] Use the current function symbol as the associated symbol for the instrumentation map

Summary:
XRay had been assuming that the previous section is the "text" section
of the function when lowering the instrumentation map. Unfortunately
this is not a safe assumption, because we may be coming from lowering
debug type information for the function being lowered.

This fixes an issue with combining -gsplit-dwarf, -generate-type-units,
-debug-compile and -fxray-instrument for sole member functions. When the
split dwarf section is stripped, we're left with references from the
xray_instr_map to the debug section. The change now uses the function's
symbol instead of the previous section's start symbol.

We found the bug while attempting to strip the split debug sections off
an XRay-instrumented object file, which had a peculiar edge-case for
single-function classes where the single function is being lowered.
Because XRay had assocaited the instrumentation map for a function to
the debug types section instead of the function's section, the objcopy
call will fail due to the misplaced reference from the xray_instr_map
section.

Reviewers: pcc, dblaikie, echristo

Subscribers: llvm-commits, aprantl

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

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

6 years ago[mips] Recognise the triple used by Debian for MIPS n32 ABI
Simon Atanasyan [Thu, 14 Sep 2017 06:50:05 +0000 (06:50 +0000)]
[mips] Recognise the triple used by Debian for MIPS n32 ABI

Triples like mips64-linux-gnuabin32 are documented in this article:
https://wiki.debian.org/Multiarch/Tuples

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

6 years agoRevert "Invoke GetInlineCost for legality check before inline functions in SampleProf...
Vitaly Buka [Thu, 14 Sep 2017 05:40:33 +0000 (05:40 +0000)]
Revert "Invoke GetInlineCost for legality check before inline functions in SampleProfileLoader."

Patch introduced uninitialized value.

This reverts commit r313195.

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

6 years agoReland r313157, "ThinLTO: Correctly follow aliasee references when dead stripping...
Peter Collingbourne [Thu, 14 Sep 2017 05:02:59 +0000 (05:02 +0000)]
Reland r313157, "ThinLTO: Correctly follow aliasee references when dead stripping." which was reverted in r313222.

This reland includes a fix for the LowerTypeTests pass so that it
looks past aliases when determining which type identifiers are live.

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

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

6 years ago[SLPVectorizer] Prefer auto over explicit type for VL0, NFCI.
Dinar Temirbulatov [Thu, 14 Sep 2017 04:28:35 +0000 (04:28 +0000)]
[SLPVectorizer] Prefer auto over explicit type for VL0, NFCI.

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

6 years agoRevert r313157 "ThinLTO: Correctly follow aliasee references when dead stripping."
Hans Wennborg [Thu, 14 Sep 2017 00:40:14 +0000 (00:40 +0000)]
Revert r313157 "ThinLTO: Correctly follow aliasee references when dead stripping."

This broke Chromium's CFI build; see crbug.com/765004.

> We were previously handling aliases during dead stripping by adding
> the aliased global's "original name" GUID to the worklist. This will
> lead to incorrect behaviour if the global has local linkage because
> the original name GUID will not correspond to the global's GUID in
> the summary.
>
> Because an alias is just another name for the global that it
> references, there is no need to mark the referenced global as used,
> or to follow references from any other copies of the global. So all
> we need to do is to follow references from the aliasee's summary
> instead of the alias.
>
> Differential Revision: https://reviews.llvm.org/D37789

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

6 years agoAdd optional profile counts to block frequency dump.
Hiroshi Yamauchi [Thu, 14 Sep 2017 00:20:25 +0000 (00:20 +0000)]
Add optional profile counts to block frequency dump.

Summary:
Print profile counts as the third value in addition to the existing 'float' and
the 'int' values in the textual block frequency dump, if available.

Reviewers: davidxl

Reviewed By: davidxl

Subscribers: llvm-commits

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

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

6 years agoMove llvm/test/CodeGen/X86/clear-liverange-spillreg.mir to SystemZ. It was in wrong...
NAKAMURA Takumi [Thu, 14 Sep 2017 00:03:23 +0000 (00:03 +0000)]
Move llvm/test/CodeGen/X86/clear-liverange-spillreg.mir to SystemZ. It was in wrong place.

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

6 years agoAMDGPU: Don't spill SP reg like a normal CSR
Matt Arsenault [Wed, 13 Sep 2017 23:47:01 +0000 (23:47 +0000)]
AMDGPU: Don't spill SP reg like a normal CSR

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

6 years ago[codeview] Fold FIXME into comment, there's nothing to do. NFC
Reid Kleckner [Wed, 13 Sep 2017 23:30:01 +0000 (23:30 +0000)]
[codeview] Fold FIXME into comment, there's nothing to do. NFC

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

6 years agoRevert r312719 "[MachineCombiner] Update instruction depths incrementally for large...
Hans Wennborg [Wed, 13 Sep 2017 23:23:09 +0000 (23:23 +0000)]
Revert r312719 "[MachineCombiner] Update instruction depths incrementally for large BBs."

This caused PR34596.

> [MachineCombiner] Update instruction depths incrementally for large BBs.
>
> Summary:
> For large basic blocks with lots of combinable instructions, the
> MachineTraceMetrics computations in MachineCombiner can dominate the compile
> time, as computing the trace information is quadratic in the number of
> instructions in a BB and it's relevant successors/predecessors.
>
> In most cases, knowing the instruction depth should be enough to make
> combination decisions. As we already iterate over all instructions in a basic
> block, the instruction depth can be computed incrementally. This reduces the
> cost of machine-combine drastically in cases where lots of instructions
> are combined. The major drawback is that AFAIK, computing the critical path
> length cannot be done incrementally. Therefore we only compute
> instruction depths incrementally, for basic blocks with more
> instructions than inc_threshold. The -machine-combiner-inc-threshold
> option can be used to set the threshold and allows for easier
> experimenting and checking if using incremental updates for all basic
> blocks has any impact on the performance.
>
> Reviewers: sanjoy, Gerolf, MatzeB, efriedma, fhahn
>
> Reviewed By: fhahn
>
> Subscribers: kiranchandramohan, javed.absar, efriedma, llvm-commits
>
> Differential Revision: https://reviews.llvm.org/D36619

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

6 years agoUse MemoryBufferRef. (NFC)
Adrian Prantl [Wed, 13 Sep 2017 23:16:13 +0000 (23:16 +0000)]
Use MemoryBufferRef. (NFC)

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

6 years agoFactor out duplicate code from llvm-dwarfdump (NFC)
Adrian Prantl [Wed, 13 Sep 2017 23:07:24 +0000 (23:07 +0000)]
Factor out duplicate code from llvm-dwarfdump (NFC)

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

6 years agoUpdate testcase that was XFAILed on Darwin for llvm-dwarfdump change.
Adrian Prantl [Wed, 13 Sep 2017 22:30:43 +0000 (22:30 +0000)]
Update testcase that was XFAILed on Darwin for llvm-dwarfdump change.

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

6 years agoAllow target to decide when to cluster loads/stores in misched
Stanislav Mekhanoshin [Wed, 13 Sep 2017 22:20:47 +0000 (22:20 +0000)]
Allow target to decide when to cluster loads/stores in misched

MachineScheduler when clustering loads or stores checks if base
pointers point to the same memory. This check is done through
comparison of base registers of two memory instructions. This
works fine when instructions have separate offset operand. If
they require a full calculated pointer such instructions can
never be clustered according to such logic.

Changed shouldClusterMemOps to accept base registers as well and
let it decide what to do about it.

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

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

6 years agollvm-dwarfdump: automatically dump both regular and .dwo variant of sections
Adrian Prantl [Wed, 13 Sep 2017 22:09:01 +0000 (22:09 +0000)]
llvm-dwarfdump: automatically dump both regular and .dwo variant of sections

Since users typically don't really care about the .dwo / non.dwo
distinction, this patch makes it so dwarfdump --debug-<info,...> dumps
.debug_info and (if available) also .debug_info.dwo. This simplifies
the command line interface (I've removed all dwo-specific dump
options) and makes the tool friendlier to use.

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

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

6 years agoAMDGPU: Handle coldcc in more places
Matt Arsenault [Wed, 13 Sep 2017 21:55:52 +0000 (21:55 +0000)]
AMDGPU: Handle coldcc in more places

Missed in r312936

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

6 years ago[codeview] VLAs and unsized arrays should use a size of zero
Reid Kleckner [Wed, 13 Sep 2017 21:54:20 +0000 (21:54 +0000)]
[codeview] VLAs and unsized arrays should use a size of zero

Previously we used a size of '1' for VLAs because we weren't sure what
MSVC did. However, MSVC does support declaring an array without a size,
for which it emits an array type with a size of zero. Clang emits the
same DI metadata for VLAs and arrays without bound, so we would describe
arrays without bound as having one element. This lead to Microsoft
debuggers only printing a single element.

Emitting a size of zero appears to cause these debuggers to search the
symbol information to find a definition of the variable with accurate
array bounds.

Fixes http://crbug.com/763580

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

6 years agoUpdate the early_inline test to explicitly add attribute for all functions. (NFC)
Dehao Chen [Wed, 13 Sep 2017 21:49:36 +0000 (21:49 +0000)]
Update the early_inline test to explicitly add attribute for all functions. (NFC)

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

6 years ago[ARM] Add more CPUs to host detection
Eli Friedman [Wed, 13 Sep 2017 21:48:00 +0000 (21:48 +0000)]
[ARM] Add more CPUs to host detection

This returns "cortex-a73" for second-generation Kryo; not precisely
correct, but close enough.

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

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

6 years agoAdd a comment for the test. NFC.
Wei Mi [Wed, 13 Sep 2017 21:47:13 +0000 (21:47 +0000)]
Add a comment for the test. NFC.

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

6 years ago[Transforms] Fix some Clang-tidy modernize-use-using and Include What You Use warning...
Eugene Zelenko [Wed, 13 Sep 2017 21:43:53 +0000 (21:43 +0000)]
[Transforms] Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes (NFC).

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

6 years ago[RegAlloc] Keep a copy of live interval for the spilled vregs in HoistSpillHelper.
Wei Mi [Wed, 13 Sep 2017 21:41:30 +0000 (21:41 +0000)]
[RegAlloc] Keep a copy of live interval for the spilled vregs in HoistSpillHelper.

This is to fix PR34502. After rL311401, the live range of spilled vreg will be
cleared. HoistSpill need to use the live range of the original vreg before splitting
to know the moving range of the spills. The patch saves a copy of live interval for
the spilled vreg inside of HoistSpillHelper.

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

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

6 years ago[Bitcode] Add a compatibility test for 5.0.0 bitcode
Vedant Kumar [Wed, 13 Sep 2017 21:40:59 +0000 (21:40 +0000)]
[Bitcode] Add a compatibility test for 5.0.0 bitcode

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

6 years agoInvoke GetInlineCost for legality check before inline functions in SampleProfileLoader.
Dehao Chen [Wed, 13 Sep 2017 21:22:55 +0000 (21:22 +0000)]
Invoke GetInlineCost for legality check before inline functions in SampleProfileLoader.

Summary: SampleProfileLoader inlines hot functions if it is inlined in the profiled binary. However, the inline needs to be guarded by legality check, otherwise it could lead to correctness issues.

Reviewers: eraman, davidxl

Reviewed By: eraman

Subscribers: sanjoy, llvm-commits

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

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

6 years ago[CodeGen] Fix some Clang-tidy modernize and Include What You Use warnings; other...
Eugene Zelenko [Wed, 13 Sep 2017 21:15:20 +0000 (21:15 +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@313194 91177308-0d34-0410-b5e6-96231b3b80d8

6 years agoFix a crash in llvm-nm for a bad Mach-O file that has an N_SECT type symbol and a...
Kevin Enderby [Wed, 13 Sep 2017 21:01:49 +0000 (21:01 +0000)]
Fix a crash in llvm-nm for a bad Mach-O file that has an N_SECT type symbol and a zero n_sect value.

The code in llvm-nm for Mach-O files to determine the section type for an
N_SECT type symbol it will call getSymbolSection() and check for the error,
but in the case the n_sect value is zero it will return section_end() (aka nullptr).
And the code was using that and crashing instead of just returning a ā€™sā€™ for a
section or printing (?,?) as it would if getSymbolSection() returned an error.

rdar://33136604

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

6 years agoMark static member functions as static in CodeViewDebug
Adrian McCarthy [Wed, 13 Sep 2017 20:53:55 +0000 (20:53 +0000)]
Mark static member functions as static in CodeViewDebug

Summary:
To improve CodeView quality for static member functions, we need to make the
static explicit.  In addition to a small change in LLVM's CodeViewDebug to
return the appropriate MethodKind, this requires a small change in Clang to
note the staticness in the debug info metadata.

Subscribers: aprantl, hiraditya

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

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

6 years agoRevert "Determine up front which projects are enabled."
Zachary Turner [Wed, 13 Sep 2017 20:49:25 +0000 (20:49 +0000)]
Revert "Determine up front which projects are enabled."

This was intended to be a generic CMake solution to a problem
shared across several projects.  It turns out it doesn't interact
very well certain CMake configurations, and furthermore the
"problem" is actually not a problem, as the problematic code
is never executed to begin with.  So this really isn't solving
anything.

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

6 years ago[Inliner] Add another way to compute full inline cost.
Easwaran Raman [Wed, 13 Sep 2017 20:16:02 +0000 (20:16 +0000)]
[Inliner] Add another way to compute full inline cost.

Summary:
Full inline cost is computed when -inline-cost-full is true or ORE is
non-null. This patch adds another way to compute full inline cost by
adding a field to InlineParams. This will be used by SampleProfileLoader
to check legality of inlining a callee that it wants to inline.

Reviewers: danielcdh, haicheng

Subscribers: llvm-commits

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

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

6 years ago[LV] Avoid computing the register usage for default VF. NFC
Anna Thomas [Wed, 13 Sep 2017 19:35:45 +0000 (19:35 +0000)]
[LV] Avoid computing the register usage for default VF. NFC

These are changes to reduce redundant computations when calculating a
feasible vectorization factor:
1. early return when target has no vector registers
2. don't compute register usage for the default VF.

Suggested during review for D37702.

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

6 years agoFix a misleading phrase in the LangRef
Sanjoy Das [Wed, 13 Sep 2017 18:49:22 +0000 (18:49 +0000)]
Fix a misleading phrase in the LangRef

Reviewers: hfinkel, dberlin

Subscribers: mcrosier, llvm-commits

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

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

6 years agoRefactoring the stride 4 code in the X86interleavedaccess NFC
Michael Zuckerman [Wed, 13 Sep 2017 18:28:09 +0000 (18:28 +0000)]
Refactoring the stride 4 code in the X86interleavedaccess NFC

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

6 years agollvm-dwarfdump: support dumping UUIDs of Mach-O binaries.
Adrian Prantl [Wed, 13 Sep 2017 18:22:59 +0000 (18:22 +0000)]
llvm-dwarfdump: support dumping UUIDs of Mach-O binaries.

This is a feature supported by Darwin dwarfdump. UUIDs are used to
associate executables with their .dSYM bundles.

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

6 years ago[CFG] Fix typo in docblock: blocsk/blocks
Brian Gesiak [Wed, 13 Sep 2017 18:02:11 +0000 (18:02 +0000)]
[CFG] Fix typo in docblock: blocsk/blocks

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

6 years ago[unittests] Fix up test after rL313156
Vedant Kumar [Wed, 13 Sep 2017 18:00:22 +0000 (18:00 +0000)]
[unittests] Fix up test after  rL313156

Bot: http://green.lab.llvm.org/green/job/clang-stage1-cmake-RA-incremental/42421

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

6 years ago[InstSimplify] regenerate checks; NFC
Sanjay Patel [Wed, 13 Sep 2017 17:39:39 +0000 (17:39 +0000)]
[InstSimplify] regenerate checks; NFC

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

6 years ago[mips] Add unitests to check parsing MIPS triples. NFC
Simon Atanasyan [Wed, 13 Sep 2017 17:36:16 +0000 (17:36 +0000)]
[mips] Add unitests to check parsing MIPS triples. NFC

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

6 years agoAdd options to dump PGO counts in text.
Hiroshi Yamauchi [Wed, 13 Sep 2017 17:20:38 +0000 (17:20 +0000)]
Add options to dump PGO counts in text.

Summary:
Added text options to -pgo-view-counts and -pgo-view-raw-counts that dump block frequency and branch probability info in text.

This is useful when the graph is very large and complex (the dot command crashes, lines/edges too close to tell apart, hard to navigate without textual search) or simply when text is preferred.

Reviewers: davidxl

Reviewed By: davidxl

Subscribers: llvm-commits

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

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

6 years ago[ThinLTO] AliasSummary should not have any references
Teresa Johnson [Wed, 13 Sep 2017 17:10:24 +0000 (17:10 +0000)]
[ThinLTO] AliasSummary should not have any references

Summary: References should only be on the aliasee.

Reviewers: pcc

Subscribers: llvm-commits, inglorion

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

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

6 years agoThinLTO: Correctly follow aliasee references when dead stripping.
Peter Collingbourne [Wed, 13 Sep 2017 17:09:20 +0000 (17:09 +0000)]
ThinLTO: Correctly follow aliasee references when dead stripping.

We were previously handling aliases during dead stripping by adding
the aliased global's "original name" GUID to the worklist. This will
lead to incorrect behaviour if the global has local linkage because
the original name GUID will not correspond to the global's GUID in
the summary.

Because an alias is just another name for the global that it
references, there is no need to mark the referenced global as used,
or to follow references from any other copies of the global. So all
we need to do is to follow references from the aliasee's summary
instead of the alias.

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

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

6 years agoConvenience/safety fix for llvm::sys::Execute(And|No)Wait
Alexander Kornienko [Wed, 13 Sep 2017 17:03:37 +0000 (17:03 +0000)]
Convenience/safety fix for llvm::sys::Execute(And|No)Wait

Summary:
Change the type of the Redirects parameter of llvm::sys::ExecuteAndWait,
ExecuteNoWait and other APIs that wrap them from `const StringRef **` to
`ArrayRef<Optional<StringRef>>`, which is safer and simplifies the use of these
APIs (no more local StringRef variables just to get a pointer to).

Corresponding clang changes will be posted as a separate patch.

Reviewers: bkramer

Reviewed By: bkramer

Subscribers: vsk, llvm-commits

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

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

6 years agoFix bot failures by requiring x86 target in new test
Teresa Johnson [Wed, 13 Sep 2017 15:35:35 +0000 (15:35 +0000)]
Fix bot failures by requiring x86 target in new test

The test added in r313151 requires a target triple since it is
running through code generation. Fix bot failures by requiring
an x86 target.

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

6 years ago[ThinLTO] For SamplePGO, need to handle ICP targets consistently in thin link
Teresa Johnson [Wed, 13 Sep 2017 15:16:38 +0000 (15:16 +0000)]
[ThinLTO] For SamplePGO, need to handle ICP targets consistently in thin link

Summary:
SamplePGO indirect call profiles record the target as the original GUID
for statics. The importer had special handling to map to the normal GUID
in that case. The dead global analysis needs the same treatment or
inconsistencies arise, resulting in linker unsats due to some dead
symbols being exported and kept, leaving in references to other dead
symbols that are removed.

This can happen when a SamplePGO profile collected by one binary is used
for a different binary, so the indirect call profiles may not accurately
reflect live targets.

Reviewers: danielcdh

Subscribers: mehdi_amini, inglorion, llvm-commits, eraman

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

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

6 years ago[mips] correct operand range for DINSM instruction
Petar Jovanovic [Wed, 13 Sep 2017 14:09:13 +0000 (14:09 +0000)]
[mips] correct operand range for DINSM instruction

This patch corrects the definition of the DINSM instruction.
Specification for DINSM instruction for Mips64 says that size operand should
be 2 <= size <= 64, but it is defined as uimm5_inssize_plus1 which gives
range of 1 .. 32.

Patch by Aleksandar Beserminji.

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

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

6 years ago[MachineScheduler] Put SchedRegion in an anonymous namespace.
Mikael Holmen [Wed, 13 Sep 2017 14:07:47 +0000 (14:07 +0000)]
[MachineScheduler] Put SchedRegion in an anonymous namespace.

Summary: It pollutes the global namespace otherwise.

Patch by: Bevin Hansson

Reviewers: jonpa

Reviewed By: jonpa

Subscribers: MatzeB, javed.absar, llvm-commits

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

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

6 years ago[Power9] Add missing instructions: extswsli, popcntb
Stefan Pintilie [Wed, 13 Sep 2017 14:05:27 +0000 (14:05 +0000)]
[Power9] Add missing instructions: extswsli, popcntb

Added the following P9 instructions: extswsli, extswsli., popcntb

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

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

6 years ago[llvm-objdump] Fix memory leaks in macho dump
Francis Ricci [Wed, 13 Sep 2017 13:57:45 +0000 (13:57 +0000)]
[llvm-objdump] Fix memory leaks in macho dump

Summary: Detected by LeakSanitizer for Darwin

Reviewers: enderby, rafael

Subscribers: llvm-commits

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

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

6 years ago[MachO] Prevent heap overflow when load command extends past EOF
Jonas Devlieghere [Wed, 13 Sep 2017 13:43:01 +0000 (13:43 +0000)]
[MachO] Prevent heap overflow when load command extends past EOF

This patch fixes a heap-buffer-overflow when a malformed Mach-O has a
load command who's size extends past the end of the binary.

Fixes: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3225

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

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

6 years ago[X86][Skylake] Replacing -mcpu=skx by -mattr in a codegen test. NFC.
Gadi Haber [Wed, 13 Sep 2017 12:39:18 +0000 (12:39 +0000)]
[X86][Skylake] Replacing -mcpu=skx by -mattr in a codegen test. NFC.

NFC.
Replacing -mcpu=skx by -mattr in the run command of the codegen test: avx512-gather-scatter-intrin.ll.

Reviewers: delena
Revision: https://reviews.llvm.org/D37799

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

6 years ago[X86][FMA4] Test FMA4 commutation with repeated ops as well as FMA3
Simon Pilgrim [Wed, 13 Sep 2017 11:21:38 +0000 (11:21 +0000)]
[X86][FMA4] Test FMA4 commutation with repeated ops as well as FMA3

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

6 years ago[X86][FMA] Added *213 fma instructions to scheduling tests
Simon Pilgrim [Wed, 13 Sep 2017 11:12:56 +0000 (11:12 +0000)]
[X86][FMA] Added *213 fma instructions to scheduling tests

Annoyingly the 132/231 variants are pretty tricky to create when you need to due to weak FMA commutation patterns.

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

6 years ago[MiSched|TableGen] : Tidy up and modernise. NFC.
Javed Absar [Wed, 13 Sep 2017 10:31:10 +0000 (10:31 +0000)]
[MiSched|TableGen] : Tidy up and modernise. NFC.

Replacing with range-based loop and substituting 'using'.

Reviewed by: @MatzeB
Differential Revision: https://reviews.llvm.org/D37748

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

6 years ago[dwarfdump] Rename Brief to Verbose in DIDumpOptions
Jonas Devlieghere [Wed, 13 Sep 2017 09:43:05 +0000 (09:43 +0000)]
[dwarfdump] Rename Brief to Verbose in DIDumpOptions

This patches renames "brief" to "verbose" in de DIDumpOptions and
inverts the logic to match the new behavior where brief is the default.
Changing the default value uncovered some bugs related to the
DIDumpOptions not being propagated and have been fixed as well.

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

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

6 years ago[X86][Skylake][KNL] Updating code gen regression test to use the KNL and SKYLAKE...
Gadi Haber [Wed, 13 Sep 2017 09:28:25 +0000 (09:28 +0000)]
[X86][Skylake][KNL] Updating code gen regression test to use the KNL and SKYLAKE prefixes. NFC.

NFC.
Updating the code gen regression test bmi2-schedule.ll to use the KNL and SKYLAKE prefixes for the run commands that use the knl and Skylake mcpu options.
The fix is in preparation for a large patch of adding all SKL scheduling information.

Reviewers: delena, zvi, RKSimon
Revision: https://reviews.llvm.org/D37796

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

6 years ago[X86][Skylake][KNL] Updating code gen regression test to use the KNL and SKYLAKE...
Gadi Haber [Wed, 13 Sep 2017 09:28:18 +0000 (09:28 +0000)]
[X86][Skylake][KNL] Updating code gen regression test to use the KNL and SKYLAKE prefixes. NFC.

NFC.
Updating the code gen regression test bmi2-schedule.ll to use the KNL and SKYLAKE prefixes for the run commands that use the knl and Skylake mcpu options.
The fix is in preparation for a large patch of adding all SKL scheduling information.

Reviewers: delena, zvi
Revision: https://reviews.llvm.org/D37796

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

6 years agoNFC.
Gadi Haber [Wed, 13 Sep 2017 09:27:39 +0000 (09:27 +0000)]
NFC.
Updating codegen test bmi2-schedule.ll to use the SKYLAKE and KNL prefix as preparatipn for an upcoming patch to add all SKL scheduling information.

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

6 years ago[GlobalISel][X86] support G_FPEXT operation.
Igor Breger [Wed, 13 Sep 2017 09:05:23 +0000 (09:05 +0000)]
[GlobalISel][X86] support G_FPEXT operation.

Summary: Support G_FPEXT operation. Selection done via TableGen'erated code.

Reviewers: zvi, guyblank, aymanmus, m_zuckerman

Reviewed By: zvi

Subscribers: rovka, kristof.beyls, llvm-commits

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

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

6 years ago[X86] [PATCH] [intrinsics] Lowering X86 ABS intrinsics to IR. (llvm)
Uriel Korach [Wed, 13 Sep 2017 09:02:36 +0000 (09:02 +0000)]
[X86] [PATCH] [intrinsics] Lowering X86 ABS intrinsics to IR. (llvm)

This patch, together with a matching clang patch (https://reviews.llvm.org/D37694), implements the lowering of X86 ABS intrinsics to IR.

differential revision: https://reviews.llvm.org/D37693.

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