Centralize use of __attribute__((noinline))

There are currently only two users, but I have patches in
the pipeline which mark some other function noinline, so
proavtively centralize the ifdef'ery involved.

Change-Id: I1f02351fdc903d4e026089e12b8a976ed6a8d603
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
Marc Mutz 2015-01-25 00:04:42 +01:00
parent 7b5ba56b0a
commit 1749c1dd42
3 changed files with 11 additions and 11 deletions

View File

@ -485,6 +485,14 @@ typedef qptrdiff qintptr;
# define Q_ATTRIBUTE_FORMAT_PRINTF(A, B)
#endif
#ifdef Q_CC_MSVC
# define Q_NEVER_INLINE __declspec(noinline)
#elif defined(Q_CC_GNU)
# define Q_NEVER_INLINE __attribute__((noinline))
#else
# define Q_NEVER_INLINE
#endif
//defines the type for the WNDPROC on windows
//the alignment needs to be forced for sse2 to not crash with mingw
#if defined(Q_OS_WIN)

View File

@ -2761,15 +2761,11 @@ QByteArray QByteArray::mid(int pos, int len) const
\sa toUpper(), {8-bit Character Comparisons}
*/
// noinline so that the compiler won't inline the function in each of
// prevent the compiler from inlining the function in each of
// toLower and toUpper when the only difference is the table being used
// (even with constant propagation, there's no gain in performance).
template <typename T>
#ifdef Q_CC_MSVC
__declspec(noinline)
#elif defined(Q_CC_GNU)
__attribute__((noinline))
#endif
Q_NEVER_INLINE
static QByteArray toCase_template(T &input, const uchar * table)
{
// find the first bad character in input

View File

@ -5559,11 +5559,7 @@ struct CasefoldTraits
};
template <typename Traits, typename T>
#ifdef Q_CC_MSVC
__declspec(noinline)
#elif defined(Q_CC_GNU)
__attribute__((noinline))
#endif
Q_NEVER_INLINE
static QString detachAndConvertCase(T &str, QStringIterator it)
{
QString s = qMove(str); // will copy if T is const QString