#include "llvm/Argument.h"
#include "llvm/Attributes.h"
#include "llvm/Support/Compiler.h"
-#include "llvm/ADT/DenseMap.h"
namespace llvm {
mutable ArgumentListType ArgumentList; ///< The formal arguments
ValueSymbolTable *SymTab; ///< Symbol table of args/instructions
AttrListPtr AttributeList; ///< Parameter attributes
- DenseMap<Instruction*, unsigned>
- CallSiteNumbering; ///< SjLj EH call site numbering
// HasLazyArguments is stored in Value::SubclassData.
/*bool HasLazyArguments;*/
/// The particular intrinsic functions which correspond to this value are
/// defined in llvm/Intrinsics.h.
///
- unsigned getIntrinsicID() const ATTRIBUTE_READONLY;
+ unsigned getIntrinsicID() const LLVM_ATTRIBUTE_READONLY;
bool isIntrinsic() const { return getIntrinsicID() != 0; }
/// getCallingConv()/setCallingConv(CC) - These method get and set the
setValueSubclassData((getSubclassDataFromValue() & 1) |
(static_cast<unsigned>(CC) << 1));
}
-
- /// setCallSiteNumber - Set the call site number mapping for an invoke
- /// in the function
- void setCallSiteNumber(Instruction *II, unsigned Num) {
- CallSiteNumbering[II] = Num;
- }
-
- /// getCallSiteNumber - Get the call site number for an invoke instruction
- unsigned getCallSiteNumber(Instruction *II) {
- if (CallSiteNumbering.count(II) == 0) return 0;
- return CallSiteNumbering[II];
- }
-
+
/// getAttributes - Return the attribute list for this Function.
///
const AttrListPtr &getAttributes() const { return AttributeList; }
void dropAllReferences();
/// hasAddressTaken - returns true if there are any uses of this function
- /// other than direct calls or invokes to it.
- bool hasAddressTaken() const;
+ /// other than direct calls or invokes to it. Optionally passes back the
+ /// offending user for diagnostic purposes.
+ ///
+ bool hasAddressTaken(const User** = 0) const;
+
private:
// Shadow Value::setValueSubclassData with a private forwarding method so that
// subclasses cannot accidentally use it.