platform/upstream/llvm.git
7 years agoIRMover: Avoid accidentally mapping types from the destination module (PR30799)
Hans Wennborg [Fri, 18 Nov 2016 17:33:05 +0000 (17:33 +0000)]
IRMover: Avoid accidentally mapping types from the destination module (PR30799)

During Module linking, it's possible for SrcM->getIdentifiedStructTypes();
to return types that are actually defined in the destination module
(DstM). Depending on how the bitcode file was read,
getIdentifiedStructTypes() might do a walk over all values, including
metadata nodes, looking for types. In my case, a debug info metadata
node was shared between the two modules, and it referred to a type
defined in the destination module (see test case).

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

llvm-svn: 287353

7 years agoAdd link-time detection of LLVM_ABI_BREAKING_CHECKS mismatch
Mehdi Amini [Fri, 18 Nov 2016 17:28:10 +0000 (17:28 +0000)]
Add link-time detection of LLVM_ABI_BREAKING_CHECKS mismatch

Summary:
LLVM will define a symbol, either EnableABIBreakingChecks or
DisableABIBreakingChecks depending on the configuration setting for
LLVM_ABI_BREAKING_CHECKS.

The llvm-config.h header will add weak references to these symbols in
every clients that includes this header. This should ensure that
a mismatch triggers a link failure (or a load time failure for DSO).

On MSVC, the pragma "detect_mismatch" is used instead.

Reviewers: rnk, jroelofs

Subscribers: llvm-commits, mgorny

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

llvm-svn: 287352

7 years ago[PPC] limit line width to 80 characters
Ehsan Amiri [Fri, 18 Nov 2016 16:24:27 +0000 (16:24 +0000)]
[PPC] limit line width to 80 characters

NFC. Forgot to fix this in the original commit.

llvm-svn: 287350

7 years ago[mips][msa] Implement f16 support
Simon Dardis [Fri, 18 Nov 2016 16:17:44 +0000 (16:17 +0000)]
[mips][msa] Implement f16 support

The MIPS MSA ASE provides instructions to convert to and from half precision
floating point. This patch teaches the MIPS backend to treat f16 as a legal
type and how to promote such values to f32 for the usual set of operations.

As a result of this, the fexup[lr].w intrinsics no longer crash LLVM during
type legalization.

Reviewers: zoran.jovanvoic, vkalintiris

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

llvm-svn: 287349

7 years ago[X86][AVX512] Split AVX512F/AVX512VL tests to demonstrate missed int2fp opportunities...
Simon Pilgrim [Fri, 18 Nov 2016 15:31:36 +0000 (15:31 +0000)]
[X86][AVX512] Split AVX512F/AVX512VL tests to demonstrate missed int2fp opportunities without AVX512VL

llvm-svn: 287348

7 years ago[NFC] Adjust naming scheme of statistic variables
Johannes Doerfert [Fri, 18 Nov 2016 14:37:08 +0000 (14:37 +0000)]
[NFC] Adjust naming scheme of statistic variables

Suggested-by: Tobias Grosser <tobias@grosser.es>
llvm-svn: 287347

7 years ago[ELF] Convert PltSection to input section
Eugene Leviant [Fri, 18 Nov 2016 14:35:03 +0000 (14:35 +0000)]
[ELF] Convert PltSection to input section

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

llvm-svn: 287346

7 years agoGlobalISel: Fix unconditional fallback with global isel abort is disabled
Tom Stellard [Fri, 18 Nov 2016 14:14:35 +0000 (14:14 +0000)]
GlobalISel: Fix unconditional fallback with global isel abort is disabled

Reviewers: t.p.northover, ab, qcolombet

Subscribers: mehdi_amini, vkalintiris, wdng, dberris, llvm-commits, rovka

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

llvm-svn: 287344

7 years ago[OpenCL] Introduce ReadPipeType and WritePipeType.
Joey Gouly [Fri, 18 Nov 2016 14:10:54 +0000 (14:10 +0000)]
[OpenCL] Introduce ReadPipeType and WritePipeType.

This allows Sema to diagnose passing a read_only pipe to a
write_only pipe argument.

llvm-svn: 287343

7 years agoAMDGPU/SI: Remove zero_extend patterns for i16 ops selected to 32-bit insts
Tom Stellard [Fri, 18 Nov 2016 13:53:34 +0000 (13:53 +0000)]
AMDGPU/SI: Remove zero_extend patterns for i16 ops selected to 32-bit insts

Summary:
The 32-bit instructions don't zero the high 16-bits like the 16-bit
instructions do.

Reviewers: arsenm

Subscribers: kzhuravl, wdng, nhaehnle, yaxunl, llvm-commits, tony-tye

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

llvm-svn: 287342

7 years ago[simplifycfg][loop-simplify] Preserve loop metadata in 2 transformations.
Florian Hahn [Fri, 18 Nov 2016 13:12:07 +0000 (13:12 +0000)]
[simplifycfg][loop-simplify] Preserve loop metadata in 2 transformations.

insertUniqueBackedgeBlock in lib/Transforms/Utils/LoopSimplify.cpp now
propagates existing llvm.loop metadata to newly the added backedge.

