inalloca: *Really* fix the docs

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@204890 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Reid Kleckner 2014-03-27 01:38:48 +00:00
parent b1d0dd95ee
commit 7d3c316353

View File

@ -5,8 +5,6 @@ Design and Usage of the InAlloca Attribute
Introduction Introduction
============ ============
.. Warning:: This feature is unstable and not fully implemented.
The :ref:`inalloca <attr_inalloca>` attribute is designed to allow The :ref:`inalloca <attr_inalloca>` attribute is designed to allow
taking the address of an aggregate argument that is being passed by taking the address of an aggregate argument that is being passed by
value through memory. Primarily, this feature is required for value through memory. Primarily, this feature is required for
@ -54,11 +52,11 @@ that passes two default-constructed ``Foo`` objects to ``g`` in the
entry: entry:
%base = call i8* @llvm.stacksave() %base = call i8* @llvm.stacksave()
%memargs = alloca <{ %struct.Foo, %struct.Foo }> %memargs = alloca <{ %struct.Foo, %struct.Foo }>
%b = getelementptr <{ %struct.Foo, %struct.Foo }>*, i32 1 %b = getelementptr <{ %struct.Foo, %struct.Foo }>* %memargs, i32 1
call void @Foo_ctor(%struct.Foo* %b) call void @Foo_ctor(%struct.Foo* %b)
; If a's ctor throws, we must destruct b. ; If a's ctor throws, we must destruct b.
%a = getelementptr <{ %struct.Foo, %struct.Foo }>*, i32 0 %a = getelementptr <{ %struct.Foo, %struct.Foo }>* %memargs, i32 0
invoke void @Foo_ctor(%struct.Foo* %a) invoke void @Foo_ctor(%struct.Foo* %a)
to label %invoke.cont unwind %invoke.unwind to label %invoke.cont unwind %invoke.unwind