platform/upstream/llvm.git
5 years agoFix const/non-const lambda return type warning. NFCI.
Simon Pilgrim [Wed, 10 Jul 2019 10:45:09 +0000 (10:45 +0000)]
Fix const/non-const lambda return type warning. NFCI.

llvm-svn: 365613

5 years agoFix "result of 32-bit shift implicitly converted to 64 bits" warning. NFCI.
Simon Pilgrim [Wed, 10 Jul 2019 10:34:44 +0000 (10:34 +0000)]
Fix "result of 32-bit shift implicitly converted to 64 bits" warning. NFCI.

llvm-svn: 365612

5 years ago[SimpleLoopUnswitch] Don't consider unswitching `switch` insructions with one unique...
Serguei Katkov [Wed, 10 Jul 2019 10:25:22 +0000 (10:25 +0000)]
[SimpleLoopUnswitch] Don't consider unswitching `switch` insructions with one unique successor

Only instructions with two or more unique successors should be considered for unswitching.

Patch Author: Daniil Suchkov.

Reviewers: reames, asbirlea, skatkov
Reviewed By: skatkov
Subscribers: hiraditya, llvm-commits
Differential Revision: https://reviews.llvm.org/D64404

llvm-svn: 365611

5 years ago[AArch64] Fix vector vuqadd intrinsics operands
Diogo N. Sampaio [Wed, 10 Jul 2019 09:58:51 +0000 (09:58 +0000)]
[AArch64] Fix vector vuqadd intrinsics operands

Summary:
Change the vuqadd vector instrinsics to have the second argument as unsigned values, not signed,
accordingly to https://developer.arm.com/architectures/instruction-sets/simd-isas/neon/intrinsics

Reviewers: LukeCheeseman, ostannard

Reviewed By: ostannard

Subscribers: javed.absar, kristof.beyls, cfe-commits

Tags: #clang

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

llvm-svn: 365609

5 years ago[NFC][AArch64] Fix vector vsqadd intrinsics operands
Diogo N. Sampaio [Wed, 10 Jul 2019 09:58:03 +0000 (09:58 +0000)]
[NFC][AArch64] Fix vector vsqadd intrinsics operands

Summary:
Change the vsqadd vector instrinsics to have the second argument as signed values, not unsigned,
accordingly to https://developer.arm.com/architectures/instruction-sets/simd-isas/neon/intrinsics

Reviewers: LukeCheeseman, ostannard

Reviewed By: ostannard

Subscribers: javed.absar, kristof.beyls, cfe-commits

Tags: #clang

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

llvm-svn: 365608

5 years ago[clangd] Stop recording tokens before running clang-tidy
Ilya Biryukov [Wed, 10 Jul 2019 09:28:35 +0000 (09:28 +0000)]
[clangd] Stop recording tokens before running clang-tidy

modernize-trailing-return-type runs the preprocessor, breaking the token
collection logic.

This lead to a crash before, see the new test for a repro.

llvm-svn: 365607

5 years ago[clangd] Consume error to avoid assertion failures
Ilya Biryukov [Wed, 10 Jul 2019 09:18:09 +0000 (09:18 +0000)]
[clangd] Consume error to avoid assertion failures

When we fail to calculate #include insertion for a completion item.
Note that this change does not add a test, although that would be good.

llvm-svn: 365606

5 years agoMake functions and member variables distinguishable even after the name style change...
Rui Ueyama [Wed, 10 Jul 2019 09:10:01 +0000 (09:10 +0000)]
Make functions and member variables distinguishable even after the name style change. NFC.

llvm-svn: 365605

5 years ago[ARM] Enable VPUSH/VPOP aliases when either MVE or VFP is present
Mikhail Maltsev [Wed, 10 Jul 2019 08:59:17 +0000 (08:59 +0000)]
[ARM] Enable VPUSH/VPOP aliases when either MVE or VFP is present

Summary:
Use the same predicates as VSTMDB/VLDMIA since VPUSH/VPOP alias to
these.

Patch by Momchil Velikov.

Reviewers: ostannard, simon_tatham, SjoerdMeijer, samparker, t.p.northover, dmgreen

Reviewed By: dmgreen

Subscribers: javed.absar, kristof.beyls, hiraditya, dmgreen, llvm-commits

Tags: #llvm

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

llvm-svn: 365604

5 years ago[docs][llvm-dwarfdump] Normalise some wording
James Henderson [Wed, 10 Jul 2019 08:56:13 +0000 (08:56 +0000)]
[docs][llvm-dwarfdump] Normalise some wording

llvm-svn: 365603

5 years ago[clangd] Added highlighting for class and enum types.
Johan Vikstrom [Wed, 10 Jul 2019 08:41:25 +0000 (08:41 +0000)]
[clangd] Added highlighting for class and enum types.

Summary: Added highlighting for non-builtin types using VisitTypeLoc. Ignoring namespace qualifiers as for now.

Reviewers: hokein, sammccall, ilya-biryukov

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

Tags: #clang

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

llvm-svn: 365602

5 years ago[test/Object/nm-trivial-object.test] - Remove 4 precompiled binaries.
George Rimar [Wed, 10 Jul 2019 08:40:11 +0000 (08:40 +0000)]
[test/Object/nm-trivial-object.test] - Remove 4 precompiled binaries.

This converts 5 precompiled binaries to YAMLs,
removes 4 from inputs and performs a cleanup.

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

llvm-svn: 365601

5 years ago[SimpleLoopUnswitch] Add a test case exposing a bug
Serguei Katkov [Wed, 10 Jul 2019 08:25:48 +0000 (08:25 +0000)]
[SimpleLoopUnswitch] Add a test case exposing a bug

This test exposes a bug in SimpleLoopUnswitch that leads to a crash on
assert(SuccessorsCount > 1 && "Cannot unswitch a condition without multiple distinct successors!");
when SimpleLoopUnswitch considers unswitching of a loop by a switch with one successor.

Fix will be submitted soon.

Patch Author: Daniil Suchkov.

Reviewers: reames, asbirlea, skatkov
Reviewed By: skatkov
Subscribers: zzheng, llvm-commits
Differential Revision: https://reviews.llvm.org/D64403

