diff options
| author | cchen <chichunchen844@gmail.com> | 2020-11-04 12:36:38 -0600 |
|---|---|---|
| committer | cchen <chichunchen844@gmail.com> | 2020-11-04 12:36:57 -0600 |
| commit | d0d43b58b109c2945e30d0bfabe77d3dcf1e4ad5 (patch) | |
| tree | ab0215426184ffe5a281b0a90629a644b0b84990 /lldb/test/API/functionalities/plugins/python_os_plugin | |
| parent | 0122a4ea661db4c2509143a4035c8857eedd9aa5 (diff) | |
[OpenMP] target nested `use_device_ptr() if()` and is_device_ptr trigger asserts
Clang now asserts for the below case:
```
void clang::CodeGen::CGOpenMPRuntime::createOffloadEntriesAndInfoMetadata(): Assertion `std::get<0>(E) && "All ordered entries must exist!"' failed.
```
The reason why Clang hit the assert is because in
`emitTargetDataCalls`, both `BeginThenGen` and `BeginElseGen` call
`registerTargetRegionEntryInfo` and try to register the Entry in
OffloadEntriesTargetRegion with same key. If changing the expression in
if clause to any constant expression, then the assert disappear. (https://godbolt.org/z/TW7haj)
The assert itself is to avoid
user from accessing elements out of bound inside `OrderedEntries` in
`createOffloadEntriesAndInfoMetadata`.
In this patch, I add a check in `registerTargetRegionEntryInfo` to avoid
register the target region more than once.
A test case that triggers assert: https://godbolt.org/z/4cnGW8
Reviewed By: ABataev
Differential Revision: https://reviews.llvm.org/D90704
Diffstat (limited to 'lldb/test/API/functionalities/plugins/python_os_plugin')
0 files changed, 0 insertions, 0 deletions
