Collect eh filter info.
authorJim Laskey <jlaskey@mac.com>
Thu, 1 Mar 2007 20:25:32 +0000 (20:25 +0000)
committerJim Laskey <jlaskey@mac.com>
Thu, 1 Mar 2007 20:25:32 +0000 (20:25 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34804 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/CodeGen/MachineModuleInfo.h
lib/CodeGen/MachineModuleInfo.cpp

index f1c710037759c418012f3cf165253d82e19c00bd..28201dcfdc69c9ef6d897fb5800e7cae38d6ca3c 100644 (file)
@@ -960,6 +960,8 @@ struct LandingPadInfo {
   unsigned LandingPadLabel;             // Label at beginning of landing pad.
   Function *Personality;                // Personality function.
   std::vector<unsigned> TypeIds;        // List of type ids.
+  bool IsFilter;                        // Indicate if the landing pad is a
+                                        // throw filter.
   
   LandingPadInfo(MachineBasicBlock *MBB)
   : LandingPadBlock(MBB)
@@ -967,6 +969,7 @@ struct LandingPadInfo {
   , EndLabel(0)
   , LandingPadLabel(0)
   , TypeIds()
+  , IsFilter(false)
   {}
 };
 
@@ -1202,6 +1205,10 @@ public:
   void addCatchTypeInfo(MachineBasicBlock *LandingPad,
                         std::vector<GlobalVariable *> &TyInfo);
                         
+  /// setIsFilterLandingPad - Indicates that the landing pad is a throw filter.
+  ///
+  void setIsFilterLandingPad(MachineBasicBlock *LandingPad);
+                        
   /// getTypeIDFor - Return the type id for the specified typeinfo.  This is 
   /// function wide.
   unsigned getTypeIDFor(GlobalVariable *TI);
index adf7d29c0498c6481089a4f151a57dabff6eb7ec..d37021e0a31b12d32cc7d35495ff1fac928f84c4 100644 (file)
@@ -1653,9 +1653,9 @@ LandingPadInfo &MachineModuleInfo::getOrCreateLandingPadInfo
     (MachineBasicBlock *LandingPad) {
   unsigned N = LandingPads.size();
   for (unsigned i = 0; i < N; ++i) {
-    LandingPadInfo &UI = LandingPads[i];
-    if (UI.LandingPadBlock == LandingPad)
-      return UI;
+    LandingPadInfo &LP = LandingPads[i];
+    if (LP.LandingPadBlock == LandingPad)
+      return LP;
   }
   
   LandingPads.push_back(LandingPadInfo(LandingPad));
@@ -1666,17 +1666,17 @@ LandingPadInfo &MachineModuleInfo::getOrCreateLandingPadInfo
 /// associate it with a try landing pad block.
 void MachineModuleInfo::addInvoke(MachineBasicBlock *LandingPad,
                                   unsigned BeginLabel, unsigned EndLabel) {
-  LandingPadInfo &UI = getOrCreateLandingPadInfo(LandingPad);
-  if (!UI.BeginLabel) UI.BeginLabel = BeginLabel;  
-  UI.EndLabel = EndLabel;  
+  LandingPadInfo &LP = getOrCreateLandingPadInfo(LandingPad);
+  if (!LP.BeginLabel) LP.BeginLabel = BeginLabel;  
+  LP.EndLabel = EndLabel;  
 }
 
 /// addLandingPad - Provide the label of a try LandingPad block.
 ///
 unsigned MachineModuleInfo::addLandingPad(MachineBasicBlock *LandingPad) {
   unsigned LandingPadLabel = NextLabelID();
-  LandingPadInfo &UI = getOrCreateLandingPadInfo(LandingPad);
-  UI.LandingPadLabel = LandingPadLabel;  
+  LandingPadInfo &LP = getOrCreateLandingPadInfo(LandingPad);
+  LP.LandingPadLabel = LandingPadLabel;  
   return LandingPadLabel;
 }
 
@@ -1684,19 +1684,26 @@ unsigned MachineModuleInfo::addLandingPad(MachineBasicBlock *LandingPad) {
 /// information.
 void MachineModuleInfo::addPersonality(MachineBasicBlock *LandingPad,
                                        Function *Personality) {
-  LandingPadInfo &UI = getOrCreateLandingPadInfo(LandingPad);
-  UI.Personality = Personality;
+  LandingPadInfo &LP = getOrCreateLandingPadInfo(LandingPad);
+  LP.Personality = Personality;
 }
 
 /// addCatchTypeInfo - Provide the catch typeinfo for a landing pad.
 ///
 void MachineModuleInfo::addCatchTypeInfo(MachineBasicBlock *LandingPad,
                                         std::vector<GlobalVariable *> &TyInfo) {
-  LandingPadInfo &UI = getOrCreateLandingPadInfo(LandingPad);
+  LandingPadInfo &LP = getOrCreateLandingPadInfo(LandingPad);
   for (unsigned N = TyInfo.size(); N; --N)
-    UI.TypeIds.push_back(getTypeIDFor(TyInfo[N - 1]));
+    LP.TypeIds.push_back(getTypeIDFor(TyInfo[N - 1]));
 }
                         
+/// setIsFilterLandingPad - Indicates that the landing pad is a throw filter.
+///
+void MachineModuleInfo::setIsFilterLandingPad(MachineBasicBlock *LandingPad) {
+  LandingPadInfo &LP = getOrCreateLandingPadInfo(LandingPad);
+  LP.IsFilter = true;
+}
+
 /// TidyLandingPads - Remap landing pad labels and remove any deleted landing
 /// pads.
 void MachineModuleInfo::TidyLandingPads() {