Add documentation for the transparent_union attribute

Differential Revision: https://reviews.llvm.org/D25995

llvm-svn: 285292
This commit is contained in:
Alex Lorenz 2016-10-27 13:51:30 +00:00
parent 179e803abd
commit 600ee1726b
2 changed files with 19 additions and 1 deletions

View File

@ -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];
}

View File

@ -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++.
}];
}