platform/upstream/llvm.git
7 years agoRecommit r285285 - [Object/ELF] - Fixed behavior when SectionHeaderTable->sh_size...
George Rimar [Mon, 31 Oct 2016 15:33:00 +0000 (15:33 +0000)]
Recommit r285285 - [Object/ELF] - Fixed behavior when SectionHeaderTable->sh_size is too large.

with fix: edited invalid-section-index2.elf input to pass the new check and
fail on the same place it was intended to fail.

Original commit message:
Elf.h already has code checking that section table does not go past end of file.
Problem is that this check may not work on values greater than UINT64_MAX / Header->e_shentsize
because of calculation overflow.

Parch fixes the issue.

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

llvm-svn: 285586

7 years ago[x86][inline-asm] Add support for curly brackets escape using "%" in extended inline...
Michael Zuckerman [Mon, 31 Oct 2016 15:27:54 +0000 (15:27 +0000)]
[x86][inline-asm] Add support for curly brackets escape using "%" in extended inline asm.

Commit on behalf of mharoush

After LGTM and check all:

This patch is a compatibility fix for clang, matching GCC support for charter escape when using extended in-line assembly (i.e, "%{" ,"%}" --> "{" ,"}" ).
 It is meant to enable support for advanced features such as AVX512 conditional\masked vector instructions/broadcast assembly syntax.

Reviewer: 1. rnk

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

llvm-svn: 285585

7 years agoMinidump plugin: Adding x86_32 register context converter
Dimitar Vlahovski [Mon, 31 Oct 2016 15:26:44 +0000 (15:26 +0000)]
Minidump plugin: Adding x86_32 register context converter

Summary:
This, like the x86_64 case, reads the register values from the minidump
file, and emits a binary buffer that is ordered using the offsets from
the RegisterInfoInterface argument. That way we can reuse an existing
register context.
Added unit tests.

Reviewers: labath, zturner

Subscribers: beanz, mgorny, modocache, amccarth, lldb-commits

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

llvm-svn: 285584

7 years agoAdd -frtti for Windows buildbot.
Malcolm Parsons [Mon, 31 Oct 2016 15:15:00 +0000 (15:15 +0000)]
Add -frtti for Windows buildbot.

llvm-svn: 285583

7 years ago[libc++] Add configuration define for off_t functions
Shoaib Meenai [Mon, 31 Oct 2016 15:09:10 +0000 (15:09 +0000)]
[libc++] Add configuration define for off_t functions

Create this define in __config and use it elsewhere, instead of checking
the operating system/library defines in other files. The aim is to
reduce the usage of _WIN32 outside __config. No functional change.

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

llvm-svn: 285582

7 years agoFix link to check
Malcolm Parsons [Mon, 31 Oct 2016 14:48:49 +0000 (14:48 +0000)]
Fix link to check

llvm-svn: 285581

7 years agoSimplify. NFC.
Rafael Espindola [Mon, 31 Oct 2016 14:44:41 +0000 (14:44 +0000)]
Simplify. NFC.

No need to subtract then add Sec->getVA().

llvm-svn: 285580

7 years ago[clang-tidy] Enhance modernize-use-auto to casts
Malcolm Parsons [Mon, 31 Oct 2016 14:43:37 +0000 (14:43 +0000)]
[clang-tidy] Enhance modernize-use-auto to casts

Summary:
Extend modernize-use-auto to cases when a variable is assigned with a cast.

e.g.
Type *Ptr1 = dynamic_cast<Type*>(Ptr2);

http://llvm.org/PR25499

Reviewers: angelgarcia, aaron.ballman, klimek, Prazek, alexfh

Subscribers: Prazek, Eugene.Zelenko, cfe-commits

Tags: #clang-tools-extra

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

llvm-svn: 285579

7 years ago[SystemZ] Add -march=archX aliases
Ulrich Weigand [Mon, 31 Oct 2016 14:38:05 +0000 (14:38 +0000)]
[SystemZ] Add -march=archX aliases

For compatibility with other compilers on the platform, allow specifying
levels of the z/Architecture instead of model names with -march.  In
particular, the following aliases are now supported:

  -march=arch8   equals  -march=z10
  -march=arch9   equals  -march=z196
  -march=arch10  equals  -march=zEC12
  -march=arch11  equals  -march=z13

This parallels the equivalent (and prerequisite) LLVM change in r285577.

llvm-svn: 285578

7 years ago[SystemZ] Rework processor feature definitions and add -mcpu=archX support
Ulrich Weigand [Mon, 31 Oct 2016 14:33:29 +0000 (14:33 +0000)]
[SystemZ] Rework processor feature definitions and add -mcpu=archX support

This patch implements two changes:

- Move processor feature definition into a new file SystemZFeatures.td,
  and provide explicit lists of supported and unsupported features for
  each level of the z/Architecture.  This allows specifying unsupported
  features in the scheduler definition files for each processor.

- Add optional aliases for the -mcpu processor names according to the
  level of the z/Architecture, for compatibility with other compilers
  on the platform.  The supported aliases are:
    -mcpu=arch8  equals  -mcpu=z10
    -mcpu=arch9  equals  -mcpu=z196
    -mcpu=arch10 equals  -mcpu=zEC12
    -mcpu=arch11 equals  -mcpu=z13

llvm-svn: 285577

7 years ago[SystemZ] Guard LEFR/LFER with FeatureVector
Ulrich Weigand [Mon, 31 Oct 2016 14:28:43 +0000 (14:28 +0000)]
[SystemZ] Guard LEFR/LFER with FeatureVector

