From 3602549c3dbce144bdfc5b0db784c60880a3062f Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Thu, 7 Oct 2004 06:01:25 +0000 Subject: [PATCH] Fix a bug in the safety analysis routine git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16804 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Transforms/IPO/GlobalOpt.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/Transforms/IPO/GlobalOpt.cpp b/lib/Transforms/IPO/GlobalOpt.cpp index 8e563cb07b4..74e56491806 100644 --- a/lib/Transforms/IPO/GlobalOpt.cpp +++ b/lib/Transforms/IPO/GlobalOpt.cpp @@ -69,6 +69,9 @@ static bool AnalyzeGlobal(Value *V, GlobalStatus &GS, if (isa(I)) { GS.isLoaded = true; } else if (StoreInst *SI = dyn_cast(I)) { + // Don't allow a store OF the address, only stores TO the address. + if (SI->getOperand(0) == V) return true; + // If this store is just storing the initializer into a global (i.e. not // changing the value), ignore it. For now we just handle direct // stores, no stores to fields of aggregates. @@ -239,9 +242,6 @@ bool GlobalOpt::runOnModule(Module &M) { ++NumMarked; Changed = true; - } else if (!GS.isNotSuitableForSRA && - !GV->getInitializer()->getType()->isFirstClassType()) { - //std::cerr << "COULD SRA: " << *GV; } } }