llvm-svn: 365600

5 years ago[Syntax] Add assertion to catch invalid tokens early. NFC
Ilya Biryukov [Wed, 10 Jul 2019 08:24:42 +0000 (08:24 +0000)]
[Syntax] Add assertion to catch invalid tokens early. NFC

To help with identifiying root cause of a crash we are seeing.

llvm-svn: 365599

5 years ago[NFC][AArch64] Fix vector vqtb[lx][1-4]_s8 operand
Diogo N. Sampaio [Wed, 10 Jul 2019 08:16:49 +0000 (08:16 +0000)]
[NFC][AArch64] Fix vector vqtb[lx][1-4]_s8 operand

Summary:
Change the vqtb[lx][1-4]_s8 instrinsics to have the last argument as vector of unsigned valuse, not
signed, accordingly to https://developer.arm.com/architectures/instruction-sets/simd-isas/neon/intrinsics

Reviewers: LukeCheeseman, DavidSpickett

Reviewed By: DavidSpickett

Subscribers: DavidSpickett, javed.absar, kristof.beyls, cfe-commits

Tags: #clang

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

llvm-svn: 365598

5 years agoSilence gcc warning by adding parentheses to condition [NFC]
Mikael Holmen [Wed, 10 Jul 2019 06:18:03 +0000 (06:18 +0000)]
Silence gcc warning by adding parentheses to condition [NFC]

Without this gcc 7.4.0 complains with

  ../include/llvm/CodeGen/GlobalISel/LegalizationArtifactCombiner.h:457:54: error: suggest parentheses around '&&' within '||' [-Werror=parentheses]
                    isArtifactCast(TmpDef->getOpcode()) &&
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
                        "Expecting copy or artifact cast here");
                        ~

llvm-svn: 365597

5 years ago[Coding style change] Rename variables so that they start with a lowercase letter
Rui Ueyama [Wed, 10 Jul 2019 05:00:37 +0000 (05:00 +0000)]
[Coding style change] Rename variables so that they start with a lowercase letter

This patch is mechanically generated by clang-llvm-rename tool that I wrote
using Clang Refactoring Engine just for creating this patch. You can see the
source code of the tool at https://reviews.llvm.org/D64123. There's no manual
post-processing; you can generate the same patch by re-running the tool against
lld's code base.

Here is the main discussion thread to change the LLVM coding style:
https://lists.llvm.org/pipermail/llvm-dev/2019-February/130083.html
In the discussion thread, I proposed we use lld as a testbed for variable
naming scheme change, and this patch does that.

I chose to rename variables so that they are in camelCase, just because that
is a minimal change to make variables to start with a lowercase letter.

Note to downstream patch maintainers: if you are maintaining a downstream lld
repo, just rebasing ahead of this commit would cause massive merge conflicts
because this patch essentially changes every line in the lld subdirectory. But
there's a remedy.

clang-llvm-rename tool is a batch tool, so you can rename variables in your
downstream repo with the tool. Given that, here is how to rebase your repo to
a commit after the mass renaming:

1. rebase to the commit just before the mass variable renaming,
2. apply the tool to your downstream repo to mass-rename variables locally, and
3. rebase again to the head.

Most changes made by the tool should be identical for a downstream repo and
for the head, so at the step 3, almost all changes should be merged and
disappear. I'd expect that there would be some lines that you need to merge by
hand, but that shouldn't be too many.

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

llvm-svn: 365595

5 years agoFix modular build issues caused by BitCodes.h
Kristina Brooks [Wed, 10 Jul 2019 03:52:31 +0000 (03:52 +0000)]
Fix modular build issues caused by BitCodes.h

Consolidate llvm::BWH_* statics into an enum to fix
module build issues. This fixes the LLVM_Bitcode module,
getting rid of -Wmodules-ambiguous-internal-linkage.

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

llvm-svn: 365594

5 years agoRevert accidental change to file
Aaron Smith [Wed, 10 Jul 2019 03:41:34 +0000 (03:41 +0000)]
Revert accidental change to file

llvm-svn: 365593

5 years agoTry again to move common functionality from ProcessWindows into ProcessDebugger
Aaron Smith [Wed, 10 Jul 2019 03:34:57 +0000 (03:34 +0000)]
Try again to move common functionality from ProcessWindows into ProcessDebugger

This reverts commit ed499a36b67cf46cbf66052cfe374c80a595f1c1 and addresses
a problem causing a Windows build bot to hang.

llvm-svn: 365592

5 years ago[ubsan][test] Restore float-divide-by-zero test
Fangrui Song [Wed, 10 Jul 2019 01:53:11 +0000 (01:53 +0000)]
[ubsan][test] Restore float-divide-by-zero test

Removed by rCTE365307 to fix buildbots. It can be restored now because D64317/rC365587 brought back -fsanitize=float-divide-by-zero

llvm-svn: 365591

5 years ago[analyzer] CastValueChecker: Remove a dump()
Csaba Dabis [Wed, 10 Jul 2019 00:50:01 +0000 (00:50 +0000)]
[analyzer] CastValueChecker: Remove a dump()

Summary: Fix a nit.
llvm-svn: 365590

5 years ago[X86] Limit getTargetConstantFromNode to only work on NormalLoads not extending loads.
Craig Topper [Wed, 10 Jul 2019 00:40:01 +0000 (00:40 +0000)]
[X86] Limit getTargetConstantFromNode to only work on NormalLoads not extending loads.

This seems to fix a failure reported by Jordan Rupprecht, but we
don't have a reduced test case yet.

llvm-svn: 365589

5 years ago[Support] Move llvm::MemoryBuffer to sys::fs::file_t
Reid Kleckner [Wed, 10 Jul 2019 00:34:13 +0000 (00:34 +0000)]
[Support] Move llvm::MemoryBuffer to sys::fs::file_t

Summary:
On Windows, Posix integer file descriptors are a compatibility layer
over native file handles provided by the C runtime. There is a hard
limit on the maximum number of file descriptors that a process can open,
and the limit is 8192. LLD typically doesn't run into this limit because
it opens input files, maps them into memory, and then immediately closes
the file descriptor. This prevents it from running out of FDs.

For various reasons, I'd like to open handles to every input file and
keep them open during linking. That requires migrating MemoryBuffer over
to taking open native file handles instead of integer FDs.

Reviewers: aganea, Bigcheese

Reviewed By: aganea

Subscribers: smeenai, silvas, mehdi_amini, hiraditya, steven_wu, dexonsmith, dang, llvm-commits, zturner

Tags: #llvm

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

llvm-svn: 365588

5 years ago[Driver] Add float-divide-by-zero back to supported sanitizers after D63793/rC365272
Fangrui Song [Wed, 10 Jul 2019 00:30:02 +0000 (00:30 +0000)]
[Driver] Add float-divide-by-zero back to supported sanitizers after D63793/rC365272

D63793 removed float-divide-by-zero from the "undefined" set but it
failed to add it to getSupportedSanitizers(), thus the sanitizer is
rejected by the driver:

    clang-9: error: unsupported option '-fsanitize=float-divide-by-zero' for target 'x86_64-unknown-linux-gnu'

Also, add SanitizerMask::FloatDivideByZero to a few other masks to make -fsanitize-trap, -fsanitize-recover, -fsanitize-minimal-runtime and -fsanitize-coverage work.

Reviewed By: rsmith, vitalybuka

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

llvm-svn: 365587

5 years agoAMDGPU/GlobalISel: Add support for wide loads >= 256-bits
Tom Stellard [Wed, 10 Jul 2019 00:22:41 +0000 (00:22 +0000)]
AMDGPU/GlobalISel: Add support for wide loads >= 256-bits

Summary:
This adds support for the most commonly used wide load types:
<8xi32>, <16xi32>, <4xi64>, and <8xi64>

Reviewers: arsenm

Reviewed By: arsenm

Subscribers: hiraditya, kzhuravl, jvesely, wdng, nhaehnle, yaxunl, rovka, kristof.beyls, dstuttard, tpr, t-tye, volkan, Petar.Avramovic, llvm-commits

Tags: #llvm

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

llvm-svn: 365586

5 years ago[analyzer] CastValueChecker: Model casts
Csaba Dabis [Wed, 10 Jul 2019 00:20:03 +0000 (00:20 +0000)]
[analyzer] CastValueChecker: Model casts

Summary:
It models the LLVM casts:
- `cast<>`
- `dyn_cast<>`
- `cast_or_null<>`
- `dyn_cast_or_null<>`

It has a very basic support without checking the `classof()` function.

(It reapplies the reverted 'llvm-svn: 365582' patch with proper test file.)

Reviewed By: NoQ

Tags: #clang

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

llvm-svn: 365585

5 years agoRevert "[analyzer] CastValueChecker: Model casts"
Csaba Dabis [Tue, 9 Jul 2019 23:47:09 +0000 (23:47 +0000)]
Revert "[analyzer] CastValueChecker: Model casts"

This reverts commit 27cf6664437efd640bb6db5594bafcce68fa2854.

llvm-svn: 365584

5 years agoGlobalISel: Implement lower for G_FCOPYSIGN
Matt Arsenault [Tue, 9 Jul 2019 23:34:29 +0000 (23:34 +0000)]
GlobalISel: Implement lower for G_FCOPYSIGN

In SelectionDAG AMDGPU treated these as legal, but this was mostly
because the bitcasts required for FP types were painful. Theoretically
the bitpattern should eventually match to bfi, so don't bother trying
to get the patterns to import.

llvm-svn: 365583

5 years ago[analyzer] CastValueChecker: Model casts
Csaba Dabis [Tue, 9 Jul 2019 23:33:23 +0000 (23:33 +0000)]
[analyzer] CastValueChecker: Model casts

Summary:
It models the LLVM casts:
- `cast<>`
- `dyn_cast<>`
- `cast_or_null<>`
- `dyn_cast_or_null<>`

It has a very basic support without checking the `classof()` function.

Reviewed By: NoQ

Tags: #clang

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

llvm-svn: 365582

5 years agoRevert [clang] DirectoryWatcher
Reid Kleckner [Tue, 9 Jul 2019 23:22:01 +0000 (23:22 +0000)]
Revert [clang] DirectoryWatcher

This reverts r365574 (git commit 31babea94a3ed38a140540f2252cf043dacec1f7)

llvm-svn: 365581

5 years ago[Bitcode] Explicitly include Bitstream/BitCodes.h and BitstreamWriter.h
Francis Visoiu Mistrih [Tue, 9 Jul 2019 23:20:01 +0000 (23:20 +0000)]
[Bitcode] Explicitly include Bitstream/BitCodes.h and BitstreamWriter.h

This fixes a modules issue.

llvm-svn: 365580

5 years ago[MS] Treat ignored explicit calling conventions as an explicit __cdecl
Reid Kleckner [Tue, 9 Jul 2019 23:17:43 +0000 (23:17 +0000)]
[MS] Treat ignored explicit calling conventions as an explicit __cdecl

The CCCR_Ignore action is only used for Microsoft calling conventions,
mainly because MSVC does not warn when a calling convention would be
ignored by the current target. This behavior is actually somewhat
important, since windows.h uses WINAPI (which expands to __stdcall)
widely. This distinction didn't matter much before the introduction of
__vectorcall to x64 and the ability to make that the default calling
convention with /Gv. Now, we can't just ignore __stdcall for x64, we
have to treat it as an explicit __cdecl annotation.

Fixes PR42531

llvm-svn: 365579

5 years ago[docs][Remarks] Add documentation for remarks in LLVM
Francis Visoiu Mistrih [Tue, 9 Jul 2019 23:16:59 +0000 (23:16 +0000)]
[docs][Remarks] Add documentation for remarks in LLVM

This adds documentation that describes remarks in LLVM.

It aims at explaining what remarks are, how to enable them, and what
users can do with the different modes.

It lists all the available flags in LLVM (excluding clang), and
describes the expected YAML structure as well as the tools that support
the YAML format today.

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

