[OpenMP] Implement task modifier for reduction clause

Implemented task modifier in two versions - one without taking into account
omp_orig variable (the omp_orig still can be processed by compiler without help
of the library, but each reduction object will need separate initializer with
global access to omp_orig), another with omp_orig variable included into
interface (single initializer can be used for multiple reduction objects of
the same type). Second version can be used when the omp_orig is not globally
accessible, or to optimize code in case of multiple reduction objects
of the same type.

Patch by Andrey Churbanov

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

git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@359710 91177308-0d34-0410-b5e6-96231b3b80d8
7 files changed