llvm::TryToSimplifyUncondBranchFromEmptyBlock in lib/Transforms/Utils/Local.cpp
now propagates existing llvm.loop metadata to the branch instructions in the
predecessor blocks of the empty block that is removed.

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

llvm-svn: 287341

7 years agoCleanup function with clang-format. NFCI.
Simon Pilgrim [Fri, 18 Nov 2016 12:16:18 +0000 (12:16 +0000)]
Cleanup function with clang-format. NFCI.

llvm-svn: 287340

7 years agoAMDGPU: Fix legalization of MUBUF instructions in shaders
Nicolai Haehnle [Fri, 18 Nov 2016 11:55:52 +0000 (11:55 +0000)]
AMDGPU: Fix legalization of MUBUF instructions in shaders

Summary:
The addr64-based legalization is incorrect for MUBUF instructions with idxen
set as well as for BUFFER_LOAD/STORE_FORMAT_* instructions.  This affects
e.g.  shaders that access buffer textures.

Since we never actually need the addr64-legalization in shaders, this patch
takes the easy route and keys off the calling convention.  If this ever
affects (non-OpenGL) compute, the type of legalization needs to be chosen
based on some TSFlag.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=98664

Reviewers: arsenm, tstellarAMD

Subscribers: kzhuravl, wdng, yaxunl, tony-tye, llvm-commits

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

llvm-svn: 287339

7 years agoFix spelling mistakes in MIPS target comments. NFC.
Simon Pilgrim [Fri, 18 Nov 2016 11:53:36 +0000 (11:53 +0000)]
Fix spelling mistakes in MIPS target comments. NFC.

Identified by Pedro Giffuni in PR27636.

llvm-svn: 287338

7 years agoMake merge_archives.py executable
Eric Fiselier [Fri, 18 Nov 2016 11:29:05 +0000 (11:29 +0000)]
Make merge_archives.py executable

llvm-svn: 287337

7 years agoAdd merge_archives.py utility
Eric Fiselier [Fri, 18 Nov 2016 11:26:14 +0000 (11:26 +0000)]
Add merge_archives.py utility

llvm-svn: 287336

7 years agoWdocumentation fix
Simon Pilgrim [Fri, 18 Nov 2016 11:18:28 +0000 (11:18 +0000)]
Wdocumentation fix

llvm-svn: 287335

7 years ago[Power9] Add patterns for vnegd, vnegw
Ehsan Amiri [Fri, 18 Nov 2016 11:05:55 +0000 (11:05 +0000)]
[Power9] Add patterns for vnegd, vnegw

Exploit new instructions by adding patterns to .td file.
https://reviews.llvm.org/D26551

llvm-svn: 287334

7 years agoFix spelling mistakes in AMDGPU target comments. NFC.
Simon Pilgrim [Fri, 18 Nov 2016 11:04:02 +0000 (11:04 +0000)]
Fix spelling mistakes in AMDGPU target comments. NFC.

Identified by Pedro Giffuni in PR27636.

llvm-svn: 287333

7 years ago[X86][AVX2] Add v8i32->v8i64 mul test (PR30845)
Simon Pilgrim [Fri, 18 Nov 2016 11:00:36 +0000 (11:00 +0000)]
[X86][AVX2] Add v8i32->v8i64 mul test (PR30845)

llvm-svn: 287332

7 years agoFix typo in comment. NFC.
Simon Pilgrim [Fri, 18 Nov 2016 10:52:12 +0000 (10:52 +0000)]
Fix typo in comment. NFC.

Identified by Pedro Giffuni in PR27636.

llvm-svn: 287331

7 years ago[clang-move] Fix not moving using-decls in global namespace in old.cc
Haojian Wu [Fri, 18 Nov 2016 10:51:16 +0000 (10:51 +0000)]
[clang-move] Fix not moving using-decls in global namespace in old.cc

Reviewers: ioeric

Subscribers: cfe-commits

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

llvm-svn: 287330

7 years ago[PPC][DAGCombine] Convert SETCC to subtract when the result is zero extended
Ehsan Amiri [Fri, 18 Nov 2016 10:41:44 +0000 (10:41 +0000)]
[PPC][DAGCombine] Convert SETCC to subtract when the result is zero extended

When we see a SETCC whose only users are zero extend operations, we can replace
it with a subtraction. This results in doing all calculations in GPRs and
avoids CR use.

Currently we do this only for ULT, ULE, UGT and UGE condition codes. There are
ways that this can be extended. For example for signed condition codes. In that
case we will be introducing additional sign extend instructions, so more careful
profitability analysis may be required.

Another direction to extend this is for equal, not equal conditions. Also when
users of SETCC are any_ext or sign_ext, we might be able to do something
similar.

llvm-svn: 287329

7 years agoFix go binding to adapt the new attribute API
Amaury Sechet [Fri, 18 Nov 2016 10:11:02 +0000 (10:11 +0000)]
Fix go binding to adapt the new attribute API

https://reviews.llvm.org/D26339

llvm-svn: 287328

