From e6e8826870bee3facb04f950f0bd725f8a88623d Mon Sep 17 00:00:00 2001
From: Bill Wendling
Date: Fri, 12 Aug 2011 20:24:12 +0000
Subject: 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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137501 91177308-0d34-0410-b5e6-96231b3b80d8
---
docs/LangRef.html | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
(limited to 'docs')
diff --git a/docs/LangRef.html b/docs/LangRef.html
index 20250201b0..725691c14f 100644
--- a/docs/LangRef.html
+++ b/docs/LangRef.html
@@ -6022,7 +6022,7 @@ freestanding environments and non-C-based languages.
<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>
Overview:
@@ -6041,9 +6041,11 @@ freestanding environments and non-C-based languages.
cleanup flag indicates that the landing pad block is a cleanup.
A clause begins with the clause type — catch
- or filter — and contains a list of global variables
- representing the "types" that may be caught or filtered respectively. The
- 'landingpad' instruction must contain at least
+ or filter — and contains the global variable representing the
+ "type" that may be caught or filtered respectively. Unlike the
+ catch clause, the filter clause takes an array constant as
+ its argument. Use "[0 x i8**] undef" for a filter which cannot
+ throw. The 'landingpad' instruction must contain at least
one clause or the cleanup flag.
Semantics:
@@ -6079,11 +6081,11 @@ freestanding environments and non-C-based languages.
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]
--
cgit v1.2.3