[OpenMP] Add type to firstprivate symbol for const firstprivate values
authorJoseph Huber <jhuber6@vols.utk.edu>
Wed, 9 Jun 2021 23:34:24 +0000 (19:34 -0400)
committerHuber, Joseph <huberjn@ornl.gov>
Thu, 10 Jun 2021 13:02:20 +0000 (09:02 -0400)
commit0c32ffceedca2a0d7026fc142bab8ac259131386
tree28b19748da4bd795e62c094e9e5b4b16a50bfcd3
parenta95937452f237fad10e6b7e43154c17c6b8476c4
[OpenMP] Add type to firstprivate symbol for const firstprivate values

Clang will create a global value put in constant memory if an aggregate value
is declared firstprivate in the target device. The symbol name only uses the
name of the firstprivate variable, so symbol name conflicts will occur if the
variable is allowed to have different types through templates. An example of
this behvaiour is shown in https://godbolt.org/z/EsMjYh47n. This patch adds the
mangled type name to the symbol to avoid such naming conflicts. This fixes
https://bugs.llvm.org/show_bug.cgi?id=50642.

Reviewed By: ABataev

Differential Revision: https://reviews.llvm.org/D103995
clang/lib/CodeGen/CGOpenMPRuntime.cpp
clang/test/OpenMP/nvptx_target_firstprivate_codegen.cpp