1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 11:13:28 +01:00

the pointer MMI keeps will start out with object-file format specific stuff

llvm-svn: 82012
This commit is contained in:
Chris Lattner 2009-09-16 05:26:00 +00:00
parent bc8d86ec5a
commit d6143d7aff
2 changed files with 13 additions and 12 deletions

View File

@ -91,9 +91,10 @@ struct LandingPadInfo {
/// schemes and reformated for specific use.
///
class MachineModuleInfo : public ImmutablePass {
/// TargetMMI - This is the target-specific implementation of
/// MachineModuleInfoImpl, which lets them accumulate whatever info they want.
MachineModuleInfoImpl *TargetMMI;
/// ObjFileMMI - This is the object-file-format-specific implementation of
/// MachineModuleInfoImpl, which lets targets accumulate whatever info they
/// want.
MachineModuleInfoImpl *ObjFileMMI;
// LabelIDList - One entry per assigned label. Normally the entry is equal to
// the list index(+1). If the entry is zero then the label has been deleted.
@ -161,18 +162,18 @@ public:
/// backends that would like to do so.
///
template<typename Ty>
Ty *getInfo() {
if (TargetMMI == 0)
TargetMMI = new Ty(*this);
Ty *getObjFileInfo() {
if (ObjFileMMI == 0)
ObjFileMMI = new Ty(*this);
assert((void*)dynamic_cast<Ty*>(TargetMMI) == (void*)TargetMMI &&
assert((void*)dynamic_cast<Ty*>(ObjFileMMI) == (void*)ObjFileMMI &&
"Invalid concrete type or multiple inheritence for getInfo");
return static_cast<Ty*>(TargetMMI);
return static_cast<Ty*>(ObjFileMMI);
}
template<typename Ty>
const Ty *getInfo() const {
return const_cast<MachineModuleInfo*>(this)->getInfo<Ty>();
const Ty *getObjFileInfo() const {
return const_cast<MachineModuleInfo*>(this)->getObjFileInfo<Ty>();
}
/// AnalyzeModule - Scan the module for global debug information.

View File

@ -39,7 +39,7 @@ MachineModuleInfoImpl::~MachineModuleInfoImpl() {}
MachineModuleInfo::MachineModuleInfo()
: ImmutablePass(&ID)
, TargetMMI(0)
, ObjFileMMI(0)
, CallsEHReturn(0)
, CallsUnwindInit(0)
, DbgInfoAvailable(false) {
@ -48,7 +48,7 @@ MachineModuleInfo::MachineModuleInfo()
}
MachineModuleInfo::~MachineModuleInfo() {
delete TargetMMI;
delete ObjFileMMI;
}
/// doInitialization - Initialize the state for a new module.