7 years agoRename TU names to not conflict with libc++.
Eric Fiselier [Fri, 18 Nov 2016 09:54:49 +0000 (09:54 +0000)]
Rename TU names to not conflict with libc++.

In order to easily merge libc++ and libc++abi static archives it's important
that none of the source files share the same name.
(See http://stackoverflow.com/questions/3821916/how-to-merge-two-ar-static-libraries-into-one)

This patch renames source files which share a name with libc++ sources.

llvm-svn: 287327

7 years ago[ELF] Convert HashTableSection to input section
Eugene Leviant [Fri, 18 Nov 2016 09:06:47 +0000 (09:06 +0000)]
[ELF] Convert HashTableSection to input section

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

llvm-svn: 287326

7 years agoUpdate comment.
Rui Ueyama [Fri, 18 Nov 2016 07:03:56 +0000 (07:03 +0000)]
Update comment.

llvm-svn: 287325

7 years agoOmit empty parameter list.
Rui Ueyama [Fri, 18 Nov 2016 06:49:09 +0000 (06:49 +0000)]
Omit empty parameter list.

llvm-svn: 287324

7 years agoUse consume() instead of peek() and skip().
Rui Ueyama [Fri, 18 Nov 2016 06:49:07 +0000 (06:49 +0000)]
Use consume() instead of peek() and skip().

llvm-svn: 287323

7 years ago[ELF] Convert GnuHashTableSection to input section
Eugene Leviant [Fri, 18 Nov 2016 06:44:18 +0000 (06:44 +0000)]
[ELF] Convert GnuHashTableSection to input section

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

llvm-svn: 287322

7 years agoRemove _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS
Eric Fiselier [Fri, 18 Nov 2016 06:42:17 +0000 (06:42 +0000)]
Remove _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS

libc++ no longer supports C++11 compilers that don't implement `= default`.
This patch removes all instances of the feature test macro
_LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS as well as the potentially dead code it hides.

llvm-svn: 287321

7 years agoRevert "Remove an out param from ValueObject::GetValueForExpressionPath."
Zachary Turner [Fri, 18 Nov 2016 06:34:45 +0000 (06:34 +0000)]
Revert "Remove an out param from ValueObject::GetValueForExpressionPath."

This reverts commit r287315, as it introduces a bug that breaks
many things.

llvm-svn: 287320

7 years agoSplit ScriptParser::readVersionDeclaration.
Rui Ueyama [Fri, 18 Nov 2016 06:30:09 +0000 (06:30 +0000)]
Split ScriptParser::readVersionDeclaration.

readVersionDeclaration was to read anonymous version definition and
named version definition. Splitting it into two functions should
improve readability as the two cases are different enough.

I also changed a few helper functions to return values instead of
mutating given references.

llvm-svn: 287319

7 years agoUse consistent variable name.
Rui Ueyama [Fri, 18 Nov 2016 06:30:08 +0000 (06:30 +0000)]
Use consistent variable name.

llvm-svn: 287318

7 years agoAdd doxygen comments for lzcntintrin.h's intrinsics.
Ekaterina Romanova [Fri, 18 Nov 2016 06:26:01 +0000 (06:26 +0000)]
Add doxygen comments for lzcntintrin.h's intrinsics.

The doxygen comments are automatically generated based on Sony's intrinsics document.

I got an OK from Eric Christopher to commit doxygen comments without prior code
review upstream. This patch was internally reviewed by Charles Li.

llvm-svn: 287317

7 years ago[InstCombine][AVX-512] Teach InstCombineCalls how to handle the intrinsics for variab...
Craig Topper [Fri, 18 Nov 2016 06:04:33 +0000 (06:04 +0000)]
[InstCombine][AVX-512] Teach InstCombineCalls how to handle the intrinsics for variable shift with 16-bit elements.

This is a straightforward extension of the existing support for 32/64-bit element types. Just needed to add the additional instrinsics to the switches.

llvm-svn: 287316

7 years agoRemove an out param from ValueObject::GetValueForExpressionPath.
Zachary Turner [Fri, 18 Nov 2016 05:45:41 +0000 (05:45 +0000)]
Remove an out param from ValueObject::GetValueForExpressionPath.

This argument was only used in one place in the codebase, and
it was in a non-critical log statement and can be easily
substituted for an equally meaningful field instead.  The
payoff of computing this value is not worth the added
complexity.

llvm-svn: 287315

7 years agoSimplify MergeOutputSection.
Rui Ueyama [Fri, 18 Nov 2016 05:05:43 +0000 (05:05 +0000)]
Simplify MergeOutputSection.

MergeOutputSection class was a bit hard to use because it provdes
a series of finalize functions that have to be called in a right way
at a right time. It also intereacted with MergeInputSection, and the
logic was somewhat entangled between the two classes.

This patch simplifies it by providing only one finalize function.
Now, all you have to do is to call MergeOutputSection::finalize
when you have added all sections to the output section. Then, it
internally merges strings and initliazes StringPiece objects.
I think this is much easier to understand.

This patch also adds comments.

llvm-svn: 287314

7 years ago[AVX-512] Replace masked 16-bit element variable shift builtins with new unmasked...
Craig Topper [Fri, 18 Nov 2016 05:04:51 +0000 (05:04 +0000)]
[AVX-512] Replace masked 16-bit element variable shift builtins with new unmasked versions and selects.

llvm-svn: 287313

7 years ago[AVX-512] Replace masked 16-bit element variable shift intrinsics with new unmasked...
Craig Topper [Fri, 18 Nov 2016 05:04:44 +0000 (05:04 +0000)]
[AVX-512] Replace masked 16-bit element variable shift intrinsics with new unmasked versions and selects.

The same thing was done to 32-bit and 64-bit element sizes previously.

This will allow us to support these shuffls in InstCombineCalls along with the other variable shift intrinsics.

llvm-svn: 287312

7 years agoAMDGPU: Move redundant setting of inst properties
Matt Arsenault [Fri, 18 Nov 2016 04:42:59 +0000 (04:42 +0000)]
AMDGPU: Move redundant setting of inst properties

llvm-svn: 287311

7 years agoAMDGPU: Fix crash on illegal type for inlineasm
Matt Arsenault [Fri, 18 Nov 2016 04:42:57 +0000 (04:42 +0000)]
AMDGPU: Fix crash on illegal type for inlineasm

There are still crashes on non-MVT types in other
places.

llvm-svn: 287310

7 years ago[libc++] Fix preprocessor guard for overload declaration
Shoaib Meenai [Fri, 18 Nov 2016 04:31:09 +0000 (04:31 +0000)]
[libc++] Fix preprocessor guard for overload declaration

Fix a typo in the conditional.  Caught by going through list of removed
symbols when building with hidden visibility.

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

llvm-svn: 287309

7 years agoDelete more dead code in ValueObject.
Zachary Turner [Fri, 18 Nov 2016 04:30:47 +0000 (04:30 +0000)]
Delete more dead code in ValueObject.

Apparently these two enormous functions were dead.  Which is
good, since one was largely a copy of another function with
only a few minor tweaks.

llvm-svn: 287308

7 years agoRemove some dead code in ValueObject.
Zachary Turner [Fri, 18 Nov 2016 03:51:19 +0000 (03:51 +0000)]
Remove some dead code in ValueObject.

Originally I converted this entire function and all dependents
to use StringRef, but there were some test failures that
were tricky to track down, as this is a complicated function.
So I'm starting over, this time in smaller increments.

llvm-svn: 287307

7 years agoObject: Simplify; remove unnecessary use of unique_ptr.
Peter Collingbourne [Fri, 18 Nov 2016 03:20:36 +0000 (03:20 +0000)]
Object: Simplify; remove unnecessary use of unique_ptr.

llvm-svn: 287305

7 years agoMachineOperand: Add dump() method
Matthias Braun [Fri, 18 Nov 2016 02:40:40 +0000 (02:40 +0000)]
MachineOperand: Add dump() method

llvm-svn: 287302

7 years agoupdate Apples ABI list to ignore non-std symbols
Eric Fiselier [Fri, 18 Nov 2016 02:36:58 +0000 (02:36 +0000)]
update Apples ABI list to ignore non-std symbols

llvm-svn: 287301

7 years agoconvert bpf assembler to look like kernel verifier output
Alexei Starovoitov [Fri, 18 Nov 2016 02:32:35 +0000 (02:32 +0000)]
convert bpf assembler to look like kernel verifier output

since bpf instruction set was introduced people learned to
read and understand kernel verifier output whereas llvm asm
output stayed obscure and unknown. Convert llvm to emit
assembler text similar to kernel to avoid this discrepancy

Signed-off-by: Alexei Starovoitov <ast@kernel.org>
llvm-svn: 287300

7 years ago[Docs][TableGen] Remove reference to tablegen supporting octal integers. It doesn...
Craig Topper [Fri, 18 Nov 2016 02:28:50 +0000 (02:28 +0000)]
[Docs][TableGen] Remove reference to tablegen supporting octal integers. It doesn't and hasn't for at least 9 years.

llvm-svn: 287299

7 years ago[AVX-512] Support FCOPYSIGN for v16f32 and v8f64
Craig Topper [Fri, 18 Nov 2016 02:25:34 +0000 (02:25 +0000)]
[AVX-512] Support FCOPYSIGN for v16f32 and v8f64

Summary:
This extends FCOPYSIGN support to 512-bit vectors.

I've also added tests to show what the 128-bit and 256-bit cases look like with broadcast loads.

Reviewers: delena, zvi, RKSimon, spatel

Subscribers: llvm-commits

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

llvm-svn: 287298

7 years ago[ELF] Rename an historical leftover, `Chunk` is now `InputSection`.
Davide Italiano [Fri, 18 Nov 2016 02:23:48 +0000 (02:23 +0000)]
[ELF] Rename an historical leftover, `Chunk` is now `InputSection`.

llvm-svn: 287297

7 years ago[ELF] Use std::for_each() and hoist common code in a lambda.
Davide Italiano [Fri, 18 Nov 2016 02:18:04 +0000 (02:18 +0000)]
[ELF] Use std::for_each() and hoist common code in a lambda.

llvm-svn: 287296

7 years agoAdd doxygen comments to fxsrintrin.h's intrinsics.
Ekaterina Romanova [Fri, 18 Nov 2016 01:42:01 +0000 (01:42 +0000)]
Add doxygen comments to fxsrintrin.h's intrinsics.

The doxygen comments are automatically generated based on Sony's intrinsics document.

I got an OK from Eric Christopher to commit doxygen comments without prior code
review upstream. This patch was internally reviewed by Paul Robinson and Charles Li.

llvm-svn: 287295

7 years agoChange sym_check to filter non-stdlib symbols.
Eric Fiselier [Fri, 18 Nov 2016 01:40:20 +0000 (01:40 +0000)]
Change sym_check to filter non-stdlib symbols.

Currently sym_check almost all names found in the binary, including those
which are defined in other libraries. This makes our ABI lists harder to maintain.

This patch adds a --only-stdlib-symbols option to sym_check which removes
all symbols which aren't possibly provided by libc++. It also re-generates
the linux ABI list after making this change.

llvm-svn: 287294

7 years agoAdd an option to disable libedit
Yichao Yu [Fri, 18 Nov 2016 01:25:49 +0000 (01:25 +0000)]
Add an option to disable libedit

Summary: This should provide the function similar to `--disable-libedit` with the autotools build system, which seems to be missing from the commit (r200595) that adds this.

Reviewers: pcc, beanz

Subscribers: mgorny, llvm-commits

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

llvm-svn: 287293

7 years ago[CUDA] Attempt to fix test failures in cuda-macos-includes.cu.
Justin Lebar [Fri, 18 Nov 2016 01:11:32 +0000 (01:11 +0000)]
[CUDA] Attempt to fix test failures in cuda-macos-includes.cu.

Run clang -cc1 -E instead of -S, in an attempt to make this test work
cross-platform.

llvm-svn: 287292

7 years agoForward ns_consumed delegate arguments with a move.
John McCall [Fri, 18 Nov 2016 01:08:24 +0000 (01:08 +0000)]
Forward ns_consumed delegate arguments with a move.

StartFunction enters a release cleanup for ns_consumed arguments in
ARC, so we need to balance that somehow.  We could teach StartFunction
that it's emitting a delegating function, so that the cleanup is
unnecessary, but that would be invasive and somewhat fraught.  We could
balance the consumed argument with an extra retain, but clearing the
original variable should be easier to optimize and avoid some extra work
at -O0.  And there shouldn't be any difference as long as nothing else
uses the argument, which should always be true for the places we emit
delegate arguments.

Fixes PR 27887.

llvm-svn: 287291

7 years ago[CUDA] Update docs to indicate that MacOS is now supported.
Justin Lebar [Fri, 18 Nov 2016 00:42:00 +0000 (00:42 +0000)]
[CUDA] Update docs to indicate that MacOS is now supported.

llvm-svn: 287290

7 years ago[CUDA] Update docs; CUDA 8.0 is supported as of a while ago.
Justin Lebar [Fri, 18 Nov 2016 00:41:40 +0000 (00:41 +0000)]
[CUDA] Update docs; CUDA 8.0 is supported as of a while ago.

llvm-svn: 287289

7 years ago[CUDA] Wrapper header changes necessary to support MacOS.
Justin Lebar [Fri, 18 Nov 2016 00:41:35 +0000 (00:41 +0000)]
[CUDA] Wrapper header changes necessary to support MacOS.

Reviewers: tra

Subscribers: cfe-commits

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

llvm-svn: 287288

7 years ago[CUDA] Use the right section and constant names for fatbins when compiling for macos.
Justin Lebar [Fri, 18 Nov 2016 00:41:31 +0000 (00:41 +0000)]
[CUDA] Use the right section and constant names for fatbins when compiling for macos.

Reviewers: tra

Subscribers: cfe-commits

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

llvm-svn: 287287

7 years ago[CUDA] Initialize our header search using the host triple.
Justin Lebar [Fri, 18 Nov 2016 00:41:27 +0000 (00:41 +0000)]
[CUDA] Initialize our header search using the host triple.

Summary:
This used to work because system headers are found in a (somewhat)
predictable set of locations on Linux.  But this is not the case on
MacOS; without this change, we don't look in the right places for our
headers when doing device-side compilation on Mac.

Reviewers: tra

Subscribers: cfe-commits

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

llvm-svn: 287286

7 years ago[CUDA] Driver changes to support CUDA compilation on MacOS.
Justin Lebar [Fri, 18 Nov 2016 00:41:22 +0000 (00:41 +0000)]
[CUDA] Driver changes to support CUDA compilation on MacOS.

Summary:
Compiling CUDA device code requires us to know the host toolchain,
because CUDA device-side compiles pull in e.g. host headers.

When we only supported Linux compilation, this worked because
CudaToolChain, which is responsible for device-side CUDA compilation,
inherited from the Linux toolchain.  But in order to support MacOS,
CudaToolChain needs to take a HostToolChain pointer.

Because a CUDA toolchain now requires a host TC, we no longer will
create a CUDA toolchain from Driver::getToolChain -- you have to go
through CreateOffloadingDeviceToolChains.  I am *pretty* sure this is
correct, and that previously any attempt to create a CUDA toolchain
through getToolChain() would eventually have resulted in us throwing
"error: unsupported use of NVPTX for host compilation".

In any case hacking getToolChain to create a CUDA+host toolchain would
be wrong, because a Driver can be reused for multiple compilations,
potentially with different host TCs, and getToolChain will cache the
result, causing us to potentially use a stale host TC.

So that's the main change in this patch.

In addition, we have to pull CudaInstallationDetector out of Generic_GCC
and into a top-level class.  It's now used by the Generic_GCC and MachO
toolchains.

Reviewers: tra

Subscribers: rryan, hfinkel, sfantao

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

llvm-svn: 287285

7 years agoAdd missing REQUIRES.
Rafael Espindola [Fri, 18 Nov 2016 00:11:12 +0000 (00:11 +0000)]
Add missing REQUIRES.

llvm-svn: 287284

7 years agoEHABI: mark some functions as exported
Saleem Abdulrasool [Thu, 17 Nov 2016 23:53:35 +0000 (23:53 +0000)]
EHABI: mark some functions as exported

These are part of the EHABI specification and are exported to be available to
users.  Mark them as `_LIBUNWIND_EXPORT` like the rest of the unwind interfaces.

llvm-svn: 287283

7 years agoResubmit "Change RegisterValue getters / setters to use StringRef."
Zachary Turner [Thu, 17 Nov 2016 23:47:31 +0000 (23:47 +0000)]
Resubmit "Change RegisterValue getters / setters to use StringRef."

This resubmits r287279 with a fix for the original issue, which
was a trivial typo.

llvm-svn: 287282

7 years agoRevert "Change RegisterValue getters / setters to use StringRef."
Zachary Turner [Thu, 17 Nov 2016 23:32:26 +0000 (23:32 +0000)]
Revert "Change RegisterValue getters / setters to use StringRef."

This reverts commit r287279, which breaks some register
tests on Linux.

llvm-svn: 287281

7 years agoAlways compute sh_link for SHF_LINK_ORDER sections.
Rafael Espindola [Thu, 17 Nov 2016 23:16:39 +0000 (23:16 +0000)]
Always compute sh_link for SHF_LINK_ORDER sections.

Since the output has a section table too, it is meaningful to compute
the sh_link. In a more practical note, the binutils' strip crashes if
sh_link is not set for SHT_ARM_EXIDX.

llvm-svn: 287280

7 years agoChange RegisterValue getters / setters to use StringRef.
Zachary Turner [Thu, 17 Nov 2016 23:05:28 +0000 (23:05 +0000)]
Change RegisterValue getters / setters to use StringRef.

In the process, found some functions that were duplicates of
existing StringRef member functions.  So deleted those functions
and used the StringRef functions instead.

llvm-svn: 287279

7 years agoMinor changes in x86 intrinsics headers; NFC
Ekaterina Romanova [Thu, 17 Nov 2016 23:02:00 +0000 (23:02 +0000)]
Minor changes in x86 intrinsics headers; NFC

I made several changes for consistency with the rest of x86 instrinsics header files. Some of these changes help to render doxygen comments better.

1. avxintrin.h –  Moved the opening bracket on a separate line for several
                  intrinsics (for consistency with the rest of the intrinsics).

2. emmintrin.h -  Moved the doxygen comment next to the body of the function;
               -  Added braces after extern "C"  even though there is only
                  one declaration each time

3. xmmintrin.h -  Moved the doxygen comment next to the body of the function;
               -  Added intrinsic prototypes for a couple of macro definitions
                  into the doxygen comment;
               -  Added braces after extern "C"  even though there is only one
                  declaration each time

4. ammintrin.h –  Removed extra line between the doxygen comment and the body
                  of the functions (for consistency with the rest of the files).

Desk reviewed by Paul Robinson.

llvm-svn: 287278

7 years ago[lli] Prefer `exit(1)` to `return 1` for consistency.
Davide Italiano [Thu, 17 Nov 2016 22:59:13 +0000 (22:59 +0000)]
[lli] Prefer `exit(1)` to `return 1` for consistency.

llvm-svn: 287277

7 years ago[lli] Factor out error handling. NFCI.
Davide Italiano [Thu, 17 Nov 2016 22:58:13 +0000 (22:58 +0000)]
[lli] Factor out error handling. NFCI.

llvm-svn: 287276

7 years ago[Preprocessor] Support for '-dI' flag
Bruno Cardoso Lopes [Thu, 17 Nov 2016 22:45:31 +0000 (22:45 +0000)]
[Preprocessor] Support for '-dI' flag

Re-introduce r285411.

Implement the -dI as supported by GCC: Output ‘#include’ directives in addition
to the result of preprocessing.

This change aims to add this option, pass it through to the preprocessor via
the options class, and when inclusions occur we output some information (+ test
cases).

Patch by Steve O'Brien!

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

llvm-svn: 287275

7 years agoFix step-over when SymbolContext.function is missing and symbol is present.
Sam McCall [Thu, 17 Nov 2016 22:29:31 +0000 (22:29 +0000)]
Fix step-over when SymbolContext.function is missing and symbol is present.

Summary:
Fix step-over when SymbolContext.function is missing and symbol is present.

With targets from our build configuration,
ThreadPlanStepOverRange::IsEquivalentContext fails to fire for relevant frames,
leading to ShouldStop() returning true prematurely.

The frame's SymbolContext, and m_addr_context have:
  - comp_unit set and matching
  - function = nullptr
  - symbol set and matching (but this is never checked)
My naive guess is that the context should be equivalent in this case :-)

