summaryrefslogtreecommitdiffstats
path: root/lib/internal.h
diff options
context:
space:
mode:
authorExpat Upstream <kwrobot@kitware.com>2016-05-01 14:01:51 (GMT)
committerBrad King <brad.king@kitware.com>2016-05-05 18:42:29 (GMT)
commit318b1c17a96a2e1e93bc8a457e98770e829ea02c (patch)
tree05024ece9b29ece8dfc3647cb93b765e83a7cca2 /lib/internal.h
downloadCMake-318b1c17a96a2e1e93bc8a457e98770e829ea02c.zip
CMake-318b1c17a96a2e1e93bc8a457e98770e829ea02c.tar.gz
CMake-318b1c17a96a2e1e93bc8a457e98770e829ea02c.tar.bz2
expat 2016-05-01 (379213ca)
Code extracted from: http://git.code.sf.net/p/expat/code_git at commit 379213ca196f82d19ae72195c4a9bec0553d0bb2 (master).
Diffstat (limited to 'lib/internal.h')
-rw-r--r--lib/internal.h73
1 files changed, 73 insertions, 0 deletions
diff --git a/lib/internal.h b/lib/internal.h
new file mode 100644
index 0000000..dd54548
--- /dev/null
+++ b/lib/internal.h
@@ -0,0 +1,73 @@
+/* internal.h
+
+ Internal definitions used by Expat. This is not needed to compile
+ client code.
+
+ The following calling convention macros are defined for frequently
+ called functions:
+
+ FASTCALL - Used for those internal functions that have a simple
+ body and a low number of arguments and local variables.
+
+ PTRCALL - Used for functions called though function pointers.
+
+ PTRFASTCALL - Like PTRCALL, but for low number of arguments.
+
+ inline - Used for selected internal functions for which inlining
+ may improve performance on some platforms.
+
+ Note: Use of these macros is based on judgement, not hard rules,
+ and therefore subject to change.
+*/
+
+#if defined(__GNUC__) && defined(__i386__) && !defined(__MINGW32__)
+/* We'll use this version by default only where we know it helps.
+
+ regparm() generates warnings on Solaris boxes. See SF bug #692878.
+
+ Instability reported with egcs on a RedHat Linux 7.3.
+ Let's comment out:
+ #define FASTCALL __attribute__((stdcall, regparm(3)))
+ and let's try this:
+*/
+#define FASTCALL __attribute__((regparm(3)))
+#define PTRFASTCALL __attribute__((regparm(3)))
+#endif
+
+/* Using __fastcall seems to have an unexpected negative effect under
+ MS VC++, especially for function pointers, so we won't use it for
+ now on that platform. It may be reconsidered for a future release
+ if it can be made more effective.
+ Likely reason: __fastcall on Windows is like stdcall, therefore
+ the compiler cannot perform stack optimizations for call clusters.
+*/
+
+/* Make sure all of these are defined if they aren't already. */
+
+#ifndef FASTCALL
+#define FASTCALL
+#endif
+
+#ifndef PTRCALL
+#define PTRCALL
+#endif
+
+#ifndef PTRFASTCALL
+#define PTRFASTCALL
+#endif
+
+#ifndef XML_MIN_SIZE
+#if !defined(__cplusplus) && !defined(inline)
+#ifdef __GNUC__
+#define inline __inline
+#endif /* __GNUC__ */
+#endif
+#endif /* XML_MIN_SIZE */
+
+#ifdef __cplusplus
+#define inline inline
+#else
+#ifndef inline
+#define inline
+#endif
+#endif