mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-12-26 17:57:07 +00:00
bd44174547
Using -isystem marks the headers as system headers, which means that we don't actually get all the warnings that we'd normally get if we included the headers as user headers. The goal of the test suite is normally to mirror as closely as possible how users would use the library. Technically, this change goes against that philosophy, since users should be using `-isystem` (if they ever need to specify the libc++ path explicitly, which should be a rare occurence). However, I believe fishing out additional warnings from the headers provides more value, hence this change. Ideally, we'd be able to still use `-isystem`, but instruct Clang to still emit warnings from the libc++ headers (e.g. we could tell Clang to emit warnings in any file inside `<...>/usr/include/c++/v1`). Reviewed By: #libc, ldionne, #libc_abi Spies: Mordante, EricWF, mstorsjo, mgorny, aheejin, arichardson, philnik, jloser, libcxx-commits Differential Revision: https://reviews.llvm.org/D118616
136 lines
3.2 KiB
C++
136 lines
3.2 KiB
C++
// -*- C++ -*-
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef _LIBCPP_EXT_HASH
|
|
#define _LIBCPP_EXT_HASH
|
|
|
|
# pragma GCC system_header
|
|
|
|
#include <__config>
|
|
#include <__string>
|
|
#include <cstring>
|
|
#include <string>
|
|
|
|
namespace __gnu_cxx {
|
|
|
|
template <typename _Tp> struct _LIBCPP_TEMPLATE_VIS hash { };
|
|
|
|
template <> struct _LIBCPP_TEMPLATE_VIS hash<const char*>
|
|
: public std::unary_function<const char*, size_t>
|
|
{
|
|
_LIBCPP_INLINE_VISIBILITY
|
|
size_t operator()(const char *__c) const _NOEXCEPT
|
|
{
|
|
return std::__do_string_hash(__c, __c + strlen(__c));
|
|
}
|
|
};
|
|
|
|
template <> struct _LIBCPP_TEMPLATE_VIS hash<char *>
|
|
: public std::unary_function<char*, size_t>
|
|
{
|
|
_LIBCPP_INLINE_VISIBILITY
|
|
size_t operator()(char *__c) const _NOEXCEPT
|
|
{
|
|
return std::__do_string_hash<const char *>(__c, __c + strlen(__c));
|
|
}
|
|
};
|
|
|
|
template <> struct _LIBCPP_TEMPLATE_VIS hash<char>
|
|
: public std::unary_function<char, size_t>
|
|
{
|
|
_LIBCPP_INLINE_VISIBILITY
|
|
size_t operator()(char __c) const _NOEXCEPT
|
|
{
|
|
return __c;
|
|
}
|
|
};
|
|
|
|
template <> struct _LIBCPP_TEMPLATE_VIS hash<signed char>
|
|
: public std::unary_function<signed char, size_t>
|
|
{
|
|
_LIBCPP_INLINE_VISIBILITY
|
|
size_t operator()(signed char __c) const _NOEXCEPT
|
|
{
|
|
return __c;
|
|
}
|
|
};
|
|
|
|
template <> struct _LIBCPP_TEMPLATE_VIS hash<unsigned char>
|
|
: public std::unary_function<unsigned char, size_t>
|
|
{
|
|
_LIBCPP_INLINE_VISIBILITY
|
|
size_t operator()(unsigned char __c) const _NOEXCEPT
|
|
{
|
|
return __c;
|
|
}
|
|
};
|
|
|
|
template <> struct _LIBCPP_TEMPLATE_VIS hash<short>
|
|
: public std::unary_function<short, size_t>
|
|
{
|
|
_LIBCPP_INLINE_VISIBILITY
|
|
size_t operator()(short __c) const _NOEXCEPT
|
|
{
|
|
return __c;
|
|
}
|
|
};
|
|
|
|
template <> struct _LIBCPP_TEMPLATE_VIS hash<unsigned short>
|
|
: public std::unary_function<unsigned short, size_t>
|
|
{
|
|
_LIBCPP_INLINE_VISIBILITY
|
|
size_t operator()(unsigned short __c) const _NOEXCEPT
|
|
{
|
|
return __c;
|
|
}
|
|
};
|
|
|
|
template <> struct _LIBCPP_TEMPLATE_VIS hash<int>
|
|
: public std::unary_function<int, size_t>
|
|
{
|
|
_LIBCPP_INLINE_VISIBILITY
|
|
size_t operator()(int __c) const _NOEXCEPT
|
|
{
|
|
return __c;
|
|
}
|
|
};
|
|
|
|
template <> struct _LIBCPP_TEMPLATE_VIS hash<unsigned int>
|
|
: public std::unary_function<unsigned int, size_t>
|
|
{
|
|
_LIBCPP_INLINE_VISIBILITY
|
|
size_t operator()(unsigned int __c) const _NOEXCEPT
|
|
{
|
|
return __c;
|
|
}
|
|
};
|
|
|
|
template <> struct _LIBCPP_TEMPLATE_VIS hash<long>
|
|
: public std::unary_function<long, size_t>
|
|
{
|
|
_LIBCPP_INLINE_VISIBILITY
|
|
size_t operator()(long __c) const _NOEXCEPT
|
|
{
|
|
return __c;
|
|
}
|
|
};
|
|
|
|
template <> struct _LIBCPP_TEMPLATE_VIS hash<unsigned long>
|
|
: public std::unary_function<unsigned long, size_t>
|
|
{
|
|
_LIBCPP_INLINE_VISIBILITY
|
|
size_t operator()(unsigned long __c) const _NOEXCEPT
|
|
{
|
|
return __c;
|
|
}
|
|
};
|
|
} // namespace __gnu_cxx
|
|
|
|
#endif // _LIBCPP_EXT_HASH
|