Don't use a potentially expensive shift if all we want is one set bit.
[oota-llvm.git] / lib / DebugInfo / DWARFDebugAranges.h
index 8fe70e4aa453f916c2d6356da4185ef0b0aa1f04..1509ffad41f1d0d8fce4c63a60367b1862b47feb 100644 (file)
@@ -11,6 +11,7 @@
 #define LLVM_DEBUGINFO_DWARFDEBUGARANGES_H
 
 #include "DWARFDebugArangeSet.h"
+#include "llvm/ADT/DenseSet.h"
 #include <list>
 
 namespace llvm {
@@ -60,10 +61,14 @@ public:
     uint32_t Offset; // Offset of the compile unit or die
   };
 
-  void clear() { Aranges.clear(); }
+  void clear() {
+    Aranges.clear();
+    ParsedCUOffsets.clear();
+  }
   bool allRangesAreContiguous(uint64_t& LoPC, uint64_t& HiPC) const;
   bool getMaxRange(uint64_t& LoPC, uint64_t& HiPC) const;
   bool extract(DataExtractor debug_aranges_data);
+  bool generate(DWARFContext *ctx);
 
   // Use append range multiple times and then call sort
   void appendRange(uint32_t cu_offset, uint64_t low_pc, uint64_t high_pc);
@@ -87,9 +92,11 @@ public:
 
   typedef std::vector<Range>              RangeColl;
   typedef RangeColl::const_iterator       RangeCollIterator;
+  typedef DenseSet<uint32_t>              ParsedCUOffsetColl;
 
 private:
   RangeColl Aranges;
+  ParsedCUOffsetColl ParsedCUOffsets;
 };
 
 }