[llvm] r288178 - Revert "[GVN, OptDiag] Include the value that is forwarded in load elimination"

Adam Nemet via llvm-commits llvm-commits at lists.llvm.org
Tue Nov 29 10:32:00 PST 2016


Author: anemet
Date: Tue Nov 29 12:32:00 2016
New Revision: 288178

URL: http://llvm.org/viewvc/llvm-project?rev=288178&view=rev
Log:
Revert "[GVN, OptDiag] Include the value that is forwarded in load elimination"

This reverts commit r288047.

Trying to see if the revert fixes a compiler crash during a stage2 LTO
build with a GVN backtrace.

Modified:
    llvm/trunk/include/llvm/Analysis/OptimizationDiagnosticInfo.h
    llvm/trunk/include/llvm/IR/DiagnosticInfo.h
    llvm/trunk/lib/IR/DiagnosticInfo.cpp
    llvm/trunk/lib/Transforms/Scalar/GVN.cpp
    llvm/trunk/test/Transforms/GVN/opt-remarks.ll

Modified: llvm/trunk/include/llvm/Analysis/OptimizationDiagnosticInfo.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/OptimizationDiagnosticInfo.h?rev=288178&r1=288177&r2=288178&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Analysis/OptimizationDiagnosticInfo.h (original)
+++ llvm/trunk/include/llvm/Analysis/OptimizationDiagnosticInfo.h Tue Nov 29 12:32:00 2016
@@ -223,7 +223,6 @@ private:
 namespace ore {
 using NV = DiagnosticInfoOptimizationBase::Argument;
 using setIsVerbose = DiagnosticInfoOptimizationBase::setIsVerbose;
-using setExtraArgs = DiagnosticInfoOptimizationBase::setExtraArgs;
 }
 
 /// OptimizationRemarkEmitter legacy analysis pass

Modified: llvm/trunk/include/llvm/IR/DiagnosticInfo.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/DiagnosticInfo.h?rev=288178&r1=288177&r2=288178&view=diff
==============================================================================
--- llvm/trunk/include/llvm/IR/DiagnosticInfo.h (original)
+++ llvm/trunk/include/llvm/IR/DiagnosticInfo.h Tue Nov 29 12:32:00 2016
@@ -382,12 +382,6 @@ public:
   /// \brief Used to set IsVerbose via the stream interface.
   struct setIsVerbose {};
 
-  /// \brief When an instance of this is inserted into the stream, the arguments
-  /// following will not appear in the remark printed in the compiler output
-  /// (-Rpass) but only in the optimization record file
-  /// (-fsave-optimization-record).
-  struct setExtraArgs {};
-
   /// \brief Used in the streaming interface as the general argument type.  It
   /// internally converts everything into a key-value pair.
   struct Argument {
@@ -458,7 +452,6 @@ public:
   DiagnosticInfoOptimizationBase &operator<<(StringRef S);
   DiagnosticInfoOptimizationBase &operator<<(Argument A);
   DiagnosticInfoOptimizationBase &operator<<(setIsVerbose V);
-  DiagnosticInfoOptimizationBase &operator<<(setExtraArgs EA);
 
   /// \see DiagnosticInfo::print.
   void print(DiagnosticPrinter &DP) const override;
@@ -508,11 +501,6 @@ private:
   /// The remark is expected to be noisy.
   bool IsVerbose = false;
 
-  /// \brief If positive, the index of the first argument that only appear in
-  /// the optimization records and not in the remark printed in the compiler
-  /// output.
-  int FirstExtraArgIndex = -1;
-
   friend struct yaml::MappingTraits<DiagnosticInfoOptimizationBase *>;
 };
 

Modified: llvm/trunk/lib/IR/DiagnosticInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/DiagnosticInfo.cpp?rev=288178&r1=288177&r2=288178&view=diff
==============================================================================
--- llvm/trunk/lib/IR/DiagnosticInfo.cpp (original)
+++ llvm/trunk/lib/IR/DiagnosticInfo.cpp Tue Nov 29 12:32:00 2016
@@ -170,25 +170,14 @@ const std::string DiagnosticInfoWithDebu
     getLocation(&Filename, &Line, &Column);
   return (Filename + ":" + Twine(Line) + ":" + Twine(Column)).str();
 }
-
 DiagnosticInfoOptimizationBase::Argument::Argument(StringRef Key, Value *V)
-    : Key(Key) {
+    : Key(Key), Val(GlobalValue::getRealLinkageName(V->getName())) {
   if (auto *F = dyn_cast<Function>(V)) {
     if (DISubprogram *SP = F->getSubprogram())
       DLoc = DebugLoc::get(SP->getScopeLine(), 0, SP);
   }
   else if (auto *I = dyn_cast<Instruction>(V))
     DLoc = I->getDebugLoc();
-
-  // Only include names that correspond to user variables.  FIXME: we should use
-  // debug info if available to get the name of the user variable.
-  if (isa<llvm::Argument>(V) || isa<GlobalValue>(V))
-    Val = GlobalValue::getRealLinkageName(V->getName());
-  else if (isa<Constant>(V)) {
-    raw_string_ostream OS(Val);
-    V->printAsOperand(OS, /*PrintType=*/false);
-  } else if (auto *I = dyn_cast<Instruction>(V))
-    Val = I->getOpcodeName();
 }
 
 DiagnosticInfoOptimizationBase::Argument::Argument(StringRef Key, Type *T)
@@ -370,19 +359,10 @@ operator<<(setIsVerbose V) {
   return *this;
 }
 
-DiagnosticInfoOptimizationBase &DiagnosticInfoOptimizationBase::
-operator<<(setExtraArgs EA) {
-  FirstExtraArgIndex = Args.size();
-  return *this;
-}
-
 std::string DiagnosticInfoOptimizationBase::getMsg() const {
   std::string Str;
   raw_string_ostream OS(Str);
-  for (const DiagnosticInfoOptimizationBase::Argument &Arg :
-       make_range(Args.begin(), FirstExtraArgIndex == -1
-                                    ? Args.end()
-                                    : Args.begin() + FirstExtraArgIndex))
+  for (const DiagnosticInfoOptimizationBase::Argument &Arg : Args)
     OS << Arg.Val;
   return OS.str();
 }

Modified: llvm/trunk/lib/Transforms/Scalar/GVN.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/GVN.cpp?rev=288178&r1=288177&r2=288178&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/Scalar/GVN.cpp (original)
+++ llvm/trunk/lib/Transforms/Scalar/GVN.cpp Tue Nov 29 12:32:00 2016
@@ -1590,13 +1590,10 @@ bool GVN::PerformLoadPRE(LoadInst *LI, A
   return true;
 }
 
-static void reportLoadElim(LoadInst *LI, Value *AvailableValue,
-                           OptimizationRemarkEmitter *ORE) {
-  using namespace ore;
+static void reportLoadElim(LoadInst *LI, OptimizationRemarkEmitter *ORE) {
   ORE->emit(OptimizationRemark(DEBUG_TYPE, "LoadElim", LI)
-            << "load of type " << NV("Type", LI->getType()) << " eliminated"
-            << setExtraArgs() << " in favor of "
-            << NV("InfavorOfValue", AvailableValue));
+            << "load of type " << ore::NV("Type", LI->getType())
+            << " eliminated");
 }
 
 /// Attempt to eliminate a load whose dependencies are
@@ -1669,7 +1666,7 @@ bool GVN::processNonLocalLoad(LoadInst *
       MD->invalidateCachedPointerInfo(V);
     markInstructionForDeletion(LI);
     ++NumGVNLoad;
-    reportLoadElim(LI, V, ORE);
+    reportLoadElim(LI, ORE);
     return true;
   }
 
@@ -1816,7 +1813,7 @@ bool GVN::processLoad(LoadInst *L) {
     patchAndReplaceAllUsesWith(L, AvailableValue);
     markInstructionForDeletion(L);
     ++NumGVNLoad;
-    reportLoadElim(L, AvailableValue, ORE);
+    reportLoadElim(L, ORE);
     // Tell MDA to rexamine the reused pointer since we might have more
     // information after forwarding it.
     if (MD && AvailableValue->getType()->getScalarType()->isPointerTy())

Modified: llvm/trunk/test/Transforms/GVN/opt-remarks.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/GVN/opt-remarks.ll?rev=288178&r1=288177&r2=288178&view=diff
==============================================================================
--- llvm/trunk/test/Transforms/GVN/opt-remarks.ll (original)
+++ llvm/trunk/test/Transforms/GVN/opt-remarks.ll Tue Nov 29 12:32:00 2016
@@ -15,8 +15,6 @@
 ; YAML-NEXT:   - String:          'load of type '
 ; YAML-NEXT:   - Type:            i32
 ; YAML-NEXT:   - String:          ' eliminated'
-; YAML-NEXT:   - String:          ' in favor of '
-; YAML-NEXT:   - InfavorOfValue:  i
 ; YAML-NEXT: ...
 ; YAML-NEXT: --- !Passed
 ; YAML-NEXT: Pass:            gvn
@@ -26,8 +24,6 @@
 ; YAML-NEXT:   - String:          'load of type '
 ; YAML-NEXT:   - Type:            i32
 ; YAML-NEXT:   - String:          ' eliminated'
-; YAML-NEXT:   - String:          ' in favor of '
-; YAML-NEXT:   - InfavorOfValue:  '4'
 ; YAML-NEXT: ...
 ; YAML-NEXT: --- !Passed
 ; YAML-NEXT: Pass:            gvn
@@ -37,8 +33,6 @@
 ; YAML-NEXT:   - String:          'load of type '
 ; YAML-NEXT:   - Type:            i32
 ; YAML-NEXT:   - String:          ' eliminated'
-; YAML-NEXT:   - String:          ' in favor of '
-; YAML-NEXT:   - InfavorOfValue:  load
 ; YAML-NEXT: ...
 
 




More information about the llvm-commits mailing list