The LEFR/LFER pseudos are aliases for vector instructions and should
therefore be guared by FeatureVector.  If they aren't, the TableGen
scheduler definition checking might complain that there is no data
for those pseudos for pre-z13 machines.

No functional change intended.

llvm-svn: 285576

7 years ago[SystemZ] Correctly diagnose missing features in AsmParser
Ulrich Weigand [Mon, 31 Oct 2016 14:25:05 +0000 (14:25 +0000)]
[SystemZ] Correctly diagnose missing features in AsmParser

Currently, when using an instruction that is not supported on the
currently selected architecture, the LLVM assembler is likely to
diagnose an "invalid operand" instead of a "missing feature".

This is because many operands require a custom parser in order to
be processed correctly, and if an instruction is not available
according to the current feature set, the generated parser code
will also not detect the associated custom operand parsers.

Fixed by temporarily enabling all features while parsing operands.
The missing features will then be correctly detected when actually
parsing the instruction itself.

llvm-svn: 285575

7 years ago[SystemZ] Fix encoding of MVCK and .insn ss
Ulrich Weigand [Mon, 31 Oct 2016 14:21:36 +0000 (14:21 +0000)]
[SystemZ] Fix encoding of MVCK and .insn ss

LLVM currently treats the first operand of MVCK as if it were a
regular base+index+displacement address.  However, it is in fact
a base+displacement combined with a length register field.

While the two might look syntactically similar, there are two
semantic differences:
- %r0 is a valid length register, even though it cannot be used
  as an index register.
- In an expression with just a single register like 0(%rX), the
  register is treated as base with normal addresses, while it is
  treated as the length register (with an empty base) for MVCK.

Fixed by adding a new operand parser class BDRAddr and reworking
the assembler parser to distinguish between address + length
register operands and regular addresses.

llvm-svn: 285574

7 years agosecond attempt at r285565.
Michael Zuckerman [Mon, 31 Oct 2016 14:16:57 +0000 (14:16 +0000)]
second attempt at r285565.

llvm-svn: 285573

7 years agoFix archetypes.hpp under libcpp-no-extensions and std level < 14
Roger Ferrer Ibanez [Mon, 31 Oct 2016 14:14:13 +0000 (14:14 +0000)]
Fix archetypes.hpp under libcpp-no-extensions and std level < 14

Under -fno-exceptions TEST_THROW becomes abort / __builtin_abort which returns
void. This causes a type mismatch in the conditional operator when testing the
library in C++98,03,11 modes.

Use a comma operator to workaround this problem.

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

llvm-svn: 285572

7 years agoSpell libcxxabi-no-threads correctly
Eric Fiselier [Mon, 31 Oct 2016 14:14:04 +0000 (14:14 +0000)]
Spell libcxxabi-no-threads correctly

llvm-svn: 285571

7 years agoSkip over AnnotatedLines with >50 levels of nesting; don't format them.
Daniel Jasper [Mon, 31 Oct 2016 13:23:00 +0000 (13:23 +0000)]
Skip over AnnotatedLines with >50 levels of nesting; don't format them.

Reasoning:
- ExpressionParser uses a lot of stack for these, bad in some environments.
- Our formatting algorithm is N^3 and gets really slow.
- The resulting formatting is unlikely to be any good.
- This is probably generated code we're formatting by accident.

We treat these as unparseable, and signal incomplete formatting. 50 is
an arbitrary number, I've only seen real problems from ~150 levels.

Patch by Sam McCall. Thank you.

llvm-svn: 285570

7 years agoclang-format: [JS] Fix missing space after 'yield'.
Daniel Jasper [Mon, 31 Oct 2016 13:18:25 +0000 (13:18 +0000)]
clang-format: [JS] Fix missing space after 'yield'.

Before:
  class X {
    delete(val) {
      return null;
    }
    * gen() {
      yield[1, 2];
    }
    * gen() {
      yield{a: 1};
    }
  };

After:
  class X {
    delete(val) {
      return null;
    }
    * gen() {
      yield [1, 2];
    }
    * gen() {
      yield {a: 1};
    }
  };

llvm-svn: 285569

7 years agoSecond attempt at r285517.
Dorit Nuzman [Mon, 31 Oct 2016 13:17:31 +0000 (13:17 +0000)]
Second attempt at r285517.

llvm-svn: 285568

7 years agoCorrectly merge visibility of linkerscript created symbols.
Rafael Espindola [Mon, 31 Oct 2016 13:14:53 +0000 (13:14 +0000)]
Correctly merge visibility of linkerscript created symbols.

llvm-svn: 285567

7 years ago[SystemZ] Model 2 VBU units (not 1) in SystemZScheduleZ13.td.
Jonas Paulsson [Mon, 31 Oct 2016 13:05:48 +0000 (13:05 +0000)]
[SystemZ] Model 2 VBU units (not 1) in SystemZScheduleZ13.td.

NFC.

Review: Ulrich Weigand.
llvm-svn: 285566

7 years agorevert r285563 fail in test CodeGen/avx512-inline-asm-kregisters-basics.c
Michael Zuckerman [Mon, 31 Oct 2016 12:49:36 +0000 (12:49 +0000)]
revert r285563 fail in test CodeGen/avx512-inline-asm-kregisters-basics.c

llvm-svn: 285565

7 years agoImproved cost model for FDIV and FSQRT, by Andrew Tischenko
Alexey Bataev [Mon, 31 Oct 2016 12:10:53 +0000 (12:10 +0000)]
Improved cost model for FDIV and FSQRT, by Andrew Tischenko

There is a bug describing poor cost model for floating point operations:
Bug 29083 - [X86][SSE] Improve costs for floating point operations. This
patch is the second one in series of patches dealing with cost model.

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

llvm-svn: 285564

7 years ago [x86][inline-asm] Introducing (AVX512) k0-k7 registers for inline-asm usage
Michael Zuckerman [Mon, 31 Oct 2016 12:05:41 +0000 (12:05 +0000)]
 [x86][inline-asm] Introducing (AVX512) k0-k7 registers for inline-asm usage

 Commit on behalf of mharoush

 After LGTM and check all:
 This patch enables usage of k registers in inline assembly syntax.
 Adding triple

 Reviewer: 1. rnk
           2. delena

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

llvm-svn: 285563

7 years agoUse the right dwarf attributes for parsing location list entries (fixup for r285441)
Pavel Labath [Mon, 31 Oct 2016 11:53:13 +0000 (11:53 +0000)]
Use the right dwarf attributes for parsing location list entries (fixup for r285441)

Note that the parsing code here is still incorrect wrt. the new draft of the
dwarf 5 spec (seconds arguments to DW_LLE_startx_length should be uleb128, not
u32). Once we have compilers actually emitting dwarf conformant with the new
spec, we'll need to revisit this and figure out the proper behavior there.

This should unbreak the linux bot.

llvm-svn: 285562

7 years agoFix this test when we have clang-offload-bundler.exe.
Rafael Espindola [Mon, 31 Oct 2016 11:47:37 +0000 (11:47 +0000)]
Fix this test when we have clang-offload-bundler.exe.

llvm-svn: 285561

7 years agoAdd triple to test so it does not fail on windows.
Manuel Klimek [Mon, 31 Oct 2016 11:40:14 +0000 (11:40 +0000)]
Add triple to test so it does not fail on windows.

llvm-svn: 285560

7 years agoDelete .s file that did not test anything, and check in test that works.
Manuel Klimek [Mon, 31 Oct 2016 11:18:39 +0000 (11:18 +0000)]
Delete .s file that did not test anything, and check in test that works.

In D26098, Davide Italiano submitted a .s file instead of the .ll file
that was the last stage of the review.

llvm-svn: 285559

7 years agoAdd getOffset to ELFSectionRef
Eugene Leviant [Mon, 31 Oct 2016 11:03:01 +0000 (11:03 +0000)]
Add getOffset to ELFSectionRef

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

llvm-svn: 285558

7 years ago[OpenCL] Setting constant address space for array initializers
Alexey Bader [Mon, 31 Oct 2016 10:26:31 +0000 (10:26 +0000)]
[OpenCL] Setting constant address space for array initializers

Summary: Setting constant address space for global constants used for memcpy-initialization of arrays.

Patch by Alexey Sotkin.

Reviewers: bader, yaxunl, Anastasia

Subscribers: cfe-commits, AlexeySotkin

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

llvm-svn: 285557

7 years agoRevert reviosion 285555
Michael Zuckerman [Mon, 31 Oct 2016 10:12:36 +0000 (10:12 +0000)]
Revert reviosion 285555

llvm-svn: 285556

7 years ago[x86][inline-asm] Introducing (AVX512) k0-k7 registers for inline-asm usage
Michael Zuckerman [Mon, 31 Oct 2016 09:37:59 +0000 (09:37 +0000)]
[x86][inline-asm] Introducing (AVX512) k0-k7 registers for inline-asm usage

Commit on behalf of mharoush

After LGTM and check all:
This patch enables usage of k registers in inline assembly syntax.

Reviewer: 1. rnk
          2. delena

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

llvm-svn: 285555

7 years agoChange from "XFAIL: libcpp-no-exceptions" to "UNSUPPORTED: libcpp-no-exceptions"...
Roger Ferrer Ibanez [Mon, 31 Oct 2016 08:47:53 +0000 (08:47 +0000)]
Change from "XFAIL: libcpp-no-exceptions" to "UNSUPPORTED: libcpp-no-exceptions" tests that only check exceptions and nothing else

This is a follow up of D24562.

These tests do not check anything but exceptions, so it makes sense to mark
them as UNSUPPORTED under a library built without exceptions.

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

llvm-svn: 285550

7 years ago[change-namespace] fix namespace specifiers of template arguments.
Eric Liu [Mon, 31 Oct 2016 08:28:29 +0000 (08:28 +0000)]
[change-namespace] fix namespace specifiers of template arguments.

llvm-svn: 285549

7 years ago[Modules] Add a command line option for loading the clang builtins modulemap.
Elad Cohen [Mon, 31 Oct 2016 08:21:54 +0000 (08:21 +0000)]
[Modules] Add a command line option for loading the clang builtins modulemap.

-fbuiltin-module-map loads the clang builtins modulemap file. (This is
equivalent to -fmodule-map-file=<resource dir>/include/module.modulemap)

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

llvm-svn: 285548

7 years ago[AVX-512] Add a regular expression to a test that was missed in r285540.
Craig Topper [Mon, 31 Oct 2016 06:24:00 +0000 (06:24 +0000)]
[AVX-512] Add a regular expression to a test that was missed in r285540.

llvm-svn: 285547

7 years ago[AVX-512] Add missing patterns for selecting masked vector extracts that started...
Craig Topper [Mon, 31 Oct 2016 05:55:57 +0000 (05:55 +0000)]
[AVX-512] Add missing patterns for selecting masked vector extracts that started from shuffles.

