[PATCH] D39005: [OpenMP] Clean up variable and function names for NVPTX backend
Gheorghe-Teodor Bercea via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Tue Oct 17 08:27:25 PDT 2017
gtbercea created this revision.
Herald added a subscriber: jholewinski.
Clean-up variable and function names.
Repository:
rL LLVM
https://reviews.llvm.org/D39005
Files:
lib/Target/NVPTX/NVPTXAssignValidGlobalNames.cpp
Index: lib/Target/NVPTX/NVPTXAssignValidGlobalNames.cpp
===================================================================
--- lib/Target/NVPTX/NVPTXAssignValidGlobalNames.cpp
+++ lib/Target/NVPTX/NVPTXAssignValidGlobalNames.cpp
@@ -37,6 +37,8 @@
/// \brief Clean up the name to remove symbols invalid in PTX.
std::string cleanUpName(StringRef Name);
+ /// Set a clean name, ensuring collisions are avoided.
+ void generateCleanName(Value &V);
};
}
@@ -50,20 +52,31 @@
"Assign valid PTX names to globals", false, false)
bool NVPTXAssignValidGlobalNames::runOnModule(Module &M) {
- for (GlobalVariable &GV : M.globals()) {
- // We are only allowed to rename local symbols.
- if (GV.hasLocalLinkage()) {
- // setName doesn't do extra work if the name does not change.
- // Note: this does not create collisions - if setName is asked to set the
- // name to something that already exists, it adds a proper postfix to
- // avoid collisions.
- GV.setName(cleanUpName(GV.getName()));
- }
- }
+ // We are only allowed to rename local symbols.
+ for (GlobalVariable &GV : M.globals())
+ if (GV.hasLocalLinkage())
+ generateCleanName(GV);
+
+ // Clean function symbols.
+ for (auto &FN : M.functions())
+ if (FN.hasLocalLinkage())
+ generateCleanName(FN);
return true;
}
+void NVPTXAssignValidGlobalNames::generateCleanName(Value &V) {
+ std::string ValidName;
+ do {
+ ValidName = cleanUpName(V.getName());
+ // setName doesn't do extra work if the name does not change.
+ // Collisions are avoided by adding a suffix (which may yet be unclean in
+ // PTX).
+ V.setName(ValidName);
+ // If there are no collisions return, otherwise clean up the new name.
+ } while (!V.getName().equals(ValidName));
+}
+
std::string NVPTXAssignValidGlobalNames::cleanUpName(StringRef Name) {
std::string ValidName;
raw_string_ostream ValidNameStream(ValidName);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D39005.119328.patch
Type: text/x-patch
Size: 1964 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20171017/7c7258df/attachment.bin>
More information about the cfe-commits
mailing list