//
// The LLVM Compiler Infrastructure
//
-// This file was developed by the LLVM research group and is distributed under
-// the University of Illinois Open Source License. See LICENSE.TXT for details.
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
#include "llvm/Function.h"
#include "llvm/Instructions.h"
#include "llvm/Intrinsics.h"
-#include "llvm/System/IncludeFile.h"
namespace llvm {
/// IntrinsicInst - A useful wrapper class for inspecting calls to intrinsic
IntrinsicInst(); // DO NOT IMPLEMENT
IntrinsicInst(const IntrinsicInst&); // DO NOT IMPLEMENT
void operator=(const IntrinsicInst&); // DO NOT IMPLEMENT
- protected:
- static void destroyThis(IntrinsicInst* v) {
- CallInst::destroyThis(v);
- }
- friend class Value;
public:
-
- /// StripPointerCasts - This static method strips off any unneeded pointer
- /// casts from the specified value, returning the original uncasted value.
- /// Note that the returned value is guaranteed to have pointer type.
- static Value *StripPointerCasts(Value *Ptr);
-
/// getIntrinsicID - Return the intrinsic ID of this intrinsic.
///
Intrinsic::ID getIntrinsicID() const {
}
static Value *StripCast(Value *C);
- protected:
- static void destroyThis(DbgInfoIntrinsic* v) {
- IntrinsicInst::destroyThis(v);
- }
- friend class Value;
};
/// DbgStopPointInst - This represents the llvm.dbg.stoppoint instruction.
static inline bool classof(const Value *V) {
return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
}
- protected:
- static void destroyThis(DbgStopPointInst* v) {
- DbgInfoIntrinsic::destroyThis(v);
- }
- friend class Value;
};
/// DbgFuncStartInst - This represents the llvm.dbg.func.start instruction.
static inline bool classof(const Value *V) {
return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
}
- protected:
- static void destroyThis(DbgFuncStartInst* v) {
- DbgInfoIntrinsic::destroyThis(v);
- }
- friend class Value;
};
/// DbgRegionStartInst - This represents the llvm.dbg.region.start
static inline bool classof(const Value *V) {
return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
}
- protected:
- static void destroyThis(DbgRegionStartInst* v) {
- DbgInfoIntrinsic::destroyThis(v);
- }
- friend class Value;
};
/// DbgRegionEndInst - This represents the llvm.dbg.region.end instruction.
static inline bool classof(const Value *V) {
return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
}
- protected:
- static void destroyThis(DbgDeclareInst* v) {
- DbgInfoIntrinsic::destroyThis(v);
- }
- friend class Value;
};
/// MemIntrinsic - This is the common base class for memset/memcpy/memmove.
/// 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.
- Value *getDest() const { return StripPointerCasts(getRawDest()); }
+ Value *getDest() const { return getRawDest()->stripPointerCasts(); }
/// set* - Set the specified arguments of the instruction.
///
static inline bool classof(const Value *V) {
return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
}
- protected:
- static void destroyThis(MemIntrinsic* v) {
- IntrinsicInst::destroyThis(v);
- }
- friend class Value;
};
/// getSource - This is just like getRawSource, but it strips off any cast
/// instructions that feed it, giving the original input. The returned
/// value is guaranteed to be a pointer.
- Value *getSource() const { return StripPointerCasts(getRawSource()); }
+ Value *getSource() const { return getRawSource()->stripPointerCasts(); }
void setSource(Value *Ptr) {
static inline bool classof(const Value *V) {
return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
}
- protected:
- static void destroyThis(MemCpyInst* v) {
- MemIntrinsic::destroyThis(v);
- }
- friend class Value;
};
/// MemMoveInst - This class wraps the llvm.memmove intrinsic.
/// getSource - This is just like getRawSource, but it strips off any cast
/// instructions that feed it, giving the original input. The returned
/// value is guaranteed to be a pointer.
- Value *getSource() const { return StripPointerCasts(getRawSource()); }
+ Value *getSource() const { return getRawSource()->stripPointerCasts(); }
void setSource(Value *Ptr) {
assert(getRawSource()->getType() == Ptr->getType() &&
static inline bool classof(const Value *V) {
return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
}
- protected:
- static void destroyThis(MemMoveInst* v) {
- MemIntrinsic::destroyThis(v);
- }
- friend class Value;
};
/// MemSetInst - This class wraps the llvm.memset intrinsic.
static inline bool classof(const Value *V) {
return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
}
- protected:
- static void destroyThis(MemSetInst* v) {
- MemIntrinsic::destroyThis(v);
- }
- friend class Value;
};
}
-// Ensure that the IntrinsicInst.cpp file gets added as a dependency of any
-// file that includes this header
-FORCE_DEFINING_FILE_TO_BE_LINKED(IntrinsicInst)
-
#endif