OSDN Git Service

android-x86/external-llvm.git
7 years ago[ADT] Use LLVM_ATTRIBUTE_USED instead of __attribute__ for unit test
Francis Ricci [Sun, 11 Jun 2017 19:28:21 +0000 (19:28 +0000)]
[ADT] Use LLVM_ATTRIBUTE_USED instead of __attribute__ for unit test

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

7 years ago[ADT] Suppress unused attribute warning in unit test
Francis Ricci [Sun, 11 Jun 2017 18:52:25 +0000 (18:52 +0000)]
[ADT] Suppress unused attribute warning in unit test

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

7 years agoFix unused variable warning on non-debug EXPENSIVE_CHECKS builds
Simon Pilgrim [Sun, 11 Jun 2017 12:49:29 +0000 (12:49 +0000)]
Fix unused variable warning on non-debug EXPENSIVE_CHECKS builds

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

7 years ago[DAGCombine] Make sure we check the ResNo from UADDO before combining
Amaury Sechet [Sun, 11 Jun 2017 11:36:38 +0000 (11:36 +0000)]
[DAGCombine] Make sure we check the ResNo from UADDO before combining

Summary: UADDO has 2 result, and one must check the result no before doing any kind of combine. Without it, the transform is invalid.

Reviewers: joerg

Subscribers: llvm-commits

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

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

7 years ago[MemorySSA] preservesAll() implies preserves<MemorySSA>(). NFCI.
Davide Italiano [Sun, 11 Jun 2017 01:05:45 +0000 (01:05 +0000)]
[MemorySSA] preservesAll() implies preserves<MemorySSA>(). NFCI.

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

7 years agoTableGen.cmake: Try to fix build breakage introduce in r305142.
NAKAMURA Takumi [Sun, 11 Jun 2017 00:57:30 +0000 (00:57 +0000)]
TableGen.cmake: Try to fix build breakage introduce in r305142.

LLVM_TABLEGEN_TARGET is undefined in clang standalone build.
STREQUAL cannot omit LHS. Then I saw an error;

  CMake Error at /path/to/install/llvm/lib/cmake/llvm/TableGen.cmake:40 (if):
      if given arguments:
        "STREQUAL" "/path/to/install/llvm/bin/llvm-tblgen.exe"
      Unknown arguments specified

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

7 years ago[SmallVector] Reinstate the typedefs.
Davide Italiano [Sat, 10 Jun 2017 23:18:32 +0000 (23:18 +0000)]
[SmallVector] Reinstate the typedefs.

They're unused with recent versions of libstdc++ but older ones
(e.g. libstdc++ 4.9 still requires them). Maybe we should bump
the requirements on the minimum version to make GCC 7 happy, but
in the meanwhile we need to live with the warning.

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

7 years ago[SmallVector] Remove unused typedefs, spotted by GCC 7. NFCI.
Davide Italiano [Sat, 10 Jun 2017 23:00:23 +0000 (23:00 +0000)]
[SmallVector] Remove unused typedefs, spotted by GCC 7. NFCI.

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

7 years ago[opt-viewer] Include default values in help output
Brian Gesiak [Sat, 10 Jun 2017 21:33:27 +0000 (21:33 +0000)]
[opt-viewer] Include default values in help output

Summary:
Python's argparse module includes a `%(default)s` format specifier that
can be used to print the default value of an option in its help text.
Use this for opt-viewer utilities' `--jobs` arguments.

Reviewers: anemet

Reviewed By: anemet

Subscribers: llvm-commits, fhahn

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

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

7 years ago[X86][SSE] Extended PR32368 to SSE/AVX1/AVX2
Simon Pilgrim [Sat, 10 Jun 2017 21:13:01 +0000 (21:13 +0000)]
[X86][SSE] Extended PR32368 to SSE/AVX1/AVX2

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

7 years ago[X86][AVX512] Added test case for PR32368
Simon Pilgrim [Sat, 10 Jun 2017 20:58:43 +0000 (20:58 +0000)]
[X86][AVX512] Added test case for PR32368

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

7 years agodwarfdump: Handle relocs to zlib (.zdebug*) compressed sections
David Blaikie [Sat, 10 Jun 2017 19:32:50 +0000 (19:32 +0000)]
dwarfdump: Handle relocs to zlib (.zdebug*) compressed sections

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

7 years ago[X86][SLM] Add SLM arithmetic vectorization tests
Simon Pilgrim [Sat, 10 Jun 2017 19:16:09 +0000 (19:16 +0000)]
[X86][SLM] Add SLM arithmetic vectorization tests

As discussed on D33983, as SLM has so many custom costs its worth testing as well.

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

7 years agoBreak seems serve better here.
Galina Kistanova [Sat, 10 Jun 2017 18:26:19 +0000 (18:26 +0000)]
Break seems serve better here.

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

7 years agoFix a ubsan failure introduced by r305092
Vedant Kumar [Sat, 10 Jun 2017 18:07:24 +0000 (18:07 +0000)]
Fix a ubsan failure introduced by r305092

lib/Object/WindowsResource.cpp:578:3: runtime error: store to
misaligned address 0x7fa09aedebbe for type 'unsigned int', which
requires 4 byte alignment
0x7fa09aedebbe: note: pointer points here
00 00 03 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00  00 00
            ^

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

7 years ago[EarlyCSE] Add option to use MemorySSA for function simplification run of EarlyCSE...
Geoff Berry [Sat, 10 Jun 2017 15:20:03 +0000 (15:20 +0000)]
[EarlyCSE] Add option to use MemorySSA for function simplification run of EarlyCSE (off by default).

