forked from OSchip/llvm-project
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. llvm-svn: 288178
This commit is contained in:
parent
a4d3d44ec2
commit
91d4d93f94
|
@ -223,7 +223,6 @@ private:
|
|||
namespace ore {
|
||||
using NV = DiagnosticInfoOptimizationBase::Argument;
|
||||
using setIsVerbose = DiagnosticInfoOptimizationBase::setIsVerbose;
|
||||
using setExtraArgs = DiagnosticInfoOptimizationBase::setExtraArgs;
|
||||
}
|
||||
|
||||
/// OptimizationRemarkEmitter legacy analysis pass
|
||||
|
|
|
@ -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 *>;
|
||||
};
|
||||
|
||||
|
|
|
@ -170,25 +170,14 @@ const std::string DiagnosticInfoWithDebugLocBase::getLocationStr() const {
|
|||
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();
|
||||
}
|
||||
|
|
|
@ -1590,13 +1590,10 @@ bool GVN::PerformLoadPRE(LoadInst *LI, AvailValInBlkVect &ValuesPerBlock,
|
|||
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 *LI) {
|
|||
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())
|
||||
|
|
|
@ -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: ...
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue