platform/upstream/llvm.git
5 years ago[Attributor] Deduce "dereferenceable" attribute
Hideto Ueno [Tue, 23 Jul 2019 08:16:17 +0000 (08:16 +0000)]
[Attributor] Deduce "dereferenceable" attribute

Summary:
Deduce dereferenceable attribute in Attributor.

These will be added in a later patch.
* dereferenceable(_or_null)_globally (D61652)
* Deduction based on load instruction (similar to D64258)

Reviewers: jdoerfert, sstefan1

Reviewed By: jdoerfert

Subscribers: hiraditya, jfb, llvm-commits

Tags: #llvm

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

llvm-svn: 366788

5 years ago[llvm-objcopy] Allow strip symtab in executables and DSOs
Eugene Leviant [Tue, 23 Jul 2019 08:03:30 +0000 (08:03 +0000)]
[llvm-objcopy] Allow strip symtab in executables and DSOs

Re-commit of the patch after addressing -Wl,--emit-relocs case.
Differential revision: https://reviews.llvm.org/D61672

llvm-svn: 366787

5 years agoFix gold-plugin Windows build
Yi Kong [Tue, 23 Jul 2019 07:41:17 +0000 (07:41 +0000)]
Fix gold-plugin Windows build

r365588 missed one instance of integer file descriptor use in
gold-plugin.cpp.

llvm-svn: 366786

5 years ago[yaml2elf] - Treat the SHN_UNDEF section as kind of regular section.
George Rimar [Tue, 23 Jul 2019 07:38:44 +0000 (07:38 +0000)]
[yaml2elf] - Treat the SHN_UNDEF section as kind of regular section.

We have a logic that adds a few sections implicitly.
Though the SHT_NULL section with section number 0
is an exception.

In D64913 I want to teach yaml2obj to redefine the null section.
And in this patch I add it to the sections list,
to make it kind of a regular section.

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

llvm-svn: 366785

5 years ago[test] Fix the test from the previous commit when run on windows. NFC.
Martin Storsjo [Tue, 23 Jul 2019 07:28:23 +0000 (07:28 +0000)]
[test] Fix the test from the previous commit when run on windows. NFC.

Apparently the escaped dollar sign didn't work the same way in "echo -e"
on windows buildbots.

llvm-svn: 366784

5 years ago[lldb][NFC] Tablegenify disassemble
Raphael Isemann [Tue, 23 Jul 2019 07:15:54 +0000 (07:15 +0000)]
[lldb][NFC] Tablegenify disassemble

llvm-svn: 366783

5 years ago[CrossTU] Added CTU argument to diagnostic consumer create fn.
Balazs Keri [Tue, 23 Jul 2019 07:04:20 +0000 (07:04 +0000)]
[CrossTU] Added CTU argument to diagnostic consumer create fn.

Summary:
The PListDiagnosticConsumer needs a new CTU parameter that is passed
through the create functions.

Reviewers: NoQ, Szelethus, xazax.hun, martong

Reviewed By: Szelethus

Subscribers: rnkovacs, dkrupp, Szelethus, gamesh411, cfe-commits

Tags: #clang

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

llvm-svn: 366782

5 years ago[AMDGPU][NFC] Simplify test file for amdgcn intrinsics
Hideto Ueno [Tue, 23 Jul 2019 06:48:47 +0000 (06:48 +0000)]
[AMDGPU][NFC] Simplify test file for amdgcn intrinsics

Summary: Remove unchecked attribute in the call site and use FileCheck String Substitution for `convergent` check.

Reviewers: nhaehnle

Reviewed By: nhaehnle

Subscribers: kzhuravl, jvesely, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye, llvm-commits

Tags: #llvm

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

llvm-svn: 366781

5 years ago[COFF] Unbreak sorting of mingw comdat .tls sections after SVN r363457
Martin Storsjo [Tue, 23 Jul 2019 06:38:04 +0000 (06:38 +0000)]
[COFF] Unbreak sorting of mingw comdat .tls sections after SVN r363457

Code built for mingw with -fdata-sections will store each TLS variable
in a comdat section, named .tls$$<varname>. Normal TLS variables are
stored in sections named .tls$ with a trailing dollar, which are
sorted after a starter marker (in a later linked object file) in a
section named ".tls" (with no dollar suffix), before an ending marker
in a section named ".tls$ZZZ".

The mingw comdat section suffix stripping introduced in SVN r363457
broke sorting of such tls sections, ending up sorting the stripped
.tls$$<varname> sections (stripped to ".tls") before the start marker
in the section named ".tls".

We could add exceptions to the section name suffix stripping for
.tls (and .CRT, where suffixes always should be honored), but the
more conservative option is probably the reverse; to only apply the
stripping for the normal sections where sorting shouldn't have any
effect.

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

llvm-svn: 366780

5 years ago[DAGCombiner] Make ShrinkLoadReplaceStoreWithStore return an SDValue instead of an...
Craig Topper [Tue, 23 Jul 2019 05:13:39 +0000 (05:13 +0000)]
[DAGCombiner] Make ShrinkLoadReplaceStoreWithStore return an SDValue instead of an SDNode*. NFCI

The function was calling getNode() on an SDValue to return and the
caller turned the result back into a SDValue. So just return the
original SDValue to avoid this.

llvm-svn: 366779

5 years ago[DAGCombiner] Use SDNode::isOperandOf to simplify some code. NFCI
Craig Topper [Tue, 23 Jul 2019 05:13:35 +0000 (05:13 +0000)]
[DAGCombiner] Use SDNode::isOperandOf to simplify some code. NFCI

llvm-svn: 366778

5 years ago[LLVM-C] Improve Bindings to The Internalize Pass
Robert Widmann [Tue, 23 Jul 2019 04:56:44 +0000 (04:56 +0000)]
[LLVM-C] Improve Bindings to The Internalize Pass

Summary: Adds a binding to the internalize pass that allows the caller to pass a function pointer that acts as the visibility-preservation predicate.  Previously, one could only pass an unsigned value (not LLVMBool?) that directed the pass to consider "main" or not.

Reviewers: whitequark, deadalnix, harlanhaskins

Reviewed By: whitequark, harlanhaskins

