platform/upstream/llvm.git
6 years ago[lldbtestsuite] llvm-objcopy is now required to run the lit tests.
Davide Italiano [Wed, 7 Mar 2018 18:06:12 +0000 (18:06 +0000)]
[lldbtestsuite] llvm-objcopy is now required to run the lit tests.

There's now a test using llvm-objcopy in lit/.
This doesn't fail on the bot(s) because `llvm-objcopy` is probably
already available there, but if you get a fresh checkout and run
`ninja check-lldb` you'll observe the failure as it's not tracking
the dependency correctly. This fixes the problem on my machine,
and probably everywhere else.

llvm-svn: 326919

6 years ago[ELF] - Adjust rangeToString to report ranges in a different format.
George Rimar [Wed, 7 Mar 2018 17:54:25 +0000 (17:54 +0000)]
[ELF] - Adjust rangeToString to report ranges in a different format.

It was raised during the review of D43819.

LLD usually use [X, Y] for reporting ranges, like below:
"relocation R_386_16 out of range: 65536 is not in [0, 65535]"

Patch changes rangeToString() to do the same.

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

llvm-svn: 326918

6 years ago[X86] Make the MUL->VPMADDWD work before op legalization on AVX1 targets. Simplify...
Craig Topper [Wed, 7 Mar 2018 17:53:18 +0000 (17:53 +0000)]
[X86] Make the MUL->VPMADDWD work before op legalization on AVX1 targets. Simplify feature checks by using isTypeLegal.

The v8i32 conversion on AVX1 targets was only working after LowerMUL splits 256-bit vectors.

While I was there I've also made it so we don't have to check for AVX2 and BWI directly and instead just ask if the type is legal.

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

llvm-svn: 326917

6 years ago[Support] Stop passing StringRefs by const reference in some of the getHostCPUname...
Craig Topper [Wed, 7 Mar 2018 17:53:16 +0000 (17:53 +0000)]
[Support] Stop passing StringRefs by const reference in some of the getHostCPUname implementations. NFC

llvm-svn: 326916

6 years ago[Hexagon] Rewrite non-HVX unaligned loads as pairs of aligned ones
Krzysztof Parzyszek [Wed, 7 Mar 2018 17:27:18 +0000 (17:27 +0000)]
[Hexagon] Rewrite non-HVX unaligned loads as pairs of aligned ones

This is a follow-up to r325169, this time for all types, not just HVX
vector types.

Disable this by default, since it's not always safe.

llvm-svn: 326915

6 years agoRevert r326911: Improve --warn-symbol-ordering.
Rui Ueyama [Wed, 7 Mar 2018 17:24:46 +0000 (17:24 +0000)]
Revert r326911: Improve --warn-symbol-ordering.

This reverts commit r326911 because it was committed by accident.

llvm-svn: 326914

6 years ago[LangRef] fix formatting in FP descriptions; NFC
Sanjay Patel [Wed, 7 Mar 2018 17:18:22 +0000 (17:18 +0000)]
[LangRef] fix formatting in FP descriptions; NFC

This is a clean-up step to reduce diffs ahead of real
changes to the FP semantics as discussed on llvm-dev:
http://lists.llvm.org/pipermail/llvm-dev/2018-February/121444.html

llvm-svn: 326913

6 years agoRename Indent{1,2} -> Indent{8,16}.
Rui Ueyama [Wed, 7 Mar 2018 17:15:15 +0000 (17:15 +0000)]
Rename Indent{1,2} -> Indent{8,16}.

llvm-svn: 326912

6 years agoImprove --warn-symbol-ordering.
Rui Ueyama [Wed, 7 Mar 2018 17:15:06 +0000 (17:15 +0000)]
Improve --warn-symbol-ordering.

Summary:
I originally tried to simplify code and then noticed that lld doesn't
do what it tells to the user by warn(). It says "unable to order
discarded symbol" but it actually can for sections eliminated by ICF.
With this patch, lld doesn't sort such sections.

Reviewers: jhenderson, rafael

Subscribers: emaste, arichardson, llvm-commits

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

llvm-svn: 326911

6 years ago[AMDGPU] Increased vector length for global/constant loads.
Farhana Aleen [Wed, 7 Mar 2018 17:09:18 +0000 (17:09 +0000)]
[AMDGPU] Increased vector length for global/constant loads.

Summary: GCN ISA supports instructions that can read 16 consecutive dwords from memory through the scalar data cache;
         loadstoreVectorizer should take advantage of the wider vector length and pack 16/8 elements of dwords/quadwords.

Author: FarhanaAleen

Reviewed By: rampitec

Subscribers: llvm-commits, AMDGPU

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

llvm-svn: 326910

6 years ago[clang-tidy] Add "portability" module and rename readability-simd-intrinsics to porta...
Fangrui Song [Wed, 7 Mar 2018 16:57:42 +0000 (16:57 +0000)]
[clang-tidy] Add "portability" module and rename readability-simd-intrinsics to portability-simd-intrinsics

Reviewers: alexfh

Subscribers: klimek, nemanjai, mgorny, xazax.hun, kbarton, cfe-commits

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

llvm-svn: 326909

6 years agoRe-land: Teach CorrelatedValuePropagation to reduce the width of udiv/urem instructions.
Justin Lebar [Wed, 7 Mar 2018 16:56:49 +0000 (16:56 +0000)]
Re-land: Teach CorrelatedValuePropagation to reduce the width of udiv/urem instructions.

Summary:
If the operands of a udiv/urem can be proved to fit within a smaller
power-of-two-sized type, reduce the width of the udiv/urem.

Backed out for failing an assert in clang bootstrap builds.  Re-landing
with a fix for handling non-power-of-two inputs (e.g. udiv i24).

Original Differential Revision: https://reviews.llvm.org/D44102

llvm-svn: 326908

6 years agoRevert "[AMDGPU] Widened vector length for global/constant address space."
Farhana Aleen [Wed, 7 Mar 2018 16:55:27 +0000 (16:55 +0000)]
Revert "[AMDGPU] Widened vector length for global/constant address space."

