@@ -1330,7 +1330,8 @@ static void addPreloadKernArgHint(Function &F, TargetMachine &TM) {
13301330}
13311331
13321332static  bool  runImpl (Module &M, AnalysisGetter &AG, TargetMachine &TM,
1333-                     AMDGPUAttributorOptions Options) {
1333+                     AMDGPUAttributorOptions Options,
1334+                     ThinOrFullLTOPhase LTOPhase) {
13341335  SetVector<Function *> Functions;
13351336  for  (Function &F : M) {
13361337    if  (!F.isIntrinsic ())
@@ -1365,9 +1366,27 @@ static bool runImpl(Module &M, AnalysisGetter &AG, TargetMachine &TM,
13651366
13661367  Attributor A (Functions, InfoCache, AC);
13671368
1368-   LLVM_DEBUG (dbgs () << " [AMDGPUAttributor] Module "   << M.getName () << "  is " 
1369-                     << (AC.IsClosedWorldModule  ? " "   : " not "  )
1370-                     << " assumed to be a closed world.\n "  );
1369+   LLVM_DEBUG ({
1370+     auto  PhaseToString = [](ThinOrFullLTOPhase LTOPhase) -> StringRef {
1371+       switch  (LTOPhase) {
1372+       case  ThinOrFullLTOPhase::None:
1373+         return  " None"  ;
1374+       case  ThinOrFullLTOPhase::ThinLTOPreLink:
1375+         return  " ThinLTOPreLink"  ;
1376+       case  ThinOrFullLTOPhase::ThinLTOPostLink:
1377+         return  " ThinLTOPostLink"  ;
1378+       case  ThinOrFullLTOPhase::FullLTOPreLink:
1379+         return  " FullLTOPreLink"  ;
1380+       case  ThinOrFullLTOPhase::FullLTOPostLink:
1381+         return  " FullLTOPostLink"  ;
1382+       }
1383+     };
1384+     StringRef LTOPhaseStr = PhaseToString (LTOPhase);
1385+     dbgs () << " [AMDGPUAttributor] Running at phase "   << LTOPhaseStr << ' \n ' 
1386+            << " [AMDGPUAttributor] Module "   << M.getName () << "  is " 
1387+            << (AC.IsClosedWorldModule  ? " "   : " not "  )
1388+            << " assumed to be a closed world.\n "  ;
1389+   });
13711390
13721391  for  (auto  *F : Functions) {
13731392    A.getOrCreateAAFor <AAAMDAttributes>(IRPosition::function (*F));
@@ -1420,7 +1439,8 @@ class AMDGPUAttributorLegacy : public ModulePass {
14201439
14211440  bool  runOnModule (Module &M) override  {
14221441    AnalysisGetter AG (this );
1423-     return  runImpl (M, AG, *TM, /* Options=*/  {});
1442+     return  runImpl (M, AG, *TM, /* Options=*/  {},
1443+                    /* LTOPhase=*/  ThinOrFullLTOPhase::None);
14241444  }
14251445
14261446  void  getAnalysisUsage (AnalysisUsage &AU) const  override  {
@@ -1441,8 +1461,8 @@ PreservedAnalyses llvm::AMDGPUAttributorPass::run(Module &M,
14411461  AnalysisGetter AG (FAM);
14421462
14431463  //  TODO: Probably preserves CFG
1444-   return  runImpl (M, AG, TM, Options) ? PreservedAnalyses::none ()
1445-                                      : PreservedAnalyses::all ();
1464+   return  runImpl (M, AG, TM, Options, LTOPhase ) ? PreservedAnalyses::none ()
1465+                                                 : PreservedAnalyses::all ();
14461466}
14471467
14481468char  AMDGPUAttributorLegacy::ID = 0 ;
0 commit comments