llvm-svn: 365578

5 years ago[X86] Don't form extloads in combineExtInVec unless the load extension is legal.
Craig Topper [Tue, 9 Jul 2019 23:05:54 +0000 (23:05 +0000)]
[X86] Don't form extloads in combineExtInVec unless the load extension is legal.

This should prevent doing this on pre-sse4.1 targets or for 256
bit vectors without avx2.

I don't know of a failure from this. Op legalization will probably
take care of, but seemed better to be safe.

llvm-svn: 365577

5 years ago[clangd] fix assert in test after r365531.
Sam McCall [Tue, 9 Jul 2019 23:05:20 +0000 (23:05 +0000)]
[clangd] fix assert in test after r365531.

Unverified because CMake/ninja seems to be broken...

llvm-svn: 365576

5 years agoAMDGPU/GlobalISel: Fix legality for G_BUILD_VECTOR
Matt Arsenault [Tue, 9 Jul 2019 22:48:04 +0000 (22:48 +0000)]
AMDGPU/GlobalISel: Fix legality for G_BUILD_VECTOR

llvm-svn: 365575

5 years ago[clang] DirectoryWatcher
Jan Korous [Tue, 9 Jul 2019 22:44:48 +0000 (22:44 +0000)]
[clang] DirectoryWatcher

Asynchronously monitors specified directory for changes and passes notifications to provided callback.

Dependency for index-while-building.

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

llvm-svn: 365574

5 years ago[AMDGPU] gfx908 v_pk_fmac_f16 support
Stanislav Mekhanoshin [Tue, 9 Jul 2019 22:42:24 +0000 (22:42 +0000)]
[AMDGPU] gfx908 v_pk_fmac_f16 support

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

llvm-svn: 365573

5 years agogn build: Merge r365536.
Peter Collingbourne [Tue, 9 Jul 2019 22:37:51 +0000 (22:37 +0000)]
gn build: Merge r365536.

llvm-svn: 365572

5 years agogn build: Merge r365532.
Peter Collingbourne [Tue, 9 Jul 2019 22:37:41 +0000 (22:37 +0000)]
gn build: Merge r365532.

llvm-svn: 365571

5 years agogn build: Merge r365541.
Peter Collingbourne [Tue, 9 Jul 2019 22:37:25 +0000 (22:37 +0000)]
gn build: Merge r365541.

llvm-svn: 365570

5 years agogn build: Merge r365531.
Peter Collingbourne [Tue, 9 Jul 2019 22:37:09 +0000 (22:37 +0000)]
gn build: Merge r365531.

llvm-svn: 365569

5 years agoAdd lldb type unit support to the release notes
Pavel Labath [Tue, 9 Jul 2019 22:36:43 +0000 (22:36 +0000)]
Add lldb type unit support to the release notes

Reviewers: JDevlieghere, teemperor

Subscribers: llvm-commits, lldb-commits

Tags: #llvm

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

llvm-svn: 365568

5 years ago[lldb] Quick Fix: IRExecutionUnit check pointer before access it
Alex Langford [Tue, 9 Jul 2019 22:24:54 +0000 (22:24 +0000)]
[lldb] Quick Fix: IRExecutionUnit check pointer before access it

Summary:
Move checking pointer code block before accessing the pointer
This caused lldb to crash when testing on Android

Patch by Wanyi Ye!

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

llvm-svn: 365567

5 years agoGlobalISel: Combine unmerge of merge with intermediate cast
Matt Arsenault [Tue, 9 Jul 2019 22:19:13 +0000 (22:19 +0000)]
GlobalISel: Combine unmerge of merge with intermediate cast

This eliminates some illegal intermediate vectors when operations are
scalarized.

llvm-svn: 365566

5 years ago[Profile] Support raw/indexed profiles larger than 4GB
Vedant Kumar [Tue, 9 Jul 2019 22:01:04 +0000 (22:01 +0000)]
[Profile] Support raw/indexed profiles larger than 4GB

rdar://45955976

llvm-svn: 365565

5 years ago[llvm-objdump] Keep warning for --disassemble-functions in correct order.
Yuanfang Chen [Tue, 9 Jul 2019 21:53:33 +0000 (21:53 +0000)]
[llvm-objdump] Keep warning for --disassemble-functions in correct order.

relative to normal output when dumping archive files.

prepare for PR35351.

Reviewers: jhenderson, grimar, MaskRay, rupprecht

Reviewed by: MaskRay, jhenderson

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

llvm-svn: 365564

5 years ago[AMDGPU] gfx908 mAI instructions, MC part
Stanislav Mekhanoshin [Tue, 9 Jul 2019 21:43:09 +0000 (21:43 +0000)]
[AMDGPU] gfx908 mAI instructions, MC part

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

llvm-svn: 365563

5 years agobuild: use multiple `install` rather than building up a list
Saleem Abdulrasool [Tue, 9 Jul 2019 21:43:01 +0000 (21:43 +0000)]
build: use multiple `install` rather than building up a list

Rather than building up a list to iterate over later, just create multiple
install commands based on the configuration. This makes it easier to see what
is getting installed and allows for the install handling to be centralised. NFC

llvm-svn: 365562

5 years ago[lldb_test_suite] Fix lldb test suite targeting remote Android
Alex Langford [Tue, 9 Jul 2019 21:35:58 +0000 (21:35 +0000)]
[lldb_test_suite] Fix lldb test suite targeting remote Android

Summary:
Fixed `Android.rules` for running test suite on remote android
- the build configuration is not compatible with ndk structure, change it to link to static libc++
- generally clang should be able to use libc++ and will link against the right library, but some libc++ installations require the user manually link libc++abi.
- add flag `-lc++abi` to fix the test binary build failure

Added `skipIfTargetAndroid` `skipUnlessTargetAndroid` for better test support
- the `skipIfPlatform` method will ask `lldbplatformutil.getPlatform()` for platform info which is actually the os type, and //Android// is not os type but environment
- create this function to handle the android target condition

