Commit Graph

375 Commits

Author SHA1 Message Date
Alexey Bataev bafe90b057 [OPENMP] Add a check for iterator not reached the end of stack, NFC.
Add an extra check for the iterator during checks of the data-sharing
attributes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301549 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-27 15:10:33 +00:00
Alexey Bataev b6ac2f9d15 [OPENMP] Improve performance of the hasDSA() function, NFC.
Remove some unneccesary code from the function after the fix for ASAN
buildbots.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301547 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-27 14:46:26 +00:00
Haojian Wu 9ba92e2ece Fix asan failures on OpenMP.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301536 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-27 12:22:33 +00:00
Alexey Bataev ed38176964 [OPENMP] Fix handling of OpenMP code during template instantiation.
If some function template is instantiated during handling of OpenMP
code, currently it may cause crash of compiler because of trying of
capturing variables in non-capturing function scopes. Patch fixes this
bug.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301416 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-26 15:06:24 +00:00
Alexey Bataev 9bdffb9899 [OPENMP] Move handling of threadprivate vars from the stack, NFC.
Threadprivate variables do no need to be handled in the Stack of all
directives, moving it out for better performance and memory.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301410 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-26 14:24:21 +00:00
Carlo Bertolli 66273610fe [OpenMP] Prepare sema to support combined constructs with omp distribute and omp for
https://reviews.llvm.org/D32237

This patch prepares sema with additional fields to support all those composite and combined constructs of OpenMP that include pragma 'distribute' and 'for', such as 'distribute parallel for'. It also extends the regression tests for 'distribute parallel for' and adds a new one.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@300802 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-20 00:39:39 +00:00
Faisal Vali 919ac41f65 [NFC, Scoped Enum] Convert Sema::ExpressionEvaluationContext into a scoped Enum
- also replace direct equality checks against the ConstantEvaluated enumerator  with isConstantEvaluted(), in anticipation of adding finer granularity to the various ConstantEvaluated contexts and reinstating certain restrictions on where lambda expressions can occur in C++17.

- update the clang tablegen backend that uses these Enumerators, and add the relevant scope where needed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@299316 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-01 21:30:49 +00:00
Jonas Hahnfeld 83779719b7 [OpenMP] Generate better diagnostics for cancel and cancellation point
checkNestingOfRegions uses CancelRegion to determine whether cancel and
cancellation point are valid in the given nesting. This leads to unuseful
diagnostics if CancelRegion is invalid. The given test case has produced:
  region cannot be closely nested inside 'parallel' region

As a solution, introduce checkCancelRegion and call it first to get the
expected error:
  one of 'for', 'parallel', 'sections' or 'taskgroup' is expected

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@295808 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-22 06:49:10 +00:00
Carlo Bertolli 833975cc39 [OpenMP] Prepare Sema for initial implementation for pragma 'distribute parallel for'
https://reviews.llvm.org/D29922

This patch adds two fields for use in the implementation of 'distribute parallel for':

The increment expression for the distribute loop. As the chunk assigned to a team is executed by multiple threads within the 'parallel for' region, the increment expression has to correspond to the value returned by the related runtime call (for_static_init).
The upper bound of the innermost loop ('for' in 'distribute parallel for') is not the globalUB expression normally used for pragma 'for' when found in isolation. It is instead the upper bound of the chunk assigned to the team ('distribute' loop). In this way, we prevent teams from executing chunks assigned to other teams.
The use of these two fields can be see in a related explanatory patch:
https://reviews.llvm.org/D29508




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@295497 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-17 21:29:13 +00:00
Arpith Chacko Jacob 2c44f4663c [OpenMP] Support for thread_limit-clause on the 'target teams' directive.
The thread_limit-clause on the combined directive applies to the
'teams' region of this construct. We modify the ThreadLimitClause
class to capture the clause expression within the 'target' region.

Reviewers: ABataev
Differential Revision: https://reviews.llvm.org/D29087


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@293049 91177308-0d34-0410-b5e6-96231b3b80d8
2017-01-25 11:44:35 +00:00
Arpith Chacko Jacob a9053102c2 [OpenMP] Support for num_teams-clause on the 'target teams' directive.
The num_teams-clause on the combined directive applies to the
'teams' region of this construct. We modify the NumTeamsClause
class to capture the clause expression within the 'target' region.