Reviewers: jingham

Subscribers: lldb-commits

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

llvm-svn: 287274

7 years ago[ReleaseNotes] Mention the completion of the upstreaming of the AVR backend
Dylan McKay [Thu, 17 Nov 2016 22:26:09 +0000 (22:26 +0000)]
[ReleaseNotes] Mention the completion of the upstreaming of the AVR backend

llvm-svn: 287273

7 years agoProbably overwritten loads should not be considered hoistable
Johannes Doerfert [Thu, 17 Nov 2016 22:25:17 +0000 (22:25 +0000)]
Probably overwritten loads should not be considered hoistable

Do not assume a load to be hoistable/invariant if the pointer is used by
another instruction in the SCoP that might write to memory and that is
always executed.

llvm-svn: 287272

7 years ago[NFC] Add flag to disable error block assumptions
Johannes Doerfert [Thu, 17 Nov 2016 22:16:35 +0000 (22:16 +0000)]
[NFC] Add flag to disable error block assumptions

The declaration as an "error block" is currently aggressive and not very
smart. This patch allows to disable error blocks completely. This might
be useful to prevent SCoP expansion to a point where the assumed context
becomes infeasible, thus the SCoP has to be discarded.

llvm-svn: 287271

7 years ago[FIX] Do not try to hoist memory intrinsic
Johannes Doerfert [Thu, 17 Nov 2016 22:11:56 +0000 (22:11 +0000)]
[FIX] Do not try to hoist memory intrinsic

