46 std::vector<Value* > values;
52 std::vector<Value* > values;
105 assert(!val->getType()->isVoidTy() &&
"expecting non-void value for MD!");
106 std::vector<Value* > values;
109 if (
evalMDTag(inst, val, str, values) ==
false)
112 values.push_back(val);
115 inst->setMetadata(str, MDNode::get(inst->getContext(),
nullptr));
123 assert(!val->getType()->isVoidTy() &&
"expecting non-void value for MD!");
124 std::vector<Value* > values;
127 if (
evalMDTag(inst, val, str, values) ==
true)
129 llvm::ArrayRef<Value* > ar(values);
140 std::vector<Value* >&)
const
143 assert(val &&
"value should not be null");
145 bool hasFlag =
false;
146 if (
MDNode *mdNode = inst->getMetadata(str))
149 for (
unsigned k = 0; k < mdNode->getNumOperands(); ++k)
const char * SB_SLICESOURCE
Saber annotations.
bool hasDRNotCheckFlag(const Instruction *inst) const
bool evalMDTag(const Instruction *inst, const Value *val, std::string str, std::vector< Value * > &) const
evaluate llvm metadata
void removeMDTag(Instruction *inst, std::string str)
const char * SB_SLICESINK
bool hasSBSourceFlag(Instruction *inst) const
SB Has flag methods.
const char * SB_INFESIBLE
void removeMDTag(Instruction *inst, Value *val, std::string str)
remove flag from llvm metadata
bool hasDRCheckFlag(Instruction *inst) const
virtual ~Annotator()
Destructor.
bool hasDRCheckFlag(const Instruction *inst) const
bool hasSBSinkFlag(Instruction *inst) const
void addMDTag(Instruction *inst, std::string str)
Simple add/remove meta data information.
bool hasDRNotCheckFlag(Instruction *inst) const
Race Detection Has flag methods.
const char * DR_NOT_CHECK
Race Detection annotations.
llvm::Instruction Instruction
llvm::Value Value
LLVM Basic classes.