<commit_before>//===- llvm/Analysis/DominatorSet.h - Dominator Set Calculation --*- C++ -*--=//
//
// This file defines the following classes:
//  1. DominatorSet: Calculates the [reverse] dominator set for a method
//  2. ImmediateDominators: Calculates and holds the immediate dominator tree
//     for a method.
// 
//===----------------------------------------------------------------------===//

#ifndef LLVM_DOMINATOR_SET_H
#define LLVM_DOMINATOR_SET_H

#include <set>
#include <map>
#include <vector>
class Method;
class BasicBlock;

namespace cfg {

//===----------------------------------------------------------------------===//
//
// DominatorSet - Maintain a set<const BasicBlock*> for every basic block in a
// method, that represents the blocks that dominate the block.
//
class DominatorSet {
public:
  typedef set<const BasicBlock*>              DomSetType;    // Dom set for a bb
  typedef map<const BasicBlock *, DomSetType> DomSetMapType; // Map of dom sets
private:
  DomSetMapType Doms;
  const BasicBlock *Root;
public:
  // DominatorSet ctor - Build either the dominator set or the post-dominator<commit_msg>Update documentation a bit, correct #include guard<commit_after>//===- llvm/Analysis/DominatorSet.h - Dominator Set Calculation --*- C++ -*--=//
//
// This file defines the following classes:
//  1. DominatorSet: Calculates the [reverse] dominator set for a method
//  2. ImmediateDominators: Calculates and holds a mapping between BasicBlocks
//     and their immediate dominator.
//  3. DominatorTree: Represent the ImmediateDominator as an explicit tree
//     structure.
//  4. DominanceFrontier: Calculate and hold the dominance frontier for a 
//     method.
//
//  These data structures are listed in increasing order of complexity.  It
//  takes longer to calculate the dominator frontier, for example, than the 
//  ImmediateDominator mapping.
// 
//===----------------------------------------------------------------------===//

#ifndef LLVM_DOMINATORS_H
#define LLVM_DOMINATORS_H

#include <set>
#include <map>
#include <vector>
class Method;
class BasicBlock;

namespace cfg {

//===----------------------------------------------------------------------===//
//
// DominatorSet - Maintain a set<const BasicBlock*> for every basic block in a
// method, that represents the blocks that dominate the block.
//
class DominatorSet {
public:
  typedef set<const BasicBlock*>              DomSetType;    // Dom set for a bb
  typedef map<const BasicBlock *, DomSetType> DomSetMapType; // Map of dom sets
private:
  DomSetMapType Doms;
  const BasicBlock *Root;
public:
  // DominatorSet ctor - Build either the dominator set or the post-dominator
{'fraction_non_alphanumeric': 0.20283370618941088, 'fraction_numerical': 0.0022371364653243847, 'mean_word_length': 2.252121212121212, 'pattern_counts': {'":': 0, '<': 15, '<?xml version=': 0, '>': 15, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '909652', 'n_tokens_mistral': 728, 'n_tokens_neox': 724, 'n_words': 267}