[llvm] ebdd610 - Revert "[NFC][AMDGPULowerModuleLDSPass] Factorize repetead sort code"

Juan Manuel MARTINEZ CAAMAÑO via llvm-commits llvm-commits at lists.llvm.org
Tue Jul 11 08:09:28 PDT 2023


Author: Juan Manuel MARTINEZ CAAMAÑO
Date: 2023-07-11T17:08:59+02:00
New Revision: ebdd610ad41b1788de46d0d5501179332890706f

URL: https://github.com/llvm/llvm-project/commit/ebdd610ad41b1788de46d0d5501179332890706f
DIFF: https://github.com/llvm/llvm-project/commit/ebdd610ad41b1788de46d0d5501179332890706f.diff

LOG: Revert "[NFC][AMDGPULowerModuleLDSPass] Factorize repetead sort code"

This reverts commit 125b90749a98d6dc6b492883c9617f9e91ab60e0.

Added: 
    

Modified: 
    llvm/lib/Target/AMDGPU/AMDGPULowerModuleLDSPass.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Target/AMDGPU/AMDGPULowerModuleLDSPass.cpp b/llvm/lib/Target/AMDGPU/AMDGPULowerModuleLDSPass.cpp
index edf08c6392eac1..4db5d02b0a9e28 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPULowerModuleLDSPass.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPULowerModuleLDSPass.cpp
@@ -245,13 +245,6 @@ bool isKernelLDS(const Function *F) {
   return AMDGPU::isKernel(F->getCallingConv());
 }
 
-template <typename T> std::vector<T> sortByName(std::vector<T> &&V) {
-  llvm::sort(V.begin(), V.end(), [](const auto *L, const auto *R) {
-    return L->getName() < R->getName();
-  });
-  return V;
-}
-
 class AMDGPULowerModuleLDS : public ModulePass {
 
   static void
@@ -736,7 +729,10 @@ class AMDGPULowerModuleLDS : public ModulePass {
       }
 
       // Put them in an arbitrary but reproducible order
-      OrderedKernels = sortByName(std::move(OrderedKernels));
+      llvm::sort(OrderedKernels.begin(), OrderedKernels.end(),
+                 [](const Function *lhs, const Function *rhs) -> bool {
+                   return lhs->getName() < rhs->getName();
+                 });
 
       // Annotate the kernels with their order in this vector
       LLVMContext &Ctx = M->getContext();
@@ -1183,8 +1179,13 @@ class AMDGPULowerModuleLDS : public ModulePass {
 
       // The order must be consistent between lookup table and accesses to
       // lookup table
-      auto TableLookupVariablesOrdered = sortByName(std::vector(
-          TableLookupVariables.begin(), TableLookupVariables.end()));
+      std::vector<GlobalVariable *> TableLookupVariablesOrdered(
+          TableLookupVariables.begin(), TableLookupVariables.end());
+      llvm::sort(TableLookupVariablesOrdered.begin(),
+                 TableLookupVariablesOrdered.end(),
+                 [](const GlobalVariable *lhs, const GlobalVariable *rhs) {
+                   return lhs->getName() < rhs->getName();
+                 });
 
       GlobalVariable *LookupTable = buildLookupTable(
           M, TableLookupVariablesOrdered, OrderedKernels, KernelToReplacement);
@@ -1331,9 +1332,12 @@ class AMDGPULowerModuleLDS : public ModulePass {
       // The order of fields in this struct depends on the order of
       // varables in the argument which varies when changing how they
       // are identified, leading to spurious test breakage.
-      auto Sorted = sortByName(
-          std::vector(LDSVarsToTransform.begin(), LDSVarsToTransform.end()));
-
+      std::vector<GlobalVariable *> Sorted(LDSVarsToTransform.begin(),
+                                           LDSVarsToTransform.end());
+      llvm::sort(Sorted.begin(), Sorted.end(),
+                 [](const GlobalVariable *lhs, const GlobalVariable *rhs) {
+                   return lhs->getName() < rhs->getName();
+                 });
       for (GlobalVariable *GV : Sorted) {
         OptimizedStructLayoutField F(GV,
                                      DL.getTypeAllocSize(GV->getValueType()),
@@ -1414,15 +1418,19 @@ class AMDGPULowerModuleLDS : public ModulePass {
   template <typename PredicateTy>
   static void replaceLDSVariablesWithStruct(
       Module &M, DenseSet<GlobalVariable *> const &LDSVarsToTransformArg,
-      const LDSVariableReplacement &Replacement, PredicateTy Predicate) {
+      LDSVariableReplacement Replacement, PredicateTy Predicate) {
     LLVMContext &Ctx = M.getContext();
     const DataLayout &DL = M.getDataLayout();
 
     // A hack... we need to insert the aliasing info in a predictable order for
     // lit tests. Would like to have them in a stable order already, ideally the
     // same order they get allocated, which might mean an ordered set container
-    std::vector<GlobalVariable *> LDSVarsToTransform = sortByName(std::vector(
-        LDSVarsToTransformArg.begin(), LDSVarsToTransformArg.end()));
+    std::vector<GlobalVariable *> LDSVarsToTransform(
+        LDSVarsToTransformArg.begin(), LDSVarsToTransformArg.end());
+    llvm::sort(LDSVarsToTransform.begin(), LDSVarsToTransform.end(),
+               [](const GlobalVariable *lhs, const GlobalVariable *rhs) {
+                 return lhs->getName() < rhs->getName();
+               });
 
     // Create alias.scope and their lists. Each field in the new structure
     // does not alias with all other fields.


        


More information about the llvm-commits mailing list