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:
parent
bc8d86ec5a
commit
d6143d7aff
@ -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.
|
||||
|
@ -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.
|
||||
|
Loading…
Reference in New Issue
Block a user