Summary:
Use MemorySSA for memory dependency checking in the EarlyCSE pass at the
start of the function simplification portion of the pipeline.  We rely
on the fact that GVNHoist runs just after this pass of EarlyCSE to
amortize the MemorySSA construction cost since GVNHoist uses MemorySSA
and EarlyCSE preserves it.

This is turned off by default.  A follow-up change will turn it on to
allow for easier reversion in case it breaks something.

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

7 years agoAdded llvm_unreachable to address warning: this statement may fall through. NFC.
Galina Kistanova [Sat, 10 Jun 2017 08:04:51 +0000 (08:04 +0000)]
Added llvm_unreachable to address warning: this statement may fall through. NFC.

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

7 years agoAdded llvm_unreachable as ReportError cannot be specified as noreturn.
Galina Kistanova [Sat, 10 Jun 2017 07:50:14 +0000 (07:50 +0000)]
Added llvm_unreachable as ReportError cannot be specified as noreturn.

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

7 years agoAdded dependency on the TableGen executable file.
Galina Kistanova [Sat, 10 Jun 2017 07:48:49 +0000 (07:48 +0000)]
Added dependency on the TableGen executable file.

For the case when LLVM_OPTIMIZED_TABLEGEN is ON (enables LLVM_USE_HOST_TOOLS),
we need both _TABLEGEN_TARGET and _TABLEGEN_EXE in the  DEPENDS list
to have .inc files rebuilt on a tablegen change, as cmake does not propagate
file-level dependencies of custom targets.

We could always have just one dependency on both the target and
the file, but the 2 cases would produce cleaner cmake files.

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

7 years ago[IR] Remove stale comment from HungoffOperandTraits. NFC
Craig Topper [Sat, 10 Jun 2017 06:58:26 +0000 (06:58 +0000)]
[IR] Remove stale comment from HungoffOperandTraits. NFC

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

7 years ago[IR] Delete operator new(size_t, unsigned) for ShuffleVector making it consistent...
Craig Topper [Sat, 10 Jun 2017 06:58:24 +0000 (06:58 +0000)]
[IR] Delete operator new(size_t, unsigned) for ShuffleVector making it consistent with other instructions that declare another operator new with a different signature. NFC

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

7 years ago[IR] Put a comment back on a function it belongs to. NFC
Craig Topper [Sat, 10 Jun 2017 06:58:22 +0000 (06:58 +0000)]
[IR] Put a comment back on a function it belongs to. NFC

Looks like the function was moved to a different part of the class in December, but the comment didn't move with it.

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

7 years ago[IR] Remove unnecessary override of operator new in ExtractValueInst. It's already...
Craig Topper [Sat, 10 Jun 2017 06:58:19 +0000 (06:58 +0000)]
[IR] Remove unnecessary override of operator new in ExtractValueInst. It's already inherited from UnaryInstruction. NFC

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

7 years agoAMDGPU : Fix ISA Version Definitions.
Wei Ding [Sat, 10 Jun 2017 03:53:19 +0000 (03:53 +0000)]
AMDGPU : Fix ISA Version Definitions.

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

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

7 years ago[InstSimplify] Don't constant fold or DCE calls that are marked nobuiltin
Andrew Kaylor [Fri, 9 Jun 2017 23:18:11 +0000 (23:18 +0000)]
[InstSimplify] Don't constant fold or DCE calls that are marked nobuiltin

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

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

7 years ago[PowerPC] add memcmp test with one constant operand and equality cmp; NFC
Sanjay Patel [Fri, 9 Jun 2017 23:15:14 +0000 (23:15 +0000)]
[PowerPC] add memcmp test with one constant operand and equality cmp; NFC

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

7 years ago[CGP] add a reference to DataLayout in MemCmpExpansion; NFCI
Sanjay Patel [Fri, 9 Jun 2017 23:01:05 +0000 (23:01 +0000)]
[CGP] add a reference to DataLayout in MemCmpExpansion; NFCI

We're currently passing endian-ness around as a param (and not uniformly),
so this eliminates the need for that. I'd like to add a constant fold
call too, and that requires a DL.

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

7 years ago[AArch64] Add fallback in FastISel fp16 conversions
I-Jui (Ray) Sung [Fri, 9 Jun 2017 22:40:50 +0000 (22:40 +0000)]
[AArch64] Add fallback in FastISel fp16 conversions

Summary:
- Fix assertion failures on F16 to/from int types in FastISel by falling
  back to regular ISel
- Add a testcase of various conversion cases with FastISel (-O0)

Reviewers: kristof.beyls, jmolloy, SjoerdMeijer

Reviewed By: SjoerdMeijer

Subscribers: SjoerdMeijer, llvm-commits, srhines, pirama, aemerson, rengolin, javed.absar, kristof.beyls

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

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

7 years agoEnable c++1z experimental builds.
Vassil Vassilev [Fri, 9 Jun 2017 22:09:57 +0000 (22:09 +0000)]
Enable c++1z experimental builds.

Patch by David Abdurachmanov!

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

7 years ago[Support] Fix some Clang-tidy modernize-use-using and Include What You Use warnings...
Eugene Zelenko [Fri, 9 Jun 2017 21:41:54 +0000 (21:41 +0000)]
[Support] 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@305119 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[LVI] Fix spelling error in comment. NFC
Craig Topper [Fri, 9 Jun 2017 21:21:17 +0000 (21:21 +0000)]
[LVI] Fix spelling error in comment. NFC

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

7 years ago[LVI] Const correct and rename the LVILatticeVal parameter to getPredicateResult...
Craig Topper [Fri, 9 Jun 2017 21:18:16 +0000 (21:18 +0000)]
[LVI] Const correct and rename the LVILatticeVal parameter to getPredicateResult. NFC

Previously it was non-const reference named Result which would tend to make someone think that it was an outparam when really its an input.

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

7 years ago[pdb] Support CoffSymbolRVA debug subsection.
Zachary Turner [Fri, 9 Jun 2017 20:46:52 +0000 (20:46 +0000)]
[pdb] Support CoffSymbolRVA debug subsection.

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

7 years ago[SROA] Fix APInt size when load/store have different address space
Yaxun Liu [Fri, 9 Jun 2017 20:46:29 +0000 (20:46 +0000)]
[SROA] Fix APInt size when load/store have different address space

Currently there is a bug in SROA::presplitLoadsAndStores which causes assertion in
GEPOperator::accumulateConstantOffset.

Basically it does not consider the situation that the pointer operand of load or store
may be in a non-zero address space and its size may be different from the size of
a pointer in address space 0.

This patch fixes assertion when compiling Blender Cycles kernels for amdgpu backend.

Diffferential Revision: https://reviews.llvm.org/D33298

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

7 years agoRename llvm-pdbdump -> llvm-pdbutil.
Zachary Turner [Fri, 9 Jun 2017 20:46:17 +0000 (20:46 +0000)]
Rename llvm-pdbdump -> llvm-pdbutil.

This is to reflect the evolving nature of the tool as being
useful for more than just dumping PDBs, as it can do many other
things.

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

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

7 years ago[ADT] Make iterable SmallVector template overrides more specific
Francis Ricci [Fri, 9 Jun 2017 20:31:53 +0000 (20:31 +0000)]
[ADT] Make iterable SmallVector template overrides more specific

Summary:
This prevents the iterator overrides from being selected in
the case where non-iterator types are used as arguments, which
is of particular importance in cases where other overrides with
identical types exist.

Reviewers: dblaikie, bkramer, rafael

Subscribers: llvm-commits, efriedma

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

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

7 years ago[Sink] Fix predicate in legality check
Keno Fischer [Fri, 9 Jun 2017 19:31:10 +0000 (19:31 +0000)]
[Sink] Fix predicate in legality check

Summary:
isSafeToSpeculativelyExecute is the wrong predicate to use here.
All that checks for is whether it is safe to hoist a value due to
unaligned/un-dereferencable accesses. However, not only are we doing
sinking rather than hoisting, our concern is that the location
we're loading from may have been modified. Instead forbid sinking
any load across a critical edge.

Reviewers: majnemer

Subscribers: davide, llvm-commits

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

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

7 years agoI guess /dev/null is a bad idea on windows. Use a temp file instead.
Benjamin Kramer [Fri, 9 Jun 2017 19:18:07 +0000 (19:18 +0000)]
I guess /dev/null is a bad idea on windows. Use a temp file instead.

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

7 years ago[AMDGPU] Add intrinsics for alignbit and alignbyte instructions
Stanislav Mekhanoshin [Fri, 9 Jun 2017 19:03:00 +0000 (19:03 +0000)]
[AMDGPU] Add intrinsics for alignbit and alignbyte instructions

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

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

7 years ago[llvm-cvtres] Don't polute the test directory.
Benjamin Kramer [Fri, 9 Jun 2017 18:44:10 +0000 (18:44 +0000)]
[llvm-cvtres] Don't polute the test directory.

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

7 years agoFix -Wreorder-fields warning.
Zachary Turner [Fri, 9 Jun 2017 18:04:02 +0000 (18:04 +0000)]
Fix -Wreorder-fields warning.

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

7 years agoAllow VarStreamArray to use stateful extractors.
Zachary Turner [Fri, 9 Jun 2017 17:54:36 +0000 (17:54 +0000)]
Allow VarStreamArray to use stateful extractors.

Previously extractors tried to be stateless with any additional
context information needed in order to parse items being passed
in via the extraction method.  This led to quite cumbersome
implementation challenges and awkwardness of use.  This patch
brings back support for stateful extractors, making the
implementation and usage simpler.

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

7 years agoImplement COFF emission for parsed Windows Resource ( .res) files.
Eric Beckmann [Fri, 9 Jun 2017 17:34:30 +0000 (17:34 +0000)]
Implement COFF emission for parsed Windows Resource ( .res) files.

Summary: Add the WindowsResourceCOFFWriter class for producing the final COFF after all parsing is done.

Reviewers: hiraditya!, zturner, ruiu

Subscribers: llvm-commits

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

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

7 years ago[X86][SSE] Add support for PACKSS nodes to faux shuffle extraction
Simon Pilgrim [Fri, 9 Jun 2017 17:29:52 +0000 (17:29 +0000)]
[X86][SSE] Add support for PACKSS nodes to faux shuffle extraction

If the inputs won't saturate during packing then we can treat the PACKSS as a truncation shuffle

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

7 years agoWe do not need google test utils if we disabled LLVM_INCLUDE_TESTS
Vassil Vassilev [Fri, 9 Jun 2017 16:37:39 +0000 (16:37 +0000)]
We do not need google test utils if we disabled LLVM_INCLUDE_TESTS

Fixes embedded uses of llvm where google testing framework is provided outside.

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

7 years ago[LazyValueInfo] Don't run the more complex predicate handling code for EQ and NE...
Craig Topper [Fri, 9 Jun 2017 16:16:20 +0000 (16:16 +0000)]
[LazyValueInfo] Don't run the more complex predicate handling code for EQ and NE in getPredicateResult

Summary:
Unless I'm mistaken, the special handling for EQ/NE should cover everything and there is no reason to fallthrough to the more complex code. For that matter I'm not sure there's any reason to special case EQ/NE other than avoiding creating temporary ConstantRanges.

This patch moves the complex code into an else so we only do it when we are handling a predicate other than EQ/NE.

Reviewers: anna, reames, resistor, Farhana

Reviewed By: anna

Subscribers: llvm-commits

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

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

7 years ago[Hexagon] Fixes and updates to the selection patterns
Krzysztof Parzyszek [Fri, 9 Jun 2017 15:26:21 +0000 (15:26 +0000)]
[Hexagon] Fixes and updates to the selection patterns

- Add some missing patterns.
- Use C4_cmplte in branch patterns.
- Fix signedness of immediate operand in M2_accii.

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

7 years agoSelectionDAG: Remove deleted nodes from legalized set to avoid clash with newly creat...
Zvi Rackover [Fri, 9 Jun 2017 14:53:45 +0000 (14:53 +0000)]
SelectionDAG: Remove deleted nodes from legalized set to avoid clash with newly created nodes

Summary:
During DAG legalization loop in SelectionDAG::Legalize(),
bookkeeping of the SDNodes that were already legalized is implemented
with SmallPtrSet (LegalizedNodes). This kind of set stores only pointers
to objects, not the objects themselves. Unfortunately, if SDNode is
deleted during legalization for some reason, LegalizedNodes set is not
informed about this fact. This wouldn’t be so bad, if SelectionDAG wouldn’t reuse
space deallocated after deletion of unused nodes, for creation of new
ones. Because of this, new nodes, created during legalization often can
have pointers identical to ones that have been previously legalized,
added to the LegalizedNodes set, and deleted afterwards. This in turn
causes, that newly created nodes, sharing the same pointer as deleted
old ones, are present in LegalizedNodes *already at the moment of
creation*, so we never call Legalize on them.
The fix facilitates the fact, that DAG notifies listeners about each
modification. I have registered DAGNodeDeletedListener inside
SelectionDAG::Legalize, with a callback function that removes any
pointer of any deleted SDNode from the LegalizedNodes set. With this
modification, LegalizeNodes set does not contain pointers to nodes that
were deleted, so newly created nodes can always be inserted to it, even
if they share pointers with old deleted nodes.

Patch by pawel.szczerbuk@intel.com

The issue this patch addresses causes failures in an out-of-tree target,
and i was not able to create a reproducer for an in-tree target, hence
there is no test-case.

Reviewers: delena, spatel, RKSimon, hfinkel, davide, qcolombet

Reviewed By: delena

Subscribers: llvm-commits

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

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

7 years agoReland "[SelectionDAG] Enable target specific vector scalarization of calls and returns"
Simon Dardis [Fri, 9 Jun 2017 14:37:08 +0000 (14:37 +0000)]
Reland "[SelectionDAG] Enable target specific vector scalarization of calls and returns"

By target hookifying getRegisterType, getNumRegisters, getVectorBreakdown,
backends can request that LLVM to scalarize vector types for calls
and returns.

The MIPS vector ABI requires that vector arguments and returns are passed in
integer registers. With SelectionDAG's new hooks, the MIPS backend can now
handle LLVM-IR with vector types in calls and returns. E.g.
'call @foo(<4 x i32> %4)'.

Previously these cases would be scalarized for the MIPS O32/N32/N64 ABI for
calls and returns if vector types were not legal. If vector types were legal,
a single 128bit vector argument would be assigned to a single 32 bit / 64 bit
integer register.

By teaching the MIPS backend to inspect the original types, it can now
implement the MIPS vector ABI which requires a particular method of
scalarizing vectors.

Previously, the MIPS backend relied on clang to scalarize types such as "call
@foo(<4 x float> %a) into "call @foo(i32 inreg %1, i32 inreg %2, i32 inreg %3,
i32 inreg %4)".

This patch enables the MIPS backend to take either form for vector types.

The previous version of this patch had a "conditional move or jump depends on
uninitialized value".

Reviewers: zoran.jovanovic, jaydeep, vkalintiris, slthakur

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

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

7 years ago[SimplifyLibCalls] fix formatting; NFC
Sanjay Patel [Fri, 9 Jun 2017 14:22:03 +0000 (14:22 +0000)]
[SimplifyLibCalls] fix formatting; NFC

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

7 years ago[ValueTracking] fix typo; NFC
Sanjay Patel [Fri, 9 Jun 2017 14:21:18 +0000 (14:21 +0000)]
[ValueTracking] fix typo; NFC

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

7 years ago[AMDGPU] Fix for issue in alloca to vector promotion pass
David Stuttard [Fri, 9 Jun 2017 14:16:22 +0000 (14:16 +0000)]
[AMDGPU] Fix for issue in alloca to vector promotion pass

Summary:
Alloca promotion pass not dealing with non-canonical input

Added some additional checks so the pass simply backs-off forms it can't deal with (non-canonical)

Also added some test cases in non-canonical form to check that it no longer crashes

Subscribers: arsenm, kzhuravl, wdng, nhaehnle, yaxunl, tpr, t-tye

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

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

7 years ago[ARM] Custom machine-scheduler. NFCI.
Javed Absar [Fri, 9 Jun 2017 14:07:21 +0000 (14:07 +0000)]
[ARM] Custom machine-scheduler. NFCI.

This patch creates a customised machine-scheduler for ARM targets,
so that subsequently DAG mutations etc can be added.
Reviewed by: hahn, rengolin, rovka.
Differential Revision: https://reviews.llvm.org/D34039

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

7 years ago[MC] Fix compiler crash in AsmParser::Lex
Nirav Dave [Fri, 9 Jun 2017 14:04:03 +0000 (14:04 +0000)]
[MC] Fix compiler crash in AsmParser::Lex

When an empty comment is present in an assembly file, the compiler will crash because it checks the first character for '\n' or '\r'.
The fix consists of also checking if the string is empty before accessing the *front* method of the StringRef.
A test is included for the x86 target, but this issue is reproducible with other targets as well.

Patch by Alexandru Guduleasa!

Reviewers: niravd, grosbach, llvm-commits

Reviewed By: niravd

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

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

7 years ago[Hexagon] Add LLVM header to HexagonPatterns.td
Krzysztof Parzyszek [Fri, 9 Jun 2017 13:30:58 +0000 (13:30 +0000)]
[Hexagon] Add LLVM header to HexagonPatterns.td

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

7 years ago[XRay] Fix computation of function size subject to XRay threshold
Serge Rogatch [Fri, 9 Jun 2017 13:23:23 +0000 (13:23 +0000)]
[XRay] Fix computation of function size subject to XRay threshold

Summary:
Currently XRay compares its threshold against `Function::size()` . However, `Function::size()` returns the number of basic blocks (as I understand, such as cycle bodies, if/else bodies, switch-case bodies, etc.), rather than the number of instructions.

The name of the parameter `-fxray-instruction-threshold=N`, as well as XRay documentation at http://llvm.org/docs/XRay.html , suggests that instructions should be counted, rather than the number of basic blocks.

I see two options:
1. Count the number of MachineInstr`s in MachineFunction : this gives better  estimate for the number of assembly instructions on the target. So a user can check in disassembly that the threshold works more or less correctly.
2. Count the number of Instruction`s in a Function : AFAIK, this gives correct number of IR instructions, which the user can check in IR listing. However, this number may be far (several times for small functions) from the number of assembly instructions finally emitted.

Option 1 is implemented in this patch because I think that having the closer estimate for the number of assembly instructions emitted is more important than to have a clear definition of the metric.

Reviewers: dberris, rengolin

Reviewed By: dberris

Subscribers: llvm-commits, iid_iunknown

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

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

7 years agoPrevent RemoveDeadNodes from deleted already deleted node.
Nirav Dave [Fri, 9 Jun 2017 12:57:35 +0000 (12:57 +0000)]
Prevent RemoveDeadNodes from deleted already deleted node.

This prevents against assertion errors like PR32659 which occur from a
replacement deleting a node after it's been added to the list argument
of RemoveDeadNodes. The specific failure from PR32659 does not
currently happen, but it is still potentially possible. The underlying
cause is that the callers of the change dfunction builds up a list of
nodes to delete after having moved their uses and it possible that a
move of a later node will cause a previously deleted nodes to be
deleted.

Reviewers: bkramer, spatel, davide

Reviewed By: spatel

Subscribers: llvm-commits

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

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

7 years ago[ARM] Add scheduling info for VFMS
Oliver Stannard [Fri, 9 Jun 2017 09:19:09 +0000 (09:19 +0000)]
[ARM] Add scheduling info for VFMS

The scalar VFMS instructions did not have scheduling information attached (but
VFMA did), which was causing assertion failures with the Cortex-A57 scheduling
model and -fp-contract=fast.

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

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

7 years agollvm/test/DebugInfo/PDB/pdbdump-debug-subsections.test: Try to unbreak r305043.
NAKAMURA Takumi [Fri, 9 Jun 2017 08:50:39 +0000 (08:50 +0000)]
llvm/test/DebugInfo/PDB/pdbdump-debug-subsections.test: Try to unbreak r305043.

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

7 years agoTest commit: remove whitespace
Stefan Maksimovic [Fri, 9 Jun 2017 07:57:05 +0000 (07:57 +0000)]
Test commit: remove whitespace

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

7 years agobugpoint: disabling symbolication of bugpoint-executed programs
David Blaikie [Fri, 9 Jun 2017 07:29:03 +0000 (07:29 +0000)]
bugpoint: disabling symbolication of bugpoint-executed programs

Initial implementation - needs similar work/testing for other tools
bugpoint invokes (llc, lli I think, maybe more).

Alternatively (as suggested by chandlerc@) an environment variable could
be used. This would allow the option to pass transparently through user
scripts, pass to compilers if they happened to be LLVM-ish, etc.

I worry a bit about using cl::opt in the crash handling code - LLVM
might crash early, perhaps before the cl::opt is properly initialized?
Or at least before arguments have been parsed?

 - should be OK since it defaults to "pretty", so if the crash is very
 early in opt parsing, etc, then crash reports will still be symbolized.

I shyed away from doing this with an environment variable when I
realized that would require copying the existing environment and
appending the env variable of interest. But it seems there's no existing
LLVM API for accessing the environment (even the Support tests for
process launching have their own ifdefs for getting the environment). It
could be added, but seemed like a higher bar/untested codepath to
actually add environment variables.

Most importantly, this reduces the runtime of test/BugPoint/metadata.ll
in a split-dwarf Debug build from 1m34s to 6.5s by avoiding a lot of
symbolication. (this wasn't a problem for non-split-dwarf builds only
because the executable was too large to map into memory (due to bugpoint
setting a 400MB memory (including address space - not sure why? Going to
remove that) limit on the child process) so symbolication would fail
fast & wouldn't spend all that time parsing DWARF, etc)

Reviewers: chandlerc, dannyb

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

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

7 years ago[IndVars] Add an option to be able to disable LFTR
Serguei Katkov [Fri, 9 Jun 2017 06:11:59 +0000 (06:11 +0000)]
[IndVars] Add an option to be able to disable LFTR

This change adds an option disable-lftr to be able to disable Linear Function Test Replace optimization.
By default option is off so current behavior is not changed.

Reviewers: reames, sanjoy, wmi, andreadb, apilipenko
Reviewed By: sanjoy
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D33979

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

7 years ago[LoopVectorize] Don't preserve nsw/nuw flags on shrunken ops.
George Burgess IV [Fri, 9 Jun 2017 03:56:15 +0000 (03:56 +0000)]
[LoopVectorize] Don't preserve nsw/nuw flags on shrunken ops.

If we're shrinking a binary operation, it may be the case that the new
operations wraps where the old didn't. If this happens, the behavior
should be well-defined. So, we can't always carry wrapping flags with us
when we shrink operations.

If we do, we get incorrect optimizations in cases like:

void foo(const unsigned char *from, unsigned char *to, int n) {
  for (int i = 0; i < n; i++)
    to[i] = from[i] - 128;
}

which gets optimized to:

void foo(const unsigned char *from, unsigned char *to, int n) {
  for (int i = 0; i < n; i++)
    to[i] = from[i] | 128;
}

Because:
- InstCombine turned `sub i32 %from.i, 128` into
  `add nuw nsw i32 %from.i, 128`.
- LoopVectorize vectorized the add to be `add nuw nsw <16 x i8>` with a
  vector full of `i8 128`s
- InstCombine took advantage of the fact that the newly-shrunken add
  "couldn't wrap", and changed the `add` to an `or`.

InstCombine seems happy to figure out whether we can add nuw/nsw on its
own, so I just decided to drop the flags. There are already a number of
places in LoopVectorize where we rely on InstCombine to clean up.

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

7 years agoInliner: Don't touch indirect calls
David Blaikie [Fri, 9 Jun 2017 03:29:20 +0000 (03:29 +0000)]
Inliner: Don't touch indirect calls

Other comments/implications are that this isn't intended behavior (nor
perserved/reimplemented in the new inliner) & complicates fixing the
'inlining' of trivially dead calls without consulting the cost function
first.

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

7 years agoFix -Wunused-variable.
Rui Ueyama [Fri, 9 Jun 2017 03:26:45 +0000 (03:26 +0000)]
Fix -Wunused-variable.

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

7 years ago[llvm-pdbdump] Fix -Wpessimizing-move warnings.
Craig Topper [Fri, 9 Jun 2017 03:25:57 +0000 (03:25 +0000)]
[llvm-pdbdump] Fix -Wpessimizing-move warnings.

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

7 years ago[InstCombine] Pass a proper context instruction to all of the calls into InstSimplify
Craig Topper [Fri, 9 Jun 2017 03:21:29 +0000 (03:21 +0000)]
[InstCombine] Pass a proper context instruction to all of the calls into InstSimplify

Summary: This matches the behavior we already had for compares and makes us consistent everywhere.

Reviewers: dberlin, hfinkel, spatel

Reviewed By: dberlin

Subscribers: llvm-commits

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

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

7 years ago[codeview] use 32-bit integer for RelocOffset in DebugLinesSubsection
Bob Haarman [Fri, 9 Jun 2017 01:18:10 +0000 (01:18 +0000)]
[codeview] use 32-bit integer for RelocOffset in DebugLinesSubsection

Summary:
RelocOffset is a 32-bit value, but we previously truncated it to 16 bits.

Fixes PR33335.

Reviewers: zturner, hiraditya!

Reviewed By: zturner

Subscribers: llvm-commits

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

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

7 years ago[pdb] Don't crash on unknown debug subsections.
Zachary Turner [Fri, 9 Jun 2017 00:53:59 +0000 (00:53 +0000)]
[pdb] Don't crash on unknown debug subsections.

More and more unknown debug subsection kinds are being discovered
so we should make it possible to dump these and display the
bytes.

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

7 years agosink DebugCompressionType into MC for exposing to clang
Saleem Abdulrasool [Fri, 9 Jun 2017 00:40:19 +0000 (00:40 +0000)]
sink DebugCompressionType into MC for exposing to clang

This is a preparatory change to expose the debug compression style to
clang.  It requires exposing the enumeration and passing the actual
value through to the backend from the frontend in actual value form
rather than a boolean that selects the GNU style of debug info
compression.

Minor tweak to the ELF Object Writer to use a variable for re-used
values.  Add an assertion that debug information format is one of the
two currently known types if debug information is being compressed.

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

7 years ago[CodeView] Support remaining debug subsection types
Zachary Turner [Fri, 9 Jun 2017 00:28:08 +0000 (00:28 +0000)]
[CodeView] Support remaining debug subsection types

This adds support for Symbols, StringTable, and FrameData subsection
types.  Even though these subsections rarely if ever appear in a PDB
file (they are usually in object files), there's no theoretical reason
why they *couldn't* appear in a PDB.  The real issue though is that in
order to add support for dumping and writing them (which will be useful
for object files), we need a way to test them.  And since there is no
support for reading and writing them to / from object files yet, making
PDB support them is the best way to both add support for the underlying
format and add support for tests at the same time.  Later, when we go
to add support for reading / writing them from object files, we'll need
only minimal changes in the underlying read/write code.

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

7 years agoFix build by adding includes.
Zachary Turner [Thu, 8 Jun 2017 23:53:35 +0000 (23:53 +0000)]
Fix build by adding includes.

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

7 years ago[llvm-pdbdump] Support native ordering of subsections in raw mode.
Zachary Turner [Thu, 8 Jun 2017 23:49:01 +0000 (23:49 +0000)]
[llvm-pdbdump] Support native ordering of subsections in raw mode.

This is the same change for the YAML Output style applied to the
raw output style.  Previously we would queue up all subsections
until every one had been read, and then output them in a pre-
determined order.  This was because some subsections need to be
read first in order to properly dump later subsections.  This
patch allows them to be dumped in the order they appear.

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

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

7 years ago[llvm-pdbdump] Improve consistency among subcommands.
Zachary Turner [Thu, 8 Jun 2017 23:39:33 +0000 (23:39 +0000)]
[llvm-pdbdump] Improve consistency among subcommands.

The pdb2yaml and raw subcommands did something very
similar but with a different output format, and they
used a lot of the same command line options, but each
one re-implemented the command line option with slightly
different spellings / options.  This patch merges them
together into a single definition which is shared by
both subcommands.  This new syntax also allows for more
flexibility in the way debug subsections are dumped.

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

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

7 years ago[CFI] Remove LinkerSubsectionsViaSymbols.
Evgeniy Stepanov [Thu, 8 Jun 2017 23:38:22 +0000 (23:38 +0000)]
[CFI] Remove LinkerSubsectionsViaSymbols.

Since D17854 LinkerSubsectionsViaSymbols is unnecessary.

It is interfering with ThinLTO implementation of CFI-ICall, where
the aliases used on the !LinkerSubsectionsViaSymbols branch are
needed to export jump tables to ThinLTO backends.

This is the second attempt to land this change after fixing PR33316.

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

7 years ago[ExtractGV] Fix the doxygen comment on the constructor and the class to refer to...
Craig Topper [Thu, 8 Jun 2017 23:38:19 +0000 (23:38 +0000)]
[ExtractGV] Fix the doxygen comment on the constructor and the class to refer to global values instead of functions. While there fix an 80 column violation. NFC

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

7 years agoFixed warning: dereferencing type-punned pointer will break strict-aliasing rules.
Galina Kistanova [Thu, 8 Jun 2017 23:35:52 +0000 (23:35 +0000)]
Fixed warning: dereferencing type-punned pointer will break strict-aliasing rules.

No need in reinterpret_cast<StringTableOffset &> here, as struct coff_symbol Name is a unin
with the member StringTableOffset Offset. This union member could be accessed directly.

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

7 years ago[IR] Remove getNumSuccessorsV/getSuccessorV/setSuccessorV from the TerminatorInst...
Craig Topper [Thu, 8 Jun 2017 23:23:08 +0000 (23:23 +0000)]
[IR] Remove getNumSuccessorsV/getSuccessorV/setSuccessorV from the TerminatorInst subclasses as much as possible now that Value has been de-virtualized

These used to be virtual methods that would enable doing the right thing with only a TerminatorInst pointer. I believe they were also acting as vtable anchors in my cases. I think the fact that they had a separate name ending in V was to allow a version without V to be called without a virtual call in a pre-C++11 final keyword world.

Where possible the base methods in TerminatorInst dispatch directly to the public methods in the classes that have the same signature. For some classes this wasn't possible so I've left private method versions that match the name and signature of the version in TerminatorInst. All versions have been moved into the class definitions since we no longer need vtable anchors here.

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

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

7 years agoWrite summaries for merged modules when splitting modules for ThinLTO.
Peter Collingbourne [Thu, 8 Jun 2017 23:01:49 +0000 (23:01 +0000)]
Write summaries for merged modules when splitting modules for ThinLTO.

This is to prepare to allow for dead stripping of globals in the
merged modules.

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

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

7 years ago[sanitizer-coverage] one more flavor of coverage: -fsanitize-coverage=inline-8bit...
Kostya Serebryany [Thu, 8 Jun 2017 22:58:19 +0000 (22:58 +0000)]
[sanitizer-coverage] one more flavor of coverage: -fsanitize-coverage=inline-8bit-counters. Experimental so far, not documenting yet. Reapplying revisions 304630, 304631, 304632, 304673, see PR33308

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

7 years agoObject: Move datalayout check into irsymtab::build. NFCI.
Peter Collingbourne [Thu, 8 Jun 2017 22:04:24 +0000 (22:04 +0000)]
Object: Move datalayout check into irsymtab::build. NFCI.

This check is a requirement of the irsymtab builder, not of any
particular caller.

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

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

7 years agoBitcode: Introduce a BitcodeFileContents data type. NFCI.
Peter Collingbourne [Thu, 8 Jun 2017 22:00:24 +0000 (22:00 +0000)]
Bitcode: Introduce a BitcodeFileContents data type. NFCI.

This data type includes the contents of a bitcode file.
Right now a bitcode file can only contain modules, but
a later change will add a symbol table.

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

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

7 years agotest-release.sh: Remove workaround for test-suite build
Tom Stellard [Thu, 8 Jun 2017 21:31:59 +0000 (21:31 +0000)]
test-release.sh: Remove workaround for test-suite build

Summary: We aren't actually building the test suite, so this isn't needed.

Reviewers: rengolin, hansw

Reviewed By: rengolin

Subscribers: rengolin, llvm-commits

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

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

7 years agoRegAllocPBQP: Do not assign reserved physical register
Matthias Braun [Thu, 8 Jun 2017 21:30:54 +0000 (21:30 +0000)]
RegAllocPBQP: Do not assign reserved physical register

(0) RegAllocPBQP: Since getRawAllocationOrder() may return a collection that includes reserved physical registers, iterate to find an un-reserved physical register.

(1) VirtRegMap: Enforce the invariant: "no reserved physical registers" in assignVirt2Phys(). Previously, this was checked only after the fact in VirtRegRewriter::rewrite.

(2) MachineVerifier: updated the test per MatzeB's review.

(3) +testcase

Patch by Nick Johnson<Nicholas.Paul.Johnson@deshawresearch.com>!

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

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

7 years ago[Hexagon] Re-enable machine verifier after codegen passes
Krzysztof Parzyszek [Thu, 8 Jun 2017 21:25:36 +0000 (21:25 +0000)]
[Hexagon] Re-enable machine verifier after codegen passes

Remove "false" from the arguments to "addPass" in Hexagon's target pass
config.

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

7 years ago[Hexagon] Skip mux generation when predicate register is undefined
Krzysztof Parzyszek [Thu, 8 Jun 2017 20:56:36 +0000 (20:56 +0000)]
[Hexagon] Skip mux generation when predicate register is undefined

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

7 years ago[MachO] Fix codegen of alias of alias.
Evgeniy Stepanov [Thu, 8 Jun 2017 20:49:03 +0000 (20:49 +0000)]
[MachO] Fix codegen of alias of alias.

Fixes PR33316.

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

7 years ago[CGP, x86] add tests for potential memcmp expansion; NFC
Sanjay Patel [Thu, 8 Jun 2017 20:40:39 +0000 (20:40 +0000)]
[CGP, x86] add tests for potential memcmp expansion; NFC

No IR tests were added with rL304313 ( https://reviews.llvm.org/D28637 ),
so I want these for extra coverage if we enable memcmp expansion for x86.
As shown, nothing is expanded for x86 in CGP yet.

Also fundamentally, we're doing an IR transform, so we should have IR tests
for just that part. If something goes wrong, we need to know if the bug is
in CGP or later lowering.

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

7 years agoDo not early-inline recursive calls in sample profile loader.
Dehao Chen [Thu, 8 Jun 2017 20:11:57 +0000 (20:11 +0000)]
Do not early-inline recursive calls in sample profile loader.

Summary: Early-inlining of recursive call makes the code size bloat exponentially. We should not disable it.

Reviewers: davidxl, dnovillo, iteratee

Reviewed By: iteratee

Subscribers: iteratee, llvm-commits, sanjoy

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

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

7 years agofix formatting; NFC
Sanjay Patel [Thu, 8 Jun 2017 20:00:09 +0000 (20:00 +0000)]
fix formatting; NFC

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

7 years ago[CGP] don't expand a memcmp with nobuiltin attribute
Sanjay Patel [Thu, 8 Jun 2017 19:47:25 +0000 (19:47 +0000)]
[CGP] don't expand a memcmp with nobuiltin attribute

This matches the behavior used in the SDAG when expanding memcmp.

For reference, we're intentionally treating the earlier fortified call transforms differently after:
https://bugs.llvm.org/show_bug.cgi?id=23093
https://reviews.llvm.org/rL233776

One motivation for not transforming nobuiltin calls is that it can interfere with sanitizers:
https://reviews.llvm.org/D19781
https://reviews.llvm.org/D19801

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

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

7 years agoAMDGPU: Work around build special casing .inc files
Matt Arsenault [Thu, 8 Jun 2017 19:25:21 +0000 (19:25 +0000)]
AMDGPU: Work around build special casing .inc files

It complains because it assumes these were autogenerated files
in the source directory.

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

7 years agoAMDGPU: Use correct register names in inline assembly
Matt Arsenault [Thu, 8 Jun 2017 19:03:20 +0000 (19:03 +0000)]
AMDGPU: Use correct register names in inline assembly

Fixes using physical registers in inline asm from clang.

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

7 years ago[Hexagon] Speedup NumNodesBlocking calculation. NFCI.
Nirav Dave [Thu, 8 Jun 2017 18:49:25 +0000 (18:49 +0000)]
[Hexagon] Speedup NumNodesBlocking calculation. NFCI.

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

7 years ago[PPC] In PPCBoolRetToInt change the bool value to i64 if the target is ppc64
Guozhi Wei [Thu, 8 Jun 2017 18:27:24 +0000 (18:27 +0000)]
[PPC] In PPCBoolRetToInt change the bool value to i64 if the target is ppc64

In PPCBoolRetToInt bool value is changed to i32 type. On ppc64 it may introduce an extra zero extension for the return value. This patch changes the integer type to i64 to avoid the zero extension on ppc64.

This patch fixed PR32442.

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

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

7 years ago[AMDGPU] Force qsads instrs to use different dest register than source registers
Mark Searles [Thu, 8 Jun 2017 18:21:19 +0000 (18:21 +0000)]
[AMDGPU] Force qsads instrs to use different dest register than source registers

The V_MQSAD_PK_U16_U8, V_QSAD_PK_U16_U8, and V_MQSAD_U32_U8 take more than 1 pass in hardware. For these three instructions, the destination registers must be different than all sources, so that the first pass does not overwrite sources for the following passes.

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

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

7 years agoUpdate release notes for BinaryFormat library.
Zachary Turner [Thu, 8 Jun 2017 17:47:22 +0000 (17:47 +0000)]
Update release notes for BinaryFormat library.

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

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

7 years agoChanged a comparison operator for std::stable_sort to implement strict weak ordering.
Galina Kistanova [Thu, 8 Jun 2017 17:27:40 +0000 (17:27 +0000)]
Changed a comparison operator for std::stable_sort to implement strict weak ordering.

This is a temporarily fix which needs additional work, as it triggers a test3 failure.
test3 is commented out till then.

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

7 years ago[Power9] Exploit vector integer extend instructions
Zaara Syeda [Thu, 8 Jun 2017 17:14:36 +0000 (17:14 +0000)]
[Power9] Exploit vector integer extend instructions

This patch adds build vector patterns to exploit the vector integer
extend instructions:
vextsb2w - Vector Extend Sign Byte To Word
vextsb2d - Vector Extend Sign Byte To Doubleword
vextsh2w - Vector Extend Sign Halfword To Word
vextsh2d - Vector Extend Sign Halfword To Doubleword
vextsw2d - Vector Extend Sign Word To Doubleword

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

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

7 years ago[PowerPC] add memcmp test with nobuiltin attr; NFC
Sanjay Patel [Thu, 8 Jun 2017 17:09:18 +0000 (17:09 +0000)]
[PowerPC] add memcmp test with nobuiltin attr; NFC

In SDAG, we don't expand libcalls with a nobuiltin attribute.
It's not clear if that's correct from the existing code comment:
"Don't do the check if marked as nobuiltin for some reason."

...adding a test here either way to show that there is currently
a different behavior implemented in the CGP-based expansion.

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