xref: /minix3/minix/llvm/passes/include/magic/support/VariableRefs.h (revision 3e457fe321c6af238c180a2b4a0f010f8b4f8c31)
1*3e457fe3SDavid van Moolenbroek #ifndef VARIABLE_REFS_H
2*3e457fe3SDavid van Moolenbroek #define VARIABLE_REFS_H
3*3e457fe3SDavid van Moolenbroek 
4*3e457fe3SDavid van Moolenbroek #include <pass.h>
5*3e457fe3SDavid van Moolenbroek 
6*3e457fe3SDavid van Moolenbroek using namespace llvm;
7*3e457fe3SDavid van Moolenbroek 
8*3e457fe3SDavid van Moolenbroek namespace llvm {
9*3e457fe3SDavid van Moolenbroek 
10*3e457fe3SDavid van Moolenbroek class VariableRefs {
11*3e457fe3SDavid van Moolenbroek   public:
12*3e457fe3SDavid van Moolenbroek       VariableRefs();
13*3e457fe3SDavid van Moolenbroek 
14*3e457fe3SDavid van Moolenbroek       bool isUnnecessaryInstruction(Instruction* inst) const;
15*3e457fe3SDavid van Moolenbroek       Instruction* getInstruction() const;
16*3e457fe3SDavid van Moolenbroek       bool isInstructionInEntryBlock() const;
17*3e457fe3SDavid van Moolenbroek 
18*3e457fe3SDavid van Moolenbroek       void addInstruction(Instruction* inst);
19*3e457fe3SDavid van Moolenbroek       void clear();
20*3e457fe3SDavid van Moolenbroek 
21*3e457fe3SDavid van Moolenbroek   private:
22*3e457fe3SDavid van Moolenbroek       Instruction* instruction;
23*3e457fe3SDavid van Moolenbroek       bool instructionInEntryBlock;
24*3e457fe3SDavid van Moolenbroek 
25*3e457fe3SDavid van Moolenbroek       void setFunctionEntryInstruction(Function* function);
26*3e457fe3SDavid van Moolenbroek };
27*3e457fe3SDavid van Moolenbroek 
28*3e457fe3SDavid van Moolenbroek }
29*3e457fe3SDavid van Moolenbroek 
30*3e457fe3SDavid van Moolenbroek #endif
31