summaryrefslogtreecommitdiffstats
path: root/openmp
Commit message (Collapse)AuthorAgeFilesLines
...
* [OpenMP] Remove -Wl,-fini=__kmp_internal_end_finiAaron Puchert2019-11-194-9/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: The termination function duplicated the functionality of the __attribute((destructor))-annotated function __kmp_internal_end_fini, and we have no indication that this doesn't work. The function might cause issues with link-time optimization turned on: until very recently, none of the usual linkers was reporting functions named in -Wl,-fini as used to the LTO plugin, so it might be dropped. If the function is dropped, -Wl,-fini=__kmp_internal_end_fini doesn't do what we want: with ld.bfd and lld it drops the FINI attribute from .dynamic and with gold we get FINI = 0x0, which leads to a crash on cleanup. This can be reproduced by building with -DLLVM_ENABLE_PROJECTS="clang;openmp" \ -DLLVM_ENABLE_LTO=Thin \ -DLLVM_USE_LINKER=gold The issue in lld has been fixed in f95273f75aa, but gold remains without fix so far. Fixes PR43927. Reviewers: JonChesterfield, jdoerfert, AndreyChurbanov Reviewed By: AndreyChurbanov Differential Revision: https://reviews.llvm.org/D69927
* [libomptarget][nfc] Move some source into common from nvptxJon Chesterfield2019-11-1810-11/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: [libomptarget][nfc] Move some source into common from nvptx Moves some source that compiles cleanly under amdgcn into a common subdirectory Includes some non-trivial files and some headers. Keeps the cuda file extension. The build systems for different architectures seem unlikely to have much in common. The idea is therefore to set include paths such that files under common/src compile as if they were under arch/src as the mechanism for sharing. In particular, files under common/src need to be able to include target_impl.h. The corresponding -Icommon is left out in favour of explicit includes on the basis that the it makes it clearer which files under common are used by a given architecture. Reviewers: jdoerfert, ABataev, grokos Reviewed By: ABataev Subscribers: jfb, mgorny, openmp-commits Tags: #openmp Differential Revision: https://reviews.llvm.org/D70328
* [OpenMP] Add implementation and tests of Archer toolprotze@itc.rwth-aachen.de2019-11-1838-0/+2551
| | | | | | | | | | The tool provides TSAN annotations for OpenMP synchronization. The tool is activated if no other OMPT tool is loaded. The tool detects whether the application was built with TSan and rejects activation according to the OMPT protocol if there is no TSan-rt. Differential Revision: https://reviews.llvm.org/D45890
* Remove +x permission on some filesSylvestre Ledru2019-11-161-0/+0
|
* [libomptarget][nfc] Use cuda variable wrappers from support.hJonChesterfield2019-11-144-22/+16
| | | | | | | | | | | | | | | | | | | Summary: [libomptarget][nfc] Use cuda variable wrappers from support.h Reimplementation of D69693, after the revert of D69885 Use the wrappers in support.h for cuda builtin variables at all call sites. Localises use of cuda and removes WARPSIZE==32 assumption in debug.h. Reviewers: ABataev, jdoerfert, grokos Reviewed By: jdoerfert Subscribers: openmp-commits Tags: #openmp Differential Revision: https://reviews.llvm.org/D70186
* [libomptarget] Move supporti.h to support.cuJonChesterfield2019-11-135-68/+87
| | | | | | | | | | | | | | | | | Summary: [libomptarget] Move supporti.h to support.cu Reimplementation of D69652, without the unity build and refactors. Will need a clean build of libomptarget as the cmakelists changed. Reviewers: ABataev, jdoerfert Reviewed By: jdoerfert Subscribers: mgorny, jfb, openmp-commits Tags: #openmp Differential Revision: https://reviews.llvm.org/D70131
* [openmp] [test] Skip one more test that kills NetBSD buildbotMichał Górny2019-11-071-0/+3
|
* [libomptarget] Revert all improvements to supportJon Chesterfield2019-11-069-102/+58
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: [libomptarget] Revert all improvements to support The change to unity build for nvcc has broken the build for some developers. This patch reverts to a known-working state. There has been some confusion over exactly how the build broke. I think we have reached a common understanding that the disappearing symbols are from the bitcode library built by clang. The static archive built by nvcc may show the same problem. Some of the confusion arose from building the deviceRTL twice and using one or the other library based on various environmental factors. I'm pretty sure the problem is clang expanding `__forceinline__` into both `__inline__` and `attribute(("always_inline"))`. The `__inline__` attribute resolves to linkonce_odr which is not safe for exporting symbols from translation units. "always_inline" is the desired semantic for small functions defined in one translation unit that are intended to be inlined at link time. "inline" is not. This therefore reintroduces the dependency hazard of supporti.h and some code duplication, and blocks progress separating deviceRTL into reusable components. See also D69857, D69859 for attempts at a fix instead of a revert. Reviewers: ABataev, jdoerfert, grokos, ikitayama, tianshilei1992 Reviewed By: ABataev Subscribers: mgorny, jfb, openmp-commits Tags: #openmp Differential Revision: https://reviews.llvm.org/D69885
* Test commit: adds a . to comment. NFCRon Lieberman2019-11-041-1/+1
|
* [libomptarget] Implement target_impl for amdgcnJonChesterfield2019-11-013-0/+151
| | | | | | | | | | | | | | | | | | | | Summary: [libomptarget] Implement target_impl for amdgcn Smallest atomic addition for a new target. Implements enough of the amdgcn specific code that some of the source files under nvptx/src could be compiled, without modification, to run on amdgcn. This foreshadows a work in progress patch to move said source out of nvptx/src. Patch based on fork at https://github.com/ROCm-Developer-Tools/llvm-project Reviewers: ABataev, jdoerfert, grokos, ronlieb Subscribers: jvesely, jfb, openmp-commits Tags: #openmp Differential Revision: https://reviews.llvm.org/D69718
* [LIBOMPTARGET]Call GetLaneId function, do not use its address in debugAlexey Bataev2019-11-011-2/+2
| | | | log functions.
* [nfc][omptarget] Use builtin var abstraction. Second pass at D69476JonChesterfield2019-11-014-22/+18
| | | | | | | | | | | | | | | | | | Summary: [nfc][omptarget] Use builtin var abstraction. Second pass at D69476 Use the wrappers in support.h for cuda builtin variables at all call sites. Localises use of cuda and removes WARPSIZE==32 assumption in debug.h. Reviewers: ABataev, jdoerfert, grokos Reviewed By: jdoerfert Subscribers: openmp-commits Tags: #openmp Differential Revision: https://reviews.llvm.org/D69693
* [nfc][libomptarget] Reorganise support headerJonChesterfield2019-10-316-35/+58
| | | | | | | | | | | | | | | | | | | | | | | | | | Summary: [nfc][libomptarget] Reorganise support header All functions defined in support implementation are now declared in support.h Reordered functions in support implementation to match the sequence in support.h Added include guards to support.h Added #include interface to support.h to provide kmp_Ident declaration Move supporti.h to support.cu and s/INLINE/EXTERN/g Add remaining includes to support.cu A minor side effect is to change the name mangling of the support functions to extern "C". If this matters another macro along the lines of INLINE/EXTERN can be added - perhaps DEVICE as that's the obvious implementation. Reviewers: jdoerfert, ABataev, grokos Reviewed By: jdoerfert Subscribers: mgorny, jfb, openmp-commits Tags: #openmp Differential Revision: https://reviews.llvm.org/D69652
* [libomptarget] Change nvcc compilation to use a unity buildJon Chesterfield2019-10-312-1/+26
| | | | | | | | | | | | | | | | | | | | | | Summary: [libomptarget] Change nvcc compilation to use a unity build This allows nvcc to inline functions between what would otherwise be distinct translation units, which in turn removes any runtime cost from implementing functions in source files (as opposed to inline in headers). This will then allow the circular dependencies in deviceRTL to be readily broken and individual components more easily shared between architectures. Reviewers: ABataev, jdoerfert, grokos, RaviNarayanaswamy, hfinkel, ronlieb, gregrodgers Reviewed By: jdoerfert Subscribers: mgorny, openmp-commits Tags: #openmp Differential Revision: https://reviews.llvm.org/D69489
* [nfc][libomptarget] Move named_sync() into target_implJon Chesterfield2019-10-306-20/+11
| | | | | | | | | | | | | | Summary: [nfc][libomptarget] Move named_sync() into target_impl Reviewers: ABataev, jdoerfert, grokos Reviewed By: ABataev Subscribers: openmp-commits Tags: #openmp Differential Revision: https://reviews.llvm.org/D69487
* [OpenMP] Reset affinity mask in the process child on FreeBSDDavid Carlier2019-10-301-1/+1
| | | | | | | | Reviewers: dim, chandlerc, jdoerfert Reviewed By: dim Differential Revision: https://reviews.llvm.org/D69047
* [nfc][libomptarget] Move smid() into target_implJon Chesterfield2019-10-302-8/+8
| | | | | | | | | | | | | | Summary: [nfc][libomptarget] Move smid() into target_impl Reviewers: ABataev, jdoerfert, grokos Reviewed By: ABataev Subscribers: openmp-commits Tags: #openmp Differential Revision: https://reviews.llvm.org/D69485
* [libomptarget] Always call malloc, free via SafeMalloc, SafeFree wrapperJon Chesterfield2019-10-301-5/+6
| | | | | | | | | | | | | | | | | | | Summary: [libomptarget] Always call malloc, free via SafeMalloc, SafeFree wrapper NFC for release, adds some verbosity to debug printing. Motivation is to provide one place where local modifications can be made to the behaviour of all heap allocation or deallocation while debugging. Reviewers: jdoerfert, ABataev, grokos Reviewed By: ABataev Subscribers: openmp-commits Tags: #openmp Differential Revision: https://reviews.llvm.org/D69492
* Enable OpenBSD support.AndreyChurbanov2019-10-303-4/+33
| | | | | | Patch by devnexen (David CARLIER) Differential Revision: https://reviews.llvm.org/D69220
* [LIBOMPTARGET]Fix build, NFC.Alexey Bataev2019-10-281-1/+1
| | | | | Need to include nvptx_interface.h in target_impl.h, otherwise the build is failed because of missing __kmpc_impl_lanemask_t type.
* [nfc][libomptarget] Decrease coupling between filesJon Chesterfield2019-10-277-16/+33
| | | | | | | | | | | | | | | | | | | | Summary: [nfc][libomptarget] Decrease coupling between files debug.h used the symbol omptarget_device_environment so implicitly required an include of omptarget-nvptx.h to compile. Similarly interface.h uses size_t. Moving this declaration to a new header means cancel, critical can now build without omptarget-nvptx.h. After this change, debug.h, cancel.cu, critical.cu could move under a common source directory. Reviewers: ABataev, jdoerfert, grokos Subscribers: openmp-commits Tags: #openmp Differential Revision: https://reviews.llvm.org/D69473
* [nfc][libomptarget] Inline option into target_implJon Chesterfield2019-10-275-66/+38
| | | | | | | | | | | | | | | | | Summary: [nfc][libomptarget] Inline option into target_impl Subset of D69423. The macros that were in option.h are all target dependent. Inlining the header simplifies the dependency graph when looking to move code into a common subdir. Reviewers: ABataev, jdoerfert, grokos Subscribers: openmp-commits Tags: #openmp Differential Revision: https://reviews.llvm.org/D69472
* [NFC][libomptarget]Remove TRUE,FALSE macros from option.hJon Chesterfield2019-10-276-14/+8
| | | | | | | | | | | | | | Summary: [NFC][libomptarget]Remove TRUE,FALSE macros from option.h Subset of D69423. Patch series ends with removing option.h. Reviewers: ABataev, jdoerfert, grokos Subscribers: openmp-commits Tags: #openmp Differential Revision: https://reviews.llvm.org/D69463
* [NFC][libomptarget] move remaining device specific code out of omptarget-nvptx.hJon Chesterfield2019-10-252-20/+17
| | | | | | | | | | | | | | | | | | Summary: [NFC][libomptarget] move remaining device specific code out of omptarget-nvptx.h Strictly there is one remaining difference wrt amdgcn - parallelLevel is volatile qualified on amdgcn and not on nvptx. Determining whether this is correct - and how to represent the different semantics of 'volatile' under various conditions - is beyond the scope of this code motion patch. Reviewers: ABataev, jdoerfert, grokos Subscribers: openmp-commits Tags: #openmp Differential Revision: https://reviews.llvm.org/D69424
* OpenMP Tasks dependencies hash re-sizing fixed.AndreyChurbanov2019-10-251-4/+4
| | | | | | | | | Details: - nconflicts field initialized; - formatting fix (moved declaration out of the long line); - count conflicts in new hash as opposed to old one. Differential Revision: https://reviews.llvm.org/D68036
* [www] Change URLs to HTTPS.Stephan T. Lavavej2019-10-241-12/+12
| | | | | | | | | | | | | | | | | | | | | | This changes most URLs in llvm's html files to HTTPS. Most changes were search-and-replace with manual verification; some changes were manual. For a few URLs, the websites were performing redirects or had changed their anchors; I fixed those up manually. This consistently uses the official https://wg21.link redirector. This also strips trailing whitespace and fixes a couple of typos. Fixes D69363. There are a very small number of dead links for which I don't know any replacements (they are equally dead as HTTP or HTTPS): https://llvm.org/cmds/llvm2cpp.html https://llvm.org/devmtg/2010-11/videos/Grosser_Polly-desktop.mp4 https://llvm.org/devmtg/2010-11/videos/Grosser_Polly-mobile.mp4 https://llvm.org/devmtg/2011-11/videos/Grosser_PollyOptimizations-desktop.mov https://llvm.org/devmtg/2011-11/videos/Grosser_PollyOptimizations-mobile.mp4 https://llvm.org/perf/db_default/v4/nts/22463 https://polly.llvm.org/documentation/memaccess.html
* [libomptarget][nfc] Make interface.h target independentJon Chesterfield2019-10-155-9/+32
| | | | | | | | | | | | | | | | | | | | Summary: [libomptarget][nfc] Make interface.h target independent Move interface.h under a top level include directory. Remove #includes to avoid the interface depending on the implementation. Reviewers: ABataev, jdoerfert, grokos, ronlieb, RaviNarayanaswamy Reviewed By: jdoerfert Subscribers: mgorny, openmp-commits Tags: #openmp Differential Revision: https://reviews.llvm.org/D68615 llvm-svn: 374919
* [OpenMP] Enable thread affinity on FreeBSDDavid Carlier2019-10-086-14/+51
| | | | | | | | | | Reviewers: chandlerc, jlpeyton, jdoerfert, dim Reviewed-By: dim Differential Revision: https://reviews.llvm.org/D68580 llvm-svn: 374118
* Don't assume Type from `readelf -d` has parenthesesAndrey Churbanov2019-10-081-1/+1
| | | | | | | | Patch by jbeich (Jan Beich) Differential Revision: https://reviews.llvm.org/D68053 llvm-svn: 374038
* Don't link libm with -Wl,--as-needed on FreeBSDAndrey Churbanov2019-10-081-2/+2
| | | | | | | | Patch by jbeich (Jan Beich) Differential Revision: https://reviews.llvm.org/D68051 llvm-svn: 374037
* [libomptarget][nfc] Update remaining uint32 to use lanemask_tJon Chesterfield2019-10-046-20/+27
| | | | | | | | | | | | | | | | | | | Summary: [libomptarget][nfc] Update remaining uint32 to use lanemask_t Update a few functions in the API to use lanemask_t instead of i32. NFC for nvptx. Also update the ActiveThreads type in DataSharingStateTy. This removes a lot of #ifdef from the downsteam amdgcn implementation. Reviewers: ABataev, jdoerfert, grokos, ronlieb, RaviNarayanaswamy Subscribers: openmp-commits Tags: #openmp Differential Revision: https://reviews.llvm.org/D68513 llvm-svn: 373806
* Use named constant to indicate all lanes, to handle 32 and 64 wide architecturesJon Chesterfield2019-10-043-8/+10
| | | | | | | | | | | | | | | | Summary: Use named constant to indicate all lanes, to handle 32 and 64 wide architectures Reviewers: ABataev, jdoerfert, grokos, ronlieb Reviewed By: grokos Subscribers: ronlieb, openmp-commits Tags: #openmp Differential Revision: https://reviews.llvm.org/D68369 llvm-svn: 373793
* [OpenMP] FreeBSD address check if mapped more nativeDavid Carlier2019-09-281-1/+42
| | | | | | | | | | | | | /proc unless Linux layer compatibility is activated for CentOS is activated is not present thus relying on a more native for checking the address. Reviewers: Hahnfeld, kongyl, jdoerfert, jlpeyton, AndreyChurbanov, emaster, dim Reviewed By: Hahnfeld Differential Revision: https://reviews.llvm.org/D67326 llvm-svn: 373152
* [Clang][OpenMP Offload] Create start/end symbols for the offloading entry ↵Sergey Dmitriev2019-09-271-1/+1
| | | | | | | | | | | | table with a help of a linker Linker automatically provides __start_<section name> and __stop_<section name> symbols to satisfy unresolved references if <section name> is representable as a C identifier (see https://sourceware.org/binutils/docs/ld/Input-Section-Example.html for details). These symbols indicate the start address and end address of the output section respectively. Therefore, renaming OpenMP offload entries section name from ".omp.offloading_entries" to "omp_offloading_entries" to use this feature. This is the first part of the patch for eliminating OpenMP linker script (please see https://reviews.llvm.org/D64943). Differential Revision: https://reviews.llvm.org/D68070 llvm-svn: 373118
* fixed test: eliminated race condition which might cause deadlockAndrey Churbanov2019-09-251-1/+1
| | | | llvm-svn: 372887
* Enable tasks dependencies hashmaps resizing.Andrey Churbanov2019-09-253-11/+103
| | | | | | | | Patch by viroulep (Philippe Virouleau) Differential Revision: https://reviews.llvm.org/D67447 llvm-svn: 372879
* [OpenMP] Change initialization of __kmp_globalJonas Hahnfeld2019-09-043-3/+1
| | | | | | | | | | | | | | There's no need to initialize variables with static storage duration because they're implicitly initialized to zero. See https://en.cppreference.com/w/c/language/initialization#Implicit_initialization I think that's already relied upon because the supplied 0 only sets 'kmp_time_global_t g_time;' in 'struct kmp_base_global'. The other fields are not set in the code, but implicitly initialized by the compiler. Differential Revision: https://reviews.llvm.org/D66292 llvm-svn: 370943
* [OPENMP][NVPTX]Fix parallel level counter in non-SPMD mode.Alexey Bataev2019-09-034-16/+45
| | | | | | | | | | | | | | | | | | | Summary: In non-SPMD mode we may end up with the divergent threads when trying to increment/decrement parallel level counter. It may lead to incorrect calculations of the parallel level and wrong results when threads are divergent. We need to reconverge the threads before trying to modify the parallel level counter. Reviewers: grokos, jdoerfert Subscribers: guansong, openmp-commits, caomhin, kkwli0 Tags: #openmp Differential Revision: https://reviews.llvm.org/D66802 llvm-svn: 370803
* [libomptarget] Refactor activemask macro to inline functionJon Chesterfield2019-09-038-30/+29
| | | | | | | | | | | | | | | | | | Summary: [libomptarget] Refactor activemask macro to inline function See also abandoned D66846, split into this diff and others. Reviewers: jdoerfert, ABataev, grokos, ronlieb, gregrodgers Reviewed By: jdoerfert, ABataev Subscribers: openmp-commits Tags: #openmp Differential Revision: https://reviews.llvm.org/D66851 llvm-svn: 370781
* Use target_impl functions to replace more inline asmJon Chesterfield2019-08-285-39/+38
| | | | | | | | | | | | | | | | | Summary: Use target_impl functions to replace more inline asm Follow on from D65836. Removes remaining asm shuffles and lanemask accessors Also changes the types of target_impl bitwise functions to unsigned. Reviewers: jdoerfert, ABataev, grokos, Hahnfeld, gregrodgers, ronlieb, hfinkel Subscribers: openmp-commits Tags: #openmp Differential Revision: https://reviews.llvm.org/D66809 llvm-svn: 370216
* [libomptarget] Refactor syncthreads macro to inline functionJon Chesterfield2019-08-285-19/+16
| | | | | | | | | | | | | | | | | | Summary: [libomptarget] Refactor syncthreads macro to inline function See also abandoned D66846, split into this diff and others. Rev 2 of D66855 Reviewers: jdoerfert, ABataev, grokos, ronlieb, gregrodgers Subscribers: openmp-commits Tags: #openmp Differential Revision: https://reviews.llvm.org/D66861 llvm-svn: 370210
* [libomptarget] Refactor syncwarp macro to inline functionJon Chesterfield2019-08-283-8/+13
| | | | | | | | | | | | | | | | Summary: [libomptarget] Refactor syncwarp macro to inline function See also abandoned D66846, split into this diff and others. Reviewers: jdoerfert, ABataev, grokos, ronlieb, gregrodgers Subscribers: openmp-commits Tags: #openmp Differential Revision: https://reviews.llvm.org/D66857 llvm-svn: 370149
* Fix build break due to close brace lost in mergeJon Chesterfield2019-08-281-0/+1
| | | | llvm-svn: 370148
* [libomptarget] Refactor shfl_down_sync macro to inline functionJon Chesterfield2019-08-283-7/+14
| | | | | | | | | | | | | | | | Summary: [libomptarget] Refactor shfl_down_sync macro to inline function See also abandoned D66846, split into this diff and others. Reviewers: jdoerfert, ABataev, grokos, ronlieb, gregrodgers Subscribers: openmp-commits Tags: #openmp Differential Revision: https://reviews.llvm.org/D66853 llvm-svn: 370146
* [libomptarget] Refactor shfl_sync macro to inline functionJon Chesterfield2019-08-285-8/+24
| | | | | | | | | | | | | | | | Summary: [libomptarget] Refactor shfl_sync macro to inline function See also abandoned D66846, split into this diff and others. Reviewers: jdoerfert, ABataev, grokos, ronlieb, gregrodgers Subscribers: openmp-commits Tags: #openmp Differential Revision: https://reviews.llvm.org/D66852 llvm-svn: 370144
* [OPENMP][NVPTX]Add __kmpc_syncwarp(int32_t) function.Alexey Bataev2019-08-263-0/+14
| | | | | | | | | | | | | | | | | | | Summary: Added function void __kmpc_syncwarp(int32_t) to expose it to the compiler. It is required to fix the problem with the critical regions in Cuda9.0+. We cannot use barrier in the critical region, but still need to reconverge the threads in the warp after. This function allows to do this. Reviewers: grokos, jdoerfert Subscribers: guansong, openmp-commits, kkwli0, caomhin Tags: #openmp Differential Revision: https://reviews.llvm.org/D66672 llvm-svn: 369933
* [OPENMP][NVPTX]Use __syncwarp() to reconverge the threads.Alexey Bataev2019-08-232-10/+19
| | | | | | | | | | | | | | | | | | | | | | | Summary: In Cuda 9.0 it is not guaranteed that threads in the warps are convergent. We need to use __syncwarp() function to reconverge the threads and to guarantee the memory ordering among threads in the warps. This is the first patch to fix the problem with the test libomptarget/deviceRTLs/nvptx/src/sync.cu on Cuda9+. This patch just replaces calls to __shfl_sync() function with the call of __syncwarp() function where we need to reconverge the threads when we try to modify the value of the parallel level counter. Reviewers: grokos Subscribers: guansong, jfb, jdoerfert, caomhin, kkwli0, openmp-commits Tags: #openmp Differential Revision: https://reviews.llvm.org/D65013 llvm-svn: 369796
* Force honoring nthreads-var and thread-limit-var inside teams construct on hostJonathan Peyton2019-08-201-4/+17
| | | | | | | | | | | | | This patch fixes https://bugs.llvm.org/show_bug.cgi?id=42906, via adding adjustment of number of threads on enter to the teams construct on host according to user settings. This allows to pass checks and avoid assertions at time of team of threads creation. Patch by Andrey Churbanov Differential Revision: https://reviews.llvm.org/D66351 llvm-svn: 369430
* [OpenMP] Enable warning about "implicit fallthrough"Jonas Hahnfeld2019-08-155-2/+4
| | | | | | | | | Fix last warned location in ittnotify_static.cpp using the defined macro KMP_FALLTHROUGH(). Differential Revision: https://reviews.llvm.org/D65871 llvm-svn: 369003
* [OpenMP] Remove 'unnecessary parentheses'Jonas Hahnfeld2019-08-156-21/+19
| | | | | | | | | | The variables in kmp_lock.cpp are really arrays of function pointers that return void or int, not pointers to functions that return void* or int*. The other changes are only cosmetic. Differential Revision: https://reviews.llvm.org/D65870 llvm-svn: 369002
OpenPOWER on IntegriCloud