///
class DbgDeclareInst : public DbgInfoIntrinsic {
public:
- Value *getAddress() const { return getOperand(1); }
+ Value *getAddress() const;
MDNode *getVariable() const { return cast<MDNode>(getOperand(2)); }
// Methods for support type inquiry through isa, cast, and dyn_cast:
///
class DbgValueInst : public DbgInfoIntrinsic {
public:
- Value *getValue() const;
- Value *getOffset() const { return getOperand(2); }
- MDNode *getVariable() const { return cast<MDNode>(getOperand(3)); }
+ const Value *getValue() const;
+ Value *getValue();
+ uint64_t getOffset() const {
+ return cast<ConstantInt>(
+ const_cast<Value*>(getOperand(2)))->getZExtValue();
+ }
+ const MDNode *getVariable() const { return cast<MDNode>(getOperand(3)); }
+ MDNode *getVariable() { return cast<MDNode>(getOperand(3)); }
// Methods for support type inquiry through isa, cast, and dyn_cast:
static inline bool classof(const DbgValueInst *) { return true; }
return getAlignmentCst()->getZExtValue();
}
+ ConstantInt *getVolatileCst() const {
+ return cast<ConstantInt>(const_cast<Value*>(getOperand(5)));
+ }
+ bool isVolatile() const {
+ return getVolatileCst()->getZExtValue() != 0;
+ }
+
/// getDest - This is just like getRawDest, but it strips off any cast
/// instructions that feed it, giving the original input. The returned
/// value is guaranteed to be a pointer.
void setAlignment(Constant* A) {
setOperand(4, A);
}
-
+
+ void setVolatile(Constant* V) {
+ setOperand(5, V);
+ }
+
const Type *getAlignmentType() const {
return getOperand(4)->getType();
}