Subscribers: kren1, hiraditya, llvm-commits, harlanhaskins

Tags: #llvm

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

llvm-svn: 366777

5 years agoImplement most of P1612R1: Relocate endian. Moves the std::endian functionality...
Marshall Clow [Tue, 23 Jul 2019 04:20:19 +0000 (04:20 +0000)]
Implement most of P1612R1: Relocate endian.  Moves the std::endian functionality from 'type-traits' to 'bit'. No other change. The reason that this is 'partial' is that P1621 also recommends a feature-test macro, but I don't have the value for that one yet. In a month or so, I'll add that

llvm-svn: 366776

5 years ago[PowerPC] Replace float load/store pair with integer load/store pair when it's only...
Zi Xuan Wu [Tue, 23 Jul 2019 03:34:40 +0000 (03:34 +0000)]
[PowerPC] Replace float load/store pair with integer load/store pair when it's only used in load/store

Replace float load/store pair with integer load/store pair when it's only used in load/store,
because float load/store instructions cost more cycles then integer load/store.

A typical scenario is when there is a call with more than 13 float arguments passing, we need pass them by stack.
So we need a load/store pair to do such memory operation if the variable is global variable.

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

llvm-svn: 366775

5 years agoInline function call into assert to fix unused variable warning.
Richard Trieu [Tue, 23 Jul 2019 03:10:06 +0000 (03:10 +0000)]
Inline function call into assert to fix unused variable warning.

llvm-svn: 366774

5 years agoMove variable out from debug only section.
Richard Trieu [Tue, 23 Jul 2019 02:59:15 +0000 (02:59 +0000)]
Move variable out from debug only section.

MFI is no longer just needed for an assert.  Move it out of the debug only
section to allow non-assert builds to be able to find it.

llvm-svn: 366773

5 years ago[llvm-lipo] Implement -info
Shoaib Meenai [Tue, 23 Jul 2019 00:42:03 +0000 (00:42 +0000)]
[llvm-lipo] Implement -info

Prints architecture type of all input files.

Patch by Anusha Basana <anusha.basana@gmail.com>

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

llvm-svn: 366772

5 years ago[lldb][test_suite] Fix skipIfTargetAndroid decorator
Alex Langford [Tue, 23 Jul 2019 00:41:00 +0000 (00:41 +0000)]
[lldb][test_suite] Fix skipIfTargetAndroid decorator

Summary:
Delete the duplicate func `skipIfTargetAndroid`
Fix the old one. It didn't work for missing an argument `bugnumber`, this somehow made the decorator failed

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

Patch by Wanyi Ye <kusmour@gmail.com>

llvm-svn: 366771

5 years ago[lldb][test_suite] skip tests of `libstdcpp` on Android and clean up
Alex Langford [Tue, 23 Jul 2019 00:28:26 +0000 (00:28 +0000)]
[lldb][test_suite] skip tests of `libstdcpp` on Android and clean up

Summary: Delete the android target from `libstdcpp` test category, since android no longer support libstdcxx

Reviewers: xiaobai, labath

Reviewed By: labath

Subscribers: srhines, lldb-commits

Tags: #lldb

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

llvm-svn: 366770

5 years agoFixing build error from commit 95cbc3d
Stefan Stipanovic [Mon, 22 Jul 2019 23:58:23 +0000 (23:58 +0000)]
Fixing build error from commit 95cbc3d

[Attributor] Liveness analysis.

Liveness analysis abstract attribute used to indicate which BasicBlocks are dead and can therefore be ignored.
Right now we are only looking at noreturn calls.

Reviewers: jdoerfert, uenoku

Subscribers: hiraditya, llvm-commits

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

llvm-svn: 366769

5 years ago[Logging] Replace LogIfAnyCategoriesSet with LLDB_LOG.
Jonas Devlieghere [Mon, 22 Jul 2019 23:48:01 +0000 (23:48 +0000)]
[Logging] Replace LogIfAnyCategoriesSet with LLDB_LOG.

This patch removes any remaining instances of LogIfAnyCategoriesSet and
replaces them with the LLDB_LOG macro. This in turn made it possible to
make Log::VAPrintf and Log::VAError private.

llvm-svn: 366768

5 years agoRestore tests for lldb-server and lldb-vscode removed at rL366590
Antonio Afonso [Mon, 22 Jul 2019 23:35:05 +0000 (23:35 +0000)]
Restore tests for lldb-server and lldb-vscode removed at rL366590

Summary: This was removed here rL366590 by accident.

Reviewers: xiaobai, jfb

Reviewed By: xiaobai

Subscribers: dexonsmith, srhines, krytarowski, jfb, lldb-commits

Tags: #lldb

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

llvm-svn: 366766

5 years ago[Statepoints] Fix a bug in statepoint lowering for functions w/no-realign-stack
Philip Reames [Mon, 22 Jul 2019 23:33:18 +0000 (23:33 +0000)]
[Statepoints] Fix a bug in statepoint lowering for functions w/no-realign-stack

We were silently using the ABI alignment for all of the stores generated for deopt and gc values.  We'd gotten the alignment of the stack slot itself properly reduced (via MachineFrameInfo's clamping), but having the MMO on the store incorrect was enough for us to generate an aligned store to a unaligned location.

The simplest fix would have been to just pass the alignment to the helper function, but once we do that, the helper function doesn't really help.  So, inline it and directly call the MMO version of DAG.getStore with a properly constructed MMO.

Note that there's a separate performance possibility here.  Even if we *can* realign stacks, we probably don't *want to* if all of the stores are in slowpaths.  But that's a later patch, if at all.  :)

llvm-svn: 366765

5 years agoFix pointer width in test from r366754.
Peter Collingbourne [Mon, 22 Jul 2019 23:32:41 +0000 (23:32 +0000)]
Fix pointer width in test from r366754.

llvm-svn: 366764

5 years agogn build: Wrap two comments to 80 columns
Nico Weber [Mon, 22 Jul 2019 23:23:38 +0000 (23:23 +0000)]
gn build: Wrap two comments to 80 columns

llvm-svn: 366763

