OSDN Git Service

android-x86/external-llvm.git
7 years ago[InstSimplify] Constant fold the new GEP in SimplifyGEPInst.
Joey Gouly [Tue, 6 Jun 2017 10:17:14 +0000 (10:17 +0000)]
[InstSimplify] Constant fold the new GEP in SimplifyGEPInst.

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

7 years ago[docs] Make it clear shifts yield poison when shift amount >= bitwidth
Nuno Lopes [Tue, 6 Jun 2017 08:28:17 +0000 (08:28 +0000)]
[docs] Make it clear shifts yield poison when shift amount >= bitwidth

Some InstCombine optimizations already rely on the result being poison
rather than undef.

For example, the following rewrite is wrong if undef is used:
; (1 << Y) * X  ->  X << Y
%Op0 = shl 1, %Y
%r = mul %Op0, %Op1
  =>
%r = shl %Op1, %Y

ERROR: Mismatch in values for i4 %r

Example:
i4 %Y = 0x8 (8, -8)
i4 %Op0 = 0x0 (0)
i4 %Op1 = 0x0 (0)
source: 0x0 (0)
target: 0x1 (1)

The optimization is correct if poison is returned instead:
http://rise4fun.com/Alive/ygX

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

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

7 years ago[Improve CodeGen Testing] This patch renables MIRPrinter print fields which have...
Vivek Pandya [Tue, 6 Jun 2017 08:16:19 +0000 (08:16 +0000)]
[Improve CodeGen Testing] This patch renables MIRPrinter print fields which have value equal to its default.
If -simplify-mir option is passed then MIRPrinter will not print such fields.
This change also required some lit test cases in CodeGen directory to be changed.

Reviewed By: MatzeB

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

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

7 years agoFix an unused variable warning in non-asserts builds.
Chandler Carruth [Tue, 6 Jun 2017 07:49:34 +0000 (07:49 +0000)]
Fix an unused variable warning in non-asserts builds.

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

7 years ago[InstSimplify] Remove some redundant code from InstSimplify now that llvm::isKnownNon...
Craig Topper [Tue, 6 Jun 2017 07:13:17 +0000 (07:13 +0000)]
[InstSimplify] Remove some redundant code from InstSimplify now that llvm::isKnownNonEqual handles vectors.

isKnownNonEqual is called a little earlier in this function and can handle the case that we were checking here as well as more complex cases.

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

7 years ago[ValueTracking] Remove scalar only restriction from isKnownNonEqual. The computeKnown...
Craig Topper [Tue, 6 Jun 2017 07:13:15 +0000 (07:13 +0000)]
[ValueTracking] Remove scalar only restriction from isKnownNonEqual. The computeKnownBits and isKnownNonZero calls this code relies on should work fine for vectors.

This will be used by another commit to remove some code from InstSimplify that is redundant for scalars, but was needed for vectors due to this issue.

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

7 years ago[InstSimplify] Use the getTrue/getFalse helpers and make sure we use the computed...
Craig Topper [Tue, 6 Jun 2017 07:13:13 +0000 (07:13 +0000)]
[InstSimplify] Use the getTrue/getFalse helpers and make sure we use the computed result type instead of hardcoding to i1. NFC

Currently, isKnownNonEqual punts on vectors so the hardcoding to i1 doesn't matter. But I plan to fix that in a future patch.

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

7 years ago[ValueTracking] Use the computeKnownBits version that returns a KnownBits object...
Craig Topper [Tue, 6 Jun 2017 07:13:11 +0000 (07:13 +0000)]
[ValueTracking] Use the computeKnownBits version that returns a KnownBits object instead of taking one by reference. NFC

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

7 years ago[ValueTracking] Use APInt::intersects to avoid some temporary APInts. NFC
Craig Topper [Tue, 6 Jun 2017 07:13:09 +0000 (07:13 +0000)]
[ValueTracking] Use APInt::intersects to avoid some temporary APInts. NFC

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

7 years ago[InstSimplify] Use ICmpInst::isEquality predicate method. NFC
Craig Topper [Tue, 6 Jun 2017 07:13:04 +0000 (07:13 +0000)]
[InstSimplify] Use ICmpInst::isEquality predicate method. NFC

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

7 years ago[llvm] Remove double semicolons
Mandeep Singh Grang [Tue, 6 Jun 2017 05:08:36 +0000 (05:08 +0000)]
[llvm] Remove double semicolons

Reviewers: craig.topper, arsenm, mehdi_amini

Reviewed By: mehdi_amini

Subscribers: mehdi_amini, wdng, nhaehnle, javed.absar, llvm-commits

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

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

7 years ago[x86] Stop this test from dirtying the source tree when run.
Chandler Carruth [Tue, 6 Jun 2017 03:24:22 +0000 (03:24 +0000)]
[x86] Stop this test from dirtying the source tree when run.

The output isn't used anyways.

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

7 years agoAdd a dominanance check interface that uses caching for instructions within same...
Xin Tong [Tue, 6 Jun 2017 02:34:41 +0000 (02:34 +0000)]
Add a dominanance check interface that uses caching for instructions within same basic block.

Summary:
This problem stems from the fact that instructions are allocated using new
in LLVM, i.e. there is no relationship that can be derived by just looking
at the pointer value.

This interface dispatches to appropriate dominance check given 2 instructions,
i.e. in case the instructions are in the same basic block, ordered basicblock
(with instruction numbering and caching) are used. Otherwise, dominator tree
is used.

This is a preparation patch for https://reviews.llvm.org/D32720

Reviewers: dberlin, hfinkel, davide

Subscribers: davide, mgorny, llvm-commits

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

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

7 years ago[x86] Add the test for folding stack spills into pextrw.
Chandler Carruth [Tue, 6 Jun 2017 02:16:01 +0000 (02:16 +0000)]
[x86] Add the test for folding stack spills into pextrw.

This is a negative test as pextrw doesn't write to all 32-bits of the
spilled GPR. This fold ended up happening when D32684 was landed and
covers the regression that motivated reverting it in r304762.

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

7 years ago[x86] Revert the X86FoldTablesEmitter due to more miscompiles.
Chandler Carruth [Tue, 6 Jun 2017 02:15:31 +0000 (02:15 +0000)]
[x86] Revert the X86FoldTablesEmitter due to more miscompiles.

In testing, we've found yet another miscompile caused by the new tables.
And this one is even less clear how to fix (we could teach it to fold
a 16-bit load instead of the 32-bit load it wants, or block folding
entirely).

Also, the approach to excluding instructions seems increasingly to not
scale well.

I have left a more detailed analysis on the review log for the original
patch (https://reviews.llvm.org/D32684) along with suggested path
forward. I will land an additional test case that I wrote which covers
the code that was miscompiling (folding into the output of `pextrw`) in
a subsequent commit to keep this a pure revert.

For each commit reverted here, I've restricted the revert to the
non-test code touching the x86 fold table emission until the last commit
where I did revert the test updates. This means the *new* test cases
added for `insertps` and `xchg` remain untouched (and continue to pass).

Reverted commits:
r304540: [X86] Don't fold into memory operands into insertps in the ...
r304347: [TableGen] Adapt more places to getValueAsString now ...
r304163: [X86] Don't fold away the memory operand of an xchg.
r304123: Don't capture a temporary std::string in a StringRef.
r304122: Resubmit "[X86] Adding new LLVM TableGen backend that ..."

Original commit was in r304088, and after a string of fixes was reverted
previously in r304121 to fix build bots, and then re-landed in r304122.

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

7 years ago[DWARF] Adding support for the DWARF v5 string offsets table (consumer/reader part...
Wolfgang Pieb [Tue, 6 Jun 2017 01:22:34 +0000 (01:22 +0000)]
[DWARF] Adding support for the DWARF v5 string offsets table (consumer/reader part only).

Reviewers: dblaikie, aprantl

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

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

7 years agoCodeGen: Refactor MIR parsing
Matthias Braun [Tue, 6 Jun 2017 00:44:35 +0000 (00:44 +0000)]
CodeGen: Refactor MIR parsing

When parsing .mir files immediately construct the MachineFunctions and
put them into MachineModuleInfo.

This allows us to get rid of the delayed construction (and delayed error
reporting) through the MachineFunctionInitialzier interface.

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

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

7 years ago[cmake] Enable reverse iteration by default through build macro
Mandeep Singh Grang [Tue, 6 Jun 2017 00:36:09 +0000 (00:36 +0000)]
[cmake] Enable reverse iteration by default through build macro

Summary:
Reverse iteration can be turned on, by default, by setting -DLLVM_REVERSE_ITERATION:BOOL=ON during cmake.
With this enabled, we can uncover lots of cases of non-determinism in codegen by simply running our tests (without any other change).
We can then setup a buildbot which will have this turned on by default. Initially, a lot of unit tests will fail in this configuration.
Once we start fixing non-determinism issues, we can gradually make this a blocker for patches.

Reviewers: davide, dblaikie, mehdi_amini, dberlin

Reviewed By: dblaikie

Subscribers: probinson, mgorny, llvm-commits

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

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

7 years agollc: Create custom pass pipeline for .mir files; NFCI
Matthias Braun [Tue, 6 Jun 2017 00:26:24 +0000 (00:26 +0000)]
llc: Create custom pass pipeline for .mir files; NFCI

Create a custom pass pipeline when loading .mir files even in
--start-after/--start-before cases.

This streamlines the mir handling code and prepares for an upcoming
commit.

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

7 years agoCodeGen/LLVMTargetMachine: Refactor ISel pass construction; NFCI
Matthias Braun [Tue, 6 Jun 2017 00:26:13 +0000 (00:26 +0000)]
CodeGen/LLVMTargetMachine: Refactor ISel pass construction; NFCI

- Move ISel (and pre-isel) pass construction into TargetPassConfig
- Extract AsmPrinter construction into a helper function

Putting the ISel code into TargetPassConfig seems a lot more natural and
both changes together make make it easier to build custom pipelines
involving .mir in an upcoming commit. This moves MachineModuleInfo to an
earlier place in the pass pipeline which shouldn't have any effect.

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

7 years ago[x86] fix over-specific triple; NFC
Sanjay Patel [Tue, 6 Jun 2017 00:18:11 +0000 (00:18 +0000)]
[x86] fix over-specific triple; NFC

There's nothing darwin-specific in these tests, and using that
setting causes extra phantom diffs when the auto-generated check
lines are regenerated today.

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

7 years ago[InlineSpiller] Don't spill fully undef values
Quentin Colombet [Mon, 5 Jun 2017 23:51:27 +0000 (23:51 +0000)]
[InlineSpiller] Don't spill fully undef values

Althought it is not wrong to spill undef values, it is useless and harms
both code size and runtime. Before spilling a value, check that its
content actually matters.

http://www.llvm.org/PR33311

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

7 years agoFix PR23384 (part 2 of 3) NFC
Evgeny Stupachenko [Mon, 5 Jun 2017 23:37:00 +0000 (23:37 +0000)]
Fix PR23384 (part 2 of 3) NFC

Summary:
The patch moves LSR cost comparison to target part.

Reviewers: qcolombet

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

From: Evgeny Stupachenko <evstupac@gmail.com>

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

7 years agoRemove double semicolon
Matt Arsenault [Mon, 5 Jun 2017 23:01:31 +0000 (23:01 +0000)]
Remove double semicolon

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

7 years agoRemove some #include from StackProtector.h; NFC
Matthias Braun [Mon, 5 Jun 2017 22:59:21 +0000 (22:59 +0000)]
Remove some #include from StackProtector.h; NFC

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

7 years agoRenameIndependentSubregs: Fix handling of undef tied operands
Matt Arsenault [Mon, 5 Jun 2017 22:58:57 +0000 (22:58 +0000)]
RenameIndependentSubregs: Fix handling of undef tied operands

If a tied source operand was undef, it would be replaced but not
update the other tied operand, which would end up using different
virtual registers.

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

7 years agoLSR: Calculate instruction cost only if InsnsCost is set to true (NFC)
Evgeny Stupachenko [Mon, 5 Jun 2017 22:44:18 +0000 (22:44 +0000)]
LSR: Calculate instruction cost only if InsnsCost is set to true (NFC)

Summary:

The patch guard all instruction cost calculations with InsnCosts (-lsr-insns-cost) option.
Currently even if the option set to false we calculate and print (in debug mode) instruction costs.

Reviewers: qcolombet

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

From: Evgeny Stupachenko <evstupac@gmail.com>

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

7 years ago[GlobalISel] IRTranslator: Add MachineMemOperand to target memory intrinsics
Volkan Keles [Mon, 5 Jun 2017 22:17:17 +0000 (22:17 +0000)]
[GlobalISel] IRTranslator: Add MachineMemOperand to target memory intrinsics

Reviewers: qcolombet, ab, t.p.northover, aditya_nandakumar, dsanders

Reviewed By: qcolombet

Subscribers: rovka, kristof.beyls, javed.absar, igorb, llvm-commits

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

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

7 years ago[SelectionDAG] Update the dominator after splitting critical edges.
Davide Italiano [Mon, 5 Jun 2017 22:16:41 +0000 (22:16 +0000)]
[SelectionDAG] Update the dominator after splitting critical edges.

Running `llc -verify-dom-info` on the attached testcase results in a
crash in the verifier, due to a stale dominator tree.

i.e.

  DominatorTree is not up to date!
  Computed:
  =============================--------------------------------
  Inorder Dominator Tree:
    [1] %safe_mod_func_uint8_t_u_u.exit.i.i.i {0,7}
      [2] %lor.lhs.false.i61.i.i.i {1,2}
      [2] %safe_mod_func_int8_t_s_s.exit.i.i.i {3,6}
        [3] %safe_div_func_int64_t_s_s.exit66.i.i.i {4,5}

  Actual:
  =============================--------------------------------
  Inorder Dominator Tree:
    [1] %safe_mod_func_uint8_t_u_u.exit.i.i.i {0,9}
      [2] %lor.lhs.false.i61.i.i.i {1,2}
      [2] %safe_mod_func_int8_t_s_s.exit.i.i.i {3,8}
        [3] %safe_div_func_int64_t_s_s.exit66.i.i.i {4,5}
        [3] %safe_mod_func_int8_t_s_s.exit.i.i.i.lor.lhs.false.i61.i.i.i_crit_edge {6,7}

This is because in `SelectionDAGIsel` we split critical edges without
updating the corresponding dominator for the function (and we claim
in `MachineFunctionPass::getAnalysisUsage()` that the domtree is preserved).

We could either stop preserving the domtree in `getAnalysisUsage`
or tell `splitCriticalEdge()` to update it.
As the second option is easy to implement, that's the one I chose.

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

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

7 years ago[CodeView] Fix endianness bug.
Zachary Turner [Mon, 5 Jun 2017 22:12:23 +0000 (22:12 +0000)]
[CodeView] Fix endianness bug.

We should be outputting in little endian, but we were writing
in host endianness.

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

7 years agotest: fix hexagon build
Saleem Abdulrasool [Mon, 5 Jun 2017 21:45:25 +0000 (21:45 +0000)]
test: fix hexagon build

Add a x86-registered-target requirement to the tests.

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

7 years ago[CodeView] Handle Cross Module Imports and Exports.
Zachary Turner [Mon, 5 Jun 2017 21:40:33 +0000 (21:40 +0000)]
[CodeView] Handle Cross Module Imports and Exports.

While it's not entirely clear why a compiler or linker might
put this information into an object or PDB file, one has been
spotted in the wild which was causing llvm-pdbdump to crash.

This patch adds support for reading-writing these sections.
Since I don't know how to get one of the native tools to
generate this kind of debug info, the only test here is one
in which we feed YAML into the tool to produce a PDB and
then spit out YAML from the resulting PDB and make sure that
it matches.

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

7 years agoAMDGPU: Remove deprecated and unused elf definitions
Konstantin Zhuravlyov [Mon, 5 Jun 2017 21:33:40 +0000 (21:33 +0000)]
AMDGPU: Remove deprecated and unused elf definitions

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

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

7 years agoCodeGen: add support for emitting ObjC image info
Saleem Abdulrasool [Mon, 5 Jun 2017 21:26:39 +0000 (21:26 +0000)]
CodeGen: add support for emitting ObjC image info

This ensures that we can emit the ObjC Image Info structure on COFF and
ELF as well.  The frontend already would attempt to emit this
information but would get dropped when generating assembly or an object
file.

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

7 years ago[ConstantRange] Remove costly udivrem from ConstantRange::truncate
Craig Topper [Mon, 5 Jun 2017 20:48:05 +0000 (20:48 +0000)]
[ConstantRange] Remove costly udivrem from ConstantRange::truncate

Truncate currently uses a udivrem call which is going to be slow particularly for larger than 64-bit widths.

As far as I can tell all we were trying to do was modulo LowerDiv by (MaxValue+1) and make sure whatever value was effectively subtracted from LowerDiv was also subtracted from UpperDiv.

This patch recognizes that MaxValue+1 is a power of 2 so we can just use a bitwise AND to accomplish a modulo operation or isolate the upper bits.

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

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

7 years ago[AMDGPU] Fix uninit'ed var (RevisitLoop)
Mark Searles [Mon, 5 Jun 2017 19:29:01 +0000 (19:29 +0000)]
[AMDGPU] Fix uninit'ed var (RevisitLoop)

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

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

7 years ago[DAGCombine] Fix unchecked calls to DAGCombiner::*ExtPromoteOperand
Sanjay Patel [Mon, 5 Jun 2017 17:01:10 +0000 (17:01 +0000)]
[DAGCombine] Fix unchecked calls to DAGCombiner::*ExtPromoteOperand

Other calls to DAGCombiner::*PromoteOperand check the result, but here it could cause an assertion in getNode.
Falling back to any extend in this case instead of failing outright seems correct to me.

No test case because:
The failure was triggered by an out of tree backend. In order to trigger it, a backend would need to overload
TargetLowering::IsDesirableToPromoteOp to return true for a type for which ISD::SIGN_EXTEND_INREG is marked
illegal. In tree, only X86 overloads and sometimes returns true for MVT::i16 yet it marks
setOperationAction(ISD::SIGN_EXTEND_INREG, MVT::i16  , Legal);.

Patch by Jacob Young!

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

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

7 years ago[X86][SSE41] Non-temporal loads shouldn't be folded if it can be avoided (PR32743)
Simon Pilgrim [Mon, 5 Jun 2017 16:45:32 +0000 (16:45 +0000)]
[X86][SSE41] Non-temporal loads shouldn't be folded if it can be avoided (PR32743)

Missed SSE41 non-temporal load case in previous commit

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

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

7 years agoHandle non-unique edges in edge-dominance
Adam Nemet [Mon, 5 Jun 2017 16:27:09 +0000 (16:27 +0000)]
Handle non-unique edges in edge-dominance

This removes a quadratic behavior in assert-enabled builds.

GVN propagates the equivalence from a condition into the blocks guarded by the
condition.  E.g. for 'if (a == 7) { ... }', 'a' will be replaced in the block
with 7.  It does this by replacing all the uses of 'a' that are dominated by
the true edge.

For a switch with N cases and U uses of the value, this will mean N * U calls
to 'dominates'.  Asserting isSingleEdge in 'dominates' make this N^2 * U
because this function checks for the uniqueness of the edge. I.e. traverses
each edge between the SwitchInst's block and the cases.

The change removes the assert and makes 'dominates' works correctly in the
presence of non-unique edges.

This brings build time down by an order of magnitude for an input that has
~10k cases in a switch statement.

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

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

7 years agoClose DynamicLibraries in reverse order they were opened.
Frederich Munch [Mon, 5 Jun 2017 16:26:58 +0000 (16:26 +0000)]
Close DynamicLibraries in reverse order they were opened.

Summary: Matches C++ destruction ordering better and fixes possible problems of loaded libraries having inter-dependencies.

Reviewers: efriedma, v.g.vassilev, chapuni

Reviewed By: efriedma

Subscribers: mgorny, llvm-commits

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

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

7 years agoSymbols re-defined with -wrap and -defsym need to be excluded from inter-
Dmitry Mikulin [Mon, 5 Jun 2017 16:24:25 +0000 (16:24 +0000)]
Symbols re-defined with -wrap and -defsym need to be excluded from inter-
procedural optimizations to prevent dropping symbols and allow the linker
to process re-directs.

PR33145: --wrap doesn't work with lto.
Differential Revision: https://reviews.llvm.org/D33621

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

7 years ago[X86][AVX1] Split 256-bit vector non-temporal loads to keep it non-temporal (PR32744)
Simon Pilgrim [Mon, 5 Jun 2017 16:02:01 +0000 (16:02 +0000)]
[X86][AVX1] Split 256-bit vector non-temporal loads to keep it non-temporal (PR32744)

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

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

7 years ago[X86][SSE] Non-temporal loads shouldn't be folded if it can be avoided (PR32743)
Simon Pilgrim [Mon, 5 Jun 2017 15:43:03 +0000 (15:43 +0000)]
[X86][SSE] Non-temporal loads shouldn't be folded if it can be avoided (PR32743)

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

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

7 years agoRemove duplicate LLVM_NATIVE_ from llvm's config.h
Dimitry Andric [Mon, 5 Jun 2017 13:52:31 +0000 (13:52 +0000)]
Remove duplicate LLVM_NATIVE_ from llvm's config.h

Summary:
Since LLVM_NATIVE_ARCH, LLVM_NATIVE_ASMPARSER, LLVM_NATIVE_ASMPRINTER,
LLVM_NATIVE_DISASSEMBLER, LLVM_NATIVE_TARGET, LLVM_NATIVE_TARGETINFO and
LLVM_NATIVE_TARGETMC are already defined in llvm-config.h, there seems
to be no reason to also define them in config.h.  Also, I can only find
usage of these macros in files that include llvm-config.h.

So let's remove the duplicated macros from config.h.

Reviewers: chandlerc, rnk, mehdi_amini, joerg

Reviewed By: rnk

Subscribers: chapuni, mgorny, llvm-commits

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

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

7 years ago[ARM] GlobalISel: Constrain callee register on indirect calls
Diana Picus [Mon, 5 Jun 2017 12:54:53 +0000 (12:54 +0000)]
[ARM] GlobalISel: Constrain callee register on indirect calls

When lowering calls, we generate instructions with machine opcodes
rather than generic ones. Therefore, we need to constrain the register
classes of the operands.

Also enable the machine verifier on the arm-irtranslator.ll test, since
that would've caught this issue.

Fixes (part of) PR32146.

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

7 years ago[LLVM-C] [OCaml] Expose Type::subtypes.
whitequark [Mon, 5 Jun 2017 11:49:52 +0000 (11:49 +0000)]
[LLVM-C] [OCaml] Expose Type::subtypes.

The C functions added are LLVMGetNumContainedTypes and
LLVMGetSubtypes.

The OCaml function added is Llvm.subtypes.

Patch by Ekaterina Vaartis.

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

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

7 years agoFix building DynamicLibrary.cpp with musl libc
Dimitry Andric [Mon, 5 Jun 2017 11:22:18 +0000 (11:22 +0000)]
Fix building DynamicLibrary.cpp with musl libc

Summary:
The workaround added in rL301240 for stderr/out/in symbols being both
macros and globals is only necessary for glibc, and it does not compile
with musl libc. Alpine Linux has had the following fix for it:

https://git.alpinelinux.org/cgit/aports/plain/main/llvm4/llvm-fix-DynamicLibrary-to-build-with-musl-libc.patch

Adapt the fix in our DynamicLibrary.inc for Unix.

Reviewers: marsupial, chandlerc, krytarowski

Reviewed By: krytarowski

Subscribers: srhines, krytarowski, llvm-commits

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

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

7 years agoMove ARM specific test to ELF/ARM dir
Javed Absar [Mon, 5 Jun 2017 10:53:26 +0000 (10:53 +0000)]
Move ARM specific test to ELF/ARM dir

Moving ARM specific test clang-section.s
from MC/ELF to MC/ELF/ARM
Buildbots reported failures on
commit  https://reviews.llvm.org/rL304705
Full details are available at:
 http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast/builds/10333

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

7 years agoAdd support for #pragma clang section
Javed Absar [Mon, 5 Jun 2017 10:09:13 +0000 (10:09 +0000)]
Add support for #pragma clang section

This patch provides a means to specify section-names for global variables,
functions and static variables, using #pragma directives.
This feature is only defined to work sensibly for ELF targets.
One can specify section names as:
#pragma clang section bss="myBSS" data="myData" rodata="myRodata" text="myText"
One can "unspecify" a section name with empty string e.g.
#pragma clang section bss="" data="" text="" rodata=""

Reviewers: Roger Ferrer, Jonathan Roelofs, Reid Kleckner
Differential Revision: https://reviews.llvm.org/D33413

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

7 years ago[ARM] Support fixup for Thumb2 modified immediate
Peter Smith [Mon, 5 Jun 2017 09:37:12 +0000 (09:37 +0000)]
[ARM] Support fixup for Thumb2 modified immediate

This change adds a new fixup fixup_t2_so_imm for the t2_so_imm_asmoperand
"T2SOImm". The fixup permits code such as:
.L1:
 sub r3, r3, #.L2 - .L1
.L2:
to assemble in Thumb2 as well as in ARM state.

The operand predicate isT2SOImm() explicitly doesn't match expressions
containing :upper16: and :lower16: as expressions with these operators
must match the movt and movw instructions.

The test mov r0, foo2 in thumb2-diagnostics is moved to a new file as the
fixup delays the error message till after the assembler has quit due to
the other errors.

As the mov instruction shares the t2_so_imm_asmoperand mov instructions
with a non constant expression now match t2MOVi rather than t2MOVi16 so the
error message is slightly different.

Fixes PR28647

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

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

7 years ago[InstCombine] Fix extractelement use before def
Sven van Haastregt [Mon, 5 Jun 2017 09:18:10 +0000 (09:18 +0000)]
[InstCombine] Fix extractelement use before def

This fixes a bug that can cause extractelements with operands that
haven't been defined yet to be inserted at a wrong point when
optimising insertelements.

Patch by Karl Hylen.

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

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

7 years agoRevert "[sanitizer-coverage] one more flavor of coverage: -fsanitize-coverage=inline...
Renato Golin [Mon, 5 Jun 2017 07:35:52 +0000 (07:35 +0000)]
Revert "[sanitizer-coverage] one more flavor of coverage: -fsanitize-coverage=inline-8bit-counters. Experimental so far, not documenting yet."

This reverts commit r304630, as it broke ARM/AArch64 bots for 2 days.

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

7 years ago[AMDGPU] Fix SIFoldOperands crash with clamp
Stanislav Mekhanoshin [Mon, 5 Jun 2017 01:03:04 +0000 (01:03 +0000)]
[AMDGPU] Fix SIFoldOperands crash with clamp

Fixes bug #33302. Pass did not account that Src1 of max instruction
can be an immediate.

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

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

7 years ago[ConstantRange] Add another truncate unittest for wrapped set staying a wrapped set.
Craig Topper [Sun, 4 Jun 2017 23:07:53 +0000 (23:07 +0000)]
[ConstantRange] Add another truncate unittest for wrapped set staying a wrapped set.

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

7 years ago[ConstantRange] Add a few more truncate unittests.
Craig Topper [Sun, 4 Jun 2017 23:03:54 +0000 (23:03 +0000)]
[ConstantRange] Add a few more truncate unittests.

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

7 years ago[ConstantRange] Add missing result check to the ConstantRange::truncate test.
Craig Topper [Sun, 4 Jun 2017 23:03:52 +0000 (23:03 +0000)]
[ConstantRange] Add missing result check to the ConstantRange::truncate test.

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

7 years ago[InstSimplify] Use llvm::all_of instead of a manual loop. NFC
Craig Topper [Sun, 4 Jun 2017 22:41:56 +0000 (22:41 +0000)]
[InstSimplify] Use llvm::all_of instead of a manual loop. NFC

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

7 years agogit-llvm: Update the project list for the llvm-project-20170507 monorepo.
Peter Collingbourne [Sun, 4 Jun 2017 22:18:57 +0000 (22:18 +0000)]
git-llvm: Update the project list for the llvm-project-20170507 monorepo.

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

7 years agoIR: When creating a global variable, assert that its type is valid.
Peter Collingbourne [Sun, 4 Jun 2017 22:12:03 +0000 (22:12 +0000)]
IR: When creating a global variable, assert that its type is valid.

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

7 years ago[X86][SSE] Change BUILD_VECTOR interleaving ordering to improve coalescing/combine...
Simon Pilgrim [Sun, 4 Jun 2017 20:12:04 +0000 (20:12 +0000)]
[X86][SSE] Change BUILD_VECTOR interleaving ordering to improve coalescing/combine opportunities

We currently generate BUILD_VECTOR as a tree of UNPCKL shuffles of the same type:

e.g. for v4f32:

Step 1: unpcklps 0, 2 ==> X: <?, ?, 2, 0>
      : unpcklps 1, 3 ==> Y: <?, ?, 3, 1>
Step 2: unpcklps X, Y ==>    <3, 2, 1, 0>

The issue is because we are not placing sequential vector elements together early enough, we fail to recognise many combinable patterns - consecutive scalar loads, extractions etc.

Instead, this patch unpacks progressively larger sequential vector elements together:

e.g. for v4f32:

Step 1: unpcklps 0, 2 ==> X: <?, ?, 1, 0>
      : unpcklps 1, 3 ==> Y: <?, ?, 3, 2>
Step 2: unpcklpd X, Y ==>    <3, 2, 1, 0>

This does mean that we are creating UNPCKL shuffle of different value types, but the relevant combines that benefit from this are quite capable of handling the additional BITCASTs that are now included in the shuffle tree.

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

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

7 years ago[LV] Make scalarizeInstruction() non-virtual. NFC.
Ayal Zaks [Sun, 4 Jun 2017 13:29:51 +0000 (13:29 +0000)]
[LV] Make scalarizeInstruction() non-virtual. NFC.

Following the request made in https://reviews.llvm.org/D32871,
scalarizeInstruction() which is no longer overridden by InnerLoopUnroller is
hereby made non-virtual in InnerLoopVectorizer.

Should have been part of r297580 originally.

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

7 years ago[GlobalISel][X86] merge irtranslator-call test files. NFC
Igor Breger [Sun, 4 Jun 2017 12:41:10 +0000 (12:41 +0000)]
[GlobalISel][X86] merge irtranslator-call test files. NFC

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

7 years ago[X86] Replace 'REQUIRES: x86' in tests with 'REQUIRES: x86-registered-target' which...
Craig Topper [Sun, 4 Jun 2017 08:21:58 +0000 (08:21 +0000)]
[X86] Replace 'REQUIRES: x86' in tests with 'REQUIRES: x86-registered-target' which seems to be the correct way to make them run on an x86 build.

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

7 years ago[ConstantFolding] Combine an if statement into an earlier one that checked the same...
Craig Topper [Sun, 4 Jun 2017 08:21:53 +0000 (08:21 +0000)]
[ConstantFolding] Combine an if statement into an earlier one that checked the same condition. NFC

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

7 years ago[ConstantFolding][X86] Replace an LLVM_FALLTHROUGH with a break because it really...
Craig Topper [Sun, 4 Jun 2017 08:21:51 +0000 (08:21 +0000)]
[ConstantFolding][X86] Replace an LLVM_FALLTHROUGH with a break because it really shouldn't fallthrough.

This is actually NFC because the next case starts with the same if statement as this case did. So the result will be the same and it will fallthrough to the end of the switch. But there's no reason to rely on that so we should just break.

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

7 years ago[ConstantFolding] Properly support constant folding of vector powi intrinsic. The...
Craig Topper [Sun, 4 Jun 2017 07:30:28 +0000 (07:30 +0000)]
[ConstantFolding] Properly support constant folding of vector powi intrinsic. The second argument is not a vector so needs special treatment.

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

7 years ago[InstSimplify] Add test case demonstrating that we fail to constant fold vector llvm...
Craig Topper [Sun, 4 Jun 2017 07:30:23 +0000 (07:30 +0000)]
[InstSimplify] Add test case demonstrating that we fail to constant fold vector llvm.powi intrinsics due to the second argument not being a vector.

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

7 years agoFixed warning: must specify at least one argument for '...' parameter.
Galina Kistanova [Sun, 4 Jun 2017 05:31:03 +0000 (05:31 +0000)]
Fixed warning: must specify at least one argument for '...' parameter.

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

7 years agoFixed warning: must specify at least one argument for '...' parameter.
Galina Kistanova [Sun, 4 Jun 2017 05:30:26 +0000 (05:30 +0000)]
Fixed warning: must specify at least one argument for '...' parameter.

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

7 years agoMake the Twine pretty-printer work with GDB 7.11
David Blaikie [Sun, 4 Jun 2017 03:27:12 +0000 (03:27 +0000)]
Make the Twine pretty-printer work with GDB 7.11

Apparently ::NodeKind is sometimes part of the name in GDB.
Without this patch I get the following error message from GDB:
`Unhandled NodeKind llvm::Twine::NodeKind::EmptyKind`.

Patch by Alexander Richardson!

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

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

7 years ago[PM] Add GVNSink to the pipeline.
Davide Italiano [Sat, 3 Jun 2017 23:18:29 +0000 (23:18 +0000)]
[PM] Add GVNSink to the pipeline.

With this, the two pipelines should be in sync again (modulo
LoopUnswitch, but Chandler is actively working on that).

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

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

7 years agoADT: handle special case of ARM environment for SUSE
Saleem Abdulrasool [Sat, 3 Jun 2017 22:31:06 +0000 (22:31 +0000)]
ADT: handle special case of ARM environment for SUSE

SUSE treats "gnueabi" as "gnueabihf" so make sure that we normalise the
environment.

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

7 years ago[InstCombine] Add support for simplifying ctlz/cttz intrinsics based on known bits.
Craig Topper [Sat, 3 Jun 2017 18:50:32 +0000 (18:50 +0000)]
[InstCombine] Add support for simplifying ctlz/cttz intrinsics based on known bits.

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

7 years ago[ConstantFolding] Fix constant folding for vector cttz and ctlz intrinsics to underst...
Craig Topper [Sat, 3 Jun 2017 18:50:29 +0000 (18:50 +0000)]
[ConstantFolding] Fix constant folding for vector cttz and ctlz intrinsics to understand that the second argument is still a scalar.

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

7 years ago[InstCombine][InstSimplify] Add various tests for ctlz/cttz with vectors, some showin...
Craig Topper [Sat, 3 Jun 2017 18:50:26 +0000 (18:50 +0000)]
[InstCombine][InstSimplify] Add various tests for ctlz/cttz with vectors, some showing missed optimizations. NFC

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

7 years ago[InstCombine] Use cttz instead of ctlz in the cttz_cmp_vec test case. Looks like...
Craig Topper [Sat, 3 Jun 2017 18:50:23 +0000 (18:50 +0000)]
[InstCombine] Use cttz instead of ctlz in the cttz_cmp_vec test case. Looks like a copy paste mistake.

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

7 years ago[AMDGPU] Untangle SDWA pass from SIShrinkInstructions
Stanislav Mekhanoshin [Sat, 3 Jun 2017 17:39:47 +0000 (17:39 +0000)]
[AMDGPU] Untangle SDWA pass from SIShrinkInstructions

Remove dependency of SDWA pass on SIShrinkInstructions.
The goal is to move SDWA even higher in the stack to avoid second run
of MachineLICM, MachineCSE and SIFoldOperands.

Also added handling to preserve original src modifiers.

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

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

7 years agoRegenerate expectations for trunc-to-bool.ll . NFC
Amaury Sechet [Sat, 3 Jun 2017 11:35:40 +0000 (11:35 +0000)]
Regenerate expectations for trunc-to-bool.ll . NFC

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

7 years ago[X86][SSE] Add SCALAR_TO_VECTOR(PEXTRW/PEXTRB) support to faux shuffle combining
Simon Pilgrim [Sat, 3 Jun 2017 11:12:57 +0000 (11:12 +0000)]
[X86][SSE] Add SCALAR_TO_VECTOR(PEXTRW/PEXTRB) support to faux shuffle combining

Generalized existing SCALAR_TO_VECTOR(EXTRACT_VECTOR_ELT) code to support AssertZext + PEXTRW/PEXTRB cases as well.

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

7 years ago[LazyValueInfo] Use Type::getIntegerBitWidth instead of casting to IntegerType to...
Craig Topper [Sat, 3 Jun 2017 07:47:14 +0000 (07:47 +0000)]
[LazyValueInfo] Use Type::getIntegerBitWidth instead of casting to IntegerType to call getBitWidth. NFC

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

7 years ago[LazyValueInfo] Make solveBlockValueCast take a CastInst* instead of Instruction...
Craig Topper [Sat, 3 Jun 2017 07:47:08 +0000 (07:47 +0000)]
[LazyValueInfo] Make solveBlockValueCast take a CastInst* instead of Instruction*. Makes getOpcode return the appropriate enum without a cast. NFC

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

7 years agoInitialized BackedgeTakenInfo.MaxOrZero.
Galina Kistanova [Sat, 3 Jun 2017 05:21:08 +0000 (05:21 +0000)]
Initialized BackedgeTakenInfo.MaxOrZero.

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

7 years agoAdded LLVM_FALLTHROUGH to address warning: this statement may fall through. NFC.
Galina Kistanova [Sat, 3 Jun 2017 05:19:32 +0000 (05:19 +0000)]
Added LLVM_FALLTHROUGH to address warning: this statement may fall through. NFC.

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

7 years agoAdded LLVM_FALLTHROUGH to address warning: this statement may fall through. NFC.
Galina Kistanova [Sat, 3 Jun 2017 05:19:10 +0000 (05:19 +0000)]
Added LLVM_FALLTHROUGH to address warning: this statement may fall through. NFC.

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

7 years agoAdded LLVM_FALLTHROUGH to address warning: this statement may fall through. NFC.
Galina Kistanova [Sat, 3 Jun 2017 05:18:46 +0000 (05:18 +0000)]
Added LLVM_FALLTHROUGH to address warning: this statement may fall through. NFC.

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

7 years agoAdded LLVM_FALLTHROUGH to address warning: this statement may fall through. NFC.
Galina Kistanova [Sat, 3 Jun 2017 05:11:14 +0000 (05:11 +0000)]
Added LLVM_FALLTHROUGH to address warning: this statement may fall through. NFC.

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

7 years ago[WebAssembly] Refactor WasmObjectWriter::writeObject
Sam Clegg [Sat, 3 Jun 2017 02:01:24 +0000 (02:01 +0000)]
[WebAssembly] Refactor WasmObjectWriter::writeObject

The size of this function was getting a little out of.
control.  Split code for writing each section type into
seperate functions.

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

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

7 years ago[sanitizer-coverage] one more flavor of coverage: -fsanitize-coverage=inline-8bit...
Kostya Serebryany [Sat, 3 Jun 2017 01:35:47 +0000 (01:35 +0000)]
[sanitizer-coverage] one more flavor of coverage: -fsanitize-coverage=inline-8bit-counters. Experimental so far, not documenting yet.

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

7 years agoAMDGPU/GlobalISel: Mark 1-bit integer constants as legal
Tom Stellard [Sat, 3 Jun 2017 01:13:33 +0000 (01:13 +0000)]
AMDGPU/GlobalISel: Mark 1-bit integer constants as legal

Summary:
These are mostly legal, but will probably need special lowering for some
cases.

Reviewers: arsenm

Reviewed By: arsenm

Subscribers: kzhuravl, wdng, nhaehnle, yaxunl, rovka, kristof.beyls, igorb, dstuttard, tpr, llvm-commits, t-tye

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

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

7 years ago[CodeGen] Fix Windows builds which treat warnings as errors, broken in r304621.
Eugene Zelenko [Sat, 3 Jun 2017 01:04:06 +0000 (01:04 +0000)]
[CodeGen] Fix Windows builds which treat warnings as errors, broken in r304621.

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

7 years agoRevert "[CFI] Remove LinkerSubsectionsViaSymbols."
Evgeniy Stepanov [Sat, 3 Jun 2017 00:46:27 +0000 (00:46 +0000)]
Revert "[CFI] Remove LinkerSubsectionsViaSymbols."

This reverts commit r304582: breaks cfi-devirt :: anon-namespace.cpp on Darwin.

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

7 years ago[AMDGPU] Preserve operand order in SIFoldOperands
Stanislav Mekhanoshin [Sat, 3 Jun 2017 00:41:52 +0000 (00:41 +0000)]
[AMDGPU] Preserve operand order in SIFoldOperands

SIFoldOperands can commute operands even if no folding was done.
This change is to preserve IR is no folding was done.

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

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

7 years ago[CodeGen] Fix Windows builds broken in r304621.
Eugene Zelenko [Sat, 3 Jun 2017 00:39:36 +0000 (00:39 +0000)]
[CodeGen] Fix Windows builds broken in r304621.

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

7 years ago[PDB] Fix use after free.
Zachary Turner [Sat, 3 Jun 2017 00:33:35 +0000 (00:33 +0000)]
[PDB] Fix use after free.

Previously MappedBlockStream owned its own BumpPtrAllocator that
it would allocate from when a read crossed a block boundary.  This
way it could still return the user a contiguous buffer of the
requested size.  However, It's not uncommon to open a stream, read
some stuff, close it, and then save the information for later.
After all, since the entire file is mapped into memory, the data
should always be available as long as the file is open.

Of course, the exception to this is when the data isn't *in* the
file, but rather in some buffer that we temporarily allocated to
present this contiguous view.  And this buffer would get destroyed
as soon as the strema was closed.

The fix here is to force the user to specify the allocator, this
way it can provide an allocator that has whatever lifetime it
chooses.

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

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

7 years agoLiveRegUnits: Port recent LivePhysRegs bugfixes
Matthias Braun [Sat, 3 Jun 2017 00:26:35 +0000 (00:26 +0000)]
LiveRegUnits: Port recent LivePhysRegs bugfixes

Adjust code to look more like the code in LivePhysRegs and port over the
fix for LivePhysRegs from r304001 and adapt to the new CSR management in
MachineRegisterInfo.

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

7 years ago[CodeGen] Fix some Clang-tidy modernize-use-using and Include What You Use warnings...
Eugene Zelenko [Sat, 3 Jun 2017 00:22:41 +0000 (00:22 +0000)]
[CodeGen] 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@304621 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[AMDGPU] V_DIV_FIXUP_F16 is not a commutable operation
Stanislav Mekhanoshin [Sat, 3 Jun 2017 00:16:44 +0000 (00:16 +0000)]
[AMDGPU] V_DIV_FIXUP_F16 is not a commutable operation

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

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

7 years ago[SLP] Improve comments and naming of functions/variables/members, NFC.
Alexey Bataev [Sat, 3 Jun 2017 00:08:21 +0000 (00:08 +0000)]
[SLP] Improve comments and naming of functions/variables/members, NFC.

Fixed some comments, added an additional description of the algorithms,
improved readability of the code.

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

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

7 years ago[SystemZ] Simplify test case. NFC
Quentin Colombet [Fri, 2 Jun 2017 23:40:58 +0000 (23:40 +0000)]
[SystemZ] Simplify test case. NFC

Remove useless successors information.

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

7 years ago[x86] fix over-specific triple; NFC
Sanjay Patel [Fri, 2 Jun 2017 23:40:46 +0000 (23:40 +0000)]
[x86] fix over-specific triple; NFC

There's nothing darwin-specific in these tests, and using
that setting causes extra phantom diffs when the auto-generated
check lines are regenerated today.

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