platform/upstream/llvm.git
8 years agoreuse mustBeJSIdent for interface detection
Martin Probst [Tue, 19 Apr 2016 18:19:06 +0000 (18:19 +0000)]
reuse mustBeJSIdent for interface detection

llvm-svn: 266790

8 years agoclang-format: [JS] support `interface` as a free standing identifier.
Martin Probst [Tue, 19 Apr 2016 18:18:59 +0000 (18:18 +0000)]
clang-format: [JS] support `interface` as a free standing identifier.

Summary:
`interface` can be used as a fee standing identifier in JavaScript/TypeScript.
This change uses the heuristic of whether it's followed by another identifier
as an indication.

Reviewers: djasper

Subscribers: klimek, cfe-commits

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

llvm-svn: 266789

8 years ago[builtin_expect] tighten checks, add test, add comments
Sanjay Patel [Tue, 19 Apr 2016 18:17:34 +0000 (18:17 +0000)]
[builtin_expect] tighten checks, add test, add comments

llvm-svn: 266788

8 years agoreduce indentation; NFCI
Sanjay Patel [Tue, 19 Apr 2016 18:06:33 +0000 (18:06 +0000)]
reduce indentation; NFCI

llvm-svn: 266787

8 years agoIR: Enable debug info type ODR uniquing for forward decls
Duncan P. N. Exon Smith [Tue, 19 Apr 2016 18:00:19 +0000 (18:00 +0000)]
IR: Enable debug info type ODR uniquing for forward decls

Add a new method, DICompositeType::buildODRType, that will create or
mutate the DICompositeType for a given ODR identifier, and use it in
LLParser and BitcodeReader instead of DICompositeType::getODRType.

The logic is as follows:

  - If there's no node, create one with the given arguments.
  - Else, if the current node is a forward declaration and the new
    arguments would create a definition, mutate the node to match the
    new arguments.
  - Else, return the old node.

