688761409155b47c39eb5dae1b8c6c8a9f43307a |
|
30-Jul-2011 |
Douglas Gregor <dgregor@apple.com> |
Turn off __has_feature(is_empty) and __has_feature(is_pod) if the libstdc++ hack has reverted these type traits to keywords. Icky, but fixes <rdar://problem/9836262>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136560 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/SemaCXX/libstdcxx_is_pod_hack.cpp
|
2cc702e52127512a67cbcbb3af6d73fb06d8b6bf |
|
29-Apr-2011 |
Douglas Gregor <dgregor@apple.com> |
Oops git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130469 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/SemaCXX/libstdcxx_is_pod_hack.cpp
|
877222e2491bbc40a5c74cc100c540983f306b70 |
|
29-Apr-2011 |
Douglas Gregor <dgregor@apple.com> |
libstdc++ 4.2 also uses __is_same as a struct name, which conflicts with our new type trait __is_same git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130468 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/SemaCXX/libstdcxx_is_pod_hack.cpp
|
bfad9150bfa894195a43c5f487117672a449f90f |
|
28-Apr-2011 |
Douglas Gregor <dgregor@apple.com> |
libstdc++ 4.4 uses __is_signed as an identifier, while Clang treats it as a keyword for the __is_signed type trait. Cope with this conflict via some hackish recovery: if we see a declaration of the form static const bool __is_signed then we stop treating __is_signed as a keyword and instead treat it as an identifier. It's ugly, but it's better than making the __is_signed type trait conditional on some language flag. Fixes PR9804. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130399 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/SemaCXX/libstdcxx_is_pod_hack.cpp
|
c53d0d762010217d02da5aa14be171817d63e3fe |
|
08-Apr-2010 |
Douglas Gregor <dgregor@apple.com> |
Introduce an egregious hack to work around a bug in libstdc++ 4.2.x's <tr1/hashtable> header, where a friend class template std::tr1::__detail::_Map_base is declared with the wrong template parameters. GCC doesn't catch the problem, so Clang does a little back-flip to avoid diagnosing just this one instance of the problem. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100790 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/SemaCXX/libstdcxx_is_pod_hack.cpp
|
a5728872c7702ddd09537c95bc3cbd20e1f2fb09 |
|
15-Dec-2009 |
Daniel Dunbar <daniel@zuster.org> |
Update tests to use %clang_cc1 instead of 'clang-cc' or 'clang -cc1'. - This is designed to make it obvious that %clang_cc1 is a "test variable" which is substituted. It is '%clang_cc1' instead of '%clang -cc1' because it can be useful to redefine what gets run as 'clang -cc1' (for example, to set a default target). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91446 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/SemaCXX/libstdcxx_is_pod_hack.cpp
|
b117a60f7684261ddc8c8f14e8ef8a827e6af814 |
|
04-Sep-2009 |
Douglas Gregor <dgregor@apple.com> |
Introduce an egregious hack to fix PR4828. The problem this change addresses is that we treat __is_pod and __is_empty as keywords in C++, because they are built-in type traits in GCC >= 4.3. However, GNU libstdc++ 4.2 (and possibly earlier versions) define implementation-detail struct templates named __is_pod and __is_empty. This commit solves the problem by recognizing struct __is_pod and struct __is_empty as special token sequences. When one of these token sequences is encountered, the keyword (__is_pod or __is_empty) is implicitly downgraded to an identifier so that parsing can continue. This is an egregious hack, but it has the virtue of "just working" whether someone is using libstdc++ 4.2 or not, without the need for special flags. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80988 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/SemaCXX/libstdcxx_is_pod_hack.cpp
|