5 years ago[DWARF] Add more error handling to debug line parser.
Jonas Devlieghere [Mon, 22 Jul 2019 23:23:34 +0000 (23:23 +0000)]
[DWARF] Add more error handling to debug line parser.

This patch exnteds the error handling in the debug line parser to get
rid of the existing MD5 assertion. I want to reuse the debug line parser
from LLVM in LLDB where we cannot crash on invalid input.

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

llvm-svn: 366762

5 years ago[NFC][clang] Refactor getCompilationPhases()+Types.def step 1.
Puyan Lotfi [Mon, 22 Jul 2019 23:10:10 +0000 (23:10 +0000)]
[NFC][clang] Refactor getCompilationPhases()+Types.def step 1.

Moves list of phases into Types.def table: Currently Types.def contains a
table of strings that are used to assemble a list of compilation phases to be
setup in the clang driver's jobs pipeline. This change makes it so that the table
itself contains the list of phases. A subsequent patch will remove the strings.

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

llvm-svn: 366761

5 years ago[Statepoints] Add a test which shows a miscompile with no-realign-stacks
Philip Reames [Mon, 22 Jul 2019 23:08:56 +0000 (23:08 +0000)]
[Statepoints] Add a test which shows a miscompile with no-realign-stacks

llvm-svn: 366760

5 years agoRevert "Fixing build error from commit 9285295."
Stefan Stipanovic [Mon, 22 Jul 2019 22:55:05 +0000 (22:55 +0000)]
Revert "Fixing build error from commit 9285295."

This reverts commit 95cbc3da8871f43c1ce2b2926afaedcd826202b1.

llvm-svn: 366759

5 years agollvm-objcopy/test: add REQUIRES: shell for use of umask
David Blaikie [Mon, 22 Jul 2019 22:23:52 +0000 (22:23 +0000)]
llvm-objcopy/test: add REQUIRES: shell for use of umask

(follow-up to r365162)

llvm-svn: 366755

5 years agoAnalysis: Don't look through aliases when simplifying GEPs.
Peter Collingbourne [Mon, 22 Jul 2019 22:13:46 +0000 (22:13 +0000)]
Analysis: Don't look through aliases when simplifying GEPs.

It is not safe in general to replace an alias in a GEP with its aliasee
if the alias can be replaced with another definition (i.e. via strong/weak
resolution (linkonce_odr) or via symbol interposition (default visibility
in ELF)) while the aliasee cannot. An example of how this can go wrong is
in the included test case.

I was concerned that this might be a load-bearing misoptimization (it's
possible for us to use aliases to share vtables between base and derived
classes, and on Windows, vtable symbols will always be aliases in RTTI
mode, so this change could theoretically inhibit trivial devirtualization
in some cases), so I built Chromium for Linux and Windows with and without
this change. The file sizes of the resulting binaries were identical, so it
doesn't look like this is going to be a problem.

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

llvm-svn: 366754

5 years agoFixing build error from commit 9285295.
Stefan Stipanovic [Mon, 22 Jul 2019 22:10:59 +0000 (22:10 +0000)]
Fixing build error from commit 9285295.

[Attributor] Liveness analysis.

Liveness analysis abstract attribute used to indicate which BasicBlocks are dead and can therefore be ignored.
Right now we are only looking at noreturn calls.

Reviewers: jdoerfert, uenoku

Subscribers: hiraditya, llvm-commits

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

llvm-svn: 366753

5 years ago[NFC][PatternMatch] Refactor code into a proper "matcher for any integral constant"
Roman Lebedev [Mon, 22 Jul 2019 22:09:24 +0000 (22:09 +0000)]
[NFC][PatternMatch] Refactor code into a proper "matcher for any integral constant"

Having it as a proper matcher is better for reusability elsewhere
(in a follow-up patch.)

llvm-svn: 366752

5 years ago[InstSimplify][NFC] Tests for skipping 'div-by-0' checks before @llvm.umul.with.overflow
Roman Lebedev [Mon, 22 Jul 2019 22:09:11 +0000 (22:09 +0000)]
[InstSimplify][NFC] Tests for skipping 'div-by-0' checks before @llvm.umul.with.overflow

These may remain after @llvm.umul.with.overflow was canonicalized
from the code that was originally doing the check via division.

llvm-svn: 366751

5 years ago[SimplifyCFG][NFC] Test that we fail to flatten CFG in JPEG "sign" value extend pattern
Roman Lebedev [Mon, 22 Jul 2019 22:09:02 +0000 (22:09 +0000)]
[SimplifyCFG][NFC] Test that we fail to flatten CFG in JPEG "sign" value extend pattern

This comes up in JPEG decoding, see e.g.
Figure F.12 – Extending the sign bit of a decoded value in V
of ITU T.81 (JPEG specification).

llvm-svn: 366750

5 years ago[SimplifyCFG][NFC] Test that we fail to flatten CFG after forming @llvm.umul.with...
Roman Lebedev [Mon, 22 Jul 2019 22:08:55 +0000 (22:08 +0000)]
[SimplifyCFG][NFC] Test that we fail to flatten CFG after forming @llvm.umul.with.overflow

Even if we formed @llvm.umul.with.overflow, we are still stuck
with that guard against div-by-zero, which is no longer needed,
because we didn't flatten the CFG.

llvm-svn: 366749

5 years ago[InstCombine][NFC] Tests for canonicalization of unsigned multiply overflow check
Roman Lebedev [Mon, 22 Jul 2019 22:08:45 +0000 (22:08 +0000)]
[InstCombine][NFC] Tests for canonicalization of unsigned multiply overflow check

llvm-svn: 366748

5 years ago[NFC][PhaseOrdering] Add tests showcasing the problems of unsigned multiply overflow...
Roman Lebedev [Mon, 22 Jul 2019 22:08:35 +0000 (22:08 +0000)]
[NFC][PhaseOrdering] Add tests showcasing the problems of unsigned multiply overflow check

While we can form the @llvm.mul.with.overflow easily,
we are still left with that check that was guarding against div-by-0.
And in the second case we won't even flatten the CFG.

llvm-svn: 366747

5 years ago[IndVarSimplify][NFC] Autogenerate check lines in loop_evaluate_1.ll
Roman Lebedev [Mon, 22 Jul 2019 22:08:27 +0000 (22:08 +0000)]
[IndVarSimplify][NFC] Autogenerate check lines in loop_evaluate_1.ll