Since we do not necessarily treat memory intrinsics as non-affine
anymore, we have to check for them explicitly before we try to hoist an
access.

llvm-svn: 287270

7 years ago[NFC] Skip over trivial assumptions
Johannes Doerfert [Thu, 17 Nov 2016 22:08:40 +0000 (22:08 +0000)]
[NFC] Skip over trivial assumptions

Filter trivial assumptions, thus assume { : } or restrict { : 0 = 1 },
as they clutter the user output as well as the statistics.

llvm-svn: 287269

7 years ago[sanitizers] specifying style for global constant
Mike Aizatsky [Thu, 17 Nov 2016 21:57:43 +0000 (21:57 +0000)]
[sanitizers] specifying style for global constant

Subscribers: kubabrecka

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

llvm-svn: 287268

7 years ago[DBG] Collect statistics about actually versioned SCoPs
Johannes Doerfert [Thu, 17 Nov 2016 21:55:43 +0000 (21:55 +0000)]
[DBG] Collect statistics about actually versioned SCoPs

llvm-svn: 287267

7 years agoMake GetRegisterByName() take a StringRef.
Zachary Turner [Thu, 17 Nov 2016 21:54:37 +0000 (21:54 +0000)]
Make GetRegisterByName() take a StringRef.

This one is fairly trivial and only really involves changing
function signatures and a few simple call-sites.

