forked from OSchip/llvm-project
Including the symbol table in the FindUsedTypes analysis was the WRONG way
to fix test/Regression/CBackend/2003-10-23-UnusedType.ll. This completely neutered the deadtypeelim pass. llvm-svn: 9646
This commit is contained in:
parent
91d79bb4be
commit
7949bf0d54
|
@ -16,7 +16,6 @@
|
|||
|
||||
#include "llvm/Pass.h"
|
||||
#include <set>
|
||||
class SymbolTable;
|
||||
class Type;
|
||||
|
||||
class FindUsedTypes : public Pass {
|
||||
|
@ -43,10 +42,6 @@ private:
|
|||
///
|
||||
void IncorporateValue(const Value *V);
|
||||
|
||||
/// IncorporateSymbolTable - Include any named types.
|
||||
///
|
||||
void IncorporateSymbolTable(const SymbolTable &ST);
|
||||
|
||||
public:
|
||||
/// run - This incorporates all types used by the specified module
|
||||
bool run(Module &M);
|
||||
|
|
|
@ -7,7 +7,9 @@
|
|||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// This pass is used to seek out all of the types in use by the program.
|
||||
// This pass is used to seek out all of the types in use by the program. Note
|
||||
// that this analysis explicitly does not include types only used by the symbol
|
||||
// table.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
|
@ -42,15 +44,6 @@ void FindUsedTypes::IncorporateType(const Type *Ty) {
|
|||
IncorporateType(*I);
|
||||
}
|
||||
|
||||
void FindUsedTypes::IncorporateSymbolTable(const SymbolTable &ST) {
|
||||
SymbolTable::const_iterator TI = ST.find(Type::TypeTy);
|
||||
if (TI == ST.end()) return; // No named types
|
||||
|
||||
for (SymbolTable::type_const_iterator I = TI->second.begin(),
|
||||
E = TI->second.end(); I != E; ++I)
|
||||
IncorporateType(cast<Type>(I->second));
|
||||
}
|
||||
|
||||
void FindUsedTypes::IncorporateValue(const Value *V) {
|
||||
IncorporateType(V->getType());
|
||||
|
||||
|
@ -68,8 +61,6 @@ void FindUsedTypes::IncorporateValue(const Value *V) {
|
|||
bool FindUsedTypes::run(Module &m) {
|
||||
UsedTypes.clear(); // reset if run multiple times...
|
||||
|
||||
IncorporateSymbolTable(m.getSymbolTable());
|
||||
|
||||
// Loop over global variables, incorporating their types
|
||||
for (Module::const_giterator I = m.gbegin(), E = m.gend(); I != E; ++I) {
|
||||
IncorporateType(I->getType());
|
||||
|
@ -80,7 +71,6 @@ bool FindUsedTypes::run(Module &m) {
|
|||
for (Module::iterator MI = m.begin(), ME = m.end(); MI != ME; ++MI) {
|
||||
IncorporateType(MI->getType());
|
||||
const Function &F = *MI;
|
||||
IncorporateSymbolTable(F.getSymbolTable());
|
||||
|
||||
// Loop over all of the instructions in the function, adding their return
|
||||
// type as well as the types of their operands.
|
||||
|
|
Loading…
Reference in New Issue