Being affected by upcoming patch.

llvm-svn: 366746

5 years agoRemove Xcode project remnants
Jonas Devlieghere [Mon, 22 Jul 2019 21:51:04 +0000 (21:51 +0000)]
Remove Xcode project remnants

llvm-svn: 366745

5 years ago[Driver] Set the default win32-macho debug format to DWARF
Vedant Kumar [Mon, 22 Jul 2019 21:46:45 +0000 (21:46 +0000)]
[Driver] Set the default win32-macho debug format to DWARF

rdar://53267670

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

llvm-svn: 366744

5 years agoAMDGPU: Don't use SDNodeXForm for DS offset output
Matt Arsenault [Mon, 22 Jul 2019 21:38:11 +0000 (21:38 +0000)]
AMDGPU: Don't use SDNodeXForm for DS offset output

The xform has no real valuewhen it's using out of a complex pattern
output. The complex pattern was already creating TargetConstants with
i16, so this was just unnecessary machinery.

This allows global isel to import the simple cases once the complex
pattern is implemented.

llvm-svn: 366743

5 years agoRemove INSTALL.txt file
Jonas Devlieghere [Mon, 22 Jul 2019 21:33:43 +0000 (21:33 +0000)]
Remove INSTALL.txt file

Its contents are stale and much better documentation can be found either
online or in the docs directory.

llvm-svn: 366742

5 years ago[Docs] Remove stale documentation
Jonas Devlieghere [Mon, 22 Jul 2019 21:26:50 +0000 (21:26 +0000)]
[Docs] Remove stale documentation

This removes a stale piece of documentation about building LLDB with the
Xcode project.

llvm-svn: 366741

5 years ago[LLDB] Remove the Xcode project
Jonas Devlieghere [Mon, 22 Jul 2019 21:20:23 +0000 (21:20 +0000)]
[LLDB] Remove the Xcode project

Finally, after a lot of hard work from a bunch of people, we're in a
state where we can unify LLDB's build system.

This patch removes the hand-maintained Xcode project in favor of using
CMake in combination with the Xcode generator. Going forward, we want to
focus our efforts on improving the generated Xcode project.

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

llvm-svn: 366739

5 years ago[TSan] Enable fiber tests on iOS simulator
Julian Lettner [Mon, 22 Jul 2019 21:13:19 +0000 (21:13 +0000)]
[TSan] Enable fiber tests on iOS simulator

These tests *do not* work on device, but they *do* work in the
simulator.

rdar://53403778

llvm-svn: 366738

5 years agoTemporarily Revert "[Attributor] Liveness analysis." as it's breaking the build.
Eric Christopher [Mon, 22 Jul 2019 21:04:23 +0000 (21:04 +0000)]
Temporarily Revert "[Attributor] Liveness analysis." as it's breaking the build.

This reverts commit 9285295f75a231dc446fa7cbc10a0a391b3434a5.

llvm-svn: 366737

5 years ago[Attributor] Liveness analysis.
Stefan Stipanovic [Mon, 22 Jul 2019 20:54:30 +0000 (20:54 +0000)]
[Attributor] Liveness analysis.

Liveness analysis abstract attribute used to indicate which BasicBlocks are dead and can therefore be ignored.
Right now we are only looking at noreturn calls.

Reviewers: jdoerfert, uenoku

Subscribers: hiraditya, llvm-commits

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

llvm-svn: 366736

5 years ago[NFC][libc++] Add missing EXPLICIT to pair and tuple synopsis
Louis Dionne [Mon, 22 Jul 2019 20:45:23 +0000 (20:45 +0000)]
[NFC][libc++] Add missing EXPLICIT to pair and tuple synopsis

The constructors for std::pair and std::tuple have been made conditionally
explicit, however the synopsis in the headers do not reflect that.

llvm-svn: 366735

5 years ago[runtimes] Don't depend on libpthread on Android
Yi Kong [Mon, 22 Jul 2019 20:41:03 +0000 (20:41 +0000)]
[runtimes] Don't depend on libpthread on Android

r362048 added support for ELF dependent libraries, but broke Android
build since Android does not have libpthread. Remove the dependency on
the Android build.

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

llvm-svn: 366734

5 years ago[Symbol] Improve Variable::GetLanguage
Alex Langford [Mon, 22 Jul 2019 20:14:18 +0000 (20:14 +0000)]
[Symbol] Improve Variable::GetLanguage

Summary:
When trying to ascertain what language a variable belongs to, just
checking the compilation unit is often not enough. In r364845 I added a way to
check for a variable's language type, but didn't put it in Variable itself.
Let's go ahead and put it in Variable.

Reviewers: jingham, clayborg

Subscribers: jdoerfert, lldb-commits

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

llvm-svn: 366733

5 years ago[X86] When using AND+PACKUS in lowerV16I8Shuffle, generate the build vector directly...
Craig Topper [Mon, 22 Jul 2019 19:58:49 +0000 (19:58 +0000)]
[X86] When using AND+PACKUS in lowerV16I8Shuffle, generate the build vector directly in v16i8 with the correct 0x00 or 0xFF elements rather than using another VT and bitcasting it.

The build_vector will become a constant pool load. By using the
desired type initially, it ensures we don't generate a bitcast
of the constant pool load which will need to be folded with
the load.

While experimenting with another patch, I noticed that when the
load type and the constant pool type don't match, then
SimplifyDemandedBits can't handle it. While we should probably
fix that, this was a simple way to fix the issue I saw.

llvm-svn: 366732

5 years ago[NFC][PowerPC]Change ADDIStocHA to ADDIStocHA8 to follow 64-bit naming convention
Jason Liu [Mon, 22 Jul 2019 19:55:33 +0000 (19:55 +0000)]
[NFC][PowerPC]Change ADDIStocHA to ADDIStocHA8 to follow 64-bit naming convention

Summary:

Since we are planning to add ADDIStocHA for 32bit in later patch, we decided
 to change 64bit one first to follow naming convention with 8 behind opcode.

Patch by: Xiangling_L

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

llvm-svn: 366731

5 years ago[libc++] Set __file_ to 0 in basic_filebuf::close() even if fclose fails
Petr Hosek [Mon, 22 Jul 2019 19:54:34 +0000 (19:54 +0000)]
[libc++] Set __file_ to 0 in basic_filebuf::close() even if fclose fails

This issue was detected by ASan in one of our tests. This test manually
invokes basic_filebuf::cloe(). fclose(__h.release() returned a non-zero
exit status, so __file_ wasn't set to 0. Later when basic_filebuf
destructor ran, we would enter the if (__file_) block again leading to
heap-use-after-free error.

The POSIX specification for fclose says that independently of the return
value, fclose closes the underlying file descriptor and any further
access (including another call to fclose()) to the stream results in
undefined behavior. This is exactly what happened in our test case.

To avoid this issue, we have to always set __file_ to 0 independently of
the fclose return value.

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

llvm-svn: 366730

5 years ago[Attributor] NoAlias on return values.
Stefan Stipanovic [Mon, 22 Jul 2019 19:36:27 +0000 (19:36 +0000)]
[Attributor] NoAlias on return values.

Porting function return value attribute noalias to attributor.
This will be followed with a patch for callsite and function argumets.

Reviewers: jdoerfert

Subscribers: lebedev.ri, hiraditya, llvm-commits

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

llvm-svn: 366728

5 years agoStubs out TLOF for AIX and add support for common vars in assembly output.
Sean Fertile [Mon, 22 Jul 2019 19:15:29 +0000 (19:15 +0000)]
Stubs out TLOF for AIX and add support for common vars in assembly output.

Stubs out a TargetLoweringObjectFileXCOFF class, implementing only
SelectSectionForGlobal for common symbols. Also adds an override of
EmitGlobalVariable in PPCAIXAsmPrinter which adds a number of defensive errors
and adds support for emitting common globals.

llvm-svn: 366727

5 years ago[SafeStack] Insert the deref after the offset
Petr Hosek [Mon, 22 Jul 2019 18:52:42 +0000 (18:52 +0000)]
[SafeStack] Insert the deref after the offset

While debugging code that uses SafeStack, we've noticed that LLVM
produces an invalid DWARF. Concretely, in the following example:

  int main(int argc, char* argv[]) {
    std::string value = "";
    printf("%s\n", value.c_str());
    return 0;
  }

DWARF would describe the value variable as being located at:

  DW_OP_breg14 R14+0, DW_OP_deref, DW_OP_constu 0x20, DW_OP_minus

The assembly to get this variable is:

  leaq    -32(%r14), %rbx

The order of operations in the DWARF symbols is incorrect in this case.
Specifically, the deref is incorrect; this appears to be incorrectly
re-inserted in repalceOneDbgValueForAlloca.

With this change which inserts the deref after the offset instead of
before it, LLVM produces correct DWARF:

  DW_OP_breg14 R14-32

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

llvm-svn: 366726

5 years agoWholeProgramDevirt: Teach the pass to respect the global's alignment.
Peter Collingbourne [Mon, 22 Jul 2019 18:50:45 +0000 (18:50 +0000)]
WholeProgramDevirt: Teach the pass to respect the global's alignment.

The bytes inserted before an overaligned global need to be padded according
to the alignment set on the original global in order for the initializer
to meet the global's alignment requirements. The previous implementation
that padded to the pointer width happened to be correct for vtables on most
platforms but may do the wrong thing if the vtable has a larger alignment.

This issue is visible with a prototype implementation of HWASAN for globals,
which will overalign all globals including vtables to 16 bytes.

There is also no padding requirement for the bytes inserted after the global
because they are never read from nor are they significant for alignment
purposes, so stop inserting padding there.

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

llvm-svn: 366725

5 years ago[PowerPC] Fix comment on MO_PLT Target Operand Flag. [NFC]
Sean Fertile [Mon, 22 Jul 2019 18:47:59 +0000 (18:47 +0000)]
[PowerPC] Fix comment on MO_PLT Target Operand Flag. [NFC]

Patch by Xiangling Liao.

llvm-svn: 366724

5 years ago[Object][XCOFF] Remove extra includes from XCOFF related files. [NFC]
Sean Fertile [Mon, 22 Jul 2019 18:47:55 +0000 (18:47 +0000)]
[Object][XCOFF] Remove extra includes from XCOFF related files. [NFC]

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

llvm-svn: 366723

5 years agoLowerTypeTests: Teach the pass to respect global alignments.
Peter Collingbourne [Mon, 22 Jul 2019 18:47:03 +0000 (18:47 +0000)]
LowerTypeTests: Teach the pass to respect global alignments.

We were previously ignoring alignment entirely when combining globals
together in this pass. There are two main things that we need to do here:
add additional padding before each global to meet the alignment requirements,
and set the combined global's alignment to the maximum of all of the original
globals' alignments.

Since we now need to calculate layout as we go anyway, use the calculated
layout to produce GlobalLayout instead of using StructLayout.

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

llvm-svn: 366722

5 years ago[OMPT] Cleanup reset of exit_frame pointer
Jonas Hahnfeld [Mon, 22 Jul 2019 18:46:02 +0000 (18:46 +0000)]
[OMPT] Cleanup reset of exit_frame pointer

This is done at call-site and does not need to be handled in
__kmp_invoke_microtask. It was already absent from the x86
and x86_64 assembly, this patch removes it from the generic
implementation in z_Linux_util.cpp and adds documentation for
AArch64 and PPC64 that it's actually not needed. I can't test
on these architectures, so I don't want to change the code just
because it looks right :)

While at it, rename some variables for consistency and add a
check in test/ompt/parallel/normal.c that the pointer was reset
before entering the barrier.

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

llvm-svn: 366721

5 years agoChanges to emit CodeView debug info nested type records properly using MCStreamer...
Nilanjana Basu [Mon, 22 Jul 2019 18:22:55 +0000 (18:22 +0000)]
Changes to emit CodeView debug info nested type records properly using MCStreamer directives

llvm-svn: 366720

