Skip to content

Commit

Permalink
[OpenMP][FIX] Remove AssertingVHs that outlive their values
Browse files Browse the repository at this point in the history
The map with AssertingVHs has been moved into the OpenMPIRBuilder which extended their lifetime.
On NVIDIA this will cause an assertion. This simply removes the AssertingVH wrapper.
  • Loading branch information
jdoerfert committed Dec 8, 2022
1 parent ecd0337 commit 6133942
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 1 deletion.
11 changes: 11 additions & 0 deletions clang/test/OpenMP/target_codegen_ref_assertion_vh.cpp
@@ -0,0 +1,11 @@
// REQUIRES: nvptx-registered-target
//
// Test target codegen - host bc file has to be created first.
// RUN: %clang_cc1 -verify -fopenmp -x c++ -triple powerpc64le-unknown-unknown -fopenmp-targets=nvptx64-nvidia-cuda -emit-llvm-bc %s -o %t-ppc-host.bc
// RUN: %clang_cc1 -verify -fopenmp -x c++ -triple nvptx64-unknown-unknown -fopenmp-targets=nvptx64-nvidia-cuda %s -fopenmp-is-device -fopenmp-host-ir-file-path %t-ppc-host.bc -o %t.final
// expected-no-diagnostics

#pragma omp begin declare target
constexpr int A[] = {1,2,3,4,5};
int f(int i) { return A[i]; }
#pragma omp end declare target
2 changes: 1 addition & 1 deletion llvm/include/llvm/Frontend/OpenMP/OMPIRBuilder.h
Expand Up @@ -1077,7 +1077,7 @@ class OpenMPIRBuilder {
/// <critical_section_name> + ".var" for "omp critical" directives; 2)
/// <mangled_name_for_global_var> + ".cache." for cache for threadprivate
/// variables.
StringMap<AssertingVH<Constant>, BumpPtrAllocator> InternalVars;
StringMap<Constant*, BumpPtrAllocator> InternalVars;

/// Create the global variable holding the offload mappings information.
GlobalVariable *createOffloadMaptypes(SmallVectorImpl<uint64_t> &Mappings,
Expand Down

0 comments on commit 6133942

Please sign in to comment.