From 61c70e98ac3c7504d31dd9bc81c4e9cb998e9984 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sat, 28 Aug 2010 04:09:24 +0000 Subject: remove unions from LLVM IR. They are severely buggy and not being actively maintained, improved, or extended. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112356 91177308-0d34-0410-b5e6-96231b3b80d8 --- docs/BitCodeFormat.html | 15 ---------- docs/GetElementPtr.html | 11 -------- docs/LangRef.html | 74 +++++-------------------------------------------- docs/ReleaseNotes.html | 3 +- 4 files changed, 8 insertions(+), 95 deletions(-) (limited to 'docs') diff --git a/docs/BitCodeFormat.html b/docs/BitCodeFormat.html index fc045cb075..d8ddc2b6b2 100644 --- a/docs/BitCodeFormat.html +++ b/docs/BitCodeFormat.html @@ -1367,21 +1367,6 @@ type to the type table.

- -
TYPE_CODE_UNION Record -
- -
- -

[UNION, ...eltty...]

- -

The UNION record (code 17) adds a union type to -the type table. The eltty operand fields are zero or more type -indices representing the element types of the union. -

- -
-
CONSTANTS_BLOCK Contents
diff --git a/docs/GetElementPtr.html b/docs/GetElementPtr.html index 3bf38a366d..890d2761ef 100644 --- a/docs/GetElementPtr.html +++ b/docs/GetElementPtr.html @@ -26,7 +26,6 @@
  • Why don't GEP x,0,0,1 and GEP x,1 alias?
  • Why do GEP x,1,0,0 and GEP x,1 alias?
  • Can GEP index into vector elements? -
  • Can GEP index into unions?
  • What effect do address spaces have on GEPs?
  • How is GEP different from ptrtoint, arithmetic, and inttoptr?
  • I'm writing a backend for a target which needs custom lowering for GEP. How do I do this? @@ -369,16 +368,6 @@ idx3 = (char*) &MyVar + 8 - -
    -

    Unknown.

    - -
    - - - diff --git a/docs/LangRef.html b/docs/LangRef.html index b8897fd505..eb789c0d50 100644 --- a/docs/LangRef.html +++ b/docs/LangRef.html @@ -74,7 +74,6 @@
  • Array Type
  • Structure Type
  • Packed Structure Type
  • -
  • Union Type
  • Vector Type
  • @@ -1475,7 +1474,6 @@ Classifications pointer, vector, structure, - union, array, label, metadata. @@ -1495,7 +1493,6 @@ Classifications pointer, structure, packed structure, - union, vector, opaque. @@ -1643,8 +1640,8 @@ Classifications

    Aggregate Types are a subset of derived types that can contain multiple member types. Arrays, - structs, vectors and - unions are aggregate types.

    + structs, and vectors are + aggregate types.

    @@ -1714,9 +1711,7 @@ Classifications
    Overview:

    The function type can be thought of as a function signature. It consists of a return type and a list of formal parameter types. The return type of a - function type is a scalar type, a void type, a struct type, or a union - type. If the return type is a struct type then all struct elements must be - of first class types, and the struct must have at least one element.

    + function type is a first class type or a void type.

    Syntax:
    @@ -1837,53 +1832,6 @@ Classifications 
     
     
     
    -
    -
    -
    -
    - -
    Overview:
    -

    A union type describes an object with size and alignment suitable for - an object of any one of a given set of types (also known as an "untagged" - union). It is similar in concept and usage to a - struct, except that all members of the union - have an offset of zero. The elements of a union may be any type that has a - size. Unions must have at least one member - empty unions are not allowed. -

    - -

    The size of the union as a whole will be the size of its largest member, - and the alignment requirements of the union as a whole will be the largest - alignment requirement of any member.

    - -

    Union members are accessed using 'load and - 'store' by getting a pointer to a field with - the 'getelementptr' instruction. - Since all members are at offset zero, the getelementptr instruction does - not affect the address, only the type of the resulting pointer.

    - -
    Syntax:
    -
    -  union { <type list> }
    -
    - -
    Examples:
    - - - - - - - - -
    union { i32, i32*, float }A union of three types: an i32, a pointer to - an i32, and a float.
    - union { float, i32 (i32) * }A union, where the first element is a float and the - second element is a pointer to a - function that takes an i32, returning - an i32.
    - -
    - @@ -2125,14 +2073,6 @@ Classifications the number and types of elements must match those specified by the type. -
    Union constants
    -
    Union constants are represented with notation similar to a structure with - a single element - that is, a single typed element surrounded - by braces ({})). For example: "{ i32 4 }". The - union type can be initialized with a single-element - struct as long as the type of the struct element matches the type of - one of the union members.
    -
    Array constants
    Array constants are represented with notation similar to array type definitions (a comma separated list of elements, surrounded by square @@ -4153,7 +4093,7 @@ Instruction
    Arguments:

    The first operand of an 'extractvalue' instruction is a value - of struct, union or + of struct or array type. The operands are constant indices to specify which value to extract in a similar manner as indices in a 'getelementptr' instruction.

    @@ -4187,7 +4127,7 @@ Instruction
    Arguments:

    The first operand of an 'insertvalue' instruction is a value - of struct, union or + of struct or array type. The second operand is a first-class value to insert. The following operands are constant indices indicating the position at which to insert the value in a similar manner as indices in a @@ -4420,12 +4360,12 @@ Instruction indexes a value of the type pointed to (not necessarily the value directly pointed to, since the first index can be non-zero), etc. The first type indexed into must be a pointer value, subsequent types can be arrays, - vectors, structs and unions. Note that subsequent types being indexed into + vectors, and structs. Note that subsequent types being indexed into can never be pointers, since that would require loading the pointer before continuing calculation.

    The type of each index argument depends on the type it is indexing into. - When indexing into a (optionally packed) structure or union, only i32 + When indexing into a (optionally packed) structure, only i32 integer constants are allowed. When indexing into an array, pointer or vector, integers of any width are allowed, and they are not required to be constant.

    diff --git a/docs/ReleaseNotes.html b/docs/ReleaseNotes.html index ebf68f840f..3595735033 100644 --- a/docs/ReleaseNotes.html +++ b/docs/ReleaseNotes.html @@ -67,9 +67,8 @@ Almost dead code. include/llvm/Analysis/LiveValues.h => Dan lib/Transforms/IPO/MergeFunctions.cpp => consider for 2.8. llvm/Analysis/PointerTracking.h => Edwin wants this, consider for 2.8. - ABCD, GEPSplitterPass + GEPSplitterPass MSIL backend? - lib/Transforms/Utils/SSI.cpp -> ABCD depends on it. --> -- cgit v1.2.3