5 years agoAdds support for formatting NS_CLOSED_ENUM and CF_CLOSED_ENUM alongside NS_ENUM and...
Ben Hamilton [Mon, 22 Jul 2019 18:20:01 +0000 (18:20 +0000)]
Adds support for formatting NS_CLOSED_ENUM and CF_CLOSED_ENUM alongside NS_ENUM and CF_ENUM.

Summary:
Addresses the formatting of NS_CLOSED_ENUM and CF_CLOSED_ENUM, introduced in Swift 5.

Before:

```
typedef NS_CLOSED_ENUM(NSInteger, Foo){FooValueOne = 1, FooValueTwo,
                                       FooValueThree};
```

After:

```
typedef NS_CLOSED_ENUM(NSInteger, Foo) {
  FooValueOne = 1,
  FooValueTwo,
  FooValueThree
};
```

Contributed by heijink.

Reviewers: benhamilton, krasimir

Reviewed By: benhamilton

Subscribers: cfe-commits

Tags: #clang

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

llvm-svn: 366719

5 years agoDelete empty file
Jonas Hahnfeld [Mon, 22 Jul 2019 18:11:06 +0000 (18:11 +0000)]
Delete empty file

This is a left-over from r356288 which was reviewed in D58989.

llvm-svn: 366716

5 years ago[AMDGPU] Test update. NFC.
Stanislav Mekhanoshin [Mon, 22 Jul 2019 18:08:53 +0000 (18:08 +0000)]
[AMDGPU] Test update. NFC.

llvm-svn: 366715

5 years ago[SLPVectorizer] Fix some MSVC/cppcheck uninitialized variable warnings. NFCI.
Simon Pilgrim [Mon, 22 Jul 2019 17:57:36 +0000 (17:57 +0000)]
[SLPVectorizer] Fix some MSVC/cppcheck uninitialized variable warnings. NFCI.

llvm-svn: 366712

5 years agoRevert "Reland [ELF] Loose a condition for relocation with a symbol"
Vlad Tsyrklevich [Mon, 22 Jul 2019 17:48:53 +0000 (17:48 +0000)]
Revert "Reland [ELF] Loose a condition for relocation with a symbol"

This reverts commit r366686 as it appears to be causing buildbot
failures on sanitizer-x86_64-linux-android and sanitizer-x86_64-linux.

llvm-svn: 366708

5 years ago[Windows] Fix race condition between state changes
Adrian McCarthy [Mon, 22 Jul 2019 17:03:20 +0000 (17:03 +0000)]
[Windows] Fix race condition between state changes

Patch by Martin Andersson (martin.andersson@evoma.se)

If the process is resumed before the state is changed to "running"
there is a possibility (when single stepping) that the debugger stops
and changes the state to "stopped" before it is first changed to
"running". This causes the process to ignore the stop event (since
the state did not change) which in turn leads the DebuggerThread to
wait indefinitely for the exception predicate in HandleExceptionEvent.

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

llvm-svn: 366703

5 years ago[OPENMP][MSVC]Enable /openmp[:experimental] to compile OpenMP.
Alexey Bataev [Mon, 22 Jul 2019 16:49:59 +0000 (16:49 +0000)]
[OPENMP][MSVC]Enable /openmp[:experimental] to compile OpenMP.

Mapped /openmp[:experimental] to -fopenmp option and /openmp- option to
-fno-openmp

llvm-svn: 366702

5 years ago[libunwind][ARM] Fix types in _Unwind_VRS_Get.
Mikhail Maltsev [Mon, 22 Jul 2019 16:43:03 +0000 (16:43 +0000)]
[libunwind][ARM] Fix types in _Unwind_VRS_Get.

This is a small fix for https://reviews.llvm.org/D64996. The types of
w0 and w1 in _Unwind_VRS_Get must be uint64_t, not uint32_t.

Committing as obvious.

llvm-svn: 366701

5 years ago[libc++] Do not infer support for C++17 in GCC < 7
Louis Dionne [Mon, 22 Jul 2019 16:24:48 +0000 (16:24 +0000)]
[libc++] Do not infer support for C++17 in GCC < 7

libc++'s lit configuration infers the C++ language dialect when it is
not provided by checking which -std= flags that a compiler supports.
GCC 5 and GCC 6 have a -std=c++17 flag, however, they do not have full
C++17 support. The lit configuration has hardcoded logic that removes
-std=c++1z as an option to test for GCC < 7, but not -std=c++17.

This leads to a bunch of failures when running libc++ tests with GCC 5
or GCC 6. This patch adds -std=c++17 to the list of flags that are
discarded for GCC < 7 by lit's language dialect inference.

Thanks to Bryce Adelstein Lelbach for the patch.

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

llvm-svn: 366700

5 years ago[X86] Remove const from some intrinsics that shouldn't have them
Paul Robinson [Mon, 22 Jul 2019 16:14:09 +0000 (16:14 +0000)]
[X86] Remove const from some intrinsics that shouldn't have them

llvm-svn: 366699

5 years ago[clangd] Add dlog()s for SelectionTree, enabling -debug-only=SelectionTree.cpp
Sam McCall [Mon, 22 Jul 2019 15:55:53 +0000 (15:55 +0000)]
[clangd] Add dlog()s for SelectionTree, enabling -debug-only=SelectionTree.cpp

Summary:
SelectionTree is a RecursiveASTVisitor which processes getSourceRange() for
every node. This is a lot of surface area with the AST, as getSourceRange()
is specialized for *many* node types.
And the resulting SelectionTree depends on the source ranges of many
visited nodes, and the order of traversal.

Put together, this means we really need a traversal log to debug when we
get an unexpected SelectionTree. I've built this ad-hoc a few times, now
it's time to check it in.

