diff --git a/docs/LangRef.html b/docs/LangRef.html index e6c94ca16f4..d86f248551e 100644 --- a/docs/LangRef.html +++ b/docs/LangRef.html @@ -255,9 +255,9 @@

This document is a reference manual for the LLVM assembly language. -LLVM is an SSA based representation that provides type safety, -low-level operations, flexibility, and the capability of representing -'all' high-level languages cleanly. It is the common code +LLVM is an Static Single Assignment (SSA) based representation that provides +type safety, low-level operations, flexibility, and the capability of +representing 'all' high-level languages cleanly. It is the common code representation used throughout all phases of the LLVM compilation strategy.

@@ -522,9 +522,9 @@ All Global Variables and Functions have one of the following types of linkage:
extern_weak:
-
The semantics of this linkage follow the ELF model: the symbol is weak - until linked, if not linked, the symbol becomes null instead of being an - undefined reference. +
The semantics of this linkage follow the ELF object file model: the + symbol is weak until linked, if not linked, the symbol becomes null instead + of being an undefined reference.
externally visible:
@@ -538,7 +538,7 @@ All Global Variables and Functions have one of the following types of linkage:

The next two types of linkage are targeted for Microsoft Windows platform only. They are designed to support importing (exporting) symbols from (to) - DLLs. + DLLs (Dynamic Link Libraries).

@@ -602,8 +602,8 @@ the future:

This calling convention attempts to make calls as fast as possible (e.g. by passing things in registers). This calling convention allows the target to use whatever tricks it wants to produce fast code for the target, - without having to conform to an externally specified ABI. Implementations of - this convention should allow arbitrary + without having to conform to an externally specified ABI (Application Binary + Interface). Implementations of this convention should allow arbitrary tail call optimization to be supported. This calling convention does not support varargs and requires the prototype of all callees to exactly match the prototype of the function @@ -648,7 +648,8 @@ All Global Variables and Functions have one of the following visibility styles:
"default" - Default style:
-
On ELF, default visibility means that the declaration is visible to other +
On targets that use the ELF object file format, default visibility means + that the declaration is visible to other modules and, in shared libraries, means that the declared entity may be overridden. On Darwin, default visibility means that the declaration is visible to other modules. Default visibility corresponds to "external @@ -760,7 +761,8 @@ optional linkage type, an optional name, a possibly empty list of arguments, an optional alignment, and an optional garbage collector name.

-

A function definition contains a list of basic blocks, forming the CFG for +

A function definition contains a list of basic blocks, forming the CFG +(Control Flow Graph) for the function. Each basic block may optionally start with a label (giving the basic block a symbol table entry), contains a list of instructions, and ends with a terminator instruction (such as a branch or @@ -957,7 +959,7 @@ aspect of the data layout. The specifications accepted are as follows:

Specifies that the target lays out data in big-endian form. That is, the bits with the most significance have the lowest address location.
e
-
Specifies that hte target lays out data in little-endian form. That is, +
Specifies that the target lays out data in little-endian form. That is, the bits with the least significance have the lowest address location.
p:size:abi:pref
This specifies the size of a pointer and its abi and @@ -989,7 +991,7 @@ are given in this list:

  • i8:8:8 - i8 is 8-bit (byte) aligned
  • i16:16:16 - i16 is 16-bit aligned
  • i32:32:32 - i32 is 32-bit aligned
  • -
  • i64:32:64 - i64 has abi alignment of 32-bits but preferred +
  • i64:32:64 - i64 has ABI alignment of 32-bits but preferred alignment of 64-bits
  • f32:32:32 - float is 32-bit aligned
  • f64:64:64 - double is 64-bit aligned
  • @@ -1023,7 +1025,8 @@ following rules:

    The LLVM type system is one of the most important features of the intermediate representation. Being typed enables a number of -optimizations to be performed on the IR directly, without having to do +optimizations to be performed on the intermediate representation directly, +without having to do extra analyses on the side before the transformation. A strong type system makes it easier to read the generated code and enables novel analyses and transformations that are not feasible to perform on normal @@ -4515,7 +4518,8 @@ example, memory allocation.

    LLVM support for Accurate Garbage -Collection requires the implementation and generation of these intrinsics. +Collection (GC) requires the implementation and generation of these +intrinsics. These intrinsics allow identification of GC roots on the stack, as well as garbage collector implementations that require read and write barriers. @@ -4867,11 +4871,12 @@ performance.

    The 'llvm.pcmarker' intrinsic is a method to export a Program Counter -(PC) in a region of -code to simulators and other tools. The method is target specific, but it is -expected that the marker will use exported symbols to transmit the PC of the marker. -The marker makes no guarantees that it will remain with any specific instruction -after optimizations. It is possible that the presence of a marker will inhibit +(PC) in a region of +code to simulators and other tools. The method is target specific, but it is +expected that the marker will use exported symbols to transmit the PC of the +marker. +The marker makes no guarantees that it will remain with any specific instruction +after optimizations. It is possible that the presence of a marker will inhibit optimizations. The intended use is to be inserted after optimizations to allow correlations of simulation runs.

    @@ -5691,7 +5696,8 @@ declare i8* @llvm.init.trampoline(i8* <tramp>, i8* <func>, i8* <n These intrinsic functions expand the "universal IR" of LLVM to represent hardware constructs for atomic operations and memory synchronization. This provides an interface to the hardware, not an interface to the programmer. It - is aimed at a low enough level to allow any programming models or APIs which + is aimed at a low enough level to allow any programming models or APIs + (Application Programming Interfaces) which need atomic behaviors to map cleanly onto it. It is also modeled primarily on hardware behavior. Just as hardware provides a "universal IR" for source languages, it also provides a starting point for developing a "universal"