Files
FEX-Emu--FEX/FEXCore/Source/Interface/IR/Passes/IRValidation.h
T
Alyssa Rosenzweig af21b8f3c7 Move External/FEXCore/ to FEXCore/
It is not an external component, and it makes paths needlessly long.
Ryan seemed amenable to this when we discussed on IRC earlier.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
2023-08-17 16:32:16 -04:00

35 lines
670 B
C++

#pragma once
#include "Common/BitSet.h"
#include <FEXCore/IR/IR.h>
#include <FEXCore/fextl/unordered_map.h>
#include <FEXCore/fextl/vector.h>
namespace FEXCore::IR::Validation {
struct BlockInfo {
bool HasExit;
OrderedNode const *BlockNode;
fextl::vector<OrderedNode*> Predecessors;
fextl::vector<OrderedNode*> Successors;
};
class RAValidation;
class IRValidation final : public FEXCore::IR::Pass {
public:
~IRValidation();
bool Run(IREmitter *IREmit) override;
private:
BitSet<uint64_t> NodeIsLive;
OrderedNode *EntryBlock;
fextl::unordered_map<IR::NodeID, BlockInfo> OffsetToBlockMap;
size_t MaxNodes{};
friend class RAValidation;
};
}