Reviewers: ABataev
Differential Revision: https://reviews.llvm.org/D29085


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@293048 91177308-0d34-0410-b5e6-96231b3b80d8
2017-01-25 11:28:18 +00:00
Arpith Chacko Jacob 4a583854b5 [OpenMP] Codegen support for 'target teams' on the host.
This patch adds support for codegen of 'target teams' on the host.
This combined directive has two captured statements, one for the
'teams' region, and the other for the 'parallel'.

This target teams region is offloaded using the __tgt_target_teams()
call. The patch sets the number of teams as an argument to
this call.

Reviewers: ABataev
Differential Revision: https://reviews.llvm.org/D29084


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@293005 91177308-0d34-0410-b5e6-96231b3b80d8
2017-01-25 02:18:43 +00:00
Arpith Chacko Jacob f6a1ff2d64 Reverting commit because an NVPTX patch sneaked in. Break up into two
patches.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@293003 91177308-0d34-0410-b5e6-96231b3b80d8
2017-01-25 01:45:59 +00:00
Arpith Chacko Jacob 105c8cd5b2 [OpenMP] Codegen support for 'target teams' on the host.
This patch adds support for codegen of 'target teams' on the host.
This combined directive has two captured statements, one for the
'teams' region, and the other for the 'parallel'.

This target teams region is offloaded using the __tgt_target_teams()
call. The patch sets the number of teams as an argument to
this call.

Reviewers: ABataev
Differential Revision: https://reviews.llvm.org/D29084


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@293001 91177308-0d34-0410-b5e6-96231b3b80d8
2017-01-25 01:38:33 +00:00
Arpith Chacko Jacob 440f37958e [OpenMP] Support for the num_threads-clause on 'target parallel'.
The num_threads-clause on the combined directive applies to the
'parallel' region of this construct. We modify the NumThreadsClause
class to capture the clause expression within the 'target' region.

The offload runtime call for 'target parallel' is changed to
__tgt_target_teams() with 1 team and the number of threads set by
this clause or a default if none.

Reviewers: ABataev
Differential Revision: https://reviews.llvm.org/D29082


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@292997 91177308-0d34-0410-b5e6-96231b3b80d8
2017-01-25 00:57:16 +00:00
Arpith Chacko Jacob 772e1ce24c [OpenMP] DSAChecker bug fix for combined directives.
The DSAChecker code in SemaOpenMP looks at the captured statement
associated with an OpenMP directive.  A combined directive such as
'target parallel' has nested capture statements, which have to be
fully traversed before executing the DSAChecker.  This is a patch
to perform the traversal for such combined directives.

Reviewers: ABataev
Differential Revision: https://reviews.llvm.org/D29026


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@292794 91177308-0d34-0410-b5e6-96231b3b80d8
2017-01-23 15:38:49 +00:00
Arpith Chacko Jacob ec7d9933a4 [OpenMP] Support for the if-clause on the combined directive 'target parallel'.
The if-clause on the combined directive potentially applies to both the
'target' and the 'parallel' regions.  Codegen'ing the if-clause on the
combined directive requires additional support because the expression in
the clause must be captured by the 'target' capture statement but not
the 'parallel' capture statement.  Note that this situation arises for
other clauses such as num_threads.

The OMPIfClause class inherits OMPClauseWithPreInit to support capturing
of expressions in the clause.  A member CaptureRegion is added to
OMPClauseWithPreInit to indicate which captured statement (in this case
'target' but not 'parallel') captures these expressions.

To ensure correct codegen of captured expressions in the presence of
combined 'target' directives, OMPParallelScope was added to 'parallel'
codegen.

Reviewers: ABataev
Differential Revision: https://reviews.llvm.org/D28781


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@292437 91177308-0d34-0410-b5e6-96231b3b80d8
2017-01-18 20:40:48 +00:00
Arpith Chacko Jacob 1582eb8c64 [OpenMP] Codegen support for 'target parallel' on the host.
This patch adds support for codegen of 'target parallel' on the host.
It is also the first combined directive that requires two or more
captured statements.  Support for this functionality is included in
the patch.