**To Run Test on Remote Android**
1 start lldb-server on your devices
2 run lldb-dotest with following configuration:
`./lldb-dotest --out-of-tree-debugserver --arch aarch64 --platform-name remote-android --platform-url connect://localhost:12345 --platform-working-dir /data/local/tmp/ --compiler your/ndk/clang`

Reviewers: xiaobai, labath

Reviewed By: labath

Subscribers: labath, javed.absar, kristof.beyls, srhines, lldb-commits

Tags: #lldb

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

llvm-svn: 365561

5 years agoReland "[TSan] Improve handling of stack pointer mangling in {set,long}jmp, pt.8"
Julian Lettner [Tue, 9 Jul 2019 21:27:37 +0000 (21:27 +0000)]
Reland "[TSan] Improve handling of stack pointer mangling in {set,long}jmp, pt.8"

Fix compilation errors related to `SANITIZER_GO` `#ifdef`s.

Refine longjmp key management.  For Linux, re-implement key retrieval in
C (instead of assembly).  Removal of `InitializeGuardPtr` and a final
round of cleanups will be done in the next commit.

Reviewed By: dvyukov

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

> llvm-svn: 365513

llvm-svn: 365560

5 years ago[Docs] Replace SVN revisions with lldb versions
Dave Lee [Tue, 9 Jul 2019 21:21:45 +0000 (21:21 +0000)]
[Docs] Replace SVN revisions with lldb versions

Summary: Replaces references to svn commits with the lldb version number those commits first appeared in. Themotivation is to show that these features are no longer that new and can generally be adopted.

Reviewers: JDevlieghere

Subscribers: lldb-commits

Tags: #lldb

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

llvm-svn: 365559

5 years agoXFAIL clang/test/Headers/max_align.c on i686
Andus Yu [Tue, 9 Jul 2019 21:06:34 +0000 (21:06 +0000)]
XFAIL clang/test/Headers/max_align.c on i686

llvm-svn: 365558

5 years agoUse the Itanium C++ ABI for the pipe_builtin.cl test
Reid Kleckner [Tue, 9 Jul 2019 21:02:06 +0000 (21:02 +0000)]
Use the Itanium C++ ABI for the pipe_builtin.cl test

Certain OpenCL constructs cannot yet be mangled in the MS C++ ABI.
Add a FIXME for it if anyone cares to implement it.

llvm-svn: 365557

5 years agoDe-templatize non-dependent VS macro logic, NFC
Reid Kleckner [Tue, 9 Jul 2019 20:57:28 +0000 (20:57 +0000)]
De-templatize non-dependent VS macro logic, NFC

These macro definitions don't depend on the template parameter, so they
don't need to be part of the template. Move them to a .cpp file.

llvm-svn: 365556

5 years ago[CXX] Exercise all paths through these tests.
Paul Robinson [Tue, 9 Jul 2019 20:49:07 +0000 (20:49 +0000)]
[CXX] Exercise all paths through these tests.

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

llvm-svn: 365555

5 years ago[TSan] Refine longjmp key management on Darwin
Julian Lettner [Tue, 9 Jul 2019 20:47:37 +0000 (20:47 +0000)]
[TSan] Refine longjmp key management on Darwin

NFC.

llvm-svn: 365554

5 years ago[lld][WebAssembly] Report undefined symbols during scanRelocations
Sam Clegg [Tue, 9 Jul 2019 20:45:20 +0000 (20:45 +0000)]
[lld][WebAssembly] Report undefined symbols during scanRelocations

This puts handling of undefined symbols in a single location.  Its
also more in line with the ELF backend which only reports undefined
symbols based on relocations.

One side effect is that we no longer report undefined symbols that are
only referenced in GC'd sections.

This also fixes a crash reported in the emscripten toolchain:
https://github.com/emscripten-core/emscripten/issues/8930.

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

llvm-svn: 365553

5 years ago[SLP] Optimize getSpillCost(); NFCI
Nikita Popov [Tue, 9 Jul 2019 20:24:44 +0000 (20:24 +0000)]
[SLP] Optimize getSpillCost(); NFCI

For a given set of live values, the spill cost will always be the
same for each call. Compute the cost once and multiply it by the
number of calls.

(I'm not sure this spill cost modeling makes sense if there are
multiple calls, as the spill cost will likely be shared across
calls in that case. But that's how it currently works.)

llvm-svn: 365552

5 years agohwasan: Improve precision of checks using short granule tags.
Peter Collingbourne [Tue, 9 Jul 2019 20:22:36 +0000 (20:22 +0000)]
hwasan: Improve precision of checks using short granule tags.

A short granule is a granule of size between 1 and `TG-1` bytes. The size
of a short granule is stored at the location in shadow memory where the
granule's tag is normally stored, while the granule's actual tag is stored
in the last byte of the granule. This means that in order to verify that a
pointer tag matches a memory tag, HWASAN must check for two possibilities:

* the pointer tag is equal to the memory tag in shadow memory, or
* the shadow memory tag is actually a short granule size, the value being loaded
  is in bounds of the granule and the pointer tag is equal to the last byte of
  the granule.

Pointer tags between 1 to `TG-1` are possible and are as likely as any other
tag. This means that these tags in memory have two interpretations: the full
tag interpretation (where the pointer tag is between 1 and `TG-1` and the
last byte of the granule is ordinary data) and the short tag interpretation
(where the pointer tag is stored in the granule).

When HWASAN detects an error near a memory tag between 1 and `TG-1`, it
will show both the memory tag and the last byte of the granule. Currently,
it is up to the user to disambiguate the two possibilities.

Because this functionality obsoletes the right aligned heap feature of
the HWASAN memory allocator (and because we can no longer easily test
it), the feature is removed.

Also update the documentation to cover both short granule tags and
outlined checks.

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

llvm-svn: 365551

5 years ago[PoisonChecking] Flesh out complete todo list for full coverage
Philip Reames [Tue, 9 Jul 2019 19:59:39 +0000 (19:59 +0000)]
[PoisonChecking] Flesh out complete todo list for full coverage

Note: I don't actually plan to implement all of the cases at the moment, I'm just documenting them for completeness.  There's a couple of cases left which are practically useful for me in debugging loop transforms, and I'll probably stop there for the moment.
llvm-svn: 365550

5 years ago[X86][AMDGPU][DAGCombiner] Move call to allowsMemoryAccess into isLoadBitCastBenefici...
Craig Topper [Tue, 9 Jul 2019 19:55:28 +0000 (19:55 +0000)]
[X86][AMDGPU][DAGCombiner] Move call to allowsMemoryAccess into isLoadBitCastBeneficial/isStoreBitCastBeneficial to allow X86 to bypass it

Basically the problem is that X86 doesn't set the Fast flag from
allowsMemoryAccess on certain CPUs due to slow unaligned memory
subtarget features. This prevents bitcasts from being folded into
loads and stores. But all vector loads and stores of the same width
are the same cost on X86.

This patch merges the allowsMemoryAccess call into isLoadBitCastBeneficial to allow X86 to skip it.

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

llvm-svn: 365549

5 years agoFix build error for VC STL, use llvm::make_unique
Reid Kleckner [Tue, 9 Jul 2019 19:51:58 +0000 (19:51 +0000)]
Fix build error for VC STL, use llvm::make_unique

llvm-svn: 365548

5 years ago[lld][WebAssembly] Fix name of data section in PIC mode
Sam Clegg [Tue, 9 Jul 2019 19:47:32 +0000 (19:47 +0000)]
[lld][WebAssembly] Fix name of data section in PIC mode

This should always have been ".data".  Without this we treat the
section as a user-defined section in other places (such as the
generation of __start/__stop symbols).

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

llvm-svn: 365547

5 years ago[AMDGPU] gfx908 register file changes
Stanislav Mekhanoshin [Tue, 9 Jul 2019 19:41:51 +0000 (19:41 +0000)]
[AMDGPU] gfx908 register file changes

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

llvm-svn: 365546

5 years ago[OpenMP] Simplify getFloatTypeSemantics
Fangrui Song [Tue, 9 Jul 2019 19:36:22 +0000 (19:36 +0000)]
[OpenMP] Simplify getFloatTypeSemantics

When the float point representations are the same on the host and on the target device,
(`&Target->getLongDoubleFormat() == &AuxTarget->getLongDoubleFormat()`),
we can just use `AuxTarget->getLongDoubleFormat()`.

Reviewed By: ABataev

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

llvm-svn: 365545

5 years ago[libFuzzer] Include FuzzedDataProvider.h in the test without "utils" subdir.
Max Moroz [Tue, 9 Jul 2019 19:28:14 +0000 (19:28 +0000)]
[libFuzzer] Include FuzzedDataProvider.h in the test without "utils" subdir.

Summary:
This way the test would better match the intended usage of the header,
plus it makes some additional testing (e.g. in CI) a bit easier to set up.

Reviewers: morehouse

Reviewed By: morehouse

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

Tags: #llvm, #sanitizers

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

llvm-svn: 365544

5 years ago[PoisonCheker] Support for out of bounds operands on shifts + insert/extractelement
Philip Reames [Tue, 9 Jul 2019 19:26:12 +0000 (19:26 +0000)]
[PoisonCheker] Support for out of bounds operands on shifts + insert/extractelement

These are sources of poison which don't come from flags, but are clearly documented in the LangRef.  Left off support for scalable vectors for the moment, but should be easy to add if anyone is interested.

llvm-svn: 365543

5 years agoBoilerplate for producing XCOFF object files from the PowerPC backend.
Sean Fertile [Tue, 9 Jul 2019 19:21:01 +0000 (19:21 +0000)]
Boilerplate for producing XCOFF object files from the PowerPC backend.

Stubs out a number of the classes needed to produce a new object file format
(XCOFF) for the powerpc-aix target. For testing input is an empty module which
produces an object file with just a file header.

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

llvm-svn: 365541

5 years ago[X86] LowerToHorizontalOp - use count_if to count non-UNDEF ops. NFCI.
Simon Pilgrim [Tue, 9 Jul 2019 19:19:17 +0000 (19:19 +0000)]
[X86] LowerToHorizontalOp - use count_if to count non-UNDEF ops. NFCI.

llvm-svn: 365540

5 years ago[PoisonChecking] Add validation rules for "exact" on sdiv/udiv
Philip Reames [Tue, 9 Jul 2019 18:56:41 +0000 (18:56 +0000)]
[PoisonChecking] Add validation rules for "exact" on sdiv/udiv

As directly stated in the LangRef, no ambiguity here...

llvm-svn: 365538

5 years ago[ThinLTO] only emit used or referenced CFI records to index
Bob Haarman [Tue, 9 Jul 2019 18:50:55 +0000 (18:50 +0000)]
[ThinLTO] only emit used or referenced CFI records to index

Summary: We emit CFI_FUNCTION_DEFS and CFI_FUNCTION_DECLS to
distributed ThinLTO indices to implement indirect function call
checking.  This change causes us to only emit entries for functions
that are either defined or used by the module we're writing the index
for (instead of all functions in the combined index), which can make
the indices substantially smaller.

Fixes PR42378.

Reviewers: pcc, vitalybuka, eugenis

Subscribers: mehdi_amini, hiraditya, dexonsmith, arphaman, llvm-commits

Tags: #llvm

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

llvm-svn: 365537

5 years agoAdd a transform pass to make the executable semantics of poison explicit in the IR
Philip Reames [Tue, 9 Jul 2019 18:49:29 +0000 (18:49 +0000)]
Add a transform pass to make the executable semantics of poison explicit in the IR

Implements a transform pass which instruments IR such that poison semantics are made explicit. That is, it provides a (possibly partial) executable semantics for every instruction w.r.t. poison as specified in the LLVM LangRef. There are obvious parallels to the sanitizer tools, but this pass is focused purely on the semantics of LLVM IR, not any particular source language.

The target audience for this tool is developers working on or targetting LLVM from a frontend. The idea is to be able to take arbitrary IR (with the assumption of known inputs), and evaluate it concretely after having made poison semantics explicit to detect cases where either a) the original code executes UB, or b) a transform pass introduces UB which didn't exist in the original program.