llvm-svn: 285546

7 years ago[AVX-512] Use selectd instead of selectps for _mm256_mask_extracti32x4_epi32.
Craig Topper [Mon, 31 Oct 2016 05:49:11 +0000 (05:49 +0000)]
[AVX-512] Use selectd instead of selectps for _mm256_mask_extracti32x4_epi32.

llvm-svn: 285545

7 years agoAdd support for __builtin_alloca_with_align
David Majnemer [Mon, 31 Oct 2016 05:37:48 +0000 (05:37 +0000)]
Add support for __builtin_alloca_with_align

__builtin_alloca always uses __BIGGEST_ALIGNMENT__ for the alignment of
the allocation.  __builtin_alloca_with_align allows the programmer to
specify the alignment of the allocation.

This fixes PR30658.

llvm-svn: 285544

7 years agoMake output of ast-print closer to C++ code
Serge Pavlov [Mon, 31 Oct 2016 05:11:12 +0000 (05:11 +0000)]
Make output of ast-print closer to C++ code

Put semicolon after non-defining method declaration and a class
specialization body.

llvm-svn: 285543

7 years ago[Test Suite] Pull generateSource into lldbtest
Chris Bieneman [Mon, 31 Oct 2016 04:48:19 +0000 (04:48 +0000)]
[Test Suite] Pull generateSource into lldbtest

Summary:
Convert tests using LLDB headers to use generateSource to put the right include paths in place regardless of whether or not you're building a framework.

This also abstracted generateSource out of TestPublicAPIHeaders.py into lldbtest.py.

Reviewers: tfiala, zturner

Subscribers: lldb-commits

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

llvm-svn: 285542

7 years ago[Test Suite] Properly respect --framework option
Chris Bieneman [Mon, 31 Oct 2016 04:48:10 +0000 (04:48 +0000)]
[Test Suite] Properly respect --framework option

Summary:
dotest.py has a framework option that is not respected. This patch makes the framework path properly configurable via the --framework option.

This patch also adds a function to the lldbtest.Base class named "hasDarwinFramework" which allows us to not rely on the host platform to determine if a framework is present. If running on Darwin, and not building a framework, this will follow the *nix code paths which are appropriate for Darwin.

Reviewers: tfiala

Subscribers: lldb-commits, mgorny

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

llvm-svn: 285541

7 years ago[AVX-512] Remove masked vector extract builtins and replace with native shufflevector...
Craig Topper [Mon, 31 Oct 2016 04:30:56 +0000 (04:30 +0000)]
[AVX-512] Remove masked vector extract builtins and replace with native shufflevectors and selects.

Unfortunately, the backend currently doesn't fold masks into the instructions correctly when they come from these shufflevectors. I'll work on that in a future commit.

llvm-svn: 285540

7 years ago[AVX-512] Remove many of the masked 128/256-bit shift builtins and replace them with...
Craig Topper [Mon, 31 Oct 2016 04:30:51 +0000 (04:30 +0000)]
[AVX-512] Remove many of the masked 128/256-bit shift builtins and replace them with unmasked builtins and selects.

llvm-svn: 285539

7 years agoAdd 'inline' but not 'always_inline' to std::strings destructor.
Eric Fiselier [Mon, 31 Oct 2016 03:42:50 +0000 (03:42 +0000)]
Add 'inline' but not 'always_inline' to std::strings destructor.

Adding both 'inline' and 'always_inline' to the destructor has been contentious.
However most of the performance benefits can be gained by only adding 'inline',
and there is no reason to hold up that change while discussing the other.

llvm-svn: 285538

7 years agoRemove additional function template definitions from the dylib
Eric Fiselier [Mon, 31 Oct 2016 03:40:29 +0000 (03:40 +0000)]
Remove additional function template definitions from the dylib

llvm-svn: 285537

7 years agoMake a test case more rigorous; NFC
Sanjoy Das [Mon, 31 Oct 2016 03:32:45 +0000 (03:32 +0000)]
Make a test case more rigorous; NFC

llvm-svn: 285536

7 years ago[SCEV] Try to order n-ary expressions in CompareValueComplexity
Sanjoy Das [Mon, 31 Oct 2016 03:32:43 +0000 (03:32 +0000)]
[SCEV] Try to order n-ary expressions in CompareValueComplexity

llvm-svn: 285535

7 years ago[SCEV] Reduce boilerplate in unit tests
Sanjoy Das [Mon, 31 Oct 2016 03:32:39 +0000 (03:32 +0000)]
[SCEV] Reduce boilerplate in unit tests

llvm-svn: 285534

7 years ago[analyzer] NumberObjectConversion: support more types, misc updates.
Artem Dergachev [Mon, 31 Oct 2016 03:08:48 +0000 (03:08 +0000)]
[analyzer] NumberObjectConversion: support more types, misc updates.

Support CFNumberRef and OSNumber objects, which may also be accidentally
converted to plain integers or booleans.

Enable explicit boolean casts by default in non-pedantic mode.

Improve handling for warnings inside macros.

Improve error messages.

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

llvm-svn: 285533

7 years agoOptimize filesystem::path by providing weaker exception guarantees.
Eric Fiselier [Mon, 31 Oct 2016 02:46:25 +0000 (02:46 +0000)]
Optimize filesystem::path by providing weaker exception guarantees.

path uses string::append to construct, append, and concatenate paths. Unfortunatly
string::append has a strong exception safety guaranteed and if it can't prove
that the iterator operations don't throw then it will allocate a temporary
string copy to append to. However this extra allocation and copy is very
undesirable for path which doesn't have the same exception guarantees.

To work around this this patch adds string::__append_forward_unsafe which exposes
the std::string::append interface for forward iterators without enforcing
that the iterator is noexcept.

llvm-svn: 285532

7 years agoFix _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY to always have default visibility.
Eric Fiselier [Mon, 31 Oct 2016 02:07:23 +0000 (02:07 +0000)]
Fix _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY to always have default visibility.

This prevent the symbols from being both externally available and hidden, which
causes them to be linked incorrectly. This is only a problem when the address
of the function is explicitly taken since it will always be inlined otherwise.

This patch fixes the issues that caused r285456 to be reverted, and can
now be reapplied.

llvm-svn: 285531

7 years agoImprove performance of constructing filesystem::path from strings.
Eric Fiselier [Sun, 30 Oct 2016 23:53:50 +0000 (23:53 +0000)]
Improve performance of constructing filesystem::path from strings.

This patch fixes a performance bug when constructing or appending to a path
from a string or c-string. Previously we called 'push_back' to append every
single character. This caused multiple re-allocation and copies when at most
one reallocation is necessary. The new behavior is to simply call
`string::append` so it can correctly handle reallocation.

For large strings this change is a ~4x improvement. This also makes our path
faster to construct than libstdc++'s.

llvm-svn: 285530

7 years ago[SCEV] In CompareValueComplexity, order global values by their name
Sanjoy Das [Sun, 30 Oct 2016 23:52:56 +0000 (23:52 +0000)]
[SCEV] In CompareValueComplexity, order global values by their name

llvm-svn: 285529

7 years ago[SCEV] Use auto for consistency with an upcoming change; NFC
Sanjoy Das [Sun, 30 Oct 2016 23:52:53 +0000 (23:52 +0000)]
[SCEV] Use auto for consistency with an upcoming change; NFC

llvm-svn: 285528

7 years agoClean up test a little bit; NFC
Sanjoy Das [Sun, 30 Oct 2016 23:52:50 +0000 (23:52 +0000)]
Clean up test a little bit; NFC

llvm-svn: 285527

7 years agoRewrite std::filesystem::path iterators and parser
Eric Fiselier [Sun, 30 Oct 2016 23:30:38 +0000 (23:30 +0000)]
Rewrite std::filesystem::path iterators and parser

This patch entirely rewrites the parsing logic for paths. Unlike the previous
implementation this one stores information about the current state; For example
if we are in a trailing separator or a root separator. This avoids the need for
extra lookahead (and extra work) when incrementing or decrementing an iterator.
Roughly this gives us a 15% speedup over the previous implementation.

Unfortunately this implementation is still a lot slower than libstdc++'s.
Because libstdc++ pre-parses and splits the path upon construction their
iterators are trivial to increment/decrement. This makes libc++ lazy parsing
100x slower than libstdc++. However the pre-parsing libstdc++ causes a ton
of extra and unneeded allocations when constructing the string. For example
`path("/foo/bar/")` would require at least 5 allocations with libstdc++
whereas libc++ uses only one. The non-allocating behavior is much preferable
when you consider filesystem usages like 'exists("/foo/bar/")'.

Even then libc++'s path seems to be twice as slow to simply construct compared
to libstdc++. More investigation is needed about this.

llvm-svn: 285526

7 years agoFix clang installed path to handle case where clang is invoked through a symlink
Mehdi Amini [Sun, 30 Oct 2016 23:26:13 +0000 (23:26 +0000)]
Fix clang installed path to handle case where clang is invoked through a symlink

This code path is used when generating the path to libLTO.dylib, which
is passed to the linker as `-lto_library'.
Without this, if clang is invoked through a symlink, libLTO is
searched in a path relative to where the symlink is instead of
where clang is actually installed.

Fix PR30811.

Patch by: Jack Howarth

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

llvm-svn: 285525

7 years agoAdd start of filesystem benchmarks
Eric Fiselier [Sun, 30 Oct 2016 22:53:00 +0000 (22:53 +0000)]
Add start of filesystem benchmarks

llvm-svn: 285524

7 years agoMark thread exit test as unsupported w/o threads
Eric Fiselier [Sun, 30 Oct 2016 20:05:52 +0000 (20:05 +0000)]
Mark thread exit test as unsupported w/o threads

llvm-svn: 285523

7 years ago[DAG] x | x --> x
Sanjay Patel [Sun, 30 Oct 2016 18:19:35 +0000 (18:19 +0000)]
[DAG] x | x --> x

llvm-svn: 285522

7 years ago[DAG] x & x --> x
Sanjay Patel [Sun, 30 Oct 2016 18:13:30 +0000 (18:13 +0000)]
[DAG] x & x --> x

llvm-svn: 285521

7 years ago[x86] add tests for basic logic op folds
Sanjay Patel [Sun, 30 Oct 2016 18:04:19 +0000 (18:04 +0000)]
[x86] add tests for basic logic op folds

llvm-svn: 285520

7 years agoFixing "type" issue for (epi32)
Michael Zuckerman [Sun, 30 Oct 2016 14:54:05 +0000 (14:54 +0000)]
Fixing "type" issue for (epi32)
and replaceing hardcoded inf with clang builtin inf "__builtin_inff()" for float ({max|min}_{pd|ps})

llvm-svn: 285519

7 years agoRevert r285517 due to build failures.
Dorit Nuzman [Sun, 30 Oct 2016 14:34:57 +0000 (14:34 +0000)]
Revert r285517 due to build failures.

llvm-svn: 285518

7 years ago[LoopVectorize] Make interleaved-accesses analysis less conservative about
Dorit Nuzman [Sun, 30 Oct 2016 12:23:26 +0000 (12:23 +0000)]
[LoopVectorize] Make interleaved-accesses analysis less conservative about
possible pointer-wrap-around concerns, in some cases.

Before this patch, collectConstStridedAccesses (part of interleaved-accesses
analysis) called getPtrStride with [Assume=false, ShouldCheckWrap=true] when
examining all candidate pointers. This is too conservative. Instead, this
patch makes collectConstStridedAccesses use an optimistic approach, calling
getPtrStride with [Assume=true, ShouldCheckWrap=false], and then, once the
candidate interleave groups have been formed, revisits the pointer-wrapping
analysis but only where it matters: namely, in groups that have gaps, and where
the gaps are not at the very end of the group (in which case the loop is
peeled). This second time getPtrStride is called with [Assume=false,
ShouldCheckWrap=true], but this could further be improved to using Assume=true,
once we also add the logic to track that we are not going to meet the scev
runtime checks threshold.

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

llvm-svn: 285517

7 years ago[AVX-512] Remove masked 128/256-bit builtins for vpmaddwd and vpmaddubsw. Replace...
Craig Topper [Sun, 30 Oct 2016 07:11:34 +0000 (07:11 +0000)]
[AVX-512] Remove masked 128/256-bit builtins for vpmaddwd and vpmaddubsw. Replace with unmasked builtins and select.

llvm-svn: 285516

7 years ago[X86] Use intrinsics table for PMADDUBSW and PMADDWD so that we can use the legacy...
Craig Topper [Sun, 30 Oct 2016 06:56:16 +0000 (06:56 +0000)]
[X86] Use intrinsics table for PMADDUBSW and PMADDWD so that we can use the legacy intrinsics to select EVEX encoded instructions when available.

This removes a couple tablegen classes that become unused after this change. Another class gained an additional parameter to allow PMADDUBSW to specify a different result type from its input type.

llvm-svn: 285515

7 years ago [Polly] Remove the unused POLLY_LINK_LIBS for linking polly into
Hongbin Zheng [Sun, 30 Oct 2016 06:07:59 +0000 (06:07 +0000)]
[Polly] Remove the unused POLLY_LINK_LIBS for linking polly into
tools

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

llvm-svn: 285514

7 years ago[ThinLTO] Use per-summary flag to prevent exporting locals used in inline asm
Teresa Johnson [Sun, 30 Oct 2016 05:40:44 +0000 (05:40 +0000)]
[ThinLTO] Use per-summary flag to prevent exporting locals used in inline asm

Summary:
Instead of using the workaround of suppressing the entire index for
modules that call inline asm that may reference locals, use the
NoRename flag on the summary for any locals in the llvm.used set, and
add a reference edge from any functions containing inline asm.

This avoids issues from having no summaries despite the module defining
global values, which was preventing more aggressive index-based
optimization. It will be followed by a subsequent patch to make a
similar fix for local references in module level asm (to fix PR30610).

Reviewers: mehdi_amini

Subscribers: llvm-commits

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

llvm-svn: 285513

7 years ago[ThinLTO] Correctly resolve linkonce when importing aliasee
Teresa Johnson [Sun, 30 Oct 2016 05:15:23 +0000 (05:15 +0000)]
[ThinLTO] Correctly resolve linkonce when importing aliasee

Summary:
When we have an aliasee that is linkonce, while we can't convert
the non-prevailing copies to available_externally, we still need to
convert the prevailing copy to weak. If a reference to the aliasee
is exported, not converting a copy to weak will result in undefined
references when the linkonce is removed in its original module.

Add a new test and update existing tests.

Reviewers: mehdi_amini

Subscribers: llvm-commits

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

llvm-svn: 285512

7 years agoclang/test/Driver/openmp-offload.c: Relax expressions if "ld.exe" exists, like mingw.
NAKAMURA Takumi [Sun, 30 Oct 2016 02:58:48 +0000 (02:58 +0000)]
clang/test/Driver/openmp-offload.c: Relax expressions if "ld.exe" exists, like mingw.

llvm-svn: 285511

7 years ago[X86] Don't use loadv2i64 on SSE version of PMULHRSW. Use memopv2i64 instead.
Craig Topper [Sun, 30 Oct 2016 00:02:55 +0000 (00:02 +0000)]
[X86] Don't use loadv2i64 on SSE version of PMULHRSW. Use memopv2i64 instead.

This bug was introduced in r285501.

llvm-svn: 285510

7 years agoNativeFormatting.cpp: Fix build for mingw. Where would writePadding() be?
NAKAMURA Takumi [Sat, 29 Oct 2016 23:14:18 +0000 (23:14 +0000)]
NativeFormatting.cpp: Fix build for mingw. Where would writePadding() be?

llvm-svn: 285509

7 years ago[ThinLTO] Rename doPromoteLocalToGlobal to shouldPromoteLocalToGlobal (NFC)
Teresa Johnson [Sat, 29 Oct 2016 21:52:23 +0000 (21:52 +0000)]
[ThinLTO] Rename doPromoteLocalToGlobal to shouldPromoteLocalToGlobal (NFC)

Rename as suggested in code review for D26063.

llvm-svn: 285508

7 years ago[ThinLTO] Use NoPromote flag in summary during promotion
Teresa Johnson [Sat, 29 Oct 2016 21:31:48 +0000 (21:31 +0000)]
[ThinLTO] Use NoPromote flag in summary during promotion

Summary:
Replace the check of whether a GV has a section with the flag check
in the summary. This is in preparation for using the NoPromote flag
to convey other situations when we can't promote (e.g. locals used in
inline asm).

Reviewers: mehdi_amini

Subscribers: llvm-commits

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

llvm-svn: 285507

7 years agoIR: Remove a no longer needed assert.
Peter Collingbourne [Sat, 29 Oct 2016 20:57:12 +0000 (20:57 +0000)]
IR: Remove a no longer needed assert.

This assert was checking for a miscompile in a version of GCC that
we no longer support.

llvm-svn: 285506

7 years ago[AVX-512] Remove 128/256-bit masked pmulhrsw/pmulhuw/pmulhw builtins and use unmasked...
Craig Topper [Sat, 29 Oct 2016 19:02:14 +0000 (19:02 +0000)]
[AVX-512] Remove 128/256-bit masked pmulhrsw/pmulhuw/pmulhw builtins and use unmasked builtins and select instead.

llvm-svn: 285505

7 years ago[AVX-512] Remove masked 128/256-bit sqrt builtins and replace them with unmasked...
Craig Topper [Sat, 29 Oct 2016 19:02:10 +0000 (19:02 +0000)]
[AVX-512] Remove masked 128/256-bit sqrt builtins and replace them with unmasked builtins and a select.

llvm-svn: 285504

7 years ago[AVX-512] Remove masked 128/256-bit pmuludq/pmuldq builtins and replace them with...
Craig Topper [Sat, 29 Oct 2016 19:02:07 +0000 (19:02 +0000)]
[AVX-512] Remove masked 128/256-bit pmuludq/pmuldq builtins and replace them with unmasked builtins and a select.

llvm-svn: 285503

7 years ago[AVX-512] Remove masked 128/256-bit floating point max/min builtins. Use unmasked...
Craig Topper [Sat, 29 Oct 2016 19:02:03 +0000 (19:02 +0000)]
[AVX-512] Remove masked 128/256-bit floating point max/min builtins. Use unmasked builtins with select instead.

llvm-svn: 285502

7 years ago[X86] Use intrinsics table for VPMULHRSW intrincis so that the legacy intrinsics...
Craig Topper [Sat, 29 Oct 2016 18:41:45 +0000 (18:41 +0000)]
[X86] Use intrinsics table for VPMULHRSW intrincis so that the legacy intrinsics can select EVEX encoded instructions when available.

This requires a minor rename of the instructions due to the use of different tablegen classes and how the names are concatenated.

llvm-svn: 285501

7 years agoFactor finding of libc++ include path out of building -cc1 arguments.
Richard Smith [Sat, 29 Oct 2016 17:28:48 +0000 (17:28 +0000)]
Factor finding of libc++ include path out of building -cc1 arguments.

llvm-svn: 285500

7 years ago[ValueTracking] recognize more variants of smin/smax
Sanjay Patel [Sat, 29 Oct 2016 16:21:19 +0000 (16:21 +0000)]
[ValueTracking] recognize more variants of smin/smax

Try harder to detect obfuscated min/max patterns: the initial pattern was added with D9352 / rL236202.
There was a bug fix for PR27137 at rL264996, but I think we can do better by folding the corresponding
smax pattern and commuted variants.

The codegen tests demonstrate the effect of ValueTracking on the backend via SelectionDAGBuilder. We
can't expose these differences minimally in IR because we don't have smin/smax intrinsics for IR.

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

llvm-svn: 285499

7 years ago[x86] add tests for smin/smax matchSelPattern (D26091)
Sanjay Patel [Sat, 29 Oct 2016 16:02:57 +0000 (16:02 +0000)]
[x86] add tests for smin/smax matchSelPattern (D26091)

llvm-svn: 285498

7 years ago[Devirtualization] Decorate vfunction load with invariant.load
Piotr Padlewski [Sat, 29 Oct 2016 15:28:30 +0000 (15:28 +0000)]
[Devirtualization] Decorate vfunction load with invariant.load

Summary:
This patch was introduced one year ago, but because my google account
was disabled, I didn't get email with failing buildbot and I missed
revert of this commit. There was small but in test regex.
I am back.

Reviewers: rsmith, rengolin

Subscribers: nlewycky, rjmccall, cfe-commits

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

llvm-svn: 285497

7 years agoNFC small format
Piotr Padlewski [Sat, 29 Oct 2016 15:28:25 +0000 (15:28 +0000)]
NFC small format

llvm-svn: 285496

7 years ago[InstCombine] re-use bitcasted compare operands in selects (PR28001)
Sanjay Patel [Sat, 29 Oct 2016 15:22:04 +0000 (15:22 +0000)]
[InstCombine] re-use bitcasted compare operands in selects (PR28001)

These mixed bitcast patterns show up with SSE/AVX intrinsics because we bitcast function parameters to <2 x i64>.

The bitcasts obfuscate the expected min/max forms as shown in PR28001:
https://llvm.org/bugs/show_bug.cgi?id=28001#c6

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

llvm-svn: 285495

7 years ago[DAGCombiner] (REAPPLIED) Add vector demanded elements support to computeKnownBits
Simon Pilgrim [Sat, 29 Oct 2016 11:29:39 +0000 (11:29 +0000)]
[DAGCombiner] (REAPPLIED) Add vector demanded elements support to computeKnownBits

Currently computeKnownBits returns the common known zero/one bits for all elements of vector data, when we may only be interested in one/some of the elements.

This patch adds a DemandedElts argument that allows us to specify the elements we actually care about. The original computeKnownBits implementation calls with a DemandedElts demanding all elements to match current behaviour. Scalar types set this to 1.

The approach was found to be easier than trying to add a per-element known bits solution, for a similar usefulness given the combines where computeKnownBits is typically used.

I've only added support for a few opcodes so far (the ones that have proven straightforward to test), all others will default to demanding all elements but can be updated in due course.

DemandedElts support could similarly be added to computeKnownBitsForTargetNode in a future commit.

This looked like this had caused compile time regressions on some buildbots (and was reverted in rL285381), but appears to have just been a harmless bystander!

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

llvm-svn: 285494

7 years ago[X86][AVX512][Clang][Intrinsics][reduce] Adding missing reduce (max|min) intrinsics...
Michael Zuckerman [Sat, 29 Oct 2016 10:29:20 +0000 (10:29 +0000)]
[X86][AVX512][Clang][Intrinsics][reduce] Adding missing reduce (max|min) intrinsics to Clang .

After LGTM and Check-all

Vector-reduction arithmetic accepts vectors as inputs and produces
scalars as outputs.This class of vector operation forms the basis
of many scientific computations. In vector-reduction arithmetic,
the evaluation off is independent of the order of the input elements of V.

Reviewer: 1. craig.topper
          2. igorb

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

llvm-svn: 285493

7 years agoFixed FMA + FNEG combine.
Elena Demikhovsky [Sat, 29 Oct 2016 08:44:46 +0000 (08:44 +0000)]
Fixed FMA + FNEG combine.
Masked form of FMA should be omitted in this optimization.

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

llvm-svn: 285492

7 years ago[ScopDetect] Use SCEVRewriteVisitor to simplify SCEVRemoveSMax rewriter
Tobias Grosser [Sat, 29 Oct 2016 06:19:34 +0000 (06:19 +0000)]
[ScopDetect] Use SCEVRewriteVisitor to simplify SCEVRemoveSMax rewriter

ScalarEvolution got at some pointer a SCEVRewriteVisitor. Use it to simplify
our SCEVRemoveSMax visitor.

llvm-svn: 285491

7 years agoAMDGPU: Use 1/2pi inline imm on VI
Matt Arsenault [Sat, 29 Oct 2016 04:05:06 +0000 (04:05 +0000)]
AMDGPU: Use 1/2pi inline imm on VI

I'm guessing at how it is supposed to be printed

llvm-svn: 285490

7 years agoAttempt to fix a buildbot really this time.
Rui Ueyama [Sat, 29 Oct 2016 01:28:06 +0000 (01:28 +0000)]
Attempt to fix a buildbot really this time.

llvm-svn: 285489

7 years agoAArch64DeadRegisterDefinitionsPass: Cleanup; NFC
Matthias Braun [Sat, 29 Oct 2016 01:03:41 +0000 (01:03 +0000)]
AArch64DeadRegisterDefinitionsPass: Cleanup; NFC

- Fix doxygen file comment
- reduce indentation in loop
- Factor out some common subexpressions
- Move independent helper function out of class
- Fix Changed flag (this is not strictly NFC but a bugfix, but the flag
  seems ignored anyway)

llvm-svn: 285488

7 years agoDefine calculateDbgStreamSize for consistency.
Rui Ueyama [Sat, 29 Oct 2016 00:56:44 +0000 (00:56 +0000)]
Define calculateDbgStreamSize for consistency.

llvm-svn: 285487

7 years ago[APFloat] Remove the redundent function body of uninitialized ctor, which should...
Tim Shen [Sat, 29 Oct 2016 00:51:41 +0000 (00:51 +0000)]
[APFloat] Remove the redundent function body of uninitialized ctor, which should be done in r285468

llvm-svn: 285486

7 years agoRevert "Added 'inline' attribute to basic_string's destructor"
Mehdi Amini [Sat, 29 Oct 2016 00:50:02 +0000 (00:50 +0000)]
Revert "Added 'inline' attribute to basic_string's destructor"

This reverts commit r285456, which broke LTO bootstrap on Darwin.

llvm-svn: 285485

7 years agoLimit LLDB_EXPORT_ALL_SYMBOLS to lldb symbols
Todd Fiala [Sat, 29 Oct 2016 00:29:15 +0000 (00:29 +0000)]
Limit LLDB_EXPORT_ALL_SYMBOLS to lldb symbols

LLDB_EXPORT_ALL_SYMBOLS used to instruct the build to export all
the symbols in liblldb on CMake builds.  This change limits the
CMake define to only add in the lldb_private namespace to the
symbols that normally get exported, such that we export all the
symbols in the public lldb namespace and the lldb_private namespace.

This is a fix for:
https://llvm.org/bugs/show_bug.cgi?id=30822

Reviewers: labath, beanz

Subscribers: lldb-commits

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

llvm-svn: 285484

7 years agoResubmit "Add support for advanced number formatting."
Zachary Turner [Sat, 29 Oct 2016 00:27:22 +0000 (00:27 +0000)]
Resubmit "Add support for advanced number formatting."

This resubmits r284436 and r284437, which were reverted in
r284462 as they were breaking the AArch64 buildbot.

The breakage on AArch64 turned out to be a miscompile which is
still not fixed, but is actively tracked at llvm.org/pr30748.

This resubmission re-writes the code in a way so as to make the
miscompile not happen.

llvm-svn: 285483