forked from OSchip/llvm-project
Add documentation for the transparent_union attribute
Differential Revision: https://reviews.llvm.org/D25995 llvm-svn: 285292
This commit is contained in:
parent
179e803abd
commit
600ee1726b
|
@ -1542,7 +1542,7 @@ def Target : InheritableAttr {
|
|||
def TransparentUnion : InheritableAttr {
|
||||
let Spellings = [GCC<"transparent_union">];
|
||||
// let Subjects = SubjectList<[Record, TypedefName]>;
|
||||
let Documentation = [Undocumented];
|
||||
let Documentation = [TransparentUnionDocs];
|
||||
let LangOpts = [COnly];
|
||||
}
|
||||
|
||||
|
|
|
@ -2649,3 +2649,21 @@ Conversely, ``__attribute__((xray_never_instrument))`` or ``[[clang::xray_never_
|
|||
If a function has neither of these attributes, they become subject to the XRay heuristics used to determine whether a function should be instrumented or otherwise.
|
||||
}];
|
||||
}
|
||||
|
||||
def TransparentUnionDocs : Documentation {
|
||||
let Category = DocCatType;
|
||||
let Content = [{
|
||||
This attribute can be applied to a union to change the behaviour of calls to
|
||||
functions that have an argument with a transparent union type. The compiler
|
||||
behaviour is changed in the following manner:
|
||||
|
||||
- A value whose type is any member of the transparent union can be passed as an
|
||||
argument without the need to cast that value.
|
||||
|
||||
- The argument is passed to the function using the calling convention of the
|
||||
first member of the transparent union. Consequently, all the members of the
|
||||
transparent union should have the same calling convention as its first member.
|
||||
|
||||
Transparent unions are not supported in C++.
|
||||
}];
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue