platform/upstream/llvm.git
8 years agoRe-commit "Split LinkerScript::createSections".
Rui Ueyama [Mon, 25 Jul 2016 21:30:00 +0000 (21:30 +0000)]
Re-commit "Split LinkerScript::createSections".

Re-commit r276543 with a fix for buildbots.

llvm-svn: 276693

8 years ago[X86] Regenerate v2i256 shift legalization tests
Simon Pilgrim [Mon, 25 Jul 2016 21:14:22 +0000 (21:14 +0000)]
[X86] Regenerate v2i256 shift legalization tests

llvm-svn: 276692

8 years ago[X86] Regenerate i64 shift legalization tests
Simon Pilgrim [Mon, 25 Jul 2016 21:11:45 +0000 (21:11 +0000)]
[X86] Regenerate i64 shift legalization tests

llvm-svn: 276691

8 years agoGlobalISel: add generic casts to IRTranslator
Tim Northover [Mon, 25 Jul 2016 21:01:29 +0000 (21:01 +0000)]
GlobalISel: add generic casts to IRTranslator

This adds LLVM's 3 main cast instructions (inttoptr, ptrtoint, bitcast) to the
IRTranslator. The first two are direct translations (with 2 MachineInstr types
each). Since LLT discards information, a bitcast might become trivial and we
emit a COPY in those cases instead.

llvm-svn: 276690

8 years agoGlobalISel[AArch64]: support pointer types in argument lowering.
Tim Northover [Mon, 25 Jul 2016 21:01:17 +0000 (21:01 +0000)]
GlobalISel[AArch64]: support pointer types in argument lowering.

They're basically i64 for AArch64, but we'll leave them intact for stranger
targets. Also add some tests for the (very few) other cases we can handle right
now.

llvm-svn: 276689

8 years ago[PM] Port SymbolRewriter to the new PM
Michael Kuperstein [Mon, 25 Jul 2016 20:52:00 +0000 (20:52 +0000)]
[PM] Port SymbolRewriter to the new PM

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

llvm-svn: 276687

8 years agoNext step along the way to getting good error messages for bad archives.
Kevin Enderby [Mon, 25 Jul 2016 20:36:36 +0000 (20:36 +0000)]
Next step along the way to getting good error messages for bad archives.

I consulted with Lang Hames on this work, and the goal was to add a bit
of "where" in the archive the error occurred along with what the error was.

So this step changes ArchiveMemberHeader into a class with a pointer
to the archive header and the parent archive.  Which allows the methods
in the ArchiveMemberHeader to determine which member the header is
for to include that information in the error message.

For this first step the "where" is just the offset to the member in the
archive.  The next step will be a new method on ArchiveMemberHeader
to get the full name, if possible, to be use in the error message.  Which
will now be possible as ArchiveMemberHeader contains a pointer to
the Archive with its string table and its size, etc. so the full name can
be determined from the header if it is valid.

Also this change adds the missing checks the archive header is actually
contained in the buffer and is not truncated, as well as if the terminating
characters are correct in the header.

And changes one error message in Archive::Child::getNext() where the
name or offset to member is now added.

llvm-svn: 276686

8 years agoFix r276671 to not use a defaulted move constructor.
Jordan Rose [Mon, 25 Jul 2016 20:34:25 +0000 (20:34 +0000)]
Fix r276671 to not use a defaulted move constructor.

MSVC won't provide the body of this move constructor and assignment
operator, possibly because the copy constructor is banned. Just write
it manually.

llvm-svn: 276685

8 years ago[Clang-rename] Remove custom version, fix extra space in error message.
Eugene Zelenko [Mon, 25 Jul 2016 20:30:13 +0000 (20:30 +0000)]
[Clang-rename] Remove custom version, fix extra space in error message.

Also fixed some Include What You Use Warnings.

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

llvm-svn: 276684

8 years agoRevert "Enable cross-compilation across architectures on android"
Chris Bieneman [Mon, 25 Jul 2016 20:25:38 +0000 (20:25 +0000)]
Revert "Enable cross-compilation across architectures on android"

This reverts commit r276333.

As I commented in the review (https://reviews.llvm.org/D22415), this change isn't needed because CMAKE_C_FLAGS is implicitly added by CMake to the command line for all C source files.

With this patch enabled CMAKE_C_FLAGS is duplicated on all C sources, and applied to ASM sources, which is not ideal.

I sent an email about this to llvm-commits on the commit thread. I suspect the problem the patch author was actually seeing is that CMAKE_C_FLAGS isn't applied to ASM files, and the builtins library has quite a few of those. The correct solution there is to specify CMAKE_ASM_FLAGS with whatever flags need to be passed to the compiler when compiling ASM files.

If there are other problems with flag propagation, please let me know.

llvm-svn: 276683

8 years agoAMDGPU: Remove read_workdim intrinsic
Jan Vesely [Mon, 25 Jul 2016 20:17:02 +0000 (20:17 +0000)]
AMDGPU: Remove read_workdim intrinsic

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

llvm-svn: 276682

8 years agoScalarizer: Support scalarizing intrinsics
Matt Arsenault [Mon, 25 Jul 2016 20:02:54 +0000 (20:02 +0000)]
Scalarizer: Support scalarizing intrinsics

llvm-svn: 276681

8 years agoAMDGPU: Make skip threshold an option
Matt Arsenault [Mon, 25 Jul 2016 19:48:29 +0000 (19:48 +0000)]
AMDGPU: Make skip threshold an option

llvm-svn: 276680

8 years agoAMDGPU: Fix missing verify-machineinstrs in control flow test
Matt Arsenault [Mon, 25 Jul 2016 19:39:06 +0000 (19:39 +0000)]
AMDGPU: Fix missing verify-machineinstrs in control flow test

llvm-svn: 276679

8 years agoLiveIntervals: Return index from replaceMachineInstrInMaps
Matt Arsenault [Mon, 25 Jul 2016 19:39:04 +0000 (19:39 +0000)]
LiveIntervals: Return index from replaceMachineInstrInMaps

Fixes weird asymmetry with insertion

llvm-svn: 276678

8 years agoMachineVerifier: Fix printing nonsense for physical registers
Matt Arsenault [Mon, 25 Jul 2016 19:39:01 +0000 (19:39 +0000)]
MachineVerifier: Fix printing nonsense for physical registers

llvm-svn: 276677

8 years agoFix invalid iterator use in safestack coloring.
Evgeniy Stepanov [Mon, 25 Jul 2016 19:25:40 +0000 (19:25 +0000)]
Fix invalid iterator use in safestack coloring.

llvm-svn: 276676

8 years agoAMDGPU: Delete dead code
Matt Arsenault [Mon, 25 Jul 2016 19:06:25 +0000 (19:06 +0000)]
AMDGPU: Delete dead code

llvm-svn: 276675

8 years ago[CMake] Cleaning up some CMake warnings
Chris Bieneman [Mon, 25 Jul 2016 18:54:30 +0000 (18:54 +0000)]
[CMake] Cleaning up some CMake warnings

In Bootstrap builds Clang logs some warnings. These are caused because Clang passes CLANG_STAGE and BOOTSTRAP_DEFAULT_PASSTHROUGH into the next stage's configuration.

BOOTSTRAP_DEFAULT_PASSTHROUGH shouldn't be passed, so it is renamed to _BOOTSTRAP_DEFAULT_PASSTHROUGH, to prevent passthrough.

CLANG_STAGE should be passed, so I've changed the code to log it if it is set outside the if(CLANG_ENABLE_BOOTSTRAP) block. This makes the variable always used, so the warning goes away.

llvm-svn: 276674

8 years ago[PGO] Fix profile mismatch in COMDAT function with pre-inliner
Rong Xu [Mon, 25 Jul 2016 18:45:37 +0000 (18:45 +0000)]
[PGO] Fix profile mismatch in COMDAT function with pre-inliner

Pre-instrumentation inline (pre-inliner) greatly improves the IR
instrumentation code performance, among other benefits. One issue of the
pre-inliner is it can introduce CFG-mismatch for COMDAT functions. This
is due to the fact that the same COMDAT function may have different early
inline decisions across different modules -- that means different copies
of COMDAT functions will have different CFG checksum.

In this patch, we propose a partially renaming the COMDAT group and its
member function/variable so we have different profile counter for each
version. We will post-fix the COMDAT function and the group name with its
FunctionHash.

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

llvm-svn: 276673

8 years agoAttempt to pacify windows bots.
Michael Kuperstein [Mon, 25 Jul 2016 18:39:08 +0000 (18:39 +0000)]
Attempt to pacify windows bots.

llvm-svn: 276672

8 years agoStringSwitch cannot be copied (take 2).
Jordan Rose [Mon, 25 Jul 2016 18:34:51 +0000 (18:34 +0000)]
StringSwitch cannot be copied (take 2).

This prevents StringSwitch from being used with 'auto', which is
important because the inferred type is StringSwitch rather than the
result type. This is a problem because StringSwitch stores addresses
of temporary values rather than copying or moving the value into its
own storage.

This is a compromise that still allows wrapping StringSwitch in other
temporary structures, which (unlike StringSwitch) may be non-trivial
to set up and therefore want to at least be movable. (For an example,
see QueryParser.cpp in clang-tools-extra.)

Changing this uncovered the bug in PassBuilder, also in this patch.
Clang doesn't seem to have any occurrences of the issue.

Re-commit of r276652.

llvm-svn: 276671

8 years agoRevert NewGVN N^2 behavior patch
Daniel Berlin [Mon, 25 Jul 2016 18:19:49 +0000 (18:19 +0000)]
Revert NewGVN N^2 behavior patch

llvm-svn: 276670

8 years agoAdd a modulemap for LLVMDebugInfoMsf.
Zachary Turner [Mon, 25 Jul 2016 18:18:59 +0000 (18:18 +0000)]
Add a modulemap for LLVMDebugInfoMsf.

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

llvm-svn: 276669

8 years agoDon't use iplist in SymbolRewriter. NFC.
Michael Kuperstein [Mon, 25 Jul 2016 18:10:54 +0000 (18:10 +0000)]
Don't use iplist in SymbolRewriter. NFC.

There didn't appear to be a good reason to use iplist in this case, a regular
list of unique_ptr works just as well.
Change made in preparation to a new PM port (since iplist is not moveable).

llvm-svn: 276668

8 years agocmake: When adding lit testsuites, ignore Output directories
Justin Bogner [Mon, 25 Jul 2016 18:07:14 +0000 (18:07 +0000)]
cmake: When adding lit testsuites, ignore Output directories

With in-tree builds we can get Output directories scattered among our
tests. Recursing into those to find tests doesn't make sense.

Thanks to nlewycky for noticing this!

llvm-svn: 276667

8 years ago[X86][SSE] Added 2048-bit vector comparison tests
Simon Pilgrim [Mon, 25 Jul 2016 17:56:01 +0000 (17:56 +0000)]
[X86][SSE] Added 2048-bit vector comparison tests

Upper limit of what can be held in a <32 x i8> result

llvm-svn: 276666

8 years agoNFC: Make a few asserts in GVNHoist do the same thing, but cheaper.
Daniel Berlin [Mon, 25 Jul 2016 17:36:14 +0000 (17:36 +0000)]
NFC: Make a few asserts in GVNHoist do the same thing, but cheaper.

llvm-svn: 276662

8 years agoRevert "StringSwitch cannot be copied or moved."
Jordan Rose [Mon, 25 Jul 2016 17:28:33 +0000 (17:28 +0000)]
Revert "StringSwitch cannot be copied or moved."

This reverts commit r276652. The clang-query tool is currently
relying on this behavior. I'll try again later.

llvm-svn: 276661

8 years ago[ELF] Fix bug in test case
Eugene Leviant [Mon, 25 Jul 2016 17:24:56 +0000 (17:24 +0000)]
[ELF] Fix bug in test case

llvm-svn: 276659

8 years agoFix N^2 instruction ordering comparisons in GVNHoist.
Daniel Berlin [Mon, 25 Jul 2016 17:24:27 +0000 (17:24 +0000)]
Fix N^2 instruction ordering comparisons in GVNHoist.
This fixes GVNHoist's portion of PR28670.

llvm-svn: 276658

8 years agoNFC: Refactor GVNHoist class so not everything is public
Daniel Berlin [Mon, 25 Jul 2016 17:24:22 +0000 (17:24 +0000)]
NFC: Refactor GVNHoist class so not everything is public

llvm-svn: 276657

8 years ago[cc1as] Add MCTargetOptions argument to createAsmBackend
Joel Jones [Mon, 25 Jul 2016 17:18:44 +0000 (17:18 +0000)]
[cc1as] Add MCTargetOptions argument to createAsmBackend

Allow an assembler backend to get ABI options. This is to match the changes
to http://reviews.llvm.org/D16213.

Tested with "make check-clang"

Patch by: Joel Jones

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

llvm-svn: 276655

8 years agoMC] Provide an MCTargetOptions to implementors of MCAsmBackendCtorTy, NFC
Joel Jones [Mon, 25 Jul 2016 17:18:28 +0000 (17:18 +0000)]
MC] Provide an MCTargetOptions to implementors of MCAsmBackendCtorTy, NFC

Some targets, notably AArch64 for ILP32, have different relocation encodings
based upon the ABI. This is an enabling change, so a future patch can use the
ABIName from MCTargetOptions to chose which relocations to use. Tested using
check-llvm.

The corresponding change to clang is in: http://reviews.llvm.org/D16538

Patch by: Joel Jones

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

llvm-svn: 276654

8 years agoSupport '#pragma once' in headers when using PCH
Sunil Srivastava [Mon, 25 Jul 2016 17:17:06 +0000 (17:17 +0000)]
Support '#pragma once' in headers when using PCH

The '#pragma once' directive was erroneously ignored when encountered
in the header-file specified in generate-PCH-mode. This resulted in
compile-time errors in some cases with legal code, and also a misleading
warning being produced.

Patch by Warren Ristow!

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

llvm-svn: 276653

8 years agoStringSwitch cannot be copied or moved.
Jordan Rose [Mon, 25 Jul 2016 17:08:24 +0000 (17:08 +0000)]
StringSwitch cannot be copied or moved.

...but most importantly, it cannot be used well with 'auto', because
the inferred type is StringSwitch rather than the result type. This
is a problem because StringSwitch stores addresses of temporary
values rather than copying or moving the value into its own storage.

Changing this uncovered the bug in PassBuilder, also in this patch.
Clang doesn't seem to have any occurrences of the issue.

llvm-svn: 276652

8 years agoRevert "MPITypeMismatchCheck for Clang-Tidy"
Alexander Kornienko [Mon, 25 Jul 2016 17:08:18 +0000 (17:08 +0000)]
Revert "MPITypeMismatchCheck for Clang-Tidy"

This reverts commit r276640. Breaks multiple buildbots.

llvm-svn: 276651

8 years agoRevert "Remove trailing spaces."
Alexander Kornienko [Mon, 25 Jul 2016 17:08:10 +0000 (17:08 +0000)]
Revert "Remove trailing spaces."

This reverts commit r276641. Breaks multiple buildbots.

llvm-svn: 276650

8 years agoRemove trailing whitespaces.
Rui Ueyama [Mon, 25 Jul 2016 16:51:52 +0000 (16:51 +0000)]
Remove trailing whitespaces.

llvm-svn: 276649

8 years agoAVX-512: Fixed [US]INT_TO_FP selection for i1 vectors.
Elena Demikhovsky [Mon, 25 Jul 2016 16:51:00 +0000 (16:51 +0000)]
AVX-512: Fixed [US]INT_TO_FP selection for i1 vectors.
It failed with assertion before this patch.

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

llvm-svn: 276648

8 years ago[Myriad]: better compatibility with vendor source
Douglas Katzman [Mon, 25 Jul 2016 16:36:02 +0000 (16:36 +0000)]
[Myriad]: better compatibility with vendor source

- Accept ma{2100,2150,2150} for -mcpu
- Define more preprocessor macros
- Don't append "le/" to little-endian lib dirs

llvm-svn: 276646

8 years agoGPGPU: Load GPU kernels
Tobias Grosser [Mon, 25 Jul 2016 16:31:21 +0000 (16:31 +0000)]
GPGPU: Load GPU kernels

We embed the PTX code into the host IR as a global variable and compile it
at run-time into a GPU kernel.

llvm-svn: 276645

8 years agoRemove useless pass from the pipeline in test/Analysis/Dominators/2007-01-14-BreakCri...
Wei Mi [Mon, 25 Jul 2016 16:27:34 +0000 (16:27 +0000)]
Remove useless pass from the pipeline in test/Analysis/Dominators/2007-01-14-BreakCritEdges.ll.

llvm-svn: 276644

8 years ago[ELF/LinkerScript] Use correct section name in a test.
Davide Italiano [Mon, 25 Jul 2016 16:10:40 +0000 (16:10 +0000)]
[ELF/LinkerScript] Use correct section name in a test.

llvm-svn: 276642

8 years agoRemove trailing spaces.
Alexander Kornienko [Mon, 25 Jul 2016 15:43:22 +0000 (15:43 +0000)]
Remove trailing spaces.

llvm-svn: 276641

8 years agoMPITypeMismatchCheck for Clang-Tidy
Alexander Kornienko [Mon, 25 Jul 2016 15:43:14 +0000 (15:43 +0000)]
MPITypeMismatchCheck for Clang-Tidy

Summary:
This check verifies if buffer type and MPI (Message Passing Interface)
datatype pairs match. All MPI datatypes defined by the MPI standard (3.1)
are verified by this check. User defined typedefs, custom MPI datatypes and
null pointer constants are skipped, in the course of verification.

Instructions on how to apply the check can be found at: https://github.com/0ax1/MPI-Checker/tree/master/examples

Reviewers: alexfh

Subscribers: cfe-commits

Projects: #clang-tools-extra

Patch by Alexander Droste!

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

llvm-svn: 276640

8 years agoMPI-Checker: move MPIFunctionClassifier.h
Alexander Kornienko [Mon, 25 Jul 2016 15:27:16 +0000 (15:27 +0000)]
MPI-Checker: move  MPIFunctionClassifier.h

Summary:
This patch moves the MPIFunctionClassifier header to `clang/include/clang/StaticAnalyzer/Checkers`,
in order to make it accessible in other parts of the architecture.

Reviewers: dcoughlin, zaks.anna

Subscribers: alexfh, cfe-commits

Patch by Alexander Droste!

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

llvm-svn: 276639

8 years ago[Hexagon] Add target feature to generate long calls
Krzysztof Parzyszek [Mon, 25 Jul 2016 14:42:11 +0000 (14:42 +0000)]
[Hexagon] Add target feature to generate long calls

llvm-svn: 276638

8 years ago[GSoC] Add PolyhedralInfo pass - new interface to polly analysis
Johannes Doerfert [Mon, 25 Jul 2016 12:48:45 +0000 (12:48 +0000)]
[GSoC] Add PolyhedralInfo pass - new interface to polly analysis

  Adding a new pass PolyhedralInfo. This pass will be the interface to Polly.
  Initially, we will provide the following interface:
    - #IsParallel(Loop *L) - return a bool depending on whether the loop is
                             parallel or not for the given program order.

Patch by Utpal Bora <cs14mtech11017@iith.ac.in>

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

llvm-svn: 276637

8 years agoGPGPU: Emit data-transfer code
Tobias Grosser [Mon, 25 Jul 2016 12:47:39 +0000 (12:47 +0000)]
GPGPU: Emit data-transfer code

Also factor out getArraySize() to avoid code dupliciation and reorder some
function arguments to indicate the direction into which data is transferred.

llvm-svn: 276636

8 years agoGPGPU: Complete code to allocate and free device arrays
Tobias Grosser [Mon, 25 Jul 2016 12:47:33 +0000 (12:47 +0000)]
GPGPU: Complete code to allocate and free device arrays

At the beginning of each SCoP, we allocate device arrays for all arrays
used on the GPU and we free such arrays after the SCoP has been executed.

llvm-svn: 276635

8 years agoGPURuntime: Add missing debug output
Tobias Grosser [Mon, 25 Jul 2016 12:47:28 +0000 (12:47 +0000)]
GPURuntime: Add missing debug output

llvm-svn: 276634

8 years agoGPURuntime: Fix typo in docu
Tobias Grosser [Mon, 25 Jul 2016 12:47:25 +0000 (12:47 +0000)]
GPURuntime: Fix typo in docu

llvm-svn: 276633

8 years agoGPURuntime: Drop polly_cleanupGPGPUResources
Tobias Grosser [Mon, 25 Jul 2016 12:47:22 +0000 (12:47 +0000)]
GPURuntime: Drop polly_cleanupGPGPUResources

This function is currently unused and won't be used in this form again. Instead
of freeing many unrelated items at the same time, we will instead explicitly
call free function from the host-IR we generate for each object we want to free.
These specific free functions will be added together with the corresponding
host-IR generation code.

llvm-svn: 276632

8 years ago[GSoC] Do not process SCoPs with infeasible runtime context
Johannes Doerfert [Mon, 25 Jul 2016 12:40:59 +0000 (12:40 +0000)]
[GSoC] Do not process SCoPs with infeasible runtime context

  Do not process SCoPs with infeasible runtime context in the new
  ScopInfoWrapperPass. Do not compute dependences for such SCoPs in the new
  DependenceInfoWrapperPass.

Patch by Utpal Bora <cs14mtech11017@iith.ac.in>

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

llvm-svn: 276631

8 years ago[ELF] Test case for correct input section order, when sections are listed in linker...
Eugene Leviant [Mon, 25 Jul 2016 10:59:20 +0000 (10:59 +0000)]
[ELF] Test case for correct input section order, when sections are listed in linker script

llvm-svn: 276630

8 years ago[ARM] Improve longMAC codegen test
Sam Parker [Mon, 25 Jul 2016 10:11:00 +0000 (10:11 +0000)]
[ARM] Improve longMAC codegen test

Added thumb targets and dataflow checks to the longMAC test.

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

llvm-svn: 276629

8 years ago[mips] Optimize materialization of i64 constants
Simon Dardis [Mon, 25 Jul 2016 09:57:28 +0000 (09:57 +0000)]
[mips] Optimize materialization of i64 constants

Avoid MipsAnalyzeImmediate usage if the constant fits in an 32-bit
integer. This allows us to generate the same instructions for the
materialization of the same constants regardless the width of their
type.

Patch by: Vasileios Kalintiris

Contributions by: Simon Dardis

Reviewers: Daniel Sanders

Differential Review: https://reviews.llvm.org/D21689

llvm-svn: 276628

8 years agoApply all necessary tilings and interchangings to get a macro-kernel
Roman Gareev [Mon, 25 Jul 2016 09:42:53 +0000 (09:42 +0000)]
Apply all necessary tilings and interchangings to get a macro-kernel

