diff options
author | Jim Grosbach <grosbach@apple.com> | 2010-01-21 00:43:30 +0000 |
---|---|---|
committer | Jim Grosbach <grosbach@apple.com> | 2010-01-21 00:43:30 +0000 |
commit | d0a0c382ea51d36dc7e5938291763da73b4262dc (patch) | |
tree | 7915691c3b9bc343921177c6faac70d7ea9b600e /include/llvm/Function.h | |
parent | fd0b0288e2ee5ccf3f1d47090542710c67a77cf7 (diff) | |
download | external_llvm-d0a0c382ea51d36dc7e5938291763da73b4262dc.tar.gz external_llvm-d0a0c382ea51d36dc7e5938291763da73b4262dc.tar.bz2 external_llvm-d0a0c382ea51d36dc7e5938291763da73b4262dc.zip |
Make sure that landing pad entries in the EH call site table are in the proper
order for SjLj style exception handling.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94055 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/Function.h')
-rw-r--r-- | include/llvm/Function.h | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/include/llvm/Function.h b/include/llvm/Function.h index 38822332c4..72cb267ae0 100644 --- a/include/llvm/Function.h +++ b/include/llvm/Function.h @@ -24,6 +24,7 @@ #include "llvm/Argument.h" #include "llvm/Attributes.h" #include "llvm/Support/Compiler.h" +#include "llvm/ADT/DenseMap.h" namespace llvm { @@ -86,6 +87,8 @@ private: 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;*/ @@ -165,7 +168,19 @@ public: 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; } |