llvm-svn: 287266

7 years ago[DBG] Allow to emit the RTC value at runtime
Johannes Doerfert [Thu, 17 Nov 2016 21:49:19 +0000 (21:49 +0000)]
[DBG] Allow to emit the RTC value at runtime

The new command line flag "polly-codegen-emit-rtc-print" can be used to
place a "printf" in the generated code that will print the RTC value and
the overflow state.

llvm-svn: 287265

7 years ago[ELF][MIPS] Remove 'mips' word from MipsGotSection fields and methods names. NFC
Simon Atanasyan [Thu, 17 Nov 2016 21:49:14 +0000 (21:49 +0000)]
[ELF][MIPS] Remove 'mips' word from MipsGotSection fields and methods names. NFC

Also add new comments with MIPS GOT description.

llvm-svn: 287264

7 years ago[DBG] Collect statistics about statically infeasible SCoPs
Johannes Doerfert [Thu, 17 Nov 2016 21:44:47 +0000 (21:44 +0000)]
[DBG] Collect statistics about statically infeasible SCoPs

llvm-svn: 287263

7 years ago[CrashReproducer][Darwin] Suggest attaching .crash diagnostic file
Bruno Cardoso Lopes [Thu, 17 Nov 2016 21:41:22 +0000 (21:41 +0000)]
[CrashReproducer][Darwin] Suggest attaching .crash diagnostic file