At the moment, this is mostly the framework and still needs to be fleshed out. By reusing existing code we have decent coverage, but there's a lot of cases not yet handled. What's here is good enough to handle interesting cases though; for instance, one of the recent LFTR bugs involved UB being triggered by integer induction variables with nsw/nuw flags would be reported by the current code.

(See comment in PoisonChecking.cpp for full explanation and context)

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

llvm-svn: 365536

5 years agoTry to appease the Windows build bots.
Sean Fertile [Tue, 9 Jul 2019 18:44:28 +0000 (18:44 +0000)]
Try to appease the Windows build bots.

Several of the conditonal operators commited in llvm-svn: 365524 fail to compile
on the windows buildbots. Converting to an if and early return to try to fix.

llvm-svn: 365535

5 years agoRevert "[TSan] Improve handling of stack pointer mangling in {set,long}jmp, pt.8"
Julian Lettner [Tue, 9 Jul 2019 18:42:01 +0000 (18:42 +0000)]
Revert "[TSan] Improve handling of stack pointer mangling in {set,long}jmp, pt.8"

This reverts commit 521f77e6351fd921f5a81027c7c72addca378989.

llvm-svn: 365534

5 years ago[lldb, windows] Include WindowsError instead of ErrorHandling in ThreadLauncher
Stella Stamenova [Tue, 9 Jul 2019 18:41:31 +0000 (18:41 +0000)]
[lldb, windows] Include WindowsError instead of ErrorHandling in ThreadLauncher

ErrorHandling.h does not include WindowsError.h which is needed for mapWindowsError

llvm-svn: 365533

5 years ago[BPF] Fix a typo in the file name
Yonghong Song [Tue, 9 Jul 2019 18:35:46 +0000 (18:35 +0000)]
[BPF] Fix a typo in the file name

Fixed the file name from BPFAbstrctMemberAccess.cpp to
BPFAbstractMemberAccess.cpp.

Signed-off-by: Yonghong Song <yhs@fb.com>
llvm-svn: 365532

5 years ago[clangd] Rewrite of logic to rebuild the background index serving structures.
Sam McCall [Tue, 9 Jul 2019 18:30:49 +0000 (18:30 +0000)]
[clangd] Rewrite of logic to rebuild the background index serving structures.

Summary:
Previously it was rebuilding every 5s by default, which was much too frequent
in the long run - the goal was to provide an early build. There were also some
bugs. There were also some bugs, and a dedicated thread was used in production
but not tested.

 - rebuilds are triggered by #TUs built, rather than time. This should scale
   more sensibly to fast vs slow machines.
 - there are two separate indexed-TU thresholds to trigger index build: 5 TUs
   for the first build, 100 for subsequent rebuilds.
 - rebuild is always done on the regular indexing threads, and is affected by
   blockUntilIdle. This means unit/lit tests run the production configuration.
 - fixed a bug where we'd rebuild after attempting to load shards, even if there
   were no shards.
 - the BackgroundIndexTests don't really test the subtleties of the rebuild
   policy (for determinism, we call blockUntilIdle, so rebuild-on-idle is enough
   to pass the tests). Instead, we expose the rebuilder as a separate class and
   have fine-grained tests for it.

Reviewers: kadircet

Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, jfb, llvm-commits

Tags: #llvm

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

llvm-svn: 365531

5 years agogn build: Merge r365503.
Peter Collingbourne [Tue, 9 Jul 2019 18:30:38 +0000 (18:30 +0000)]
gn build: Merge r365503.

llvm-svn: 365530

5 years ago[unittest] Add the missing bogus machine register info initialization.
Michael Liao [Tue, 9 Jul 2019 18:22:48 +0000 (18:22 +0000)]
[unittest] Add the missing bogus machine register info initialization.

llvm-svn: 365529

5 years ago[AMDGPU] gfx908 clang target
Stanislav Mekhanoshin [Tue, 9 Jul 2019 18:19:00 +0000 (18:19 +0000)]
[AMDGPU] gfx908 clang target

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

llvm-svn: 365528

5 years ago[lldb-suite] Skip TestMachCore on Windows
Stella Stamenova [Tue, 9 Jul 2019 18:18:02 +0000 (18:18 +0000)]
[lldb-suite] Skip TestMachCore on Windows