Example output:
```
D[14:07:44.184] Computing selection for </usr/local/google/home/sammccall/test.cc:1:7, col:8>
D[14:07:44.184]  push: VarDecl const auto x = 42
D[14:07:44.184]   claimRange: </usr/local/google/home/sammccall/test.cc:1:12, col:13>
D[14:07:44.184]   push: NestedNameSpecifierLoc (empty NestedNameSpecifierLoc)
D[14:07:44.184]   pop: NestedNameSpecifierLoc (empty NestedNameSpecifierLoc)
D[14:07:44.184]   push: QualifiedTypeLoc const auto
D[14:07:44.184]   pop: QualifiedTypeLoc const auto
D[14:07:44.184]    claimRange: </usr/local/google/home/sammccall/test.cc:1:7, col:11>
D[14:07:44.184]    hit selection: </usr/local/google/home/sammccall/test.cc:1:7, col:8>
D[14:07:44.184]   skip: IntegerLiteral 42
D[14:07:44.184]    skipped range = </usr/local/google/home/sammccall/test.cc:1:16>
D[14:07:44.184]  pop: VarDecl const auto x = 42
D[14:07:44.184]   claimRange: </usr/local/google/home/sammccall/test.cc:1:1, col:18>
D[14:07:44.184]  skip: VarDecl int y = 43
D[14:07:44.184]   skipped range = </usr/local/google/home/sammccall/test.cc:2:1, col:9>
D[14:07:44.184] Built selection tree
TranslationUnitDecl
  VarDecl const auto x = 42
     .QualifiedTypeLoc const auto

```

Reviewers: hokein

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

Tags: #llvm

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

llvm-svn: 366698

5 years ago[Polly] Clang complains about missing virtual destructor
Guillaume Chatelet [Mon, 22 Jul 2019 15:34:27 +0000 (15:34 +0000)]
[Polly] Clang complains about missing virtual destructor

Summary: Feel free to reassign if needed.

Reviewers: mhalk, bollu, jdoerfert

Reviewed By: jdoerfert

Subscribers: jdoerfert, llvm-commits

Tags: #llvm

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

llvm-svn: 366697

5 years agoUpdate c++2a status page with post-Cologne information
Marshall Clow [Mon, 22 Jul 2019 15:13:14 +0000 (15:13 +0000)]
Update c++2a status page with post-Cologne information

llvm-svn: 366696

5 years agoTableGen: Support physical register inputs > 255
Matt Arsenault [Mon, 22 Jul 2019 15:02:34 +0000 (15:02 +0000)]
TableGen: Support physical register inputs > 255

This was truncating register value that didn't fit in unsigned char.
Switch AMDGPU sendmsg intrinsics to using a tablegen pattern.

llvm-svn: 366695

5 years ago[NFC] Relaxed regression tests for PR42665
Marco Antognini [Mon, 22 Jul 2019 14:47:36 +0000 (14:47 +0000)]
[NFC] Relaxed regression tests for PR42665

Following up on the buildbot failures, this commits relaxes some tests:
instead of checking for specific IR output, it now ensures that the
underlying issue (the crash), and only that, doesn't happen.

llvm-svn: 366694

5 years agoELF: Fix a "memset clearing object of non-trivial type" warning
Pavel Labath [Mon, 22 Jul 2019 14:29:29 +0000 (14:29 +0000)]
ELF: Fix a "memset clearing object of non-trivial type" warning

Just delete the memset as the ELFHeader constructor already
zero-initializes the object. Also clean up the ObjectFileELF
constructors/desctructors while I'm in there.

llvm-svn: 366692

5 years ago[ARM][LowOverheadLoops] Revert remaining pseudos
Sam Parker [Mon, 22 Jul 2019 14:16:40 +0000 (14:16 +0000)]
[ARM][LowOverheadLoops] Revert remaining pseudos

ARMLowOverheadLoops would assert a failure if it did not find all the
pseudo instructions that comprise the hardware loop. Instead of doing
this, iterate through all the instructions of the function and revert
any remaining pseudo instructions that haven't been converted.

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

llvm-svn: 366691

5 years ago[OPENMP]Add support for analysis of firstprivate variables.
Alexey Bataev [Mon, 22 Jul 2019 13:51:07 +0000 (13:51 +0000)]
[OPENMP]Add support for analysis of firstprivate variables.

Summary:
Firstprivate variables are the variables, for which the private copies
must be created in the OpenMP regions and must be initialized with the
original values. Thus, we must report if the uninitialized variable is
used as firstprivate.

Reviewers: NoQ

Subscribers: guansong, jdoerfert, caomhin, kkwli0, cfe-commits

Tags: #clang

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

llvm-svn: 366689

5 years agoAMDGPU/GlobalISel: Fix broken tests
Matt Arsenault [Mon, 22 Jul 2019 13:33:11 +0000 (13:33 +0000)]
AMDGPU/GlobalISel: Fix broken tests

llvm-svn: 366688

5 years agoUpdate documentation for all CERT checks that correspond to a recommendation.
Aaron Ballman [Mon, 22 Jul 2019 13:22:08 +0000 (13:22 +0000)]
Update documentation for all CERT checks that correspond to a recommendation.

CERT removed their C++ secure coding recommendations from public view and so the links within that documentation are stale. This updates various pieces of documentation to make this more clear, and to help add substance where our docs deferred to CERT's wiki.

llvm-svn: 366687

5 years agoReland [ELF] Loose a condition for relocation with a symbol
Nikola Prica [Mon, 22 Jul 2019 13:07:01 +0000 (13:07 +0000)]
Reland [ELF] Loose a condition for relocation with a symbol

This patch was not the reason of the buildbot failure.