This adds a missing feature supported by the current DITypeIdentifierMap
(which I'm slowly making redudant).  The only remaining difference is
that the DITypeIdentifierMap has a "the-last-one-wins" rule, whereas
DICompositeType::buildODRType has a "the-first-one-wins" rule.

For now I'm leaving behind DICompositeType::getODRType since it has
obvious, low-level semantics that are convenient for unit testing.

llvm-svn: 266786

8 years ago[CodeGen] Widen non-power-of-2 vector HFA base types.
Ahmed Bougacha [Tue, 19 Apr 2016 17:54:29 +0000 (17:54 +0000)]
[CodeGen] Widen non-power-of-2 vector HFA base types.

Currently, for the ppc64--gnu and aarch64 ABIs, we recognize:
  typedef __attribute__((__ext_vector_type__(3))) float v3f32;
  typedef __attribute__((__ext_vector_type__(16))) char v16i8;
  struct HFA {
    v3f32 a;
    v16i8 b;
  };

as an HFA. Since the first type encountered is used as the base type,
we pass the HFA as:
    [2 x <3 x float>]
Which leads to incorrect IR (relying on padding values) when the
second field is used.

Instead, explicitly widen the vector (after size rounding) in
isHomogeneousAggregate.

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

llvm-svn: 266784

8 years ago[CodeGen] Fix whitespace. NFC.
Ahmed Bougacha [Tue, 19 Apr 2016 17:54:24 +0000 (17:54 +0000)]
[CodeGen] Fix whitespace. NFC.

llvm-svn: 266783

8 years agoPass dwarf-version to cc1as.
Douglas Katzman [Tue, 19 Apr 2016 17:43:54 +0000 (17:43 +0000)]
Pass dwarf-version to cc1as.

Fix PR26999 - crashing in cc1as with any '*bsd' target.

llvm-svn: 266775

8 years agoPreliminary changes for fixing PR27241. Generalized/restructured some things
David L Kreitzer [Tue, 19 Apr 2016 17:43:44 +0000 (17:43 +0000)]
Preliminary changes for fixing PR27241. Generalized/restructured some things
in preparation for enabling the outgoing parameter store-to-push optimization
for 64-bit targets.

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

llvm-svn: 266774

8 years agoLinker: Simplify test/Linker/dicompositetype-unique.ll, NFC
Duncan P. N. Exon Smith [Tue, 19 Apr 2016 17:43:43 +0000 (17:43 +0000)]
Linker: Simplify test/Linker/dicompositetype-unique.ll, NFC

Simplify the test logic a little, sharing logic between the two linking
directions by specifying -check-prefix multiple times.  Now it's more
obvious what's hte same and different between the two directions, and
there is less CHECK duplication.  This is a prep for expanding the test.

llvm-svn: 266773

8 years ago[llvm-pdbdump] Print a better error message when PDB loading fails.
Zachary Turner [Tue, 19 Apr 2016 17:36:58 +0000 (17:36 +0000)]
[llvm-pdbdump] Print a better error message when PDB loading fails.

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

llvm-svn: 266772

8 years ago[Release Notes] Mention Clang-tidy misc-unused-using-decls check.
Eugene Zelenko [Tue, 19 Apr 2016 17:31:58 +0000 (17:31 +0000)]
[Release Notes] Mention Clang-tidy misc-unused-using-decls check.

llvm-svn: 266770

8 years ago[Orc] Add move ops to RPC to satisfy MSVC.
Lang Hames [Tue, 19 Apr 2016 17:26:59 +0000 (17:26 +0000)]
[Orc] Add move ops to RPC to satisfy MSVC.

llvm-svn: 266768

8 years ago[ValueTracking] Improve isImpliedCondition for conditions with matching operands.
Chad Rosier [Tue, 19 Apr 2016 17:19:14 +0000 (17:19 +0000)]
[ValueTracking] Improve isImpliedCondition for conditions with matching operands.

This patch improves SimplifyCFG to catch cases like:

  if (a < b) {
    if (a > b) <- known to be false
      unreachable;
  }

Phabricator Revision: http://reviews.llvm.org/D18905

llvm-svn: 266767

8 years ago[Orc] Add pthread dependence to the RPCUtilsTest unit test.
Lang Hames [Tue, 19 Apr 2016 17:13:52 +0000 (17:13 +0000)]
[Orc] Add pthread dependence to the RPCUtilsTest unit test.

llvm-svn: 266766

8 years agoreduce indentation; NFCI
Sanjay Patel [Tue, 19 Apr 2016 17:13:14 +0000 (17:13 +0000)]
reduce indentation; NFCI

llvm-svn: 266765

8 years agoIR: LLVMContextTest => DebugTypeODRUniquingTest, NFC
Duncan P. N. Exon Smith [Tue, 19 Apr 2016 17:11:06 +0000 (17:11 +0000)]
IR: LLVMContextTest => DebugTypeODRUniquingTest, NFC

The second test in this file is actually testing DICompositeType API,
not LLVMContext API (after r266742 moved it to a higher level).  This
really doesn't make sense in an LLVMContextTest.  Rename the tests
before adding more.

llvm-svn: 266764

8 years ago[Clang][Builtin][AVX512] Adding intrinsics for VGETMANT{PD|PS} and VGETEXP{PD|PS...
Michael Zuckerman [Tue, 19 Apr 2016 17:10:29 +0000 (17:10 +0000)]
[Clang][Builtin][AVX512] Adding intrinsics for VGETMANT{PD|PS} and VGETEXP{PD|PS} instruction set

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

llvm-svn: 266763

8 years agoLinker: Avoid constructing ValueMap::MDMapT
Duncan P. N. Exon Smith [Tue, 19 Apr 2016 16:57:24 +0000 (16:57 +0000)]
Linker: Avoid constructing ValueMap::MDMapT

Calling ValueMap::MD lazily constructs a ValueMap, which mallocs the
buckets.  Instead of swapping constructed maps, move around the
underlying Optional<MDMapT>.  This gets rid of some unnecessary malloc
traffic from r266579 (not that it showed up on a profile).

llvm-svn: 266761

8 years ago[ITTNOTIFY] Remove serialized parallel regions from frame notification
Jonathan Peyton [Tue, 19 Apr 2016 16:55:17 +0000 (16:55 +0000)]
[ITTNOTIFY] Remove serialized parallel regions from frame notification

llvm-svn: 266760

8 years ago[DependenceAnalysis] Refactor uses of getConstantPart. NFC.
Brendon Cahoon [Tue, 19 Apr 2016 16:46:57 +0000 (16:46 +0000)]
[DependenceAnalysis] Refactor uses of getConstantPart. NFC.

Rather than checking for the SCEV type prior to calling
getContantPart, perform the checks in the function. This reduces
the number of places where the checks are needed.

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

llvm-svn: 266759

8 years agoRevert "[OPENMP] Codegen for untied tasks."
Alexey Bataev [Tue, 19 Apr 2016 16:36:01 +0000 (16:36 +0000)]
Revert "[OPENMP] Codegen for untied tasks."

This reverts commit r266754.

llvm-svn: 266755

8 years ago[OPENMP] Codegen for untied tasks.
Alexey Bataev [Tue, 19 Apr 2016 16:27:55 +0000 (16:27 +0000)]
[OPENMP] Codegen for untied tasks.

If the untied clause is present on a task construct, any thread in the
team can resume the task region after a suspension. Patch adds proper
codegen for untied tasks.

llvm-svn: 266754

8 years agoRevert r266747 (Compilation for Intel MCU (Part 1/3)) since it breaks a few buildbots.
Andrey Turetskiy [Tue, 19 Apr 2016 16:25:30 +0000 (16:25 +0000)]
Revert r266747 (Compilation for Intel MCU (Part 1/3)) since it breaks a few buildbots.

llvm-svn: 266753

8 years agoFix Gold test after r266750 (ModuleLinker: Do not import linkonce/weak as "external_w...
Mehdi Amini [Tue, 19 Apr 2016 16:21:37 +0000 (16:21 +0000)]
Fix Gold test after r266750 (ModuleLinker: Do not import linkonce/weak as "external_weak")

From: Mehdi Amini <mehdi.amini@apple.com>
llvm-svn: 266752

8 years agoIR: Use Optional instead of unique_ptr for Metadata map in ValueMap, NFC
Duncan P. N. Exon Smith [Tue, 19 Apr 2016 16:17:48 +0000 (16:17 +0000)]
IR: Use Optional instead of unique_ptr for Metadata map in ValueMap, NFC

llvm-svn: 266751

8 years agoModuleLinker: Do not import linkonce/weak as "external_weak"
Mehdi Amini [Tue, 19 Apr 2016 16:11:05 +0000 (16:11 +0000)]
ModuleLinker: Do not import linkonce/weak as "external_weak"

Summary:
There is no reason to have a weak reference because the external
definition will be weak.

Reviewers: rafael

Subscribers: llvm-commits, tejohnson

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

From: Mehdi Amini <mehdi.amini@apple.com>
llvm-svn: 266750

8 years agoIR: Use Optional instead of unique_ptr for debug info ODR type map, NFC
Duncan P. N. Exon Smith [Tue, 19 Apr 2016 16:06:50 +0000 (16:06 +0000)]
IR: Use Optional instead of unique_ptr for debug info ODR type map, NFC

Save a level of malloc indirection.

llvm-svn: 266749

8 years ago[ASTMatchers] Do not try to memoize nodes we can't compare.
Samuel Benzaquen [Tue, 19 Apr 2016 15:52:56 +0000 (15:52 +0000)]
[ASTMatchers] Do not try to memoize nodes we can't compare.

Summary:
Prevent hasAncestor from comparing nodes that are not supported.
hasDescendant was fixed some time ago to avoid this problem.
I'm applying the same fix to hasAncestor: if any object in the Builder map is
not comparable, skip the cache.

Reviewers: alexfh

Subscribers: klimek, cfe-commits

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

llvm-svn: 266748

8 years agoCompilation for Intel MCU (Part 1/3)
Andrey Turetskiy [Tue, 19 Apr 2016 15:50:57 +0000 (15:50 +0000)]
Compilation for Intel MCU (Part 1/3)

Add -miamcu option which:
  * Sets IAMCU triple
  * Sets IAMCU ABI
  * Enforces static compilation

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

llvm-svn: 266747

8 years agoEnable ODR uniquing of DITypes in more places
Teresa Johnson [Tue, 19 Apr 2016 15:48:30 +0000 (15:48 +0000)]
Enable ODR uniquing of DITypes in more places

Summary:
This is a follow-on to apply Duncan's new DIType ODR uniquing from
r266549 and r266713 in more places.

Enable enableDebugTypeODRUniquing() for ThinLTO backends invoked via
libLTO, similar to the way r266549 enabled this for ThinLTO backend
threads launched from gold-plugin.

Also enable enableDebugTypeODRUniquing in opt, similar to the way
r266549 enabled this for llvm-link (on by default, can be disabled with
new -disable-debug-info-type-map option), since we may perform ThinLTO
importing from opt.

Reviewers: dexonsmith, joker.eph

Subscribers: joker.eph, llvm-commits

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

llvm-svn: 266746

8 years ago[Clang][AVX512][BUILTIN] Adding intrinsics support to VEXTRACT{I|F} and VINSERT{I...
Michael Zuckerman [Tue, 19 Apr 2016 15:18:23 +0000 (15:18 +0000)]
[Clang][AVX512][BUILTIN] Adding intrinsics support to VEXTRACT{I|F} and VINSERT{I|F} instruction set

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

llvm-svn: 266745

8 years agoSummary:
Martin Probst [Tue, 19 Apr 2016 14:59:16 +0000 (14:59 +0000)]
Summary:
clang-format: [JS] unit tests for type aliases.

Also adds a test for "foo as bar" casts.

Spec:
https://github.com/Microsoft/TypeScript/blob/master/doc/spec.md#3.10

These are already handled correctly.

Reviewers: djasper

Subscribers: cfe-commits, klimek

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

llvm-svn: 266744

8 years agoclang-format: [JS] simplify import/export.
Martin Probst [Tue, 19 Apr 2016 14:55:37 +0000 (14:55 +0000)]
clang-format: [JS] simplify import/export.

Summary:
Change `import` and `export` parsing to special case the renaming
syntax (`import x, {y as bar} ...`, `export {x}`) and otherwise just
parse a regular structural element.

This simplifies the code a bit and should be more correct - it's easier
to recognise the specific import syntax than to recognise arbitrary
expressions and declarations.

Reviewers: djasper

Subscribers: cfe-commits, klimek

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

llvm-svn: 266743

8 years agoIR: getOrInsertODRUniquedType => DICompositeType::getODRType, NFC
Duncan P. N. Exon Smith [Tue, 19 Apr 2016 14:55:09 +0000 (14:55 +0000)]
IR: getOrInsertODRUniquedType => DICompositeType::getODRType, NFC

Lift the API for debug info ODR type uniquing up a layer.  Instead of
clients managing the map directly on the LLVMContext, add a static
method to DICompositeType called getODRType and handle the map in the
background.  Also adds DICompositeType::getODRTypeIfExists, so far just
for convenience in the unit tests.

This simplifies the logic in LLParser and BitcodeReader.  Because of
argument spam there are actually a few more lines of code now; I'll see
if I come up with a reasonable way to clean that up.

llvm-svn: 266742

8 years agoRelate domains to statements during construction [NFC]
Johannes Doerfert [Tue, 19 Apr 2016 14:53:13 +0000 (14:53 +0000)]
Relate domains to statements during construction [NFC]

  Instead of the Scop::getPwAff() function we now use the ScopStmt::getPwAff()
  function during the statements domain construction.

llvm-svn: 266741

8 years agoAdd user assumptions after domain generation [NFC]
Johannes Doerfert [Tue, 19 Apr 2016 14:49:42 +0000 (14:49 +0000)]
Add user assumptions after domain generation [NFC]

llvm-svn: 266740

8 years agoDo not build domains for out of SCoP blocks [NFC]
Johannes Doerfert [Tue, 19 Apr 2016 14:49:05 +0000 (14:49 +0000)]
Do not build domains for out of SCoP blocks [NFC]

llvm-svn: 266739

8 years agoMark Scop::getDomainConditions as const [NFC]
Johannes Doerfert [Tue, 19 Apr 2016 14:48:22 +0000 (14:48 +0000)]
Mark Scop::getDomainConditions as const [NFC]

llvm-svn: 266738

8 years agoIR: Require DICompositeType for ODR uniquing type map
Duncan P. N. Exon Smith [Tue, 19 Apr 2016 14:42:55 +0000 (14:42 +0000)]
IR: Require DICompositeType for ODR uniquing type map

Tighten up the API for debug info ODR type uniquing in LLVMContext.  The
only reason to allow other DIType subclasses is to make the unit tests
prettier :/.

llvm-svn: 266737

8 years agoRevert "LLDB: Fixed two race conditions when stopping private state thread"
Pavel Labath [Tue, 19 Apr 2016 14:03:43 +0000 (14:03 +0000)]
Revert "LLDB: Fixed two race conditions when stopping private state thread"

This reverts commit r266733 as it causes a number of failures on linux buildbots.

llvm-svn: 266736

8 years agoInitial version of misc-unused-using-decl check.
Daniel Jasper [Tue, 19 Apr 2016 13:48:39 +0000 (13:48 +0000)]
Initial version of misc-unused-using-decl check.

llvm-svn: 266735

8 years ago[clang-tidy] readability-container-size-empty fixes
Gabor Horvath [Tue, 19 Apr 2016 13:29:05 +0000 (13:29 +0000)]
[clang-tidy] readability-container-size-empty fixes

Summary: This patch fixes PR27410 and adds std::basic_string support.

Reviewers: Eugene.Zelenko, hokein

Subscribers: cfe-commits, o.gyorgy

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

llvm-svn: 266734

8 years agoLLDB: Fixed two race conditions when stopping private state thread
Marianne Mailhot-Sarrasin [Tue, 19 Apr 2016 13:21:46 +0000 (13:21 +0000)]
LLDB: Fixed two race conditions when stopping private state thread

When stopping the private state thread, there was a race condition between the time the thread exits (resetting the HostThread object) and the time a Join was attempted, especially in the case of a timeout.

The previous workaround of copying the HostThread object is not enough, since on a Reset the internal thread stuff gets nulled out regardless of which HostThread object actually has Reset called on it, resulting in an attempt to dereference a null pointer on the subsequent call to Join from the copy as well.

Additionally, there was a race between the detach (called when stopping the process) and the stop itself, causing the stop to time out because it was waiting for the private state thread to see the stop state, but it had exited immediately after entering the detached state.

Patch by cameron314

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

llvm-svn: 266733

8 years ago[InstCombine][X86] Added extra tests introduced for D17490
Simon Pilgrim [Tue, 19 Apr 2016 12:59:52 +0000 (12:59 +0000)]
[InstCombine][X86] Added extra tests introduced for D17490

llvm-svn: 266732

8 years ago[InstCombine][X86] Regenerate SSE combine tests as part of setup for D17490
Simon Pilgrim [Tue, 19 Apr 2016 12:56:46 +0000 (12:56 +0000)]
[InstCombine][X86] Regenerate SSE combine tests as part of setup for D17490

Regenerated with utils/update_test_checks.py

llvm-svn: 266731

8 years agoFramework to allow testing of static libc++abi
Ben Craig [Tue, 19 Apr 2016 12:49:05 +0000 (12:49 +0000)]
Framework to allow testing of static libc++abi

These changes make linking against static libraries more explicit. Instead
of using -lc++ and -lc++abi in the tests, an absolute path to the library is
provided instead.

The choices of shared vs. static, and the choices of library paths for both
libcxx and libcxxabi needed to be exchanged for this to work. In other words,
libcxx tests need to know the library path of libcxxabi, and whether libcxxabi
is a static or shared library.

Some Mac specific logic for testing against libc++abi had to be moved from
libcxxabi's config.py, as it was overriding choices made in libcxx's config.py.
That logic is now in libcxx's target_info.py.

Testing a static libcxx on Linux will now automatically link in librt most of
the time. Previously, lots of pthread tests would fail because of an
unresolved clock_gettime.

http://reviews.llvm.org/D16544

llvm-svn: 266730

8 years agoEnable testing for static libc++abi
Ben Craig [Tue, 19 Apr 2016 12:47:38 +0000 (12:47 +0000)]
Enable testing for static libc++abi

This change leverages framework changes made in libcxx. See those changes for
more details. (http://reviews.llvm.org/D16544)

Some Mac specific logic for testing against libc++abi had to be moved from
libcxxabi's config.py, as it was overriding choices made in libcxx's config.py.
That logic is now in libcxx's target_info.py.

http://reviews.llvm.org/D16545

llvm-svn: 266729

8 years ago[X86][AVX2] Prefer VPERMQ/VPERMPD over VINSERTI128/VINSERTF128 for unary shuffles
Simon Pilgrim [Tue, 19 Apr 2016 12:26:40 +0000 (12:26 +0000)]
[X86][AVX2] Prefer VPERMQ/VPERMPD over VINSERTI128/VINSERTF128 for unary shuffles

Using VPERMQ/VPERMPD allows memory folding of the (repeated) input where VINSERTI128/VINSERTF128 can not.

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

llvm-svn: 266728

8 years agoUpdated comment. NFC.
George Rimar [Tue, 19 Apr 2016 12:09:25 +0000 (12:09 +0000)]
Updated comment. NFC.

llvm-svn: 266727

8 years agoD17487: [analyzer][scan-build-py] flag filter modification for compilation database...
Laszlo Nagy [Tue, 19 Apr 2016 12:03:03 +0000 (12:03 +0000)]
D17487: [analyzer][scan-build-py] flag filter modification for compilation database creation

llvm-svn: 266726

8 years agoFix typo in TestSourceManager.py
Pavel Labath [Tue, 19 Apr 2016 09:31:14 +0000 (09:31 +0000)]
Fix typo in TestSourceManager.py

llvm-svn: 266725

8 years agoRevert "[OPENMP] Codegen for untied tasks."
Alexey Bataev [Tue, 19 Apr 2016 09:27:38 +0000 (09:27 +0000)]
Revert "[OPENMP] Codegen for untied tasks."

This reverts commit 266722.

llvm-svn: 266724

8 years agoMinor improvement to debug output for Function Importer (NFC)
Mehdi Amini [Tue, 19 Apr 2016 09:21:30 +0000 (09:21 +0000)]
Minor improvement to debug output for Function Importer (NFC)

From: Mehdi Amini <mehdi.amini@apple.com>
llvm-svn: 266723

8 years ago[OPENMP] Codegen for untied tasks.
Alexey Bataev [Tue, 19 Apr 2016 09:10:27 +0000 (09:10 +0000)]
[OPENMP] Codegen for untied tasks.

If the untied clause is present on a task construct, any thread in the team can resume the task region after a suspension. Patch adds proper codegen for untied tasks.

llvm-svn: 266722

8 years agoAdd a description for the PatchableFunction pass; NFC
Sanjoy Das [Tue, 19 Apr 2016 06:25:02 +0000 (06:25 +0000)]
Add a description for the PatchableFunction pass; NFC

llvm-svn: 266721

8 years agoDisable the PatchableFunction pass for NVPTX & Wasm
Sanjoy Das [Tue, 19 Apr 2016 06:24:58 +0000 (06:24 +0000)]
Disable the PatchableFunction pass for NVPTX & Wasm

PatchableFunction requires AllVRegsAllocated that these targets don't
provide.

llvm-svn: 266720

8 years agoWarn if function or variable cannot be implicitly instantiated
Serge Pavlov [Tue, 19 Apr 2016 06:19:52 +0000 (06:19 +0000)]
Warn if function or variable cannot be implicitly instantiated

With this patch compiler emits warning if it tries to make implicit instantiation
of a template but cannot find the template definition. The warning can be suppressed
by explicit instantiation declaration or by command line options
-Wundefined-var-template and -Wundefined-func-template. The implementation follows
the discussion of http://reviews.llvm.org/D12326.

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

llvm-svn: 266719

8 years agoCorrect IDF calculator for ReverseIDF
Daniel Berlin [Tue, 19 Apr 2016 06:13:28 +0000 (06:13 +0000)]
Correct IDF calculator for ReverseIDF

Summary:
Need to use predecessors for reverse graph, successors for forward graph.
succ_iterator/pred_iterator are not compatible, this patch is all the work necessary to work around that (which is what everywhere else does).  Not sure if there is a better way, so cc'ing some random folks to take a gander :)

Reviewers: dblaikie, qcolombet, echristo

Subscribers: llvm-commits

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

llvm-svn: 266718

8 years ago[Orc] Disable RPC callST unit test until the S390 failures encountered during
Lang Hames [Tue, 19 Apr 2016 06:01:51 +0000 (06:01 +0000)]
[Orc] Disable RPC callST unit test until the S390 failures encountered during
http://lab.llvm.org:8011/builders/clang-s390x-linux/builds/3459 can be
debugged/fixed.

llvm-svn: 266717

8 years ago[LSAN] Fix test swapcontext.cc on MIPS
Sagar Thakur [Tue, 19 Apr 2016 06:00:35 +0000 (06:00 +0000)]
[LSAN] Fix test swapcontext.cc on MIPS

Summary: There is no frame validity check in the slow unwinder like there is in the fast unwinder due to which lsan reports a leak even for heap allocated coroutine in the test swapcontext.cc. Since mips/linux uses slow unwindwer instead of fast unwinder, the test fails for mips/linux. Therefore adding the checks before unwinding fixes the test for mips/linux.

Reviewers: samsonov, earthdok, kcc
Subscribers: llvm-commits, mohit.bhakkad, jaydeep
Differential: http://reviews.llvm.org/D18690
llvm-svn: 266716

8 years agoIntroduce a "patchable-function" function attribute
Sanjoy Das [Tue, 19 Apr 2016 05:24:47 +0000 (05:24 +0000)]
Introduce a "patchable-function" function attribute

Summary:
The `"patchable-function"` attribute can be used by an LLVM client to
influence LLVM's code generation in ways that makes the generated code
easily patchable at runtime (for instance, to redirect control).
Right now only one patchability scheme is supported,
`"prologue-short-redirect"`, but this can be expanded in the future.

Reviewers: joker.eph, rnk, echristo, dberris

Subscribers: joker.eph, echristo, mcrosier, llvm-commits

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

llvm-svn: 266715

8 years agoLTO: Adapt to LLVM API changes in r266713
Duncan P. N. Exon Smith [Tue, 19 Apr 2016 04:57:40 +0000 (04:57 +0000)]
LTO: Adapt to LLVM API changes in r266713

llvm-svn: 266714

8 years agoIR: Rename API for enabling ODR uniquing of DITypes, NFC
Duncan P. N. Exon Smith [Tue, 19 Apr 2016 04:55:25 +0000 (04:55 +0000)]
IR: Rename API for enabling ODR uniquing of DITypes, NFC

As per David's review, rename everything in the new API for ODR type
uniquing of debug info.

    ensureDITypeMap  => enableDebugTypeODRUniquing
    destroyDITypeMap => disableDebugTypeODRUniquing
    hasDITypeMap     => isODRUniquingDebugTypes

llvm-svn: 266713

8 years ago[ORC] Whitespace.
Lang Hames [Tue, 19 Apr 2016 04:44:21 +0000 (04:44 +0000)]
[ORC] Whitespace.

llvm-svn: 266712

8 years ago[Orc] Tidy up some of the RPC primitives, add a unit-test for the callST
Lang Hames [Tue, 19 Apr 2016 04:43:09 +0000 (04:43 +0000)]
[Orc] Tidy up some of the RPC primitives, add a unit-test for the callST
(synchronous call) primitive.

llvm-svn: 266711

8 years agotest infra cleanup: convert test_runner lib into package
Todd Fiala [Tue, 19 Apr 2016 04:20:35 +0000 (04:20 +0000)]
test infra cleanup: convert test_runner lib into package

Also does the following:
* adopts PEP8 naming convention for OptionalWith class (now
  optional_with).
* moves test_runner/lldb_utils.py to lldbsuite/support/optional_with.py.
* packages tests in a subpackage of test_runner per recommendations in
  http://the-hitchhikers-guide-to-packaging.readthedocs.org/en/latest/creation.html

Tests can be run from within pacakges/Python/lldbsuite/test via this
command:

  python -m unittest discover test_runner

The primary cleanup this allows is avoiding the need to muck with the
PYTHONPATH variable from within the source files.  This also aids some
of the static code checkers as they don't need to run code to determine
the proper python path.

llvm-svn: 266710

8 years agoBitcodeWriter: Break recursion when enumerating Metadata, almost NFC
Duncan P. N. Exon Smith [Tue, 19 Apr 2016 03:46:51 +0000 (03:46 +0000)]
BitcodeWriter: Break recursion when enumerating Metadata, almost NFC

Use a worklist instead of recursing through MDNode operands in
ValueEnumerator.  The actual record output order has changed slightly,
but otherwise there's no functionality change.

I had to update test/Bitcode/metadata-function-blocks.ll.  I renumbered
nodes so they continue to match the implicit record ids.

llvm-svn: 266709

8 years ago[CUDA] Add --no-cuda-noopt-debug, which disables --cuda-noopt-debug.
Justin Lebar [Tue, 19 Apr 2016 02:27:11 +0000 (02:27 +0000)]
[CUDA] Add --no-cuda-noopt-debug, which disables --cuda-noopt-debug.

Reviewers: tra

Subscribers: cfe-commits, jhen

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

llvm-svn: 266708

8 years ago[CUDA] Add --cuda-compile-host-device, which overrides --cuda-host-only and --cuda...
Justin Lebar [Tue, 19 Apr 2016 02:27:07 +0000 (02:27 +0000)]
[CUDA] Add --cuda-compile-host-device, which overrides --cuda-host-only and --cuda-device-only.

Summary:
This completes the flag's tristate, letting you override it at will on
the command line.

Reviewers: tra

Subscribers: cfe-commits, jhen

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

llvm-svn: 266707

8 years agoAdd a test case to check a member's default constructor is also run.
Akira Hatanaka [Tue, 19 Apr 2016 02:21:47 +0000 (02:21 +0000)]
Add a test case to check a member's default constructor is also run.

This is a follow-up to r266645.

llvm-svn: 266706

8 years agovim: add swiftcc keyword
Saleem Abdulrasool [Tue, 19 Apr 2016 02:04:01 +0000 (02:04 +0000)]
vim: add swiftcc keyword

Update the syntax highlighting for SVN r265480.

llvm-svn: 266705

8 years agoCOFF: Support /manifestinput command line option.
Rui Ueyama [Tue, 19 Apr 2016 01:21:58 +0000 (01:21 +0000)]
COFF: Support /manifestinput command line option.

Manifest file is a separate or embedded XML file having metadata
of an executable. As it is XML, it can contain various types of
information. Probably the most popular one is to request escalated
priviledges.

Usually the linker creates an XML file and embed that file into
an executable. However, there's a way to supply an XML file from
command line. /manifestniput is it.

Apparently it is over-designed here, but if you supply two or more
manifest files, then the linker needs to merge the files into a
single XML file. A good news is that we don't need to do that ourselves.
MT.exe command can do that, so we call the command from the linker
in this patch.

llvm-svn: 266704

8 years agoMake tuples constructors conditionally EXPLICIT. See N4387
Eric Fiselier [Tue, 19 Apr 2016 01:19:25 +0000 (01:19 +0000)]
Make tuples constructors conditionally EXPLICIT. See N4387

llvm-svn: 266703

8 years agoFix Windows build.
Chaoren Lin [Tue, 19 Apr 2016 01:09:37 +0000 (01:09 +0000)]
Fix Windows build.

llvm-svn: 266702

8 years ago[lanai] Set boolean contentss to ZeroOrOneBooleanContent.
Jacques Pienaar [Tue, 19 Apr 2016 00:26:42 +0000 (00:26 +0000)]
[lanai] Set boolean contentss to ZeroOrOneBooleanContent.

llvm-svn: 266701

8 years agoIncrease SmallVector size for ConstantUniqueMap::getHashValue() (NFC)
Mehdi Amini [Tue, 19 Apr 2016 00:17:55 +0000 (00:17 +0000)]
Increase SmallVector size for ConstantUniqueMap::getHashValue() (NFC)

This remove totally any malloc from this function on my
profile (from 155k before).

From: Mehdi Amini <mehdi.amini@apple.com>
llvm-svn: 266700

8 years agoPort DemandedBits to the new pass manager.
Michael Kuperstein [Mon, 18 Apr 2016 23:55:01 +0000 (23:55 +0000)]
Port DemandedBits to the new pass manager.

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

llvm-svn: 266699

8 years ago[ObjC++] Fix crash when emitting debug info for a block member capturing this.
Adrian Prantl [Mon, 18 Apr 2016 23:48:16 +0000 (23:48 +0000)]
[ObjC++] Fix crash when emitting debug info for a block member capturing this.

rdar://problem/23871824

llvm-svn: 266698

8 years agoAdd missing #include, found by modules selfhost.
Richard Smith [Mon, 18 Apr 2016 23:27:25 +0000 (23:27 +0000)]
Add missing #include, found by modules selfhost.

llvm-svn: 266697

8 years agoAdd missing header, found by modules selfhost.
Richard Smith [Mon, 18 Apr 2016 23:24:39 +0000 (23:24 +0000)]
Add missing header, found by modules selfhost.

llvm-svn: 266696

8 years agoMark -Xclang as being a compilation-only option so that the clang driver
Richard Smith [Mon, 18 Apr 2016 23:12:59 +0000 (23:12 +0000)]
Mark -Xclang as being a compilation-only option so that the clang driver
doesn't warn if it's passed to a link action. This matches the behavior for
most other compilation-only options (including things like -f flags), and is
necessary to suppress warnings on systems like cmake that always pass all
compile flags to the linker.

llvm-svn: 266695

8 years ago[libFuzzer] try to print correct time in seconds when reporting a timeout. Don't...
Kostya Serebryany [Mon, 18 Apr 2016 22:50:39 +0000 (22:50 +0000)]
[libFuzzer] try to print correct time in seconds when reporting a timeout. Don't report timeouts while still loading the corpus.

llvm-svn: 266693

8 years ago[DWARF] Force a linkage_name on an inlined subprogram's abstract origin.
Paul Robinson [Mon, 18 Apr 2016 22:41:41 +0000 (22:41 +0000)]
[DWARF] Force a linkage_name on an inlined subprogram's abstract origin.

When we suppress linkage names, for a non-inlined subprogram the name
can still be found in the object-file symbol table, because we have
the code address of the subprogram.  This is not necessarily the case
for an inlined subprogram, so we still want to emit the linkage name
in the DWARF.  Put this on the abstract-origin DIE because it's common
to all inlined instances.

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

llvm-svn: 266692

8 years agoRemove old DIBuilder::createFunction overload used only by dragonegg, which does...
Reid Kleckner [Mon, 18 Apr 2016 22:38:52 +0000 (22:38 +0000)]
Remove old DIBuilder::createFunction overload used only by dragonegg, which does not currently build

NFC

llvm-svn: 266691

8 years ago[msan] Don't hardcode 4kiB page size in msan_test.cc.
Marcin Koscielnicki [Mon, 18 Apr 2016 22:21:02 +0000 (22:21 +0000)]
[msan] Don't hardcode 4kiB page size in msan_test.cc.

This breaks the valloc test on PowerPC, which has 64kiB pages.  Since
getting page size portably is nontrivial, and there's already a function
for that in __sanitizer, just use it.  Unfortunately, sanitizer_common.h
conflicts with the interface headers inclucded by msan_test.cc (and a few
of its own macros), so we have to declare it manually.

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

llvm-svn: 266688

8 years ago[modules] Remove some more unnecessary forwarding functions.
Richard Smith [Mon, 18 Apr 2016 21:54:58 +0000 (21:54 +0000)]
[modules] Remove some more unnecessary forwarding functions.

llvm-svn: 266687

8 years agoAdd debugging to the cache pruning
Mehdi Amini [Mon, 18 Apr 2016 21:54:00 +0000 (21:54 +0000)]
Add debugging to the cache pruning

From: Mehdi Amini <mehdi.amini@apple.com>
llvm-svn: 266686

8 years agoCachePruning: fix typo, we accumulate file size here, not time
Mehdi Amini [Mon, 18 Apr 2016 21:53:55 +0000 (21:53 +0000)]
CachePruning: fix typo, we accumulate file size here, not time

From: Mehdi Amini <mehdi.amini@apple.com>
llvm-svn: 266685

8 years agoARM: use a pseudo-instruction for cmpxchg at -O0.
Tim Northover [Mon, 18 Apr 2016 21:48:55 +0000 (21:48 +0000)]
ARM: use a pseudo-instruction for cmpxchg at -O0.

The fast register-allocator cannot cope with inter-block dependencies without
spilling. This is fine for ldrex/strex loops coming from atomicrmw instructions
where any value produced within a block is dead by the end, but not for
cmpxchg. So we lower a cmpxchg at -O0 via a pseudo-inst that gets expanded
after regalloc.

Fortunately this is at -O0 so we don't have to care about performance. This
simplifies the various axes of expansion considerably: we assume a strong
seq_cst operation and ensure ordering via the always-present DMB instructions
rather than v8 acquire/release instructions.

Should fix the 32-bit part of PR25526.

llvm-svn: 266679

8 years agoFix trip count calculation for parallel loops in runtime
Jonathan Peyton [Mon, 18 Apr 2016 21:38:29 +0000 (21:38 +0000)]
Fix trip count calculation for parallel loops in runtime

The trip count calculation was incorrect for loops with large bounds. For example,
for(int i=-2,000,000,000; i < 2,000,000,000; i+=50000000), the trip count
calculation had overflow (trying to calculate 2,000,000,000 + 2,000,000,000 with
signed integers) and wasn't giving the right value. This patch fixes this error
in the runtime by using unsigned integers instead. There is still a bug in the
clang compiler component because it warns that there is overflow in the
test case file when there isn't. This error isn't there for the Intel Compiler.
So for now, the test case is designated as XFAIL.

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

llvm-svn: 266677

8 years agoAdditional test for use-after-scope
Kostya Serebryany [Mon, 18 Apr 2016 21:36:34 +0000 (21:36 +0000)]
Additional test for use-after-scope

Summary: Test that asan detects access to the dead variable captured by lambda.

Reviewers: aizatsky, kcc

Subscribers: llvm-commits

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

llvm-svn: 266676

8 years agoRuntime support for untied tasks
Jonathan Peyton [Mon, 18 Apr 2016 21:35:14 +0000 (21:35 +0000)]
Runtime support for untied tasks

Introduced a counter of parts of an untied task submitted for execution. The
counter controls whether all parts of the task are already finished. The
compiler should generate re-submission of partially executed untied task by
itself before exiting of each task part except for the lexical last part.

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

llvm-svn: 266675

8 years agoFix for pthread_setspecific (TLS and shutdown) problem
Jonathan Peyton [Mon, 18 Apr 2016 21:33:01 +0000 (21:33 +0000)]
Fix for pthread_setspecific (TLS and shutdown) problem

Some codes that use TLS fail intermittently because one thread tries to write
TLS values after the TLS key has been destroyed by another thread. This happens
when one thread executes library shutdown (and destroys TLS keys), while another
thread starts to execute the TLS key destructor routine. Before this change, the
kmp_init_runtime flag was checked before calling pthread_* TLS functions, but
this flag is set to FALSE later than the destruction of the TLS keys, which
leads to failure. The fix is to check kmp_init_gtid instead, as this flag is
unset *before* the destruction of TLS keys.

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

llvm-svn: 266674

8 years ago[sanitizer-coverage] make sure coverage flags are not passed to clang if the driver...
Kostya Serebryany [Mon, 18 Apr 2016 21:30:17 +0000 (21:30 +0000)]
[sanitizer-coverage] make sure coverage flags are not passed to clang if the driver thinks they are unused

llvm-svn: 266673

8 years ago[sanitizer-coverage] better docs for -fsanitize-coverage=trace-bb
Kostya Serebryany [Mon, 18 Apr 2016 21:28:37 +0000 (21:28 +0000)]
[sanitizer-coverage] better docs for -fsanitize-coverage=trace-bb

llvm-svn: 266672

8 years ago[Hexagon] V60/HVX builtin definitions for clang
Krzysztof Parzyszek [Mon, 18 Apr 2016 21:27:59 +0000 (21:27 +0000)]
[Hexagon] V60/HVX builtin definitions for clang

The builtins already exist in LLVM, but are not exposed to the C/C++
programmers. This patch adds all the information about the builtins
needed for clang, as well as a test for all available intrinsics.

llvm-svn: 266671

8 years ago[libFuzzer] warn if the corpus is empty
Kostya Serebryany [Mon, 18 Apr 2016 21:14:11 +0000 (21:14 +0000)]
[libFuzzer] warn if the corpus is empty

llvm-svn: 266670

8 years ago[X86][SSE] Test case for PR2585
Simon Pilgrim [Mon, 18 Apr 2016 21:07:49 +0000 (21:07 +0000)]
[X86][SSE] Test case for PR2585

llvm-svn: 266669

8 years agoRename LocationNode -> SectionsCommand.
Rui Ueyama [Mon, 18 Apr 2016 21:00:45 +0000 (21:00 +0000)]
Rename LocationNode -> SectionsCommand.

They are called sections-command in the doc, so it is nice to keep
it consistent with it.
https://sourceware.org/binutils/docs/ld/SECTIONS.html#SECTIONS

llvm-svn: 266668