X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=docs%2FLangRef.html;h=7ee1418f31637dcaf3a8f1220799d853913aa0db;hb=ebd7eabca4c090175b71f221e880f8bd937a4523;hp=ef58b988172d8b2ed089de325f88f8a81d5a3dfb;hpb=27db99fcee85939f0b7580ad55303c4c60a3b98d;p=oota-llvm.git diff --git a/docs/LangRef.html b/docs/LangRef.html index ef58b988172..7ee1418f316 100644 --- a/docs/LangRef.html +++ b/docs/LangRef.html @@ -25,7 +25,6 @@
  • 'private' Linkage
  • 'linker_private' Linkage
  • 'linker_private_weak' Linkage
  • -
  • 'linker_private_weak_def_auto' Linkage
  • 'internal' Linkage
  • 'available_externally' Linkage
  • 'linkonce' Linkage
  • @@ -34,6 +33,7 @@
  • 'appending' Linkage
  • 'extern_weak' Linkage
  • 'linkonce_odr' Linkage
  • +
  • 'linkonce_odr_auto_hide' Linkage
  • 'weak_odr' Linkage
  • 'external' Linkage
  • 'dllimport' Linkage
  • @@ -103,6 +103,7 @@
  • Metadata Nodes and Metadata Strings
    1. 'tbaa' Metadata
    2. +
    3. 'tbaa.struct' Metadata
    4. 'fpmath' Metadata
    5. 'range' Metadata
    @@ -576,15 +577,6 @@ define i32 @main() { ; i32()*   linker. The symbols are removed by the linker from the final linked image (executable or dynamic library). -
    linker_private_weak_def_auto
    -
    Similar to "linker_private_weak", but it's known that the address - of the object is not taken. For instance, functions that had an inline - definition, but the compiler decided not to inline it. Note, - unlike linker_private and linker_private_weak, - linker_private_weak_def_auto may have only default - visibility. The symbols are removed by the linker from the final linked - image (executable or dynamic library).
    -
    internal
    Similar to private, but the value shows as a local symbol (STB_LOCAL in the case of ELF) in the object file. This @@ -653,6 +645,14 @@ define i32 @main() { ; i32()*   be merged with equivalent globals. These linkage types are otherwise the same as their non-odr versions.
    +
    linkonce_odr_auto_hide
    +
    Similar to "linkonce_odr", but nothing in the translation unit + takes the address of this definition. For instance, functions that had an + inline definition, but the compiler decided not to inline it. + linkonce_odr_auto_hide may have only default visibility. + The symbols are removed by the linker from the final linked image + (executable or dynamic library).
    +
    external
    If none of the above identifiers are used, the global is externally visible, meaning that it participates in linkage and can be used to @@ -1107,9 +1107,9 @@ declare signext i8 @returns_signed_char()
    This indicates that the pointer parameter specifies the address of a structure that is the return value of the function in the source program. This pointer must be guaranteed by the caller to be valid: loads and - stores to the structure may be assumed by the callee to not to trap. This - may only be applied to the first parameter. This is not a valid attribute - for return values.
    + stores to the structure may be assumed by the callee to not to trap and + to be properly aligned. This may only be applied to the first parameter. + This is not a valid attribute for return values.
    noalias
    This indicates that pointer values @@ -2895,8 +2895,18 @@ call void asm sideeffect "eieio", ""() call void asm alignstack "eieio", ""() -

    If both keywords appear the 'sideeffect' keyword must come - first.

    +

    Inline asms also support using non-standard assembly dialects. The assumed + dialect is ATT. When the 'inteldialect' keyword is present, the + inline asm is using the Intel dialect. Currently, ATT and Intel are the + only supported dialects. An example is:

    + +
    +call void asm inteldialect "eieio", ""()
    +
    + +

    If multiple keywords appear the 'sideeffect' keyword must come + first, the 'alignstack' keyword second and the + 'inteldialect' keyword last.

    +

    + 'tbaa.struct' Metadata +

    + +
    + +

    The llvm.memcpy is often used to implement +aggregate assignment operations in C and similar languages, however it is +defined to copy a contiguous region of memory, which is more than strictly +necessary for aggregate types which contain holes due to padding. Also, it +doesn't contain any TBAA information about the fields of the aggregate.

    + +

    !tbaa.struct metadata can describe which memory subregions in a memcpy +are padding and what the TBAA tags of the struct are.

    + +

    The current metadata format is very simple. !tbaa.struct metadata nodes + are a list of operands which are in conceptual groups of three. For each + group of three, the first operand gives the byte offset of a field in bytes, + the second gives its size in bytes, and the third gives its + tbaa tag. e.g.:

    + +
    +
    +!4 = metadata !{ i64 0, i64 4, metadata !1, i64 8, i64 4, metadata !2 }
    +
    +
    + +

    This describes a struct with two fields. The first is at offset 0 bytes + with size 4 bytes, and has tbaa tag !1. The second is at offset 8 bytes + and has size 4 bytes and has tbaa tag !2.

    + +

    Note that the fields need not be contiguous. In this example, there is a + 4 byte gap between the two fields. This gap represents padding which + does not carry useful data and need not be preserved.

    + +
    +

    'fpmath' Metadata