r201715 - Moving the documentation for the clang::fallthrough attribute into AttrDocs.
Aaron Ballman
aaron at aaronballman.com
Wed Feb 19 15:24:55 PST 2014
On Wed, Feb 19, 2014 at 6:23 PM, Richard Smith <richard at metafoo.co.uk> wrote:
> On Wed, Feb 19, 2014 at 12:56 PM, Aaron Ballman <aaron at aaronballman.com>
> wrote:
>>
>> Author: aaronballman
>> Date: Wed Feb 19 14:56:51 2014
>> New Revision: 201715
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=201715&view=rev
>> Log:
>> Moving the documentation for the clang::fallthrough attribute into
>> AttrDocs.
>>
>> Modified:
>> cfe/trunk/docs/LanguageExtensions.rst
>> cfe/trunk/include/clang/Basic/Attr.td
>> cfe/trunk/include/clang/Basic/AttrDocs.td
>>
>> Modified: cfe/trunk/docs/LanguageExtensions.rst
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/LanguageExtensions.rst?rev=201715&r1=201714&r2=201715&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/docs/LanguageExtensions.rst (original)
>> +++ cfe/trunk/docs/LanguageExtensions.rst Wed Feb 19 14:56:51 2014
>> @@ -1570,51 +1570,6 @@ Non-standard C++11 Attributes
>> Clang's non-standard C++11 attributes live in the ``clang`` attribute
>> namespace.
>>
>> -The ``clang::fallthrough`` attribute
>> -------------------------------------
>> -
>> -The ``clang::fallthrough`` attribute is used along with the
>> -``-Wimplicit-fallthrough`` argument to annotate intentional fall-through
>> -between switch labels. It can only be applied to a null statement placed
>> at a
>> -point of execution between any statement and the next switch label. It
>> is
>> -common to mark these places with a specific comment, but this attribute
>> is
>> -meant to replace comments with a more strict annotation, which can be
>> checked
>> -by the compiler. This attribute doesn't change semantics of the code and
>> can
>> -be used wherever an intended fall-through occurs. It is designed to
>> mimic
>> -control-flow statements like ``break;``, so it can be placed in most
>> places
>> -where ``break;`` can, but only if there are no statements on the
>> execution path
>> -between it and the next switch label.
>> -
>> -Here is an example:
>> -
>> -.. code-block:: c++
>> -
>> - // compile with -Wimplicit-fallthrough
>> - switch (n) {
>> - case 22:
>> - case 33: // no warning: no statements between case labels
>> - f();
>> - case 44: // warning: unannotated fall-through
>> - g();
>> - [[clang::fallthrough]];
>> - case 55: // no warning
>> - if (x) {
>> - h();
>> - break;
>> - }
>> - else {
>> - i();
>> - [[clang::fallthrough]];
>> - }
>> - case 66: // no warning
>> - p();
>> - [[clang::fallthrough]]; // warning: fallthrough annotation does not
>> - // directly precede case label
>> - q();
>> - case 77: // warning: unannotated fall-through
>> - r();
>> - }
>> -
>> ``gnu::`` attributes
>> --------------------
>
>
> This change has left the remaining text here a bit broken: "Clang also
> supports GCC’s gnu attribute namespace [...]".
Good catch; I'll reword temporarily, but ideally this should move into
the attribute documentation.
Thanks!
~Aaron
More information about the cfe-commits
mailing list