mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-08-05 13:26:55 +00:00
Initial submission for the attribute group feature.
Attribute groups are of the form: #0 = attributes { noinline "no-sse" "cpu"="cortex-a8" alignstack=4 } Target-dependent attributes are represented as strings. Attributes can have optional values associated with them. E.g., the "cpu" attribute has the value "cortex-a8". Target-independent attributes are listed as enums inside the attribute classes. Multiple attribute groups can be referenced by the same object. In that case, the attributes are merged together. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174493 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -737,6 +737,36 @@ The compiler declares the supported values of *name*. Specifying a
|
||||
collector which will cause the compiler to alter its output in order to
|
||||
support the named garbage collection algorithm.
|
||||
|
||||
.. _attrgrp:
|
||||
|
||||
Attribute Groups
|
||||
----------------
|
||||
|
||||
Attribute groups are groups of attributes that are referenced by objects within
|
||||
the IR. They are important for keeping ``.ll`` files readable, because a lot of
|
||||
functions will use the same set of attributes. In the degenerative case of a
|
||||
``.ll`` file that corresponds to a single ``.c`` file, the single attribute
|
||||
group will capture the important command line flags used to build that file.
|
||||
|
||||
An attribute group is a module-level object. To use an attribute group, an
|
||||
object references the attribute group's ID (e.g. ``#37``). An object may refer
|
||||
to more than one attribute group. In that situation, the attributes from the
|
||||
different groups are merged.
|
||||
|
||||
Here is an example of attribute groups for a function that should always be
|
||||
inlined, has a stack alignment of 4, and which shouldn't use SSE instructions:
|
||||
|
||||
.. code-block:: llvm
|
||||
|
||||
; Target-independent attributes:
|
||||
#0 = attributes { alwaysinline alignstack=4 }
|
||||
|
||||
; Target-dependent attributes:
|
||||
#1 = attributes { "no-sse" }
|
||||
|
||||
; Function @f has attributes: alwaysinline, alignstack=4, and "no-sse".
|
||||
define void @f() #0 #1 { ... }
|
||||
|
||||
.. _fnattrs:
|
||||
|
||||
Function Attributes
|
||||
|
Reference in New Issue
Block a user