diff options
author | Bill Wendling <isanbard@gmail.com> | 2011-08-12 20:24:12 +0000 |
---|---|---|
committer | Bill Wendling <isanbard@gmail.com> | 2011-08-12 20:24:12 +0000 |
commit | fae1475823cd77fc51c75b0237a19636b36a6179 (patch) | |
tree | eb14877a08a4fc49514a9d2098577f9c62f6544d /llvm/docs/LangRef.html | |
parent | 9f4f5d94cd9a7245b8dfe36a94790beae5da7c41 (diff) | |
download | bcm5719-llvm-fae1475823cd77fc51c75b0237a19636b36a6179.tar.gz bcm5719-llvm-fae1475823cd77fc51c75b0237a19636b36a6179.zip |
Initial commit of the 'landingpad' instruction.
This implements the 'landingpad' instruction. It's used to indicate that a basic
block is a landing pad. There are several restrictions on its use (see
LangRef.html for more detail). These restrictions allow the exception handling
code to gather the information it needs in a much more sane way.
This patch has the definition, implementation, C interface, parsing, and bitcode
support in it.
llvm-svn: 137501
Diffstat (limited to 'llvm/docs/LangRef.html')
-rw-r--r-- | llvm/docs/LangRef.html | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/llvm/docs/LangRef.html b/llvm/docs/LangRef.html index 20250201b01..725691c14ff 100644 --- a/llvm/docs/LangRef.html +++ b/llvm/docs/LangRef.html @@ -6022,7 +6022,7 @@ freestanding environments and non-C-based languages.</p> <resultval> = landingpad <somety> personality <type> <pers_fn> cleanup <clause>* <clause> := catch <type> <value> - <clause> := filter <type> <value> {, <type> <value>}* + <clause> := filter <array constant type> <array constant> </pre> <h5>Overview:</h5> @@ -6041,9 +6041,11 @@ freestanding environments and non-C-based languages.</p> <tt>cleanup</tt> flag indicates that the landing pad block is a cleanup.</p> <p>A <tt>clause</tt> begins with the clause type — <tt>catch</tt> - or <tt>filter</tt> — and contains a list of global variables - representing the "types" that may be caught or filtered respectively. The - '<tt>landingpad</tt>' instruction must contain <em>at least</em> + or <tt>filter</tt> — and contains the global variable representing the + "type" that may be caught or filtered respectively. Unlike the + <tt>catch</tt> clause, the <tt>filter</tt> clause takes an array constant as + its argument. Use "<tt>[0 x i8**] undef</tt>" for a filter which cannot + throw. The '<tt>landingpad</tt>' instruction must contain <em>at least</em> one <tt>clause</tt> or the <tt>cleanup</tt> flag.</p> <h5>Semantics:</h5> @@ -6079,11 +6081,11 @@ freestanding environments and non-C-based languages.</p> catch i8** @_ZTIi ;; A landing pad that is a cleanup. %res = landingpad { i8*, i32 } personality i32 (...)* @__gxx_personality_v0 - cleanup + cleanup ;; A landing pad which can catch an integer and can only throw a double. %res = landingpad { i8*, i32 } personality i32 (...)* @__gxx_personality_v0 catch i8** @_ZTIi - filter i8** @_ZTId + filter [1 x i8**] [@_ZTId] </pre> </div> |