This test was originally marked as expected failure on Windows, but it is timing out instead of outright failing now. The expectedFailure attribute does not correctly track timeouts (as in, they don't count as failures), so now this is causing the test suite to fail.

llvm-svn: 365527

5 years ago[lldb, windows] Update two more locations that use LaunchThread to the new function...
Stella Stamenova [Tue, 9 Jul 2019 18:10:36 +0000 (18:10 +0000)]
[lldb, windows] Update two more locations that use LaunchThread to the new function signature

llvm-svn: 365526

5 years ago[AMDGPU] gfx908 target
Stanislav Mekhanoshin [Tue, 9 Jul 2019 18:10:06 +0000 (18:10 +0000)]
[AMDGPU] gfx908 target

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

llvm-svn: 365525

5 years ago[Object][XCOFF] Add support for 64-bit file header and section header dumping.
Sean Fertile [Tue, 9 Jul 2019 18:09:11 +0000 (18:09 +0000)]
[Object][XCOFF] Add support for 64-bit file header and section header dumping.

Adds a readobj dumper for 32-bit and 64-bit section header tables, and extend
support for the file-header dumping to include 64-bit object files. Also
refactors the binary file parsing to be done in a helper function in an attempt
to cleanup error handeling.

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

llvm-svn: 365524

5 years ago[InstCombine] add tests for trunc(load); NFC
Sanjay Patel [Tue, 9 Jul 2019 18:06:16 +0000 (18:06 +0000)]
[InstCombine] add tests for trunc(load); NFC

I'm not sure if transforming any of these is valid as
a target-independent fold, but we might as well have
a few tests here to confirm or deny our position.

llvm-svn: 365523

5 years ago[clangd] Show documentation in hover, and fetch docs from index if needed.
Sam McCall [Tue, 9 Jul 2019 17:59:50 +0000 (17:59 +0000)]
[clangd] Show documentation in hover, and fetch docs from index if needed.

Summary:
I assume showing docs is going to be part of structured hover rendering, but
it's unclear whether that's going to make clangd 9 so this is low-hanging fruit.

(Also fixes a bug uncovered in FormattedString's plain text output: need blank
lines when text follows codeblocks)

Reviewers: kadircet

Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, llvm-commits

Tags: #llvm

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

llvm-svn: 365522

5 years agoAMDGPU: Fix test failing since r365512
Matt Arsenault [Tue, 9 Jul 2019 17:54:34 +0000 (17:54 +0000)]
AMDGPU: Fix test failing since r365512

llvm-svn: 365521

5 years agoRevert "[HardwareLoops] NFC - move hardware loop checking code to isHardwareLoopProfi...
Jinsong Ji [Tue, 9 Jul 2019 17:53:09 +0000 (17:53 +0000)]
Revert "[HardwareLoops] NFC - move hardware loop checking code to isHardwareLoopProfitable()"

This reverts commit d95557306585404893d610784edb3e32f1bfce18.

llvm-svn: 365520

5 years agoAdd lit.local.cfg to llvm-objdump tests
Steven Wu [Tue, 9 Jul 2019 17:47:14 +0000 (17:47 +0000)]
Add lit.local.cfg to llvm-objdump tests

Add configuration file to llvm-objdump tests to treat files with .yaml
extension as tests.

llvm-svn: 365519

5 years ago[ObjC] Add a warning for implicit conversions of a constant non-boolean value to...
Erik Pilkington [Tue, 9 Jul 2019 17:29:40 +0000 (17:29 +0000)]
[ObjC] Add a warning for implicit conversions of a constant non-boolean value to BOOL

rdar://51954400

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

llvm-svn: 365518

5 years agoRemove a comment that has been obsolete since r327679
Nico Weber [Tue, 9 Jul 2019 17:19:47 +0000 (17:19 +0000)]
Remove a comment that has been obsolete since r327679

llvm-svn: 365517

5 years ago[unittest] Add bogus register info.
Michael Liao [Tue, 9 Jul 2019 17:19:01 +0000 (17:19 +0000)]
[unittest] Add bogus register info.

Reviewers: dstenb

Subscribers: llvm-commits

Tags: #llvm

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

llvm-svn: 365516

5 years agoRename llvm/test/tools/llvm-pdbdump to llvm/test/tools/llvm-pdbutil
Nico Weber [Tue, 9 Jul 2019 17:14:24 +0000 (17:14 +0000)]
Rename llvm/test/tools/llvm-pdbdump to llvm/test/tools/llvm-pdbutil

llvm-pdbdump was renamed to llvm-pdbutil long ago. This updates the test
to be where you'd expect them to be.

llvm-svn: 365515

5 years agoMake pdbdump-objfilename test work again
Nico Weber [Tue, 9 Jul 2019 17:02:51 +0000 (17:02 +0000)]
Make pdbdump-objfilename test work again

- The test had extension .yaml, which lit doesn't execute in this
  directory. Rename to .test to make it run, and move the yaml bits
  into a dedicated file, like with all other tests in this dir.

- llvm-pdbdump got renamed to llvm-pdbutil long ago, update test.

- -dbi-module-info got renamed in r305032, update test for this too.

llvm-svn: 365514

5 years ago[TSan] Improve handling of stack pointer mangling in {set,long}jmp, pt.8
Julian Lettner [Tue, 9 Jul 2019 16:49:43 +0000 (16:49 +0000)]
[TSan] Improve handling of stack pointer mangling in {set,long}jmp, pt.8

Refine longjmp key management.  For Linux, re-implement key retrieval in
C (instead of assembly).  Removal of `InitializeGuardPtr` and a final
round of cleanups will be done in the next commit.

Reviewed By: dvyukov

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

llvm-svn: 365513

5 years ago[AMDGPU] Created a sub-register class for the return address operand in the return...
Christudasan Devadasan [Tue, 9 Jul 2019 16:48:42 +0000 (16:48 +0000)]
[AMDGPU] Created a sub-register class for the return address operand in the return instruction.

Function return instruction lowering, currently uses the fixed register pair s[30:31] for holding
the return address. It can be any SGPR pair other than the CSRs. Created an SGPR pair sub-register class
exclusive of the CSRs, and used this regclass while lowering the return instruction.

Reviewed By: arsenm

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

llvm-svn: 365512

5 years ago[RISCV] Fix ICE in isDesirableToCommuteWithShift
Sam Elliott [Tue, 9 Jul 2019 16:24:16 +0000 (16:24 +0000)]
[RISCV] Fix ICE in isDesirableToCommuteWithShift

Summary:
There was an error being thrown from isDesirableToCommuteWithShift in
some tests. This was tracked down to the method being called before
legalisation, with an extended value type, not a machine value type.

In the case I diagnosed, the error was only hit with an instruction sequence
involving `i24`s in the add and shift. `i24` is not a Machine ValueType, it is
instead an Extended ValueType which was causing the issue.

I have added a test to cover this case, and fixed the error in the callback.

Reviewers: asb, luismarques

Reviewed By: asb

Subscribers: hiraditya, rbar, johnrusso, simoncook, apazos, sabuasal, niosHD, kito-cheng, shiva0217, jrtc27, MaskRay, zzheng, edward-jones, rogfer01, MartinMosbeck, brucehoult, the_o, rkruppe, PkmX, jocewei, psnobl, benna, Jim, llvm-commits

Tags: #llvm

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

llvm-svn: 365511

5 years ago[AArch64][GlobalISel] Optimize conditional branches followed by unconditional branches
Amara Emerson [Tue, 9 Jul 2019 16:05:59 +0000 (16:05 +0000)]
[AArch64][GlobalISel] Optimize conditional branches followed by unconditional branches

If we have an icmp->brcond->br sequence where the brcond just branches to the
next block jumping over the br, while the br takes the false edge, then we can
modify the conditional branch to jump to the br's target while inverting the
condition of the incoming icmp. This means we can eliminate the br as an
unconditional branch to the fallthrough block.

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

llvm-svn: 365510