A combined directive such as 'target parallel' has two captured
statements, one for the 'target' and the other for the 'parallel'
region.  Two captured statements are required because each has
different implicit parameters (see SemaOpenMP.cpp).  For example,
the 'parallel' has 'global_tid' and 'bound_tid' while the 'target'
does not.  The patch adds support for handling multiple captured
statements based on the combined directive.

When codegen'ing the 'target parallel' directive, the 'target'
outlined function is created using the outer captured statement
and the 'parallel' outlined function is created using the inner
captured statement.

Reviewers: ABataev
Differential Revision: https://reviews.llvm.org/D28753


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@292419 91177308-0d34-0410-b5e6-96231b3b80d8
2017-01-18 18:18:53 +00:00
Arpith Chacko Jacob 4009850c3e Revert r292374 to debug Windows buildbot failure.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@292400 91177308-0d34-0410-b5e6-96231b3b80d8
2017-01-18 15:36:05 +00:00
Arpith Chacko Jacob 7006d279f7 [OpenMP] Codegen support for 'target parallel' on the host.
This patch adds support for codegen of 'target parallel' on the host.
It is also the first combined directive that requires two or more
captured statements.  Support for this functionality is included in
the patch.

A combined directive such as 'target parallel' has two captured
statements, one for the 'target' and the other for the 'parallel'
region.  Two captured statements are required because each has
different implicit parameters (see SemaOpenMP.cpp).  For example,
the 'parallel' has 'global_tid' and 'bound_tid' while the 'target'
does not.  The patch adds support for handling multiple captured
statements based on the combined directive.

When codegen'ing the 'target parallel' directive, the 'target'
outlined function is created using the outer captured statement
and the 'parallel' outlined function is created using the inner
captured statement.

Reviewers: ABataev
Differential Revision: https://reviews.llvm.org/D28753


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@292374 91177308-0d34-0410-b5e6-96231b3b80d8
2017-01-18 15:14:52 +00:00
Richard Smith 5ceef6b013 Remove redundant passing around of a "ContainsAutoType" flag.
This flag serves no purpose other than to prevent us walking through a type to
check whether it contains an 'auto' specifier; this duplication of information
is error-prone, does not appear to provide any performance benefit, and will
become less practical once we support C++1z deduced class template types and
eventually constrained types from the Concepts TS.

No functionality change intended.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@291737 91177308-0d34-0410-b5e6-96231b3b80d8
2017-01-12 02:27:38 +00:00
Kelvin Li 69518aa6da [OpenMP] Sema and parsing for 'target teams distribute simd’ pragma
This patch is to implement sema and parsing for 'target teams distribute simd’ pragma.
    
Differential Revision: https://reviews.llvm.org/D28252


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@291579 91177308-0d34-0410-b5e6-96231b3b80d8
2017-01-10 18:08:18 +00:00
Kelvin Li b8a7fd7846 [OpenMP] Support the 'is_device_ptr' clause with 'target parallel for' pragma
This patch is to add support of the 'is_device_ptr' clause with the 'target parallel for' pragma.

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


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@291540 91177308-0d34-0410-b5e6-96231b3b80d8
2017-01-10 05:15:35 +00:00
Kelvin Li 59a054450c [OpenMP] Support the 'is_device_ptr' clause with 'target parallel for simd' pragma
This patch is to add support of the 'is_device_ptr' clause with the 'target parallel for simd' pragma.

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


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@291537 91177308-0d34-0410-b5e6-96231b3b80d8
2017-01-10 04:26:44 +00:00
Kelvin Li be92cc306b [OpenMP] Sema and parsing for 'target teams distribute parallel for simd’ pragma
This patch is to implement sema and parsing for 'target teams distribute parallel for simd’ pragma.

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


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@290862 91177308-0d34-0410-b5e6-96231b3b80d8
2017-01-03 05:23:48 +00:00
Kelvin Li 1008244ce7 [OpenMP] Sema and parsing for 'target teams distribute parallel for’ pragma
This patch is to implement sema and parsing for 'target teams distribute parallel for’ pragma.

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


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@290725 91177308-0d34-0410-b5e6-96231b3b80d8
2016-12-29 22:16:30 +00:00
Kelvin Li 0b48254b39 [OpenMP] Sema and parsing for 'target teams distribute' pragma
This patch is to implement sema and parsing for 'target teams distribute' pragma.

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


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@290508 91177308-0d34-0410-b5e6-96231b3b80d8
2016-12-25 04:52:54 +00:00
Alexey Bataev a966b1fd6c [OPENMP] Fix for PR31416: Clang crashes on OMPCapturedExpr during source
based coverage compilation

Added source location info to captured expression declaration + fixed
source location info for loop based directives.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@290181 91177308-0d34-0410-b5e6-96231b3b80d8
2016-12-20 16:51:02 +00:00
Kelvin Li 2c7cf6d812 [OpenMP] Sema and parsing for 'target teams' pragma
This patch is to implement sema and parsing for 'target teams' pragma.

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


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@290038 91177308-0d34-0410-b5e6-96231b3b80d8
2016-12-17 05:48:59 +00:00
Kelvin Li 788453b291 [OpenMP] support the 'is_device_ptr' clause with 'target parallel' pragma
This patch is to add support of the 'is_device_ptr' clause in the 'target parallel' pragma.
    
Differential Revision: https://reviews.llvm.org/D27821


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@289989 91177308-0d34-0410-b5e6-96231b3b80d8
2016-12-16 20:50:46 +00:00
Kelvin Li 229bc1b2a7 Fix assert message. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@289657 91177308-0d34-0410-b5e6-96231b3b80d8
2016-12-14 15:39:58 +00:00
Samuel Antao c0415b042f Fix format and a few typos in comments.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@289450 91177308-0d34-0410-b5e6-96231b3b80d8
2016-12-12 18:00:20 +00:00
Kelvin Li 732bd78b4a [OpenMP] Sema and parsing for 'teams distribute parallel for' pragma
This patch is to implement sema and parsing for 'teams distribute parallel for' pragma.
    
Differential Revision: https://reviews.llvm.org/D27345


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@289179 91177308-0d34-0410-b5e6-96231b3b80d8
2016-12-09 03:24:30 +00:00
Kelvin Li 195ed07166 [OpenMP] Sema and parsing for 'teams distribute parallel for simd' pragma
This patch is to implement sema and parsing for 'teams distribute parallel for simd' pragma.

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


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@288294 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-30 23:51:03 +00:00
Alexey Bataev fd186766f6 [OPENMP] Fix for PR31137: Wrong DSA for members in struct.
If member expression is used in the task region and the base expression
is a DeclRefExp and the variable used in this ref expression is private,
it should be marked as implicitly firstprivate inside this region. Patch
fixes this issue.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@288039 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-28 15:55:15 +00:00
Kelvin Li 7fe300e86c Remove comments (NFC)
Differential Revision: https://reviews.llvm.org/D27006


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@287852 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-24 03:18:07 +00:00
Kelvin Li eb1c24b532 Re-apply patch r279045.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@285066 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-25 12:50:55 +00:00
David Sheinkman ba7b135011 [OpenMP] Check if the template specialization is mappable instead of specialized template Differential Revision: https://reviews.llvm.org/D25252
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@283460 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-06 15:47:36 +00:00
David Sheinkman b1b3141a30 [OpenMP] fix segfault when a variable referenced in reduction clause is a reference parameter\nDifferential Revision: http://reviews.llvm.org/D24524
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@283223 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-04 14:41:36 +00:00
Diana Picus 2b3a36e161 Revert "[OpenMP] Sema and parsing for 'teams distribute simd’ pragma"
This reverts commit r279003 as it breaks some of our buildbots (e.g.
clang-cmake-aarch64-quick, clang-x86_64-linux-selfhost-modules).

