platform/upstream/llvm.git
4 years ago[Statepoints] Fix overalignment of loads in no-realign-stack functions
Philip Reames [Fri, 2 Aug 2019 20:17:37 +0000 (20:17 +0000)]
[Statepoints] Fix overalignment of loads in no-realign-stack functions

This really should have been part of 366765.  For some reason, I forgot to handle the corresponding load side, and the readable test cases (using deopt vs statepoints) turned out to be overly reduced.  Oops.

As seen in the test change, the problem was that we were using a load with alignment expectations rather than the unaligned variant when the stack alignment was less than that prefered type alignment.

llvm-svn: 367718

4 years agohwasan: Remove unused field CurModuleUniqueId. NFCI.
Peter Collingbourne [Fri, 2 Aug 2019 20:14:58 +0000 (20:14 +0000)]
hwasan: Remove unused field CurModuleUniqueId. NFCI.

llvm-svn: 367717

4 years ago[ORC] Remove a dead method.
Lang Hames [Fri, 2 Aug 2019 20:09:30 +0000 (20:09 +0000)]
[ORC] Remove a dead method.

llvm-svn: 367716

4 years ago[ScalarizeMaskedMemIntrin] Add constant mask support to expandload and compressstore...
Craig Topper [Fri, 2 Aug 2019 20:04:34 +0000 (20:04 +0000)]
[ScalarizeMaskedMemIntrin] Add constant mask support to expandload and compressstore scalarization

This adds support for generating all the loads or stores for a constant mask into a single basic block with no conditionals.

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

llvm-svn: 367715

4 years ago[Test] Demonstrate a realignment bug missed in r366765
Philip Reames [Fri, 2 Aug 2019 20:01:43 +0000 (20:01 +0000)]
[Test] Demonstrate a realignment bug missed in r366765

llvm-svn: 367714

4 years ago[PowerPC][NFC] Enable ADT BitVectorTest
Jinsong Ji [Fri, 2 Aug 2019 19:58:00 +0000 (19:58 +0000)]
[PowerPC][NFC] Enable ADT BitVectorTest

Test on ppc64le passed.
This fix https://bugs.llvm.org/show_bug.cgi?id=42702

llvm-svn: 367713

4 years ago[ORC] Turn on symbol-flags overrides for LLJIT on Windows by default.
Lang Hames [Fri, 2 Aug 2019 19:43:20 +0000 (19:43 +0000)]
[ORC] Turn on symbol-flags overrides for LLJIT on Windows by default.

libObject does not apply the Exported flag to symbols in COFF object files,
which can lead to assertions when the symbol flags initially derived from
IR added to the JIT clash with the flags seen by the JIT linker. Both
RTDyldObjectLinkingLayer and ObjectLinkingLayer have a workaround for this:
they can be told to override the flags seen by the linker with the flags
attached to the materialization responsibility object that was passed down
to the linker. This patch modifies LLJIT's setup code to enable this override
by default on platforms where COFF is the default object format.

llvm-svn: 367712

4 years agoAdd MCRegister and use it in MCRegisterClass::contains()
Daniel Sanders [Fri, 2 Aug 2019 19:37:17 +0000 (19:37 +0000)]
Add MCRegister and use it in MCRegisterClass::contains()

Summary:
Register can cast to MCRegister and we may want to consider asserting
!isValid() || isPhysical() when expensive checks are on.

Depends on D65554

Reviewers: arsenm

Subscribers: wdng, llvm-commits

Tags: #llvm

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

llvm-svn: 367711

4 years ago[DAGCombiner] try to convert opposing shifts to casts
Sanjay Patel [Fri, 2 Aug 2019 19:33:46 +0000 (19:33 +0000)]
[DAGCombiner] try to convert opposing shifts to casts

This reverses a questionable IR canonicalization when a truncate
is free:

sra (add (shl X, N1C), AddC), N1C -->
sext (add (trunc X to (width - N1C)), AddC')

https://rise4fun.com/Alive/slRC

More details in PR42644:
https://bugs.llvm.org/show_bug.cgi?id=42644

I limited this to pre-legalization for code simplicity because that
should be enough to reverse the IR patterns. I don't have any
evidence (no regression test diffs) that we need to try this later.

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

llvm-svn: 367710

4 years ago[Driver][test] Avoid undefined grep in darwin-ld.c
Hubert Tong [Fri, 2 Aug 2019 19:26:05 +0000 (19:26 +0000)]
[Driver][test] Avoid undefined grep in darwin-ld.c

Summary:
question-mark is not a BRE special character.

POSIX.1-2017 XBD Section 9.3.2 indicates that the interpretation of `\?`
as used by rC366282 is undefined. This patch uses an ERE instead.

Reviewers: rnk, daltenty, xingxue, jasonliu

Reviewed By: rnk

Subscribers: cfe-commits

Tags: #clang

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

llvm-svn: 367709

4 years agoRemove a dead diagnostic, NFC
Erik Pilkington [Fri, 2 Aug 2019 19:25:58 +0000 (19:25 +0000)]
Remove a dead diagnostic, NFC

This was issued in Objective-C 1 mode, but we not longer support that, so this
is just unreachable.

llvm-svn: 367708

4 years agoTemporarily Revert "Changing representation of cv_def_range directives in Codeview...
Eric Christopher [Fri, 2 Aug 2019 19:10:37 +0000 (19:10 +0000)]
Temporarily Revert "Changing representation of cv_def_range directives in Codeview debug info assembly format for better readability"

This is breaking bots and the author asked me to revert.

This reverts commit 367704.

llvm-svn: 367707

4 years agoUse rip-relative addressing in asm test
Joseph Tremoulet [Fri, 2 Aug 2019 19:06:15 +0000 (19:06 +0000)]
Use rip-relative addressing in asm test

The absolute form is an error when targeting Darwin.

llvm-svn: 367706

4 years ago[sanitizer_common][tests] Fix SanitizerCommon-Unit :: ./Sanitizer-*-Test/SanitizerCom...
Rainer Orth [Fri, 2 Aug 2019 18:55:22 +0000 (18:55 +0000)]
[sanitizer_common][tests] Fix SanitizerCommon-Unit :: ./Sanitizer-*-Test/SanitizerCommon.PthreadDestructorIterations on Solaris

SanitizerCommon.PthreadDestructorIterations currently FAILs on Solaris:

  [ RUN      ] SanitizerCommon.PthreadDestructorIterations
  /vol/llvm/src/compiler-rt/local/lib/sanitizer_common/tests/sanitizer_posix_test.cc:58: Failure
  Value of: destructor_executed
    Actual: true
  Expected: false
  [  FAILED  ] SanitizerCommon.PthreadDestructorIterations (1 ms)

It turns out that destructor is called 4 times after the first call to SpawnThread, but
5 times after the second.  While PTHREAD_DESTRUCTOR_ITERATIONS is 4 in
<limits.h>, the Solaris pthread_key_create(3C) man page documents

  If, after all the destructors have been called for all keys  with  non-
  null  values,  there  are  still  some  keys  with non-null values, the
  process will be repeated. POSIX requires that this process be  executed
  at   least   PTHREAD_DESTRUCTOR_ITERATIONS  times.  Solaris  calls  the
  destructors repeatedly until all values with associated destructors are
  NULL. Destructors that set new values can cause an infinite loop.

The patch adjusts the test case to allow for this.

Tested on x86_64-pc-solaris2.11.

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

llvm-svn: 367705

4 years agoChanging representation of cv_def_range directives in Codeview debug info assembly...
Nilanjana Basu [Fri, 2 Aug 2019 18:44:39 +0000 (18:44 +0000)]
Changing representation of cv_def_range directives in Codeview debug info assembly format for better readability

llvm-svn: 367704

4 years ago[NewPassManager] Resolve assertion in CGSCCPassManager when CallCounts change.
Alina Sbirlea [Fri, 2 Aug 2019 18:37:03 +0000 (18:37 +0000)]
[NewPassManager] Resolve assertion in CGSCCPassManager when CallCounts change.

Summary:
If the CallCounts change after an iteration of the DevirtSCCRepeatedPass, this is not reflected in the local CallCounts structure triggering the assertion checking the before/after sizes.
Since it is valid for the size to change and this only uses the CallCounts for the devirtualizing heuristic, keep a <Function*, CallCount> map instead, and make the devirtualizing decision using the counts for the functions that exist both before and after the pass.

Resolves PR42726.

Reviewers: chandlerc

Subscribers: mehdi_amini, jlebar, sanjoy.google, llvm-commits

Tags: #llvm

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

llvm-svn: 367703

4 years ago[llvm-objcopy] - Fix the strip-dwo-groups.test.
George Rimar [Fri, 2 Aug 2019 18:22:46 +0000 (18:22 +0000)]
[llvm-objcopy] - Fix the strip-dwo-groups.test.

It was reported (https://reviews.llvm.org/D65273#1612246)
that this test fails if the compilation directory contain
a "debug_" substring.

This should fix it.

llvm-svn: 367702

4 years ago[Formatters] Temporarily disable libc++ std::function formatter due to performance...
Shafik Yaghmour [Fri, 2 Aug 2019 18:16:04 +0000 (18:16 +0000)]
[Formatters] Temporarily disable libc++ std::function formatter due to performance issue

Summary: We have been seeing increased reports of performance issue around large project and formatting std::function variables especially in functions signatures in back traces. There are some possible fixes but exploring those fixes may take time and it is better to temporarily disable the formatter due to its impact and re-enable it once we have a fix.

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

llvm-svn: 367701

4 years ago[AArch64][GlobalISel] Support the neg_addsub_shifted_imm32 pattern
Jessica Paquette [Fri, 2 Aug 2019 18:12:53 +0000 (18:12 +0000)]
[AArch64][GlobalISel] Support the neg_addsub_shifted_imm32 pattern

Add an equivalent ComplexRendererFns function for SelectNegArithImmed. This
allows us to select immediate adds of -1 by turning them into subtracts.

Update select-binop.mir to show that the pattern works.

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

llvm-svn: 367700

4 years ago[SimplifyCFG] Cleanup redundant conditions [NFC].
Alina Sbirlea [Fri, 2 Aug 2019 18:06:54 +0000 (18:06 +0000)]
[SimplifyCFG] Cleanup redundant conditions [NFC].

Summary:
Since the for loop iterates over BB's predecessors, the branch conditions found must have BB as one of the successors.
For an unconditional branch the successor must be BB, added `assert`.
For a conditional branch, one of the two successors must be BB, simplify `else if` to `else` and `assert`.
Sink common instructions outside the if/else block.

Reviewers: sanjoy.google

Subscribers: jlebar, llvm-commits

Tags: #llvm

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

llvm-svn: 367699

4 years ago[AMDGPU] Regenerated saddo.ll test file for D47927
Simon Pilgrim [Fri, 2 Aug 2019 17:52:55 +0000 (17:52 +0000)]
[AMDGPU] Regenerated saddo.ll test file for D47927

llvm-svn: 367698

4 years agoFix ARC after r367633
Daniel Sanders [Fri, 2 Aug 2019 17:52:17 +0000 (17:52 +0000)]
Fix ARC after r367633

llvm-svn: 367697

4 years agoCodeGen: Don't follow aliases when extracting type info.
Peter Collingbourne [Fri, 2 Aug 2019 17:43:45 +0000 (17:43 +0000)]
CodeGen: Don't follow aliases when extracting type info.

This fixes a crash in the case where the type info object is an alias
pointing to a non-zero offset within a global or is otherwise unanalyzable
by the stripPointerCasts() function. Looking through the alias is not the
right thing to do anyway for similar reasons as D65118.

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

llvm-svn: 367696

4 years ago[InstCombine] fold cmp+select using select operand equivalence
Sanjay Patel [Fri, 2 Aug 2019 17:39:32 +0000 (17:39 +0000)]
[InstCombine] fold cmp+select using select operand equivalence

As discussed in PR42696:
https://bugs.llvm.org/show_bug.cgi?id=42696
...but won't help that case yet.

We have an odd situation where a select operand equivalence fold was
implemented in InstSimplify when it could have been done more generally
in InstCombine if we allow dropping of {nsw,nuw,exact} from a binop operand.

Here's an example:
https://rise4fun.com/Alive/Xplr

  %cmp = icmp eq i32 %x, 2147483647
  %add = add nsw i32 %x, 1
  %sel = select i1 %cmp, i32 -2147483648, i32 %add
  =>
  %sel = add i32 %x, 1

I've left the InstSimplify code in place for now, but my guess is that we'd
prefer to remove that as a follow-up to save on code duplication and
compile-time.

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

llvm-svn: 367695

4 years ago[clang-tidy] Adding static analyzer check to list of clang-tidy checks
Nathan Huckleberry [Fri, 2 Aug 2019 17:18:31 +0000 (17:18 +0000)]
[clang-tidy] Adding static analyzer check to list of clang-tidy checks

Summary:
Since clang-tidy supports use of the static analyzer there
should be documentation of how to invoke the static analyzer
checks.

Reviewers: JonasToth, aaron.ballman, NoQ, Szelethus

Reviewed By: aaron.ballman

Subscribers: nickdesaulniers, lebedev.ri, jfb, NoQ, Eugene.Zelenko, xazax.hun, baloghadamsoftware, a.sidorin, Szelethus, donat.nagy, dkrupp, cfe-commits

Tags: #clang

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

llvm-svn: 367694

4 years agoFix git-llvm to not delete non-empty directories.
James Y Knight [Fri, 2 Aug 2019 17:10:04 +0000 (17:10 +0000)]
Fix git-llvm to not delete non-empty directories.

Previously, if a directory contained only other sub-directories, one
of which was being removed, git llvm would delete the parent and all
its subdirs, even though only one should've been deleted.

This error occurred in r366590, where the commit attempted to remove
lldb/packages/Python/lldbsuite/test/tools/lldb-mi, but git-llvm
erroneously removed the entire contents of
lldb/packages/Python/lldbsuite/test/tools.

This happened because "git apply" automatically removes empty
directories locally, and the absence of a local directory was
previously taken as an indication to call 'svn rm' on that
directory. However, an empty local directory does not necessarily
indicate that the directory is truly empty.

Fix that by removing directories only when they're empty on the git
side.

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

llvm-svn: 367693

4 years agogn build: Merge r367667.
Peter Collingbourne [Fri, 2 Aug 2019 17:02:05 +0000 (17:02 +0000)]
gn build: Merge r367667.

llvm-svn: 367692

4 years agoFix PC adjustment in StackFrame::GetSymbolContext
Joseph Tremoulet [Fri, 2 Aug 2019 16:53:42 +0000 (16:53 +0000)]
Fix PC adjustment in StackFrame::GetSymbolContext

Summary:
Update StackFrame::GetSymbolContext to mirror the logic in
RegisterContextLLDB::InitializeNonZerothFrame that knows not to do the
pc decrement when the given frame is a signal trap handler frame or the
parent of one, because the pc may not follow a call in these frames.
Accomplish this by adding a behaves_like_zeroth_frame field to
lldb_private::StackFrame, set to true for the zeroth frame, for
signal handler frames, and for parents of signal handler frames.

Also add logic to propagate the signal handler flag from UnwindPlan to
the FrameType on the RegisterContextLLDB it generates, and factor out a
helper to resolve symbol and address range for an Address now that we
need to invoke it in four places.

Reviewers: jasonmolenda, clayborg, jfb

Reviewed By: jasonmolenda

Subscribers: labath, dexonsmith, lldb-commits

Tags: #lldb

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

llvm-svn: 367691

4 years ago[Sema] Disable -Wbitwise-op-parentheses and -Wlogical-op-parentheses by default
Fangrui Song [Fri, 2 Aug 2019 16:31:38 +0000 (16:31 +0000)]
[Sema] Disable -Wbitwise-op-parentheses and -Wlogical-op-parentheses by default

Summary:
The -Wparentheses warnings are enabled by default in clang but they are under
-Wall in gcc (gcc/c-family/c.opt). Some of the operator precedence warnings are
oftentimes criticized as noise (clang: default; gcc: -Wall). If a warning is
very controversial, it is probably not a good idea to enable it by default.
This patch disables the rather annoying ones:

-Wbitwise-op-parentheses, e.g. i & i | i
-Wlogical-op-parentheses, e.g. i && i || i

After this change:

```
* = enabled by default

-Wall
  -Wparentheses
    -Wlogical-op-parentheses
    -Wlogical-not-parentheses*
    -Wbitwise-op-parentheses
    -Wshift-op-parentheses*
    -Woverloaded-shift-op-parentheses*
    -Wparentheses-equality*
    -Wdangling-else*
```

-Woverloaded-shift-op-parentheses is typically followed by overload
resolution failure. We can instead improve the error message, and
probably delete -Woverloaded-shift-op-parentheses in the future. Keep it
for now because it gives some diagnostics.

Reviewers: akyrtzi, jyknight, rtrieu, rsmith, aaron.ballman

Reviewed By: aaron.ballman

Subscribers: dexonsmith, cfe-commits

Tags: #clang

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

llvm-svn: 367690

4 years ago[doc] Give a workaround for a FileCheck regex that ends in a brace.
Paul Robinson [Fri, 2 Aug 2019 16:07:48 +0000 (16:07 +0000)]
[doc] Give a workaround for a FileCheck regex that ends in a brace.

Addresses PR42864.

llvm-svn: 367689

4 years agoUse llvm-nm instead of nm in new test to unbreak Windows bot
Teresa Johnson [Fri, 2 Aug 2019 15:49:39 +0000 (15:49 +0000)]
Use llvm-nm instead of nm in new test to unbreak Windows bot

New test added in r367679 used nm and should use llvm-nm.

llvm-svn: 367688

4 years ago[clangd] Fix a crash when presenting values for Hover
Ilya Biryukov [Fri, 2 Aug 2019 15:23:04 +0000 (15:23 +0000)]
[clangd] Fix a crash when presenting values for Hover

Summary:
We should pass the expression type, not a variable type when printing
the resulting value. Variable type may be different from what the
pretty-printing function expects, e.g. have references.

Reviewers: sammccall

Reviewed By: sammccall

Subscribers: MaskRay, jkorous, arphaman, kadircet, cfe-commits

Tags: #clang

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

llvm-svn: 367687

4 years ago[ORC] Change the locking scheme for ThreadSafeModule.
Lang Hames [Fri, 2 Aug 2019 15:21:37 +0000 (15:21 +0000)]
[ORC] Change the locking scheme for ThreadSafeModule.

ThreadSafeModule/ThreadSafeContext are used to manage lifetimes and locking
for LLVMContexts in ORCv2. Prior to this patch contexts were locked as soon
as an associated Module was emitted (to be compiled and linked), and were not
unlocked until the emit call returned. This could lead to deadlocks if
interdependent modules that shared contexts were compiled on different threads:
when, during emission of the first module, the dependence was discovered the
second module (which would provide the required symbol) could not be emitted as
the thread emitting the first module still held the lock.

This patch eliminates this possibility by moving to a finer-grained locking
scheme. Each client holds the module lock only while they are actively operating
on it. To make this finer grained locking simpler/safer to implement this patch
removes the explicit lock method, 'getContextLock', from ThreadSafeModule and
replaces it with a new method, 'withModuleDo', that implicitly locks the context,
calls a user-supplied function object to operate on the Module, then implicitly
unlocks the context before returning the result.

ThreadSafeModule TSM = getModule(...);
size_t NumFunctions = TSM.withModuleDo(
    [](Module &M) { // <- context locked before entry to lambda.
      return M.size();
    });

Existing ORCv2 layers that operate on ThreadSafeModules are updated to use the
new method.

This method is used to introduce Module locking into each of the existing
layers.

llvm-svn: 367686

4 years ago[NFC] Test commit, corrected some spelling in comment
David Candler [Fri, 2 Aug 2019 14:44:17 +0000 (14:44 +0000)]
[NFC] Test commit, corrected some spelling in comment

Test commit, corrected some spelling in comment.

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

llvm-svn: 367685

4 years ago[clangd][vscode] clang-format the the extension code.
Haojian Wu [Fri, 2 Aug 2019 14:24:02 +0000 (14:24 +0000)]
[clangd][vscode] clang-format the the extension code.

Summary:
As we are going to grow the extension in the near future, it is time to
formalize the TS code format/style of our extension (although we'd lose the
history).

We use default options of clang-format:
- 80 max line length
- 2 space indent

Reviewers: ilya-biryukov, sammccall, jvikstrom

Subscribers: MaskRay, jkorous, arphaman, kadircet, cfe-commits

Tags: #clang

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

llvm-svn: 367684

4 years agoGlobalISel: support swiftself attribute
Tim Northover [Fri, 2 Aug 2019 14:09:49 +0000 (14:09 +0000)]
GlobalISel: support swiftself attribute

llvm-svn: 367683

4 years agoFix new test try 2
Teresa Johnson [Fri, 2 Aug 2019 13:49:48 +0000 (13:49 +0000)]
Fix new test try 2

Fix second (and last) instance of wrong Input file name in new test
added in r367679.

llvm-svn: 367682

4 years agoFix new test
Teresa Johnson [Fri, 2 Aug 2019 13:26:18 +0000 (13:26 +0000)]
Fix new test

Thew new test added in r367679 was using the wrong copy of the Input
file.

llvm-svn: 367680

4 years ago[ThinLTO] Implement index-based WPD
Teresa Johnson [Fri, 2 Aug 2019 13:10:52 +0000 (13:10 +0000)]
[ThinLTO] Implement index-based WPD

This patch adds support to the WholeProgramDevirt pass to perform
index-based WPD, which is invoked from ThinLTO during the thin link.

The ThinLTO backend (WPD import phase) behaves the same regardless of
whether the WPD decisions were made with the index-based or (the
existing) IR-based analysis.

Depends on D54815.

Reviewers: pcc

Subscribers: mehdi_amini, inglorion, eraman, steven_wu, dexonsmith, arphaman, dang, llvm-commits

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

llvm-svn: 367679

4 years agoFix "not all control paths return a value" warning. NFCI.
Simon Pilgrim [Fri, 2 Aug 2019 12:55:04 +0000 (12:55 +0000)]
Fix "not all control paths return a value" warning. NFCI.

llvm-svn: 367678

4 years ago[x86] add/adjust tests for shift-add-shift; NFC
Sanjay Patel [Fri, 2 Aug 2019 11:50:03 +0000 (11:50 +0000)]
[x86] add/adjust tests for shift-add-shift; NFC

Goes with D65607.

llvm-svn: 367677

4 years ago[llvm-dlltool] Clarify an error message. NFC.
Martin Storsjo [Fri, 2 Aug 2019 11:20:03 +0000 (11:20 +0000)]
[llvm-dlltool] Clarify an error message. NFC.

The parameter to the -D (--dllname) option is the name of the dll
that llvm-dlltool produces an import library for. Even though this
is named "OutputFile" in the COFFModuleDefinition class, it's not
an output file name in the context of llvm-dlltool, but the name
of the DLL to create an import library for.

llvm-svn: 367676

4 years ago[OpenCL] Allow OpenCL C style vector initialization in C++
Anastasia Stulova [Fri, 2 Aug 2019 11:19:35 +0000 (11:19 +0000)]
[OpenCL] Allow OpenCL C style vector initialization in C++

Allow creating vector literals from other vectors.

 float4 a = (float4)(1.0f, 2.0f, 3.0f, 4.0f);
 float4 v = (float4)(a.s23, a.s01);

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

llvm-svn: 367675

4 years ago[COFF] Clarify a comment. NFC.
Martin Storsjo [Fri, 2 Aug 2019 11:08:15 +0000 (11:08 +0000)]
[COFF] Clarify a comment. NFC.

It's the __delayLoadHelper2 function that overwrites the jump table
slot, not this thunk.

llvm-svn: 367674

4 years ago[COFF] Avoid loading objects for mingw autoimport, when a defined alias exists
Martin Storsjo [Fri, 2 Aug 2019 11:02:34 +0000 (11:02 +0000)]
[COFF] Avoid loading objects for mingw autoimport, when a defined alias exists

This avoids a spurious and confusing log message in cases where
both e.g. "alias" and "__imp_alias" exist.

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

llvm-svn: 367673

4 years ago[clangd] Remove bad assert: nothing relies on it, and the reasons it was true no...
Sam McCall [Fri, 2 Aug 2019 10:39:46 +0000 (10:39 +0000)]
[clangd] Remove bad assert: nothing relies on it, and the reasons it was true no longer hold.

llvm-svn: 367672

4 years ago[MCA] Add support for printing immedate values as hex. Also enable lexing of masm...
Andrea Di Biagio [Fri, 2 Aug 2019 10:38:25 +0000 (10:38 +0000)]
[MCA] Add support for printing immedate values as hex. Also enable lexing of masm binary and hex literals.

This patch adds a new llvm-mca flag named -print-imm-hex.

By default, the instruction printer prints immediate operands as decimals. Flag
-print-imm-hex enables the instruction printer to print those operands in hex.

This patch also adds support for MASM binary and hex literal numbers (example
0FFh, 101b).
Added tests to verify the behavior of the new flag. Tests also verify that masm
numeric literal operands are now recognized.

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

llvm-svn: 367671

4 years ago[IPRA][ARM] Disable no-CSR optimisation for ARM
Oliver Stannard [Fri, 2 Aug 2019 10:23:17 +0000 (10:23 +0000)]
[IPRA][ARM] Disable no-CSR optimisation for ARM

This optimisation isn't generally profitable for ARM, because we can
save/restore many registers in the prologue and epilogue using the PUSH
and POP instructions, but mostly use individual LDR/STR instructions for
other spills.

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

llvm-svn: 367670

4 years agoFix and test inter-procedural register allocation for ARM
Oliver Stannard [Fri, 2 Aug 2019 10:23:05 +0000 (10:23 +0000)]
Fix and test inter-procedural register allocation for ARM

- Avoid a crash when IPRA calls ARMFrameLowering::determineCalleeSaves
  with a null RegScavenger. Simply not updating the register scavenger
  is fine because IPRA only cares about the SavedRegs vector, the acutal
  code of the function has already been generated at this point.
- Add a new hook to TargetRegisterInfo to get the set of registers which
  can be clobbered inside a call, even if the compiler can see both
  sides, by linker-generated code.

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

llvm-svn: 367669

4 years ago[Loop Peeling] Introduce an option for profile based peeling disabling.
Serguei Katkov [Fri, 2 Aug 2019 09:32:52 +0000 (09:32 +0000)]
[Loop Peeling] Introduce an option for profile based peeling disabling.

This patch adds an ability to disable profile based peeling
causing the peeling of all iterations and as a result prohibits
further unroll/peeling attempts on that loop.

The motivation to get an ability to separate peeling usage in
pipeline where in the first part we peel only separate iterations if needed
and later in pipeline we apply the full peeling which will prohibit further peeling.

Reviewers: reames, fhahn
Reviewed By: reames
Subscribers: hiraditya, zzheng, dmgreen, llvm-commits
Differential Revision: https://reviews.llvm.org/D64983

llvm-svn: 367668

4 years ago[clangd] Add new helpers to make tweak tests scale better. Convert most tests. NFC
Sam McCall [Fri, 2 Aug 2019 09:12:39 +0000 (09:12 +0000)]
[clangd] Add new helpers to make tweak tests scale better. Convert most tests. NFC

Summary:
TweakTests.cpp has some pretty good helpers added for the first few
tweaks, but they have some limitations:
 - many assertion failures point at the wrong line
 - need lots of input/output tests, setup code is duplicated across both
 - local helpers make it hard to split the file as it grows

The new helpers in TweakTests.h are based on old ones (same operations)
but try to address these issues and generally make tests more terse
while improving error messages.

This patch converts everything except ExtractVariable (which is complex
and has changes in flight, so will be converted later).
It's LOC-neutral, despite not being able to get rid of the old helpers
until ExtractVariable is done.

Reviewers: ilya-biryukov

Subscribers: mgorny, MaskRay, jkorous, arphaman, kadircet, cfe-commits

Tags: #clang

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

llvm-svn: 367667

4 years ago[LV] Fix test failure in a Release build.
Jay Foad [Fri, 2 Aug 2019 08:33:41 +0000 (08:33 +0000)]
[LV] Fix test failure in a Release build.

llvm-svn: 367666

4 years ago[NFC][ARM[ParallelDSP] Rename/remove/change types
Sam Parker [Fri, 2 Aug 2019 08:21:17 +0000 (08:21 +0000)]
[NFC][ARM[ParallelDSP] Rename/remove/change types

Remove forward declaration, fold a couple of typedefs and change one
to be more useful.

llvm-svn: 367665

4 years agoSymbolVendor: Introduce Module::GetSymbolFile
Pavel Labath [Fri, 2 Aug 2019 08:16:35 +0000 (08:16 +0000)]
SymbolVendor: Introduce Module::GetSymbolFile

Summary:
This is the next step in avoiding funneling all SymbolFile calls through
the SymbolVendor. Right now, it is just a convenience function, but it
allows us to update all calls to SymbolVendor functions to access the
SymbolFile directly. Once all call sites have been updated, we can
remove the GetSymbolVendor member function.

This patch just updates the calls to GetSymbolVendor, which were calling
it just so they could fetch the underlying symbol file. Other calls will
be done in follow-ups.

Reviewers: JDevlieghere, clayborg, jingham

Subscribers: lldb-commits

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

llvm-svn: 367664

4 years ago[lldb][NFC] Remove unused imports in python tests
Raphael Isemann [Fri, 2 Aug 2019 08:06:22 +0000 (08:06 +0000)]
[lldb][NFC] Remove unused imports in python tests

llvm-svn: 367663

4 years ago[AliasAnalysis] Initialize a member variable that may be used by unit test.
Peter Smith [Fri, 2 Aug 2019 08:05:14 +0000 (08:05 +0000)]
[AliasAnalysis] Initialize a member variable that may be used by unit test.

The unit tests in BasicAliasAnalysisTest use the alias analysis API
directly and do not call setAAResults to initalize AAR. This gives a
valgrind error "Conditional Jump depends on unitialized variable".

On most buildbots the variable is nullptr, but in some cases it can be
non nullptr leading to seemingly random failures.

These tests were disabled in r366986. With the initialization they can be
enabled again.

Fixes PR42719

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

llvm-svn: 367662

4 years agoDon't try emitting dllexported explicitly defaulted non-trivial ctors twice during...
Hans Wennborg [Fri, 2 Aug 2019 07:51:41 +0000 (07:51 +0000)]
Don't try emitting dllexported explicitly defaulted non-trivial ctors twice during explicit template instantiation definition (PR42857)

Trying to emit the definition twice triggers an assert.

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

llvm-svn: 367661

4 years ago[NFC][ARM][ParallelDSP] Remove ValueList
Sam Parker [Fri, 2 Aug 2019 07:32:28 +0000 (07:32 +0000)]
[NFC][ARM][ParallelDSP] Remove ValueList

We only care about the first element in the list.

llvm-svn: 367660

4 years agoMoves the newly added test interleaved-accesses-waw-dependency.ll to X86 subdirectory.
Hideki Saito [Fri, 2 Aug 2019 07:25:09 +0000 (07:25 +0000)]
Moves the newly added test interleaved-accesses-waw-dependency.ll to X86 subdirectory.

ps4-buildslave1 reported a failure. The test has x86 triple.

llvm-svn: 367659

4 years agoRevert r367649: Improve raw_ostream so that you can "write" colors using operator<<
Rui Ueyama [Fri, 2 Aug 2019 07:22:34 +0000 (07:22 +0000)]
Revert r367649: Improve raw_ostream so that you can "write" colors using operator<<

This reverts commit r367649 in an attempt to unbreak Windows bots.

llvm-svn: 367658

4 years ago[PGO] Fix bolt failures from r367628
Rong Xu [Fri, 2 Aug 2019 07:21:50 +0000 (07:21 +0000)]
[PGO] Fix bolt failures from r367628

Relaxed the check in a test because the windows bolt generates different
profile variables.

llvm-svn: 367657

4 years agocompiler-rt: Rename .cc file in test/tsan to .cpp
Fangrui Song [Fri, 2 Aug 2019 07:18:07 +0000 (07:18 +0000)]
compiler-rt: Rename .cc file in test/tsan to .cpp

Like r367463, but for test/tsan.

llvm-svn: 367656

4 years ago[LLVM][Alignment] Update documentation
Guillaume Chatelet [Fri, 2 Aug 2019 07:14:20 +0000 (07:14 +0000)]
[LLVM][Alignment] Update documentation

Reviewers: aprantl

Subscribers: llvm-commits

Tags: #llvm

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

llvm-svn: 367655

4 years ago[LV] Avoid building interleaved group in presence of WAW dependency
Hideki Saito [Fri, 2 Aug 2019 06:31:50 +0000 (06:31 +0000)]
[LV] Avoid building interleaved group in presence of WAW dependency

Reviewers: hsaito, Ayal, fhahn, anna, mkazantsev

Reviewed By: hsaito

Patch by evrevnov, thanks!

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

llvm-svn: 367654

4 years agocompiler-rt: Rename .cc file in test/msan to .cpp
Fangrui Song [Fri, 2 Aug 2019 06:07:05 +0000 (06:07 +0000)]
compiler-rt: Rename .cc file in test/msan to .cpp

Like r367463, but for test/msan.

llvm-svn: 367653

4 years agocompiler-rt: Rename .cc file in test/xray to .cpp
Fangrui Song [Fri, 2 Aug 2019 05:49:58 +0000 (05:49 +0000)]
compiler-rt: Rename .cc file in test/xray to .cpp

Like r367463, but for test/xray.

Update test/xray/lit.cfg.py config.suffixes to remove .cc (we actually
don't have .c tests now)

llvm-svn: 367652

4 years agoAdd an assert() to catch possible regexp errors.
Rui Ueyama [Fri, 2 Aug 2019 05:11:19 +0000 (05:11 +0000)]
Add an assert() to catch possible regexp errors.

llvm-svn: 367651

4 years agoAdd a comment for --vs-diagnostics.
Rui Ueyama [Fri, 2 Aug 2019 05:04:27 +0000 (05:04 +0000)]
Add a comment for --vs-diagnostics.

llvm-svn: 367650

4 years agoImprove raw_ostream so that you can "write" colors using operator<<
Rui Ueyama [Fri, 2 Aug 2019 04:48:30 +0000 (04:48 +0000)]
Improve raw_ostream so that you can "write" colors using operator<<

1. raw_ostream supports ANSI colors so that you can write messages to
the termina with colors. Previously, in order to change and reset
color, you had to call `changeColor` and `resetColor` functions,
respectively.

So, if you print out "error: " in red, for example, you had to do
something like this:

  OS.changeColor(raw_ostream::RED);
  OS << "error: ";
  OS.resetColor();

With this patch, you can write the same code as follows:

  OS << raw_ostream::RED << "error: " << raw_ostream::RESET;

2. Add a boolean flag to raw_ostream so that you can disable colored
output. If you disable colors, changeColor, operator<<(Color),
resetColor and other color-related functions have no effect.

Most LLVM tools automatically prints out messages using colors, and
you can disable it by passing a flag such as `--disable-colors`.
This new flag makes it easy to write code that works that way.

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

llvm-svn: 367649

4 years ago[clang-format] Fix a bug that doesn't break braces before unions for Allman
Owen Pan [Fri, 2 Aug 2019 04:30:42 +0000 (04:30 +0000)]
[clang-format] Fix a bug that doesn't break braces before unions for Allman
Differential Revision: https://reviews.llvm.org/D65631

llvm-svn: 367648

4 years ago[Loop Peeling] Do not close further unroll/peel if profile based peeling was not...
Serguei Katkov [Fri, 2 Aug 2019 04:29:23 +0000 (04:29 +0000)]
[Loop Peeling] Do not close further unroll/peel if profile based peeling was not used.

Current peeling cost model can decide to peel off not all iterations
but only some of them to eliminate conditions on phi. At the same time
if any peeling happens the door for further unroll/peel optimizations on that
loop closes because the part of the code thinks that if peeling happened
it is profile based peeling and all iterations are peeled off.

To resolve this inconsistency the patch provides the flag which states whether
the full peeling basing on profile is enabled or not and peeling cost model
is able to modify this field like it does not PeelCount.

In a separate patch I will introduce an option to allow/disallow peeling basing
on profile.

To avoid infinite loop peeling the patch tracks the total number of peeled iteration
through llvm.loop.peeled.count loop metadata.

Reviewers: reames, fhahn
Reviewed By: reames
Subscribers: hiraditya, zzheng, dmgreen, llvm-commits
Differential Revision: https://reviews.llvm.org/D64972

llvm-svn: 367647

4 years agoHandle casts changing pointer size in the vectorizer
Stanislav Mekhanoshin [Fri, 2 Aug 2019 04:03:37 +0000 (04:03 +0000)]
Handle casts changing pointer size in the vectorizer

Added code to truncate or shrink offsets so that we can continue
base pointer search if size has changed along the way.

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

llvm-svn: 367646

4 years ago[PowerPC][Peephole] Check if `extsw`'s second operand is a virtual register
Kai Luo [Fri, 2 Aug 2019 03:14:17 +0000 (03:14 +0000)]
[PowerPC][Peephole] Check if `extsw`'s second operand is a virtual register

Summary:
When combining `extsw` and `sldi` in `PPCMIPeephole`, we have to check
if `extsw`'s second operand is a virtual register, otherwise we might
get miscompile.

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

llvm-svn: 367645

4 years ago[NFC][CodeGen] Modify the type element of TailCalls to simplify the dupRetToEnableTai...
Kang Zhang [Fri, 2 Aug 2019 03:09:07 +0000 (03:09 +0000)]
[NFC][CodeGen] Modify the type element of TailCalls to simplify the dupRetToEnableTailCallOpts()

Summary:
The old code can be simplified to define the element type of TailCalls as `BasicBlock` not `CallInst`. Also I use the for-range loop instead the for loop.

Reviewed By: jsji

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

llvm-svn: 367644

4 years agoFix an unused variable warning.
Rui Ueyama [Fri, 2 Aug 2019 02:51:20 +0000 (02:51 +0000)]
Fix an unused variable warning.

llvm-svn: 367643

4 years agoFix flaky test caused by PR42868
Vitaly Buka [Fri, 2 Aug 2019 02:27:04 +0000 (02:27 +0000)]
Fix flaky test caused by PR42868

llvm-svn: 367642

4 years agoChange /build to /build* in top-level .gitignore.
Douglas Yung [Fri, 2 Aug 2019 02:14:08 +0000 (02:14 +0000)]
Change /build to /build* in top-level .gitignore.

Reviewers: beanz

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

llvm-svn: 367641

4 years agoTemporarily revert "Changes to improve CodeView debug info type record inline comments"
Eric Christopher [Fri, 2 Aug 2019 01:05:47 +0000 (01:05 +0000)]
Temporarily revert "Changes to improve CodeView debug info type record inline comments"
due to a sanitizer failure.

This reverts commit 367623.

llvm-svn: 367640

4 years agoUpdate Compiler.h check for MSVC
JF Bastien [Fri, 2 Aug 2019 00:50:12 +0000 (00:50 +0000)]
Update Compiler.h check for MSVC
We require at least MSVC 2017, but I forgot to update Compiler.h when I updated the MSVC requirement.

llvm-svn: 367639

4 years agoFormat OptionEnumValueElement (NFC)
Jonas Devlieghere [Fri, 2 Aug 2019 00:18:44 +0000 (00:18 +0000)]
Format OptionEnumValueElement (NFC)

Reformat OptionEnumValueElement to make it easier to distinguish between
its fields. This also removes the need to disable clang-format for these
arrays.

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

llvm-svn: 367638

4 years agoFix up an unused variable warning caused by TRI->isVirtualRegister() -> Register...
Daniel Sanders [Fri, 2 Aug 2019 00:17:48 +0000 (00:17 +0000)]
Fix up an unused variable warning caused by TRI->isVirtualRegister() -> Register::isVirtualRegister()

llvm-svn: 367637

4 years agoPrevent vregs leaking into the MC layer via TargetRegisterClass::contains()
Daniel Sanders [Thu, 1 Aug 2019 23:44:42 +0000 (23:44 +0000)]
Prevent vregs leaking into the MC layer via TargetRegisterClass::contains()

Summary:
The MC layer doesn't expect to deal with vregs but
TargetRegisterClass::contains() forwards into MCRegisterClass::contains()
and this can cause vregs to turn up in the MC layer APIs. Add guards
against this to prevent this becoming a problem as we replace unsigned
with a new MCRegister object for improved type safety.

Reviewers: arsenm

Subscribers: wdng, llvm-commits

Tags: #llvm

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

llvm-svn: 367636

4 years ago[dsymutil] Fix heap-use-after-free related to the LinkOptions.
Jonas Devlieghere [Thu, 1 Aug 2019 23:37:33 +0000 (23:37 +0000)]
[dsymutil] Fix heap-use-after-free related to the LinkOptions.

In r367348, I changed dsymutil to pass the LinkOptions by value isntead
of by const reference. However, the options were still captured by
reference in the LinkLambda. This patch fixes that by passing them in by
value.

llvm-svn: 367635

4 years ago[Tests] Autogen a bunch of Reassociate tests for ease of update
Philip Reames [Thu, 1 Aug 2019 23:30:32 +0000 (23:30 +0000)]
[Tests] Autogen a bunch of Reassociate tests for ease of update

llvm-svn: 367634

4 years agoFinish moving TargetRegisterInfo::isVirtualRegister() and friends to llvm::Register...
Daniel Sanders [Thu, 1 Aug 2019 23:27:28 +0000 (23:27 +0000)]
Finish moving TargetRegisterInfo::isVirtualRegister() and friends to llvm::Register as started by r367614. NFC

llvm-svn: 367633

4 years ago[DirectoryWatcher] Relax assumption to prevent test flakiness
Jan Korous [Thu, 1 Aug 2019 23:24:30 +0000 (23:24 +0000)]
[DirectoryWatcher] Relax assumption to prevent test flakiness

llvm-svn: 367632

4 years agoRefactor deque to centralize handling of spare blocks.
Eric Fiselier [Thu, 1 Aug 2019 23:11:18 +0000 (23:11 +0000)]
Refactor deque to centralize handling of spare blocks.

I have upcoming changes that modify how deque handles spare blocks.
This cleanup is intended to make those changes easier to review
and understand. This patch should have NFC.

llvm-svn: 367631

4 years ago[PGO] Add PGO support at -O0 in the experimental new pass manager
Rong Xu [Thu, 1 Aug 2019 22:36:34 +0000 (22:36 +0000)]
[PGO] Add PGO support at -O0 in the experimental new pass manager

Add PGO support at -O0 in the experimental new pass manager to sync the
behavior of the legacy pass manager.

Also change the test of gcc-flag-compatibility.c for more complete test:
(1) change the match string to "profc" and "profd" to ensure the
    instrumentation is happening.
(2) add IR format proftext so that PGO use compilation is tested.

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

llvm-svn: 367628

4 years agoRevert r366980: "[lit] Protect full test suite from FILECHECK_OPTS"
Joel E. Denny [Thu, 1 Aug 2019 22:26:51 +0000 (22:26 +0000)]
Revert r366980: "[lit] Protect full test suite from FILECHECK_OPTS"

Windows bots are broken.  See recent D65335 and D65156 comments.

llvm-svn: 367627

4 years agoRevert r367123: "[llvm] [lit/tests] Replace 'env -u' with more portable construct"
Joel E. Denny [Thu, 1 Aug 2019 22:26:37 +0000 (22:26 +0000)]
Revert r367123: "[llvm] [lit/tests] Replace 'env -u' with more portable construct"

Must be reverted in order to revert r366980, which breaks windows
bots.  See recent D65335 and D65156 comments.

llvm-svn: 367626

4 years ago[NFC] Remove extra __has_feature
JF Bastien [Thu, 1 Aug 2019 22:19:53 +0000 (22:19 +0000)]
[NFC] Remove extra __has_feature

It's already in Compiler.h

llvm-svn: 367625

4 years agoRelax load store vectorizer pointer strip checks
Stanislav Mekhanoshin [Thu, 1 Aug 2019 22:18:56 +0000 (22:18 +0000)]
Relax load store vectorizer pointer strip checks

The previous change to fix crash in the vectorizer introduced
performance regressions. The condition to preserve pointer
address space during the search is too tight, we only need to
match the size.

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

llvm-svn: 367624

4 years agoChanges to improve CodeView debug info type record inline comments
Nilanjana Basu [Thu, 1 Aug 2019 22:05:14 +0000 (22:05 +0000)]
Changes to improve CodeView debug info type record inline comments

Signed-off-by: Nilanjana Basu <nilanjana.basu87@gmail.com>
llvm-svn: 367623

4 years agoFix Windows branch of FileManagerTest changes
Harlan Haskins [Thu, 1 Aug 2019 21:58:56 +0000 (21:58 +0000)]
Fix Windows branch of FileManagerTest changes

llvm-svn: 367622

4 years agoFix use-after-move in ClangBasicTests
Harlan Haskins [Thu, 1 Aug 2019 21:50:16 +0000 (21:50 +0000)]
Fix use-after-move in ClangBasicTests

llvm-svn: 367620

4 years ago[WebAssembly] Fixed relocation errors having no location.
Wouter van Oortmerssen [Thu, 1 Aug 2019 21:34:54 +0000 (21:34 +0000)]
[WebAssembly] Fixed relocation errors having no location.

Summary:
Fixes: https://bugs.llvm.org/show_bug.cgi?id=42441

Used to print:

<unknown>:0: error: Cannot represent a difference across sections

(the location was null).

Now prints:

err.s:20:3: error: Cannot represent a difference across sections
  i32.const foo-bar
  ^

Note: I looked at adding a test for this, but I don't think it is
worth it. We're not testing error formatting in the Wasm backend :)

Reviewers: sbc100, jgravelle-google

Subscribers: dschuff, aheejin, sunfish, llvm-commits

Tags: #llvm

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

llvm-svn: 367619

4 years ago[clang] Change FileManager to use llvm::ErrorOr instead of null on failure
Harlan Haskins [Thu, 1 Aug 2019 21:32:04 +0000 (21:32 +0000)]
[clang] Change FileManager to use llvm::ErrorOr instead of null on failure

Summary:
Currently, clang's FileManager uses NULL as an indicator that a particular file
did not exist, but would not propagate errors like permission issues. Instead,
teach FileManager to use llvm::ErrorOr internally and return rich errors for
failures.

Reviewers: arphaman, bruno, martong, shafik

Subscribers: nemanjai, kbarton, MaskRay, jkorous, dexonsmith, kadircet, jsji, cfe-commits, lldb-commits

Tags: #clang, #lldb

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

llvm-svn: 367618

4 years ago[clang-tools-extra] Adopt FileManager's error-returning APIs
Harlan Haskins [Thu, 1 Aug 2019 21:32:01 +0000 (21:32 +0000)]
[clang-tools-extra] Adopt FileManager's error-returning APIs

The FileManager has been updated to return llvm::ErrorOr from getFile
and getDirectory, this commit updates all the callers of those APIs from
clang.

llvm-svn: 367617

4 years ago[clang] Adopt new FileManager error-returning APIs
Harlan Haskins [Thu, 1 Aug 2019 21:31:56 +0000 (21:31 +0000)]
[clang] Adopt new FileManager error-returning APIs

Update the callers of FileManager::getFile and FileManager::getDirectory to handle the new llvm::ErrorOr-returning methods.

Signed-off-by: Harlan Haskins <harlan@apple.com>
llvm-svn: 367616

4 years ago[clang] Adopt llvm::ErrorOr in FileManager methods
Harlan Haskins [Thu, 1 Aug 2019 21:31:49 +0000 (21:31 +0000)]
[clang] Adopt llvm::ErrorOr in FileManager methods

Previously, the FileManager would use NULL returns to signify whether a file existed, but that doesn’t cover permissions issues or anything else that might occur while trying to stat or read a file. Instead, convert getFile and getDirectory into returning llvm::ErrorOr

Signed-off-by: Harlan Haskins <harlan@apple.com>
llvm-svn: 367615