mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-08-05 13:26:55 +00:00
Implement aliases. This fixes PR1017 and it's dependent bugs. CFE part
will follow. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36435 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -943,11 +943,11 @@ all functions. The format is shown in the table below:</p>
|
||||
target triple specified, i.e. a platform-independent module).</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="#string">string</a></td>
|
||||
<td class="td_left">The data layout string describing the endianness,
|
||||
pointer size, and type alignments for which the module was written
|
||||
(blank means no data layout specified, i.e. a platform-independent
|
||||
module).</td>
|
||||
<td><a href="#string">string</a></td>
|
||||
<td class="td_left">The data layout string describing the endianness,
|
||||
pointer size, and type alignments for which the module was written
|
||||
(blank means no data layout specified, i.e. a platform-independent
|
||||
module).</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="#llist">llist</a>(<a href="#string">string</a>)</td>
|
||||
@@ -959,6 +959,11 @@ all functions. The format is shown in the table below:</p>
|
||||
<td><a href="#string">string</a></td>
|
||||
<td class="td_left">The inline asm block for this module.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="#zlist">zlist</a>(<a href="#alias">alias</a>)</td>
|
||||
<td class="td_left">A zero terminated list of aliases occurring in the
|
||||
module.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@@ -1123,7 +1128,7 @@ href="#uint32_vbr">uint32_vbr</a> that describes the function.</p>
|
||||
<td><a href="#bit">bit(5-30)</a></td>
|
||||
<td class="td_left">Type slot number of type for the function.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<tr>
|
||||
<td><a href="#bit">bit(31)</a></td>
|
||||
<td class="td_left">Indicates whether an extension word follows.</td>
|
||||
</tr>
|
||||
@@ -1185,6 +1190,56 @@ follows with the following fields:</p>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- _______________________________________________________________________ -->
|
||||
<div class="doc_subsubsection"><a name="alias">Alias Field</a>
|
||||
</div>
|
||||
<div class="doc_text">
|
||||
<p>Aliases are written using 3 <a href="#uint32_vbr">uint32_vbr</a>
|
||||
that encode information about alias itself and aliasee.</p>
|
||||
|
||||
<p>The table below provides the bit layout of
|
||||
the first <a href="#uint32_vbr">uint32_vbr</a> which describes alias itself.</p>
|
||||
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th><b>Type</b></th>
|
||||
<th class="td_left"><b>Description</b></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="#bit">bit(0-1)</a></td>
|
||||
<td class="td_left">Alias linkage. 0 - External linkage, 1 - Internal
|
||||
linkage, 2 - Weak linkage.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="#bit">bit(2-31)</a></td>
|
||||
<td class="td_left">Type slot number of type for the alias itself.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<p>The next two <a href="#uint32_vbr">uint32_vbr's</a> describes the
|
||||
aliasee. </p>
|
||||
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th><b>Type</b></th>
|
||||
<th class="td_left"><b>Description</b></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="#uint32_vbr">uint32_vbr</a></td>
|
||||
<td class="td_left">Type slot number of type for the aliasee.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="#uint32_vbr">uint32_vbr</a></td>
|
||||
<td class="td_left">Slot number of the aliasee.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- _______________________________________________________________________ -->
|
||||
<div class="doc_subsection"><a name="constantpool">Constant Pool</a> </div>
|
||||
<div class="doc_text">
|
||||
|
@@ -498,7 +498,8 @@ outside of the current module.</p>
|
||||
<p>It is illegal for a function <i>declaration</i>
|
||||
to have any linkage type other than "externally visible", <tt>dllimport</tt>,
|
||||
or <tt>extern_weak</tt>.</p>
|
||||
|
||||
<p>Aliases can have only <tt>external</tt>, <tt>internal</tt> and <tt>weak</tt>
|
||||
linkages.
|
||||
</div>
|
||||
|
||||
<!-- ======================================================================= -->
|
||||
@@ -602,12 +603,11 @@ All Global Variables and Functions have one of the following visibility styles:
|
||||
|
||||
<p>Global variables define regions of memory allocated at compilation time
|
||||
instead of run-time. Global variables may optionally be initialized, may have
|
||||
an explicit section to be placed in, and may
|
||||
have an optional explicit alignment specified. A variable may be defined as
|
||||
"thread_local", which means that it will not be shared by threads (each thread
|
||||
will have a separated copy of the variable).
|
||||
A variable may be defined as a global "constant," which indicates that the
|
||||
contents of the variable will <b>never</b> be modified (enabling better
|
||||
an explicit section to be placed in, and may have an optional explicit alignment
|
||||
specified. A variable may be defined as "thread_local", which means that it
|
||||
will not be shared by threads (each thread will have a separated copy of the
|
||||
variable). A variable may be defined as a global "constant," which indicates
|
||||
that the contents of the variable will <b>never</b> be modified (enabling better
|
||||
optimization, allowing the global data to be placed in the read-only section of
|
||||
an executable, etc). Note that variables that need runtime initialization
|
||||
cannot be marked "constant" as there is a store to the variable.</p>
|
||||
@@ -698,6 +698,27 @@ a power of 2.</p>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<!-- ======================================================================= -->
|
||||
<div class="doc_subsection">
|
||||
<a name="aliasstructure">Aliases</a>
|
||||
</div>
|
||||
<div class="doc_text">
|
||||
<p>Aliases act as "second name" for the aliasee value (which can be either
|
||||
function or global variable). Aliases may have an
|
||||
optional <a href="#linkage">linkage type</a>, and an
|
||||
optional <a href="#visibility">visibility style</a>.</p>
|
||||
|
||||
<h5>Syntax:</h5>
|
||||
|
||||
<pre>
|
||||
@<Name> = [Linkage] [Visibility] alias <AliaseeTy> @<Aliasee>
|
||||
</pre>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<!-- ======================================================================= -->
|
||||
<div class="doc_subsection"><a name="paramattrs">Parameter Attributes</a></div>
|
||||
<div class="doc_text">
|
||||
|
Reference in New Issue
Block a user