The error is in OpenMP/teams_distribute_simd_ast_print.cpp:
clang: /home/buildslave/buildslave/clang-cmake-aarch64-quick/llvm/include/llvm/ADT/DenseMap.h:527:
bool llvm::DenseMapBase<DerivedT, KeyT, ValueT, KeyInfoT, BucketT>::LookupBucketFor(const LookupKeyT&, const BucketT*&) const
[with LookupKeyT = clang::Stmt*; DerivedT = llvm::DenseMap<clang::Stmt*, long unsigned int>;
      KeyT = clang::Stmt*; ValueT = long unsigned int;
      KeyInfoT = llvm::DenseMapInfo<clang::Stmt*>;
      BucketT = llvm::detail::DenseMapPair<clang::Stmt*, long unsigned int>]:
Assertion `!KeyInfoT::isEqual(Val, EmptyKey) && !KeyInfoT::isEqual(Val, TombstoneKey) &&
"Empty/Tombstone value shouldn't be inserted into map!"' failed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@279045 91177308-0d34-0410-b5e6-96231b3b80d8
2016-08-18 09:25:07 +00:00
Kelvin Li 0bf7594715 [OpenMP] Sema and parsing for 'teams distribute simd’ pragma
This patch is to implement sema and parsing for 'teams distribute simd’ pragma.

This patch is originated by Carlo Bertolli.

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


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@279003 91177308-0d34-0410-b5e6-96231b3b80d8
2016-08-17 23:13:03 +00:00
David Majnemer 26dcf20c7c [SemaOpenMP] Some miscellaneous cleanups
Clean up some typos, follow the coding style a little more rigorously.

No functionality change is intended.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@277840 91177308-0d34-0410-b5e6-96231b3b80d8
2016-08-05 17:44:54 +00:00
Kelvin Li 231f2fcd9f [OpenMP] Sema and parsing for 'teams distribute' pragma
This patch is to implement sema and parsing for 'teams distribute' pragma.

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


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@277818 91177308-0d34-0410-b5e6-96231b3b80d8
2016-08-05 14:37:37 +00:00
Samuel Antao f15ab0cbae [OpenMP] Code generation for the is_device_ptr clause
Summary: This patch adds support for the is_device_ptr clause. It expands SEMA to use the mappable expression logic that can only be tested with code generation in place and check conflicts with other data sharing related clauses using the mappable expressions infrastructure.

Reviewers: hfinkel, carlo.bertolli, arpith-jacob, kkwli0, ABataev

Subscribers: caomhin, cfe-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@276978 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-28 14:25:09 +00:00
Samuel Antao 56b9ac6ad6 [OpenMP] Codegen for use_device_ptr clause.
Summary: This patch adds support for the use_device_ptr clause. It includes changes in SEMA that could not be tested without codegen, namely, the use of the first private logic and mappable expressions support.

Reviewers: hfinkel, carlo.bertolli, arpith-jacob, kkwli0, ABataev

Subscribers: caomhin, cfe-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@276977 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-28 14:23:26 +00:00
Kelvin Li ad9ac1e6f4 [OpenMP] diagnose orphaned teams construct
The OpenMP spec mandates that 'a teams construct must be contained within a 
target construct'. Currently, this scenario is not diagnosed. This patch is 
to add check for orphaned teams construct and issue an error message.

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


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@276726 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-26 04:32:50 +00:00
Kelvin Li 7715eac013 [OpenMP] Sema and parsing for 'target simd' pragma
This patch is to implement sema and parsing for 'target simd' pragma.

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


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@276203 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-20 22:57:10 +00:00
Kelvin Li 979c19b4a6 [OpenMP] Ignore parens in atomic capture
Clang misdiagnoses atomic captures cases that contains parens.
i.e.

  int v, int *p;
#pragma omp atomic capture
{ v = (*p); (*p)++; }

Patch by David S.

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


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@276167 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-20 19:41:17 +00:00
Alexey Bataev 781898e62c [OPENMP] Removed loop statement as its body executes at most once, NFC.
Removed not required loop statement, addressing comments from Richard
Smith.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@275947 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-19 05:06:39 +00:00
Samuel Antao 11f0fb2262 [OpenMP] Remove dead code in conditional of mappable expressions SEMA.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@275930 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-18 23:22:11 +00:00