Deleted code was introduced as a work around for a bug in the gold linker
(http://sourceware.org/PR16794). Test case that was given as a reason for
this part of code, the one on previous link, now works for the gold.
This condition is too strict and when a code is compiled with debug info
it forces generation of numerous relocations with symbol for architectures
that do not have relocation addend.

Reviewers: arsenm, espindola

Reviewed By: MaskRay

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

llvm-svn: 366686

5 years agoAMDGPU/GlobalISel: Remove unnecessary code
Matt Arsenault [Mon, 22 Jul 2019 13:05:25 +0000 (13:05 +0000)]
AMDGPU/GlobalISel: Remove unnecessary code

The minnum/maxnum case are dead, and the cvt is handled by the
default.

llvm-svn: 366685

5 years ago[ARM] Fix for MVE VPT block pass
David Green [Mon, 22 Jul 2019 12:51:38 +0000 (12:51 +0000)]
[ARM] Fix for MVE VPT block pass

We need to ensure that the number of T's is correct when adding multiple
instructions into the same VPT block.

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

llvm-svn: 366684

5 years agoUpdated the signature for some stack related intrinsics (CLANG)
Christudasan Devadasan [Mon, 22 Jul 2019 12:50:30 +0000 (12:50 +0000)]
Updated the signature for some stack related intrinsics (CLANG)

Modified the intrinsics
int_addressofreturnaddress,
int_frameaddress & int_sponentry.
This commit depends on the changes in rL366679

Reviewed By: arsenm

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

llvm-svn: 366683

5 years agoRevert the change to the [[nodiscard]] feature test macro value.
Aaron Ballman [Mon, 22 Jul 2019 12:49:28 +0000 (12:49 +0000)]
Revert the change to the [[nodiscard]] feature test macro value.

This value only gets bumped once both P1301 and P1771 are implemented.

llvm-svn: 366682

5 years ago[X86] EltsFromConsecutiveLoads - support common source loads (REAPPLIED)
Simon Pilgrim [Mon, 22 Jul 2019 12:44:10 +0000 (12:44 +0000)]
[X86] EltsFromConsecutiveLoads - support common source loads (REAPPLIED)

This patch enables us to find the source loads for each element, splitting them into a Load and ByteOffset, and attempts to recognise consecutive loads that are in fact from the same source load.

A helper function, findEltLoadSrc, recurses to find a LoadSDNode and determines the element's byte offset within it. When attempting to match consecutive loads, byte offsetted loads then attempt to matched against a previous load that has already been confirmed to be a consecutive match.

Next step towards PR16739 - after this we just need to account for shuffling/repeated elements to create a vector load + shuffle.

Fixed out of bounds load assert identified in rL366501

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

llvm-svn: 366681

5 years agoAMDGPU/GlobalISel: Fix tests without asserts
Matt Arsenault [Mon, 22 Jul 2019 12:43:41 +0000 (12:43 +0000)]
AMDGPU/GlobalISel: Fix tests without asserts

The legality check is only done under NDEBUG, so the failure cases are
different in a release build.

llvm-svn: 366680

5 years agoAdded address-space mangling for stack related intrinsics
Christudasan Devadasan [Mon, 22 Jul 2019 12:42:48 +0000 (12:42 +0000)]
Added address-space mangling for stack related intrinsics

Modified the following 3 intrinsics:
int_addressofreturnaddress,
int_frameaddress & int_sponentry.

Reviewed By: arsenm

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

llvm-svn: 366679

5 years ago[X86][SSE] Add EltsFromConsecutiveLoads test case identified in rL366501
Simon Pilgrim [Mon, 22 Jul 2019 12:17:56 +0000 (12:17 +0000)]
[X86][SSE] Add EltsFromConsecutiveLoads test case identified in rL366501

Test case that led to rL366441 being reverted at rL366501

llvm-svn: 366678

5 years ago[yaml2obj] - Change how we handle implicit sections.
George Rimar [Mon, 22 Jul 2019 12:01:52 +0000 (12:01 +0000)]
[yaml2obj] - Change how we handle implicit sections.

Instead of having the special list of implicit sections,
that are mixed with the sections read from YAML on late
stages, I just create the placeholders and add them to
the main sections list early.

That allows to significantly simplify the code.

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

llvm-svn: 366677

5 years ago[ARM][test] Improve tests
Fangrui Song [Mon, 22 Jul 2019 11:37:03 +0000 (11:37 +0000)]
[ARM][test] Improve tests

Delete trailing 2>&1 that is not piped to another command.
Add --no-show-raw-insn to objdump -d commands.

llvm-svn: 366676

5 years ago[clangd] Set buffer name for main file. NFCI
Sam McCall [Mon, 22 Jul 2019 11:12:16 +0000 (11:12 +0000)]
[clangd] Set buffer name for main file. NFCI

llvm-svn: 366675

5 years ago[clangd] Log input code of failed highlighting tests. NFC
Ilya Biryukov [Mon, 22 Jul 2019 10:05:11 +0000 (10:05 +0000)]
[clangd] Log input code of failed highlighting tests. NFC

llvm-svn: 366674

5 years ago[lldb][NFC] Tablegenify breakpoint
Raphael Isemann [Mon, 22 Jul 2019 10:02:09 +0000 (10:02 +0000)]
[lldb][NFC] Tablegenify breakpoint

llvm-svn: 366673

5 years ago[AST] Treat semantic form of InitListExpr as implicit code in traversals
Ilya Biryukov [Mon, 22 Jul 2019 09:58:53 +0000 (09:58 +0000)]
[AST] Treat semantic form of InitListExpr as implicit code in traversals

Summary:
In particular, do not traverse the semantic form if shouldVisitImplicitCode()
returns false.

This simplifies the common case of traversals, avoiding the need to
worry about some expressions being traversed twice.

No tests break after the change, the change would allow to simplify at
least one of the usages, i.e. r366070 which had to handle this in
clangd.

Reviewers: gribozavr

Reviewed By: gribozavr

Subscribers: kadircet, cfe-commits

Tags: #clang

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

llvm-svn: 366672

5 years agoAdd location of SVN staging dir to git-llvm error output
Stefan Granitz [Mon, 22 Jul 2019 09:47:40 +0000 (09:47 +0000)]
Add location of SVN staging dir to git-llvm error output

Summary:
In pre-monorepo times the svn staging directory was `.git/svn`. The below error message wasn't mentioning the new name yet.

Example before:
```
Can't push git rev 104cfa289d9 because svn status is not empty:
!     llvm/trunk/include/llvm
```

Example after:
```
Can't push git rev 104cfa289d9 because status in svn staging dir (.git/llvm-upstream-svn) is not empty:
!     llvm/trunk/include/llvm
```

Reviewers: mehdi_amini, jlebar, teemperor

Reviewed By: mehdi_amini

Subscribers: llvm-commits, #llvm

Tags: #llvm

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

llvm-svn: 366671

5 years ago[OpenCL] Improve destructor support in C++ for OpenCL
Marco Antognini [Mon, 22 Jul 2019 09:39:13 +0000 (09:39 +0000)]
[OpenCL] Improve destructor support in C++ for OpenCL

This re-applies r366422 with a fix for Bug PR42665 and a new regression
test.

llvm-svn: 366670