mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-04 23:32:00 +00:00
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:
parent
b1d0dd95ee
commit
7d3c316353
@ -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
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user