This is the second patch to apply the BLIS matmul optimization pattern
on matmul kernels
(http://www.cs.utexas.edu/users/flame/pubs/TOMS-BLIS-Analytical.pdf).
BLIS implements gemm as three nested loops around a macro-kernel, plus
two packing routines. The macro-kernel is implemented in terms
of two additional loops around a micro-kernel. The micro-kernel
is a loop around a rank-1 (i.e., outer product) update. In this change
we create the BLIS macro-kernel by applying a combination of tiling
and interchanging. In subsequent changes we will implement the packing
transformation.

Reviewed-by: Tobias Grosser <tobias@grosser.es>
Differential Revision: http://reviews.llvm.org/D21491

llvm-svn: 276627

8 years ago[ARM] Small refactor of Thumb2 SMLA insts
Sam Parker [Mon, 25 Jul 2016 09:29:24 +0000 (09:29 +0000)]
[ARM] Small refactor of Thumb2 SMLA insts

Follow up to r276624. Changes bits 22-20 to be parameters to
instruction class.

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

llvm-svn: 276626

8 years ago[libunwind][ARM] Add support for Thumb1 targets
Oliver Stannard [Mon, 25 Jul 2016 09:21:56 +0000 (09:21 +0000)]
[libunwind][ARM] Add support for Thumb1 targets

The Thumb1 version of the code for saving and restoring the unwind
context has a few bugs which prevent it from working:
* It uses the STM instruction without writeback, which is not valid for Thumb1
  (It was introduced in Thumb2).
* It only saves/restores the low 8 registers, the sp and the lr, so if a
  program uses r8-r12 they will not be correctly restored when throwing an
  exception.

There aren't currently any Thumb1 build-bots to test this, but we have
been successfully running the libc++abi and libc++ test suites on
Cortex-M0 models, as well as some other test suites that use C++
exceptions on a downstream version of libunwind with this patch applied.

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

llvm-svn: 276625

8 years ago[ARM] Enable ISel of SMMLS for ARM and Thumb2
Sam Parker [Mon, 25 Jul 2016 09:20:20 +0000 (09:20 +0000)]
[ARM] Enable ISel of SMMLS for ARM and Thumb2

Use ISelDAGToDAG to recognise the SMMLS instruction pattern.

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

llvm-svn: 276624

8 years agoGPGPU: initialize GPU context and simplify the corresponding GPURuntime interface.
Tobias Grosser [Mon, 25 Jul 2016 09:16:01 +0000 (09:16 +0000)]
GPGPU: initialize GPU context and simplify the corresponding GPURuntime interface.

There is no need to expose the selected device at the moment. We also pass back
pointers as return values, as this simplifies the interface.

llvm-svn: 276623

8 years agoIslNodeBuilder: Make finalize() virtual
Tobias Grosser [Mon, 25 Jul 2016 09:15:57 +0000 (09:15 +0000)]
IslNodeBuilder: Make finalize() virtual

This allows the finalization routine of the IslNodeBuilder to be overwritten
by derived classes. Being here, we also drop the unnecessary 'Scop' postfix
and the unnecessary 'Scop' parameter.

llvm-svn: 276622

8 years agoGPURuntime: Check for debug-mode early on
Tobias Grosser [Mon, 25 Jul 2016 09:15:53 +0000 (09:15 +0000)]
GPURuntime: Check for debug-mode early on

Before this change, the debug statements in polly_initDevice would all be
skipped, as debug-mode would only be enabled _after_ they have already been run.

llvm-svn: 276621

8 years ago[clang-rename] fix typos in tests
Kirill Bobyrev [Mon, 25 Jul 2016 08:56:11 +0000 (08:56 +0000)]
[clang-rename] fix typos in tests

TemplateFunctionFindBy{Declaration|Use}.cpp contained typos and therefore were
failing. clang-rename passes these tests after typos are fixed.

llvm-svn: 276620

8 years ago[ELF] - Linkerscript: implemented output section [address] attribute.
George Rimar [Mon, 25 Jul 2016 08:29:46 +0000 (08:29 +0000)]
[ELF] - Linkerscript: implemented output section [address] attribute.

Output section description in SECTIONS looks like that:

section [address] [(type)] :
...
{
...
}

Patch implements support of address atribute.

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

llvm-svn: 276619

8 years agoUpdate description for CLANG_DEFAULT_CXX_STDLIB and add comment. NFC
Jonas Hahnfeld [Mon, 25 Jul 2016 08:04:26 +0000 (08:04 +0000)]
Update description for CLANG_DEFAULT_CXX_STDLIB and add comment. NFC

We agreed to call it "platform default" instead of "architecture default".
(see D17286)

llvm-svn: 276618

8 years agoGPURuntime: Drop timing functionality (some leftover II)
Tobias Grosser [Mon, 25 Jul 2016 08:03:08 +0000 (08:03 +0000)]
GPURuntime: Drop timing functionality (some leftover II)

llvm-svn: 276617

8 years ago[NFC] Refactor creation of the BLIS mirco-kernel and improve documentation
Roman Gareev [Mon, 25 Jul 2016 07:27:59 +0000 (07:27 +0000)]
[NFC] Refactor creation of the BLIS mirco-kernel and improve documentation

Reviewed-by: Tobias Grosser <tobias@grosser.es>
llvm-svn: 276616

8 years ago[AVX512] Add load folding support for the unmasked forms of the FMA instructions.
Craig Topper [Mon, 25 Jul 2016 07:20:35 +0000 (07:20 +0000)]
[AVX512] Add load folding support for the unmasked forms of the FMA instructions.

llvm-svn: 276615

8 years ago[AVX512] Add some additional patterns so that we can fold broadcast loads in the...
Craig Topper [Mon, 25 Jul 2016 07:20:31 +0000 (07:20 +0000)]
[AVX512] Add some additional patterns so that we can fold broadcast loads in the first argument of an FMADD/FMSUB/FNMADD/FNMSUB/FMADDSUB/FMSUBADD node. Also add patterns to support all combinations of the broadcast input and the preserved input for masked versions.

llvm-svn: 276614

8 years ago[AVX512] Cleanup FMA operand order in patterns to match the VEX versions and to reall...
Craig Topper [Mon, 25 Jul 2016 07:20:28 +0000 (07:20 +0000)]
[AVX512] Cleanup FMA operand order in patterns to match the VEX versions and to really be 213, 231, and 132.

llvm-svn: 276613

8 years agoGPURuntime: Drop timing functionality (some leftover)
Tobias Grosser [Mon, 25 Jul 2016 07:11:49 +0000 (07:11 +0000)]
GPURuntime: Drop timing functionality (some leftover)

llvm-svn: 276612

8 years agoGPURuntime: Drop timing functionality
Tobias Grosser [Mon, 25 Jul 2016 07:10:45 +0000 (07:10 +0000)]
GPURuntime: Drop timing functionality

This functionality won't be used in the current iteration. Drop it for now to
reduce the surface of the library. We can always add it back in when we need
it again.

llvm-svn: 276611

8 years agoCleanup : Reformat PartialInliner.cpp to have current LLVM style conventions
Sean Silva [Mon, 25 Jul 2016 05:57:59 +0000 (05:57 +0000)]
Cleanup : Reformat PartialInliner.cpp to have current LLVM style conventions

Modify the variable names and code style to be that of modern LLVM.

Patch by River Riddle!

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

llvm-svn: 276610

8 years agoFix : Partial Inliner requires AssumptionCacheTracker
Sean Silva [Mon, 25 Jul 2016 05:00:00 +0000 (05:00 +0000)]
Fix : Partial Inliner requires AssumptionCacheTracker

The public InlineFunction utility assumes that the passed in
InlineFunctionInfo has a valid AssumptionCacheTracker.

Patch by River Riddle!

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

llvm-svn: 276609

8 years agoRemove use of C++1z static assert in C++11 test
Eric Fiselier [Mon, 25 Jul 2016 04:56:32 +0000 (04:56 +0000)]
Remove use of C++1z static assert in C++11 test

llvm-svn: 276608

8 years agoUpdate test to account for r276604
David Majnemer [Mon, 25 Jul 2016 04:47:45 +0000 (04:47 +0000)]
Update test to account for r276604

llvm-svn: 276607

8 years ago[MSVCToolChain] Guard hardcoded Windows paths with LLVM_ON_WIN32
David Majnemer [Mon, 25 Jul 2016 04:47:44 +0000 (04:47 +0000)]
[MSVCToolChain] Guard hardcoded Windows paths with LLVM_ON_WIN32

Paths like C:/foo will never work on UNIX platforms, don't bother
implicitly adding them to the search path.

llvm-svn: 276606

8 years agoImplement the std::pair parts of "Improving pair and tuple". Completes N4387.
Eric Fiselier [Mon, 25 Jul 2016 04:32:07 +0000 (04:32 +0000)]
Implement the std::pair parts of "Improving pair and tuple". Completes N4387.

llvm-svn: 276605

8 years ago[InstSimplify] Fold trunc([zs]ext(%V)) -> %V
David Majnemer [Mon, 25 Jul 2016 03:39:21 +0000 (03:39 +0000)]
[InstSimplify] Fold trunc([zs]ext(%V)) -> %V

Truncates can completely cancel out a zext or sext instruction.

llvm-svn: 276604

8 years agoRecommit r276548 - Make pair/tuples assignment operators SFINAE properly.
Eric Fiselier [Mon, 25 Jul 2016 02:36:42 +0000 (02:36 +0000)]
Recommit r276548 - Make pair/tuples assignment operators SFINAE properly.

I think I've solved issues with is_assignable and references to incomplete
types. The updated patch adds tests for this case.

llvm-svn: 276603

8 years ago[GVNHoist] Merge metadata on hoisted instructions less conservatively
David Majnemer [Mon, 25 Jul 2016 02:21:25 +0000 (02:21 +0000)]
[GVNHoist] Merge metadata on hoisted instructions less conservatively

We can combine metadata from multiple instructions intelligently for
certain metadata nodes.

llvm-svn: 276602

8 years ago[GVNHoist] Properly merge alignments when hoisting
David Majnemer [Mon, 25 Jul 2016 02:21:23 +0000 (02:21 +0000)]
[GVNHoist] Properly merge alignments when hoisting

If we two loads of two different alignments, we must use the minimum of
the two alignments when hoisting.  Same deal for stores.

For allocas, use the maximum of the two allocas.

llvm-svn: 276601

8 years ago[Utils] Simplify combineMetadata
David Majnemer [Mon, 25 Jul 2016 02:21:19 +0000 (02:21 +0000)]
[Utils] Simplify combineMetadata

Use a range-based for loop, no functional change is intended.

llvm-svn: 276600

8 years agoMake std::is_assignable tolerate references to incomplete types.
Eric Fiselier [Mon, 25 Jul 2016 02:08:55 +0000 (02:08 +0000)]
Make std::is_assignable tolerate references to incomplete types.

llvm-svn: 276599

8 years agoRevert r276548 - Make pair/tuples assignment operators SFINAE properly.
Eric Fiselier [Mon, 25 Jul 2016 01:45:07 +0000 (01:45 +0000)]
Revert r276548 - Make pair/tuples assignment operators SFINAE properly.

This is a breaking change. The SFINAE required is instantiated the second
the class is instantiated, and this can cause hard SFINAE errors
when applied to references to incomplete types. Ex.

struct IncompleteType;
extern IncompleteType it;
std::tuple<IncompleteType&> t(it); // SFINAE will blow up.

llvm-svn: 276598

8 years agoUntabify.
NAKAMURA Takumi [Mon, 25 Jul 2016 00:59:51 +0000 (00:59 +0000)]
Untabify.

llvm-svn: 276597

8 years agoTrailing whitespace.
NAKAMURA Takumi [Mon, 25 Jul 2016 00:59:46 +0000 (00:59 +0000)]
Trailing whitespace.

llvm-svn: 276596

8 years agoMake dtor_noexcept.pass.cpp tests more portable. Patch from STL@microsoft.com
Eric Fiselier [Mon, 25 Jul 2016 00:50:32 +0000 (00:50 +0000)]
Make dtor_noexcept.pass.cpp tests more portable. Patch from STL@microsoft.com

llvm-svn: 276595

8 years agoDon't SFINAE pair's copy assignment operator in C++03 mode.
Eric Fiselier [Mon, 25 Jul 2016 00:48:36 +0000 (00:48 +0000)]
Don't SFINAE pair's copy assignment operator in C++03 mode.

In C++03 mode evaluating the SFINAE can cause a hard error due to
access control violations. This is a problem because the SFINAE
is evaluated as soon as the class is instantiated, and not later.

llvm-svn: 276594

8 years agoMark bucket_count() assertions as non-portable. Patch from STL@microsoft.com
Eric Fiselier [Mon, 25 Jul 2016 00:26:41 +0000 (00:26 +0000)]
Mark bucket_count() assertions as non-portable. Patch from STL@microsoft.com

llvm-svn: 276593

8 years ago[ELF] Fix the semantic of PROVIDE in linker scripts.
Davide Italiano [Mon, 25 Jul 2016 00:25:18 +0000 (00:25 +0000)]
[ELF] Fix the semantic of PROVIDE in linker scripts.

PROVIDE request us to define a symbol only if it is referenced and is
not defined by any object included in the link. We created the
symbol in the symbol table no matter what.

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

llvm-svn: 276592

8 years agoMake move_assign_noexcept.pass.cpp tests more portable. Patch from STL@microsoft.com
Eric Fiselier [Mon, 25 Jul 2016 00:18:12 +0000 (00:18 +0000)]
Make move_assign_noexcept.pass.cpp tests more portable. Patch from STL@microsoft.com

llvm-svn: 276591

8 years agoMake swap_noexcept.pass.cpp tests more portable. Patch from STL@microsoft.com.
Eric Fiselier [Mon, 25 Jul 2016 00:15:29 +0000 (00:15 +0000)]
Make swap_noexcept.pass.cpp tests more portable. Patch from STL@microsoft.com.

See D21820 for more information (https://reviews.llvm.org/D21820).

llvm-svn: 276590

8 years agoWork around MSVC's non-standard ABI for enums. Patch from STL@microsoft.com
Eric Fiselier [Mon, 25 Jul 2016 00:02:23 +0000 (00:02 +0000)]
Work around MSVC's non-standard ABI for enums. Patch from STL@microsoft.com

llvm-svn: 276589

8 years agoFix a non-standard allocator in vector tests. Patch from STL@microsoft.com
Eric Fiselier [Sun, 24 Jul 2016 23:49:42 +0000 (23:49 +0000)]
Fix a non-standard allocator in vector tests. Patch from STL@microsoft.com

llvm-svn: 276588

8 years agoFix unique_ptr.runtime tests for null inputs. Patch from STL@microsoft.com
Eric Fiselier [Sun, 24 Jul 2016 23:48:26 +0000 (23:48 +0000)]
Fix unique_ptr.runtime tests for null inputs. Patch from STL@microsoft.com

llvm-svn: 276587

8 years agoSimplify. NFC.
Rui Ueyama [Sun, 24 Jul 2016 23:47:31 +0000 (23:47 +0000)]
Simplify. NFC.

llvm-svn: 276586