In addition to the preprocessed sources file and reproducer script, also
point to the .crash diagnostic files on Darwin. Example:

PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang-4.0: note: diagnostic msg: /var/folders/bk/1hj20g8j4xvdj5gd25ywhd3m0000gq/T/RegAllocGreedy-238f28.cpp
clang-4.0: note: diagnostic msg: /var/folders/bk/1hj20g8j4xvdj5gd25ywhd3m0000gq/T/RegAllocGreedy-238f28.cache
clang-4.0: note: diagnostic msg: /var/folders/bk/1hj20g8j4xvdj5gd25ywhd3m0000gq/T/RegAllocGreedy-238f28.sh
clang-4.0: note: diagnostic msg: /var/folders/bk/1hj20g8j4xvdj5gd25ywhd3m0000gq/T/RegAllocGreedy-238f28.crash

When no match is found for the .crash, point the user to a directory
where those can be found. Example:

clang-4.0: note: diagnostic msg: Crash backtrace is located in
clang-4.0: note: diagnostic msg: /Users/bruno/Library/Logs/DiagnosticReports/clang-4.0_<YYYY-MM-DD-HHMMSS>_<hostname>.crash
clang-4.0: note: diagnostic msg: (choose the .crash file that corresponds to your crash)

rdar://problem/27286266

llvm-svn: 287262

7 years ago[DBG] Collect statistics about taken assumptions
Johannes Doerfert [Thu, 17 Nov 2016 21:41:08 +0000 (21:41 +0000)]
[DBG] Collect statistics about taken assumptions

llvm-svn: 287261

7 years agoAllow use define symbols to override linker defined ones.
Rafael Espindola [Thu, 17 Nov 2016 21:20:16 +0000 (21:20 +0000)]
Allow use define symbols to override linker defined ones.

I hit an internal linker script that was defining _DYNAMIC instead of
letting the linker do it. It turns out that both bfd and gold allow
that.

This is pretty easy to implement, just make the linker defined symbol
weak. This should have no impact in the case where there is no user
defined symbol: The visibility is hidden, which causes the output to
still be local.

llvm-svn: 287260

7 years agoConvert Platform, Process, and Connection functions to StringRef.
Zachary Turner [Thu, 17 Nov 2016 21:15:14 +0000 (21:15 +0000)]
Convert Platform, Process, and Connection functions to StringRef.

All tests pass on Linux and Windows.

llvm-svn: 287259

7 years agoFixes for r287241. Use placement new. Apply clang-format.
Malcolm Parsons [Thu, 17 Nov 2016 21:00:09 +0000 (21:00 +0000)]
Fixes for r287241. Use placement new. Apply clang-format.

llvm-svn: 287258

7 years agoAllow SIZEOF() command on nonexistent section.
Rui Ueyama [Thu, 17 Nov 2016 20:27:10 +0000 (20:27 +0000)]
Allow SIZEOF() command on nonexistent section.

Linker script doesn't create a section if it has no content. So the following
script doesn't create .norelocs section if it doesn't have any .rel* sections.

  .norelocs : { *(.rel*) }

Later, if you assert that the size of .norelocs is 0, LLD printed out
an error message, because it didn't allow calling SIZEOF() on nonexistent
sections.

This patch allows SIZEOF() on nonexistent sections, so that you can do
something like this.

  ASSERT(SIZEOF(.norelocs), "shouldn't contain .rel sections!")

Note that this behavior is compatible with GNU.

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

llvm-svn: 287257

7 years ago[CMake] Error when LTO and lld are enabled on Darwin
Petr Hosek [Thu, 17 Nov 2016 20:22:49 +0000 (20:22 +0000)]
[CMake] Error when LTO and lld are enabled on Darwin

lld on Darwin does not currently support LTO.

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

llvm-svn: 287256

7 years agoWorkaround compilers w/o C++1z inline variables
Eric Fiselier [Thu, 17 Nov 2016 20:08:43 +0000 (20:08 +0000)]
Workaround compilers w/o C++1z inline variables

llvm-svn: 287255

7 years agoAdd single quotes to error messages.
Rui Ueyama [Thu, 17 Nov 2016 19:57:47 +0000 (19:57 +0000)]
Add single quotes to error messages.

llvm-svn: 287254

7 years agoUse consistent variable name.
Rui Ueyama [Thu, 17 Nov 2016 19:57:45 +0000 (19:57 +0000)]
Use consistent variable name.

llvm-svn: 287253

7 years agoUse llvm::reverse to get a reverse range.
Rui Ueyama [Thu, 17 Nov 2016 19:57:43 +0000 (19:57 +0000)]
Use llvm::reverse to get a reverse range.

llvm-svn: 287252

7 years agoRemove files missed in r287250
Eric Fiselier [Thu, 17 Nov 2016 19:24:34 +0000 (19:24 +0000)]
Remove files missed in r287250

llvm-svn: 287251

7 years agoImplement P0504R0: Revisiting in-place tag types for any/optional/variant
Eric Fiselier [Thu, 17 Nov 2016 19:24:04 +0000 (19:24 +0000)]
Implement P0504R0: Revisiting in-place tag types for any/optional/variant

llvm-svn: 287250

7 years agoTest changes for P0504R0 "Revisiting in-place tag types for any/optional/variant...
Eric Fiselier [Thu, 17 Nov 2016 19:23:35 +0000 (19:23 +0000)]
Test changes for P0504R0 "Revisiting in-place tag types for any/optional/variant". Patch from Casey Carter

llvm-svn: 287249