Fix __is_signed builtin
Summary: This patch fixes the __is_signed builtin type trait to work with floating point types and enums. Now, the builtin will return true if it is passed a floating point type and false for an enum type.
Reviewers: EricWF, rsmith, erichkeane, craig.topper, efriedma
Subscribers: cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D67897
llvm-svn: 372621
diff --git a/clang/docs/LanguageExtensions.rst b/clang/docs/LanguageExtensions.rst
index 23c8778..903d450 100644
--- a/clang/docs/LanguageExtensions.rst
+++ b/clang/docs/LanguageExtensions.rst
@@ -1161,10 +1161,7 @@
* ``__is_sealed`` (Microsoft):
Synonym for ``__is_final``.
* ``__is_signed`` (C++, Embarcadero):
- Note that this currently returns true for enumeration types if the underlying
- type is signed, and returns false for floating-point types, in violation of
- the requirements for ``std::is_signed``. This behavior is likely to change in
- a future version of Clang.
+ Returns false for enumeration types, and returns true for floating-point types. Note, before Clang 10, returned true for enumeration types if the underlying type was signed, and returned false for floating-point types.
* ``__is_standard_layout`` (C++, GNU, Microsoft, Embarcadero)
* ``__is_trivial`` (C++, GNU, Microsoft, Embarcadero)
* ``__is_trivially_assignable`` (C++, GNU, Microsoft)