This reverts commit ce988cc100dc65e7c6c727aff31ceb99231cab03.

llvm-svn: 326907

6 years ago[PowerPC] LSR tunings for PowerPC
Stefan Pintilie [Wed, 7 Mar 2018 16:53:09 +0000 (16:53 +0000)]
[PowerPC] LSR tunings for PowerPC

The purpose of this patch is to have LSR generate better code on Power.
This is done by overriding isLSRCostLess.

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

llvm-svn: 326906

6 years ago[SampleFDO] Extend SampleProfReader to handle demangled names.
Wei Mi [Wed, 7 Mar 2018 16:45:33 +0000 (16:45 +0000)]
[SampleFDO] Extend SampleProfReader to handle demangled names.

SampleProfReader assumes function names in the profile are all mangled names.
However, there are cases that few demangled names are somehow contained in
the profile (usually because of debug info problems), which may trigger parsing
error in SampleProfReader and cause the whole profile to be unusable. The patch
extends SampleProfReader to handle profiles with demangled names, so that those
profiles can still be useful.

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

llvm-svn: 326905

6 years ago[AMDGPU] Widened vector length for global/constant address space.
Farhana Aleen [Wed, 7 Mar 2018 16:29:05 +0000 (16:29 +0000)]
[AMDGPU] Widened vector length for global/constant address space.

llvm-svn: 326904

6 years ago[dwarfdump] Only print CU relative offset in verbose mode
Jonas Devlieghere [Wed, 7 Mar 2018 16:28:53 +0000 (16:28 +0000)]
[dwarfdump] Only print CU relative offset in verbose mode

Instead of only printing the CU-relative offset in non-verbose mode, it
makes more sense to only printed the resolved address. In verbose mode
we still print both.

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

rdar://33525475

llvm-svn: 326903

6 years agoRevert "Reapply "[DWARFv5] Emit file 0 to the line table.""
Alexander Kornienko [Wed, 7 Mar 2018 16:27:44 +0000 (16:27 +0000)]
Revert "Reapply "[DWARFv5] Emit file 0 to the line table.""

This reverts commit r326839.

r326839 breaks assembly file parsing:

$ cat q.c
void g() {}
$ clang -S q.c -g
$ clang -g -c q.s
q.s:9:2: error: file number already allocated
     .file   1 "/tmp/test" "q.c"
     ^

llvm-svn: 326902

6 years ago[scudo] Make logging more consistent
Kostya Kortchinsky [Wed, 7 Mar 2018 16:22:16 +0000 (16:22 +0000)]
[scudo] Make logging more consistent

Summary:
A few changes related to logging:
- prepend `Scudo` to the error messages so that users can identify that we
  reported an error;
- replace a couple of `Report` calls in the RSS check code with
  `dieWithMessage`/`Print`, mark a condition as `UNLIKELY` in the process;
- change some messages so that they all look more or less the same. This
  includes the `CHECK` message;
- adapt a couple of tests with the new strings.

A couple of side notes: this results in a few 1-line-blocks, for which I left
brackets. There doesn't seem to be any style guide for that, I can remove them
if need be. I didn't use `SanitizerToolName` in the strings, but directly
`Scudo` because we are the only users, I could change that too.

Reviewers: alekseyshl, flowerhack

Reviewed By: alekseyshl

Subscribers: mgorny, delcypher, llvm-commits, #sanitizers

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

llvm-svn: 326901

6 years agoRevert rL326898: "Teach CorrelatedValuePropagation to reduce the width of udiv/urem...
Justin Lebar [Wed, 7 Mar 2018 16:05:43 +0000 (16:05 +0000)]
Revert rL326898: "Teach CorrelatedValuePropagation to reduce the width of udiv/urem instructions."

Breaks bootstrap builds: clang built with this patch asserts while
building MCDwarf.cpp: Assertion `castIsValid(op, S, Ty) && "Invalid
cast!"' failed.

llvm-svn: 326900

6 years ago[ELF] Prevent crash when reporting errors if debug line cannot be parsed
James Henderson [Wed, 7 Mar 2018 15:22:58 +0000 (15:22 +0000)]
[ELF] Prevent crash when reporting errors if debug line cannot be parsed

LLD uses the debug info and debug line sections to determine the location of
e.g. references to undefined symbols, when producing error messages. In the
event that debug info was present, but debug line parsing failed for some
reason, then a nullptr would end up being dereferenced by the location-lookup
code.

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

Reviewers: grimar
llvm-svn: 326899

6 years agoTeach CorrelatedValuePropagation to reduce the width of udiv/urem instructions.
Justin Lebar [Wed, 7 Mar 2018 15:11:13 +0000 (15:11 +0000)]
Teach CorrelatedValuePropagation to reduce the width of udiv/urem instructions.

Summary:
If the operands of a udiv/urem can be proved to fit within a smaller
power-of-two-sized type, reduce the width of the udiv/urem.

Reviewers: spatel, sanjoy

Subscribers: llvm-commits, hiraditya

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

llvm-svn: 326898

6 years ago[X86][X87] Add X87 fp80 conversion tests
Simon Pilgrim [Wed, 7 Mar 2018 14:13:14 +0000 (14:13 +0000)]
[X86][X87] Add X87 fp80 conversion tests

llvm-svn: 326897

6 years ago[WebAssembly] Run clang-format. NFC
Nicholas Wilson [Wed, 7 Mar 2018 13:28:16 +0000 (13:28 +0000)]
[WebAssembly] Run clang-format. NFC

llvm-svn: 326896

6 years ago[ELF] - Recommit r326892,r326893 "[ELF] - Report LMA region overflows."
George Rimar [Wed, 7 Mar 2018 12:44:18 +0000 (12:44 +0000)]
[ELF] - Recommit r326892,r326893 "[ELF] - Report LMA region overflows."

With fix: add missing "RUN:" prefix to test case.

Original commit message:
We do not report LMA region overflows currently.
Both GNU linkers do that. The patch implements it.

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

llvm-svn: 326895

6 years ago[ELF] - Revert r326892, r326893.
George Rimar [Wed, 7 Mar 2018 12:33:00 +0000 (12:33 +0000)]
[ELF] - Revert r326892, r326893.

Bots are still unhappy:
http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-ubuntu-fast/builds/26259

llvm-svn: 326894

6 years ago[ELF] - Fix build bot after r326892 "[ELF] - Report LMA region overflows."
George Rimar [Wed, 7 Mar 2018 12:16:26 +0000 (12:16 +0000)]
[ELF] - Fix build bot after r326892 "[ELF] - Report LMA region overflows."

Removed excessive line from testcase.

llvm-svn: 326893

6 years ago[ELF] - Report LMA region overflows.
George Rimar [Wed, 7 Mar 2018 11:54:30 +0000 (11:54 +0000)]
[ELF] - Report LMA region overflows.

We do not report LMA region overflows currently.
Both GNU linkers do that. The patch implements it.

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

llvm-svn: 326892

6 years ago[ELF] - Allow discarding .hash and .gnu.hash from linker script.
George Rimar [Wed, 7 Mar 2018 11:47:15 +0000 (11:47 +0000)]
[ELF] - Allow discarding .hash and .gnu.hash from linker script.

Currently, LLD segfaults when linker script attempts to discard
one of the hash sections. This patch fixes that.

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

llvm-svn: 326891

6 years ago[mips] Correct the definition of m(f|t)c(0|2)
Simon Dardis [Wed, 7 Mar 2018 11:39:48 +0000 (11:39 +0000)]
[mips] Correct the definition of m(f|t)c(0|2)

These instructions are defined as taking a GPR register and a
coprocessor register for ISAs up to MIPS32. MIPS32 extended the
definition to allow a selector--a value from 0 to 32--to access
another register.

These instructions are now internally defined as being MIPS-I
instructions, but are rejected for pre-MIPS32 ISA's if they have
an explicit selector which is non-zero. This deviates slightly from
GAS's behaviour which rejects assembly instructions with an
explicit selector for pre-MIPS32 ISAs.

E.g:

mfc0 $4, $5, 0
is rejected by GAS for MIPS-I to MIPS-V but will be accepted
with this patch for MIPS-I to MIPS-V.

Reviewers: atanasyan

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

llvm-svn: 326890

6 years agoAdd Clang ReleaseNotes that --autocomplete breaks backward compatibily
Yuka Takahashi [Wed, 7 Mar 2018 11:34:02 +0000 (11:34 +0000)]
Add Clang ReleaseNotes that --autocomplete breaks backward compatibily

Summary:
--autocomplete flag now handles all the flags passed to shell, and this
implementation breaks backward compatibily before Clang 6.0.

Reviewers: teemperor, v.g.vassilev

Subscribers: cfe-commits

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

llvm-svn: 326889

6 years ago[WebAssembly] Remove duplicated line of code and unreachable check. NFC
Nicholas Wilson [Wed, 7 Mar 2018 11:15:47 +0000 (11:15 +0000)]
[WebAssembly] Remove duplicated line of code and unreachable check. NFC

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

llvm-svn: 326888

6 years ago[WebAssembly] Use StringSaver to retain ownership of ctor function body. NFC
Nicholas Wilson [Wed, 7 Mar 2018 10:37:50 +0000 (10:37 +0000)]
[WebAssembly] Use StringSaver to retain ownership of ctor function body. NFC

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

llvm-svn: 326885

6 years ago[LoadStoreVectorizer] Differentiate between <1 x T> and T
Sven van Haastregt [Wed, 7 Mar 2018 10:29:28 +0000 (10:29 +0000)]
[LoadStoreVectorizer] Differentiate between <1 x T> and T

The LoadStoreVectorizer thought that <1 x T> and T were the same types
when merging stores, leading to a crash later.

Patch by Erik Hogeman.

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

llvm-svn: 326884

6 years agoDon't intercept mmap64() on NetBSD
Kamil Rytarowski [Wed, 7 Mar 2018 09:16:10 +0000 (09:16 +0000)]
Don't intercept mmap64() on NetBSD

Disable SANITIZER_INTERCEPT_MMAP64 for SI_NETBSD.

NetBSD switched to 64-bit offsets almost 30 years ago on 32-bit platforms
and never needed mmap64() concept.

llvm-svn: 326883

6 years ago[ARM] Fix for PR36577
Sjoerd Meijer [Wed, 7 Mar 2018 09:10:44 +0000 (09:10 +0000)]
[ARM] Fix for PR36577

Don't PerformSHLSimplify if the given node is used by a node that also uses a
constant because we may get stuck in an infinite combine loop.

bugzilla: https://bugs.llvm.org/show_bug.cgi?id=36577

Patch by Sam Parker.

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

llvm-svn: 326882

6 years ago[SystemZ] NFC refactoring in SystemZHazardRecognizer.
Jonas Paulsson [Wed, 7 Mar 2018 08:57:09 +0000 (08:57 +0000)]
[SystemZ]  NFC refactoring in SystemZHazardRecognizer.

Use Reset() after emitting a call.

Review: Ulrich Weigand
llvm-svn: 326881

6 years ago[SystemZ] Improve getCurrCycleIdx() in SystemZHazardRecognizer.
Jonas Paulsson [Wed, 7 Mar 2018 08:54:32 +0000 (08:54 +0000)]
[SystemZ]  Improve getCurrCycleIdx() in SystemZHazardRecognizer.

getCurrCycleIdx() returns the decoder cycle index which the next candidate SU
will be placed on.

This patch improves this method by passing the candidate SU to it so that if
SU will begin a new group, the index of that group is returned instead.

Review: Ulrich Weigand
llvm-svn: 326880

6 years ago[SystemZ] NFC refactoring in SystemZHazardRecognizer.
Jonas Paulsson [Wed, 7 Mar 2018 08:45:09 +0000 (08:45 +0000)]
[SystemZ] NFC refactoring in SystemZHazardRecognizer.

Handle the not-taken branch in emitInstruction() where the TakenBranch
argument is available. This is cleaner than relying on EmitInstruction().

Review: Ulrich Weigand
llvm-svn: 326879

6 years ago[SystemZ] Improved debug dumping during post-RA scheduling.
Jonas Paulsson [Wed, 7 Mar 2018 08:39:00 +0000 (08:39 +0000)]
[SystemZ]  Improved debug dumping during post-RA scheduling.

Review: Ulrich Weigand
llvm-svn: 326878

6 years ago[X86] Add IMUL scheduling info on sandybridge, fix it on >=haswell.
Clement Courbet [Wed, 7 Mar 2018 08:14:02 +0000 (08:14 +0000)]
[X86] Add IMUL scheduling info on sandybridge, fix it on >=haswell.

Summary:
Only IMUL16rri uses an extra P0156. IMUL32* and IMUL16rr only use
P1.
This was computed using https://github.com/google/EXEgesis/blob/master/exegesis/tools/compute_itineraries.cc

This can easily be validated by running perf on the following code:

```
int main(int argc, char**argv) {
  int a = argc;
  int b = argc;
  int c = argc;
  int d = argc;

  for (int i = 0; i < LOOP_ITERATIONS; ++i) {
    asm volatile(
      R"(
        .rept 10000
        imull $0x2, %%edx, %%eax
        imull $0x2, %%ecx, %%ebx
        imull $0x2, %%eax, %%edx
        imull $0x2, %%ebx, %%ecx
        .endr
      )"
      : "+a"(a), "+b"(b), "+c"(c), "+d"(d)
      :
      :);
  }
  return a+b+c+d;
}
```
-> test.cc

perf stat -x, -e cycles --pfm-events=uops_executed_port:port_0:u,uops_executed_port:port_1:u,uops_executed_port:port_2:u,uops_executed_port:port_3:u,uops_executed_port:port_4:u,uops_executed_port:port_5:u,uops_executed_port:port_6:u,uops_executed_port:port_7:u test

Reviewers: craig.topper, RKSimon, gadi.haber

Subscribers: llvm-commits, gchatelet, chandlerc

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

llvm-svn: 326877

6 years agoAttempt to appease buildbots
George Burgess IV [Wed, 7 Mar 2018 07:36:23 +0000 (07:36 +0000)]
Attempt to appease buildbots

I can't reproduce this build error locally, but it appears
straightforward enough to fix. r326851 renamed two of the params of this
interceptor, but apparently to update their use here.

Failure:
http://lab.llvm.org:8011/builders/clang-cmake-aarch64-full/builds/4569

llvm-svn: 326876

6 years ago[SymbolFilePDB] Add missing Char16 and Char32 types in a few places
Aaron Smith [Wed, 7 Mar 2018 05:43:05 +0000 (05:43 +0000)]
[SymbolFilePDB] Add missing Char16 and Char32 types in a few places

Reviewers: zturner, rnk, lldb-commits

Subscribers: clayborg, llvm-commits

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

llvm-svn: 326875

6 years agoDisable tests from r326852 on Darwin
Adam Nemet [Wed, 7 Mar 2018 05:33:37 +0000 (05:33 +0000)]
Disable tests from r326852 on Darwin

Darwin needs xlocale.h but I see no precedence in the code how non-Posix
headers like this are handled and I am not experienced with this code.  Just
disable the tests for now to recover the bots.

rdar://38208146

llvm-svn: 326874

6 years agoRemove a placeholder
George Burgess IV [Wed, 7 Mar 2018 05:02:27 +0000 (05:02 +0000)]
Remove a placeholder

...Running tests in the wrong directory will often make them seem to
pass. Oops. :)

llvm-svn: 326873

6 years agoReland r326766 (with a slightly modified test)
George Burgess IV [Wed, 7 Mar 2018 04:52:34 +0000 (04:52 +0000)]
Reland r326766 (with a slightly modified test)

The original revert was done in r326869, since reverting r326602 broke
the test added by this.

The new test should be less dependent on r326602.

llvm-svn: 326872

6 years ago[demangler] Fix a mistake in r326797.
Erik Pilkington [Wed, 7 Mar 2018 04:29:33 +0000 (04:29 +0000)]
[demangler] Fix a mistake in r326797.

Thanks to Nico Weber for pointing this out!

llvm-svn: 326871

6 years ago[SymbolFilePDB] Minor cleanup
Aaron Smith [Wed, 7 Mar 2018 03:16:50 +0000 (03:16 +0000)]
[SymbolFilePDB] Minor cleanup

Summary:
 - Remove unused code

- Adding `break` statement conditionally

- Ignore empty strings in FindTypeByName

Reviewers: zturner, rnk, lldb-commits

Reviewed By: zturner

Subscribers: llvm-commits

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

llvm-svn: 326870

6 years agoRevert 326766 too, after r326862 the test fails and I don't know how to fix.
Nico Weber [Wed, 7 Mar 2018 03:00:25 +0000 (03:00 +0000)]
Revert 326766 too, after r326862 the test fails and I don't know how to fix.

llvm-svn: 326869

6 years ago[analyzer] Fix the checker for the performance anti-pattern to accept messages
George Karpenkov [Wed, 7 Mar 2018 02:54:01 +0000 (02:54 +0000)]
[analyzer] Fix the checker for the performance anti-pattern to accept messages

send to ObjC objects.

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

llvm-svn: 326868

6 years ago[Driver] Enable SafeStack by default on Fuchsia
Petr Hosek [Wed, 7 Mar 2018 02:49:58 +0000 (02:49 +0000)]
[Driver] Enable SafeStack by default on Fuchsia

This is already used throughout the entire system, so make it a default.

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

llvm-svn: 326867

6 years ago[XRay][compiler-rt] Add APIs for processing logs in memory
Dean Michael Berris [Wed, 7 Mar 2018 02:45:14 +0000 (02:45 +0000)]
[XRay][compiler-rt] Add APIs for processing logs in memory

Summary:
This change adds APIs to allow logging implementations to provide a
function for iterating through in-memory buffers (if they hold in-memory
buffers) and a way for users to generically deal with these buffers
in-process. These APIs are:

  - __xray_log_set_buffer_iterator(...) and
    __xray_log_remove_buffer_iterator(): installs and removes an
    iterator function that takes an XRayBuffer and yields the next one.

  - __xray_log_process_buffers(...): takes a function pointer that can
    take a mode identifier (string) and an XRayBuffer to process this
    data as they see fit.

The intent is to have the FDR mode implementation's buffers be
available through this `__xray_log_process_buffers(...)` API, so that
they can be streamed from memory instead of flushed to disk (useful for
getting the data to a network, or doing in-process analysis).

Basic mode logging will not support this mechanism as it's designed to
write the data mostly to disk.

Future implementations will may depend on this API as well, to allow for
programmatically working through the XRay buffers exposed to the
users in some fashion.

Reviewers: eizan, kpw, pelikan

Subscribers: llvm-commits

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

llvm-svn: 326866

6 years ago[ASTMatcher] Extend hasAnyArgument to ObjCMessageExpr
George Karpenkov [Wed, 7 Mar 2018 02:32:44 +0000 (02:32 +0000)]
[ASTMatcher] Extend hasAnyArgument to ObjCMessageExpr

Currently hasArgument works with both ObjC messages and function calls,
but not hasAnyArgument.
This patch fixes that discrepancy, as it's often more convenient to use
hasAnyArgument.

On a more general note, it would be great to have a common superclass
for objc-call and function call, and a matcher matching that, but that's
probably a job for another commit.

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

llvm-svn: 326865

6 years agoFixup r326851: mmap64 interceptor should not be used on Darwin.
Kuba Mracek [Wed, 7 Mar 2018 02:30:55 +0000 (02:30 +0000)]
Fixup r326851: mmap64 interceptor should not be used on Darwin.

llvm-svn: 326864

6 years ago[llvm-pdbdump] Add guard for null pointers and remove unused code
Aaron Smith [Wed, 7 Mar 2018 02:23:08 +0000 (02:23 +0000)]
[llvm-pdbdump] Add guard for null pointers and remove unused code

Summary: This avoids crashing when a user tries to dump a pdb with the `-native` option.

Reviewers: zturner, llvm-commits, rnk

Reviewed By: zturner

Subscribers: mgrang

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

llvm-svn: 326863

6 years agoRevert r326602, it caused PR36620.
Nico Weber [Wed, 7 Mar 2018 02:22:41 +0000 (02:22 +0000)]
Revert r326602, it caused PR36620.

llvm-svn: 326862

6 years agoAdd early exit on reassociation of 0 expression.
Evgeny Stupachenko [Wed, 7 Mar 2018 02:17:08 +0000 (02:17 +0000)]
Add early exit on reassociation of 0 expression.

Summary:

Before the patch a try to reassociate ((v * 16) * 0) * 1 fall into infinite loop

Reviewers: pankajchawla

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

From: Evgeny Stupachenko <evstupac@gmail.com>
                         <evgeny.v.stupachenko@intel.com>
llvm-svn: 326861

6 years ago[Driver] Automatically disable incompatible default sanitizers
Petr Hosek [Wed, 7 Mar 2018 01:27:03 +0000 (01:27 +0000)]
[Driver] Automatically disable incompatible default sanitizers

When a sanitizer incompatible with one of the default sanitizers
is explicitly enabled, automatically disable all the conflicting
default sanitizers.

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

llvm-svn: 326860

6 years ago[SymbolFilePDB] Add support for CVR pointer type qualifier
Aaron Smith [Wed, 7 Mar 2018 00:39:25 +0000 (00:39 +0000)]
[SymbolFilePDB] Add support for CVR pointer type qualifier

Summary:
- Complete element type of PDBSymbolTypeArray.

- Add a test to check types of multi-dimensional array and pointers with CVR.

Reviewers: zturner, rnk, lldb-commits

Reviewed By: zturner

Subscribers: llvm-commits

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

llvm-svn: 326859

6 years ago[SymbolFilePDB] Get line number for PDBSymbolTypeEnum
Aaron Smith [Wed, 7 Mar 2018 00:35:27 +0000 (00:35 +0000)]
[SymbolFilePDB] Get line number for PDBSymbolTypeEnum

Reviewers: zturner, lldb-commits, rnk

Reviewed By: zturner

Subscribers: llvm-commits

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

llvm-svn: 326858

6 years ago[DebugInfoPDB] Add DIA implementation for getSrcLineOnTypeDefn
Aaron Smith [Wed, 7 Mar 2018 00:33:09 +0000 (00:33 +0000)]
[DebugInfoPDB] Add DIA implementation for getSrcLineOnTypeDefn

Summary: This helps to determine the line number for a PDB type with definition

Reviewers: zturner, llvm-commits, rnk

Reviewed By: zturner

Subscribers: rengolin, JDevlieghere

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

llvm-svn: 326857

6 years ago[StaticAnalyzer] Fix some Clang-tidy modernize and Include What You Use warnings...
Eugene Zelenko [Wed, 7 Mar 2018 00:17:48 +0000 (00:17 +0000)]
[StaticAnalyzer] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC).

llvm-svn: 326856

6 years ago[sanitizer] Update symbolizer test
Vitaly Buka [Wed, 7 Mar 2018 00:15:10 +0000 (00:15 +0000)]
[sanitizer] Update symbolizer test

llvm-svn: 326855

6 years ago[sanitizer] Extract common code into STRXFRM_INTERCEPTOR_IMPL
Vitaly Buka [Wed, 7 Mar 2018 00:14:52 +0000 (00:14 +0000)]
[sanitizer] Extract common code into STRXFRM_INTERCEPTOR_IMPL

llvm-svn: 326854

6 years ago[sanitizer] Move strxfrm interceptors into sanitizer_common
Vitaly Buka [Wed, 7 Mar 2018 00:14:30 +0000 (00:14 +0000)]
[sanitizer] Move strxfrm interceptors into sanitizer_common

llvm-svn: 326853

6 years ago[sanitizer] Add interceptors for wcsxfrm, wcsxfrm_l
Vitaly Buka [Wed, 7 Mar 2018 00:14:12 +0000 (00:14 +0000)]
[sanitizer] Add interceptors for wcsxfrm, wcsxfrm_l

Patch by Oliver Chang

Reviewers: vitalybuka

Reviewed By: vitalybuka

Subscribers: llvm-commits

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

llvm-svn: 326852

6 years ago[sanitizer] Move mmap interceptors into sanitizer_common
Vitaly Buka [Wed, 7 Mar 2018 00:13:54 +0000 (00:13 +0000)]
[sanitizer] Move mmap interceptors into sanitizer_common

Reviewers: devnexen, krytarowski, eugenis

Subscribers: kubamracek, llvm-commits

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

llvm-svn: 326851

6 years agoSplit long lines in a test file.
Rui Ueyama [Wed, 7 Mar 2018 00:07:26 +0000 (00:07 +0000)]
Split long lines in a test file.

llvm-svn: 326850

6 years agothe thread id is easier to read in base16.
Jason Molenda [Tue, 6 Mar 2018 23:33:02 +0000 (23:33 +0000)]
the thread id is easier to read in base16.

llvm-svn: 326849

6 years agoAdd test for lldb-mi interpreter
Adrian Prantl [Tue, 6 Mar 2018 23:25:04 +0000 (23:25 +0000)]
Add test for lldb-mi interpreter

Test that "lldb-mi --interpreter" can interpret "target list" CLI command.

Patch by Alex Polyakov!

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

llvm-svn: 326847

6 years agoFix a typo from r326844; NFC
George Burgess IV [Tue, 6 Mar 2018 23:09:01 +0000 (23:09 +0000)]
Fix a typo from r326844; NFC

llvm-svn: 326845

6 years ago[CodeGen] Don't emit lifetime.end without lifetime.start
George Burgess IV [Tue, 6 Mar 2018 23:07:00 +0000 (23:07 +0000)]
[CodeGen] Don't emit lifetime.end without lifetime.start

EmitLifetimeStart returns a non-null `size` pointer if it actually
emits a lifetime.start. Later in this function, we use `tempSize`'s
nullness to determine whether or not we should emit a lifetime.end.

llvm-svn: 326844

6 years ago[Transforms] Add missing header for InstructionCombining.cpp, in order to export...
Eugene Zelenko [Tue, 6 Mar 2018 23:06:13 +0000 (23:06 +0000)]
[Transforms] Add missing header for InstructionCombining.cpp, in order to export LLVMInitializeInstCombine as extern "C". Fixes PR35947.

Patch by Brenton Bostick.

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

llvm-svn: 326843

6 years ago[XRay][compiler-rt] Make unit tests depend on implementation files
Dean Michael Berris [Tue, 6 Mar 2018 23:06:09 +0000 (23:06 +0000)]
[XRay][compiler-rt] Make unit tests depend on implementation files

Summary:
This change makes changes to XRay implementation files trigger re-builds
of the unit tests. Prior to this change, the unit tests were not built
and run properly if the implementation files were changed during the
development process. This change forces the dependency on all files in
the XRay include and lib hosted files in compiler-rt.

Caveat is, that new files added to the director(ies) will need a re-run
of CMake to re-generate the fileset.

We think this is an OK compromise, since adding new files may
necessitate editing (or adding) new unit tests. It's also less likely
that we're adding new files without updating the CMake configuration to
include the functionality in the XRay runtime implementation anyway.

Reviewers: pelikan, kpw, nglevin

Subscribers: mgorny, llvm-commits

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

llvm-svn: 326842

6 years agoDo not create temporary strings just to print out spaces. NFC.
Rui Ueyama [Tue, 6 Mar 2018 22:48:46 +0000 (22:48 +0000)]
Do not create temporary strings just to print out spaces. NFC.

llvm-svn: 326841

6 years ago[X86] Fix a typo in Host.cpp that causes us to misidentify KNL, Silvermont, Goldmont...
Craig Topper [Tue, 6 Mar 2018 22:45:31 +0000 (22:45 +0000)]
[X86] Fix a typo in Host.cpp that causes us to misidentify KNL, Silvermont, Goldmont and probably other CPUs for -march=native

I think most of the Intel Core CPUs and recent AMD CPUs are unaffected. All the CPUs that have a "subtype" should work. The ones that were broken are the ones that are a "type" with no subtypes.

Fixes PR36619.

llvm-svn: 326840

6 years agoReapply "[DWARFv5] Emit file 0 to the line table."
Paul Robinson [Tue, 6 Mar 2018 22:37:45 +0000 (22:37 +0000)]
Reapply "[DWARFv5] Emit file 0 to the line table."

Fixes the bug found by asan. Also XFAIL the new test for Darwin,
which is stuck on DWARF v2, and fix up other tests so they stop
failing on Windows.

llvm-svn: 326839

6 years ago[TargetLowering] Add vector BITCAST support to SimplifyDemandedVectorElts
Simon Pilgrim [Tue, 6 Mar 2018 22:32:01 +0000 (22:32 +0000)]
[TargetLowering] Add vector BITCAST support to SimplifyDemandedVectorElts

Notably helps cleanup after legalization of vector types

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

llvm-svn: 326838

6 years agoDA: remove uses of GEP, only ask SCEV
Sebastian Pop [Tue, 6 Mar 2018 21:55:59 +0000 (21:55 +0000)]
DA: remove uses of GEP, only ask SCEV

It's been quite some time the Dependence Analysis (DA) is broken,
as it uses the GEP representation to "identify" multi-dimensional arrays.
It even wrongly detects multi-dimensional arrays in single nested loops:

from test/Analysis/DependenceAnalysis/Coupled.ll, example @couple6
;; for (long int i = 0; i < 50; i++) {
;; A[i][3*i - 6] = i;
;; *B++ = A[i][i];

DA used to detect two subscripts, which makes no sense in the LLVM IR
or in C/C++ semantics, as there are no guarantees as in Fortran of
subscripts not overlapping into a next array dimension:

maximum nesting levels = 1
SrcPtrSCEV = %A
DstPtrSCEV = %A
using GEPs
subscript 0
    src = {0,+,1}<nuw><nsw><%for.body>
    dst = {0,+,1}<nuw><nsw><%for.body>
    class = 1
    loops = {1}
subscript 1
    src = {-6,+,3}<nsw><%for.body>
    dst = {0,+,1}<nuw><nsw><%for.body>
    class = 1
    loops = {1}
Separable = {}
Coupled = {1}

With the current patch, DA will correctly work on only one dimension:

maximum nesting levels = 1
SrcSCEV = {(-2424 + %A)<nsw>,+,1212}<%for.body>
DstSCEV = {%A,+,404}<%for.body>
subscript 0
    src = {(-2424 + %A)<nsw>,+,1212}<%for.body>
    dst = {%A,+,404}<%for.body>
    class = 1
    loops = {1}
Separable = {0}
Coupled = {}

This change removes all uses of GEP from DA, and we now only rely
on the SCEV representation.

The patch does not turn on -da-delinearize by default, and so the DA analysis
will be more conservative in the case of multi-dimensional memory accesses in
nested loops.

I disabled some interchange tests, as the DA is not able to disambiguate
the dependence anymore. To make DA stronger, we may need to
compute a bound on the number of iterations based on the access functions
and array dimensions.

The patch cleans up all the CHECKs in test/Transforms/LoopInterchange/*.ll to
avoid checking for snippets of LLVM IR: this form of checking is very hard to
maintain. Instead, we now check for output of the pass that are more meaningful
than dozens of lines of LLVM IR. Some tests now require -debug messages and thus
only enabled with asserts.

Patch written by Sebastian Pop and Aditya Kumar.

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

llvm-svn: 326837

6 years ago[FrontEnd] Allow overriding the default C/C++ -std via CMake vars
Michal Gorny [Tue, 6 Mar 2018 21:26:28 +0000 (21:26 +0000)]
[FrontEnd] Allow overriding the default C/C++ -std via CMake vars

Provide two new CMake cache variables -- CLANG_DEFAULT_STD_C
and CLANG_DEFAULT_STD_CXX -- that can be used to override the default
C/ObjC and C++/ObjC++ standards appropriately. They can be set to one of
the identifiers from LangStandards.def, or left unset (the default) to
respect the current platform default.

This option is mostly intended for compiler vendors that may wish
to adjust the defaults their compilers are using. For example, Gentoo
planned to use it to set clang and gcc to matching standards, so that
we could maintain as much compatibility between different compilers
as possible.

The code relies on explicit identifiers rather than the string aliases
for simplicity. This saves us from the necessity of parsing aliases at
build-time or adding additional processing at runtime. For the latter
case, it also adds trivial value check -- if incorrect value is passed,
the code simply fails to compile through referencing an undefined
constant.

If the variable is used to redefine the default standard, the explicit
value overrides the special case for PS4. It is done this way mostly
following other kinds of variables where 'platform defaults' are
redefined.

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

llvm-svn: 326836

6 years agoImplement --just-symbols.
Rui Ueyama [Tue, 6 Mar 2018 21:25:37 +0000 (21:25 +0000)]
Implement --just-symbols.

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

llvm-svn: 326835

6 years agoPrintStatistics() and PrintStatisticsJSON() should take StatLock
Daniel Sanders [Tue, 6 Mar 2018 21:16:42 +0000 (21:16 +0000)]
PrintStatistics() and PrintStatisticsJSON() should take StatLock

These two functions iterate over the list of statistics but don't take the lock
that protects the iterators from being invalidated by
StatisticInfo::addStatistic().

So far, this hasn't been an issue since (in-tree at least) these functions are
called by the StatisticInfo destructor so addStatistic() shouldn't be called
anymore. However, we do expose them in the public API.

Note that this only protects against iterator invalidation and does not protect
against ordering issues caused by statistic updates that race with
PrintStatistics()/PrintStatisticsJSON().

Thanks to Roman Tereshin for spotting it

llvm-svn: 326834

6 years ago[scudo] Use gc-sections by default
Kostya Kortchinsky [Tue, 6 Mar 2018 20:13:37 +0000 (20:13 +0000)]
[scudo] Use gc-sections by default

Summary:
If not using `-Wl,--gc-sections`, a whole lot of unused `sanitizer_common` code
and related static variables are pulled into the shared library.
Keep the binary size smaller, and its memory footprint smaller as well, by
using the compiler flags `-ffunction-section` & `-fdata-sections` by default,
as well as the linker flags `-Wl,--gc-sections`.

Current experiments show a large discrepency between binary sizes generated
by gcc (big) and clang (small). I am not sure yet how I can make a test that
would encompass both, so it's an outstanding work item.

Reviewers: alekseyshl, flowerhack

Reviewed By: alekseyshl

Subscribers: mgorny, delcypher, llvm-commits, #sanitizers

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

llvm-svn: 326833

6 years ago[TargetLowering] Rename DAGCombinerInfo::isAfterLegalizeVectorOps to DAGCombiner...
Craig Topper [Tue, 6 Mar 2018 19:44:52 +0000 (19:44 +0000)]
[TargetLowering] Rename DAGCombinerInfo::isAfterLegalizeVectorOps to DAGCombiner::isAfterLegalizeDAG since that's what it checks. NFC

The code checks Level == AfterLegalizeDAG which is the fourth and last of the possible DAG combine stages that we have.

There is a Level called AfterLegalVectorOps, but that's the third DAG combine and it doesn't always run.

A function called isAfterLegalVectorOps should imply it returns true in either of the DAG combines that runs after the legalize vector ops stage, but that's not what this function does.

llvm-svn: 326832

6 years ago[SymboleFilePDB] Put the test input back that my previous commit clobbered
Aaron Smith [Tue, 6 Mar 2018 19:36:17 +0000 (19:36 +0000)]
[SymboleFilePDB] Put the test input back that my previous commit clobbered

llvm-svn: 326831

6 years ago[Hexagon] Update more testcases
Krzysztof Parzyszek [Tue, 6 Mar 2018 19:15:58 +0000 (19:15 +0000)]
[Hexagon] Update more testcases

llvm-svn: 326830

6 years ago[Hexagon] Remove {{ *}} from testcases
Krzysztof Parzyszek [Tue, 6 Mar 2018 19:07:21 +0000 (19:07 +0000)]
[Hexagon] Remove {{ *}} from testcases

The spaces in the instructions are now consistent.

llvm-svn: 326829

6 years ago[InstCombine] simplify min/max canonicalization; NFCI
Sanjay Patel [Tue, 6 Mar 2018 19:01:18 +0000 (19:01 +0000)]
[InstCombine] simplify min/max canonicalization; NFCI

llvm-svn: 326828

6 years ago[OPENMP] Fix generation of the unique names for task reduction
Alexey Bataev [Tue, 6 Mar 2018 18:59:43 +0000 (18:59 +0000)]
[OPENMP] Fix generation of the unique names for task reduction
variables.

If the task has reduction construct and this construct for some variable
requires unique threadprivate storage, we may generate different names
for variables used in taskgroup task_reduction clause and in task
  in_reduction clause. Patch fixes this problem.

llvm-svn: 326827

6 years ago[X86] Reject registers that require a REX prefix in inline asm constraints in 32...
Craig Topper [Tue, 6 Mar 2018 18:56:33 +0000 (18:56 +0000)]
[X86] Reject registers that require a REX prefix in inline asm constraints in 32-bit mode

We don't currently reject r8-r15 or xmm8-32 or bpl/spl/sil/dil in 32-bit mode.

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

llvm-svn: 326826

6 years ago[AMDGPU] Add default ISA version targets
Stanislav Mekhanoshin [Tue, 6 Mar 2018 18:33:55 +0000 (18:33 +0000)]
[AMDGPU] Add default ISA version targets

In case if -mattr used to modify feature set bits in llvm-mc call
getIsaVersion can fail to identify specific ISA due to test mismatch.
Adding default fallback tests which will always correctly report at
least major version.

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

llvm-svn: 326825

6 years ago[CodeView] Emit UdtSourceLine information for enums
Aaron Smith [Tue, 6 Mar 2018 18:20:22 +0000 (18:20 +0000)]
[CodeView] Emit UdtSourceLine information for enums

Summary:
- Emit UdtSourceLine information for enums to match MSVC

- Add a method to add UDTSrcLine and call it for all Class/Struct/Union/Enum

- Update test cases to verify the changes

Reviewers: zturner, llvm-commits, rnk

Reviewed By: rnk

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

llvm-svn: 326824

6 years ago[PatternMatch] define m_Not using m_Xor and cst_pred_ty
Sanjay Patel [Tue, 6 Mar 2018 18:19:42 +0000 (18:19 +0000)]
[PatternMatch] define m_Not using m_Xor and cst_pred_ty

Using cst_pred_ty in the definition allows us to match vectors with undef elements.

This is a continuation of an effort to make all pattern matchers allow undef elements in vectors:
rL325437
rL325466
D43792

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

llvm-svn: 326823

6 years agoTableGen: Give up on exact fixits for diagnostic groups
Nicolai Haehnle [Tue, 6 Mar 2018 17:55:00 +0000 (17:55 +0000)]
TableGen: Give up on exact fixits for diagnostic groups

With recent changes in the TableGen frontend, we no longer have usable
location information for anonymous defs.

Fixes test breakage caused by r326788.

The normal, non-error TableGen output is not affected by this change.

llvm-svn: 326822

6 years agolgamma_r: Move code from .inc to .cl file
Jan Vesely [Tue, 6 Mar 2018 17:48:47 +0000 (17:48 +0000)]
lgamma_r: Move code from .inc to .cl file

Reviewed-by: Aaron Watry <awatry@gmail.com>
Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu>
llvm-svn: 326821

6 years agofrexp: Reuse types provided by gentype.inc
Jan Vesely [Tue, 6 Mar 2018 17:48:45 +0000 (17:48 +0000)]
frexp: Reuse types provided by gentype.inc

v2: Use select instead of bitselect to consolidate scalar and vector
versions

Passes CTS on Carrizo

Reviewed-by: Aaron Watry <awatry@gmail.com>
Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu>
llvm-svn: 326820

6 years agoselect: Add vector implementation
Jan Vesely [Tue, 6 Mar 2018 17:48:43 +0000 (17:48 +0000)]
select: Add vector implementation

Passes CTS on Carrizo

Reviewed-by: Aaron Watry <awatry@gmail.com>
Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu>
llvm-svn: 326819

6 years agominmag: Condition variable needs to be the same bitwidth as operands
Jan Vesely [Tue, 6 Mar 2018 17:48:40 +0000 (17:48 +0000)]
minmag: Condition variable needs to be the same bitwidth as operands

No changes wrt CTS

Reviewed-by: Aaron Watry <awatry@gmail.com>
Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu>
llvm-svn: 326818

6 years agomaxmag: Condition variable needs to be the same bitwidth as operands
Jan Vesely [Tue, 6 Mar 2018 17:48:38 +0000 (17:48 +0000)]
maxmag: Condition variable needs to be the same bitwidth as operands

No changes wrt CTS

Reviewed-by: Aaron Watry <awatry@gmail.com>
Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu>
llvm-svn: 326817

6 years agoMove cl_khr_fp64 exntension enablement to gentype include lists
Jan Vesely [Tue, 6 Mar 2018 17:48:35 +0000 (17:48 +0000)]
Move cl_khr_fp64 exntension enablement to gentype include lists

This will make adding cl_khr_fp16 support easier

Reviewed-by: Aaron Watry <awatry@gmail.com>
Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu>
llvm-svn: 326816