New ACC version.
committer: mfx <mfx> 1119613192 +0000
This commit is contained in:
+338
-154
@@ -36,7 +36,7 @@
|
||||
|
||||
#ifndef __ACC_H_INCLUDED
|
||||
#define __ACC_H_INCLUDED 1
|
||||
#define ACC_VERSION 20050312L
|
||||
#define ACC_VERSION 20050621L
|
||||
#if defined(__CYGWIN32__) && !defined(__CYGWIN__)
|
||||
# define __CYGWIN__ __CYGWIN32__
|
||||
#endif
|
||||
@@ -49,11 +49,9 @@
|
||||
#if 1 && defined(__INTERIX) && defined(__GNUC__) && !defined(_ALL_SOURCE)
|
||||
# define _ALL_SOURCE 1
|
||||
#endif
|
||||
#if defined(__GNUC__) && defined(__mips__) && defined(__R5900__) && defined(_MIPS_SZLONG)
|
||||
# if ((_MIPS_SZLONG)+0 == 64)
|
||||
# if !defined(__LONG_MAX__)
|
||||
# define __LONG_MAX__ 9223372036854775807L
|
||||
# endif
|
||||
#if defined(__mips__) && defined(__R5900__)
|
||||
# if !defined(__LONG_MAX__)
|
||||
# define __LONG_MAX__ 9223372036854775807L
|
||||
# endif
|
||||
#endif
|
||||
#if defined(__INTEL_COMPILER) && defined(__linux__)
|
||||
@@ -318,6 +316,7 @@
|
||||
#else
|
||||
# define ACC_EXTERN_C extern
|
||||
#endif
|
||||
#if !defined(__ACC_OS_OVERRIDE)
|
||||
#if defined(ACC_OS_FREESTANDING)
|
||||
# define ACC_INFO_OS "freestanding"
|
||||
#elif defined(ACC_OS_EMBEDDED)
|
||||
@@ -334,6 +333,9 @@
|
||||
#elif defined(__Lynx__)
|
||||
# define ACC_OS_LYNXOS 1
|
||||
# define ACC_INFO_OS "lynxos"
|
||||
#elif defined(__OS400__)
|
||||
# define ACC_OS_OS400 1
|
||||
# define ACC_INFO_OS "os400"
|
||||
#elif defined(__QNX__)
|
||||
# define ACC_OS_QNX 1
|
||||
# define ACC_INFO_OS "qnx"
|
||||
@@ -407,6 +409,16 @@
|
||||
#elif defined(__VMS)
|
||||
# define ACC_OS_VMS 1
|
||||
# define ACC_INFO_OS "vms"
|
||||
#elif ((defined(__mips__) && defined(__R5900__)) || defined(__MIPS_PSX2__))
|
||||
# define ACC_OS_CONSOLE 1
|
||||
# define ACC_OS_CONSOLE_PS2 1
|
||||
# define ACC_INFO_OS "console"
|
||||
# define ACC_INFO_OS_CONSOLE "ps2"
|
||||
#elif (defined(__mips__) && defined(__psp__))
|
||||
# define ACC_OS_CONSOLE 1
|
||||
# define ACC_OS_CONSOLE_PSP 1
|
||||
# define ACC_INFO_OS "console"
|
||||
# define ACC_INFO_OS_CONSOLE "psp"
|
||||
#else
|
||||
# define ACC_OS_POSIX 1
|
||||
# define ACC_INFO_OS "posix"
|
||||
@@ -458,6 +470,7 @@
|
||||
# define ACC_INFO_OS_POSIX "unknown"
|
||||
# endif
|
||||
#endif
|
||||
#endif
|
||||
#if (ACC_OS_DOS16 || ACC_OS_OS216 || ACC_OS_WIN16)
|
||||
# if (UINT_MAX != ACC_0xffffL)
|
||||
# error "this should not happen"
|
||||
@@ -482,6 +495,10 @@
|
||||
# else
|
||||
# define ACC_INFO_CCVER "unknown"
|
||||
# endif
|
||||
#elif 0 && defined(SDCC) && defined(__VERSION__) && !defined(__GNUC__)
|
||||
# define ACC_CC_SDCC 1
|
||||
# define ACC_INFO_CC "sdcc"
|
||||
# define ACC_INFO_CCVER ACC_CPP_MACRO_EXPAND(SDCC)
|
||||
#elif defined(__PATHSCALE__) && defined(__PATHCC_PATCHLEVEL__)
|
||||
# define ACC_CC_PATHSCALE (__PATHCC__ * 0x10000L + __PATHCC_MINOR__ * 0x100 + __PATHCC_PATCHLEVEL__)
|
||||
# define ACC_INFO_CC "Pathscale C"
|
||||
@@ -496,7 +513,7 @@
|
||||
# define ACC_INFO_CCVER ACC_CPP_MACRO_EXPAND(__POCC__)
|
||||
#elif defined(__llvm__) && defined(__GNUC__) && defined(__VERSION__)
|
||||
# define ACC_CC_LLVM 1
|
||||
# define ACC_INFO_CC "llvm gcc"
|
||||
# define ACC_INFO_CC "llvm-gcc"
|
||||
# define ACC_INFO_CCVER __VERSION__
|
||||
#elif defined(__GNUC__) && defined(__VERSION__)
|
||||
# if defined(__GNUC_MINOR__) && defined(__GNUC_PATCHLEVEL__)
|
||||
@@ -551,7 +568,11 @@
|
||||
#elif defined(_MSC_VER)
|
||||
# define ACC_CC_MSC 1
|
||||
# define ACC_INFO_CC "Microsoft C"
|
||||
# define ACC_INFO_CCVER ACC_CPP_MACRO_EXPAND(_MSC_VER)
|
||||
# if defined(_MSC_FULL_VER)
|
||||
# define ACC_INFO_CCVER ACC_CPP_MACRO_EXPAND(_MSC_VER) "." ACC_CPP_MACRO_EXPAND(_MSC_FULL_VER)
|
||||
# else
|
||||
# define ACC_INFO_CCVER ACC_CPP_MACRO_EXPAND(_MSC_VER)
|
||||
# endif
|
||||
#elif defined(__MWERKS__)
|
||||
# define ACC_CC_MWERKS 1
|
||||
# define ACC_INFO_CC "Metrowerks C"
|
||||
@@ -612,6 +633,7 @@
|
||||
#if (ACC_CC_MSC && (_MSC_VER >= 1200)) && !defined(_MSC_FULL_VER)
|
||||
# error "ACC_CC_MSC"
|
||||
#endif
|
||||
#if !defined(__ACC_ARCH_OVERRIDE)
|
||||
#if defined(ACC_ARCH_GENERIC)
|
||||
# define ACC_INFO_ARCH "generic"
|
||||
#elif (ACC_OS_DOS16 || ACC_OS_OS216 || ACC_OS_WIN16)
|
||||
@@ -634,9 +656,18 @@
|
||||
#elif (UINT_MAX <= ACC_0xffffL) && defined(__AVR__)
|
||||
# define ACC_ARCH_AVR 1
|
||||
# define ACC_INFO_ARCH "avr"
|
||||
#elif defined(__bfin__)
|
||||
# define ACC_ARCH_BLACKFIN 1
|
||||
# define ACC_INFO_ARCH "blackfin"
|
||||
#elif (UINT_MAX == ACC_0xffffL) && defined(__C166__)
|
||||
# define ACC_ARCH_C166 1
|
||||
# define ACC_INFO_ARCH "c166"
|
||||
#elif defined(__cris__)
|
||||
# define ACC_ARCH_CRIS 1
|
||||
# define ACC_INFO_ARCH "cris"
|
||||
#elif defined(__H8300__) || defined(__H8300H__) || defined(__H8300S__) || defined(__H8300SX__)
|
||||
# define ACC_ARCH_H8300 1
|
||||
# define ACC_INFO_ARCH "h8300"
|
||||
#elif defined(__hppa__) || defined(__hppa)
|
||||
# define ACC_ARCH_HPPA 1
|
||||
# define ACC_INFO_ARCH "hppa"
|
||||
@@ -655,6 +686,9 @@
|
||||
#elif defined(__ia64__) || defined(__ia64) || defined(_M_IA64)
|
||||
# define ACC_ARCH_IA64 1
|
||||
# define ACC_INFO_ARCH "ia64"
|
||||
#elif defined(__m32r__)
|
||||
# define ACC_ARCH_M32R 1
|
||||
# define ACC_INFO_ARCH "m32r"
|
||||
#elif (ACC_OS_TOS) || defined(__m68k__) || defined(__m68000__) || defined(__mc68000__) || defined(_M_M68K)
|
||||
# define ACC_ARCH_M68K 1
|
||||
# define ACC_INFO_ARCH "m68k"
|
||||
@@ -679,10 +713,14 @@
|
||||
#elif defined(__sparc__) || defined(__sparc) || defined(__sparcv8)
|
||||
# define ACC_ARCH_SPARC 1
|
||||
# define ACC_INFO_ARCH "sparc"
|
||||
#elif (UINT_MAX == ACC_0xffffL) && defined(__z80)
|
||||
# define ACC_ARCH_Z80 1
|
||||
# define ACC_INFO_ARCH "z80"
|
||||
#else
|
||||
# define ACC_ARCH_UNKNOWN 1
|
||||
# define ACC_INFO_ARCH "unknown"
|
||||
#endif
|
||||
#endif
|
||||
#if 1 && (ACC_ARCH_UNKNOWN) && (ACC_OS_DOS32 || ACC_OS_OS2)
|
||||
# error "FIXME - missing define for CPU architecture"
|
||||
#endif
|
||||
@@ -720,13 +758,17 @@
|
||||
# endif
|
||||
#endif
|
||||
#if (ACC_ARCH_I386)
|
||||
# if (UINT_MAX != ACC_0xffffffffL)
|
||||
# if (UINT_MAX != ACC_0xffffL) && defined(__i386_int16__)
|
||||
# error "this should not happen"
|
||||
# endif
|
||||
# if (UINT_MAX != ACC_0xffffffffL) && !defined(__i386_int16__)
|
||||
# error "this should not happen"
|
||||
# endif
|
||||
# if (ULONG_MAX != ACC_0xffffffffL)
|
||||
# error "this should not happen"
|
||||
# endif
|
||||
#endif
|
||||
#if !defined(__ACC_MM_OVERRIDE)
|
||||
#if (ACC_OS_DOS16 || ACC_OS_OS216 || ACC_OS_WIN16)
|
||||
#if (UINT_MAX != ACC_0xffffL)
|
||||
# error "this should not happen"
|
||||
@@ -880,6 +922,7 @@ extern "C" {
|
||||
#else
|
||||
# error "unknown memory model"
|
||||
#endif
|
||||
#endif
|
||||
#if defined(SIZEOF_SHORT)
|
||||
# define ACC_SIZEOF_SHORT (SIZEOF_SHORT)
|
||||
#endif
|
||||
@@ -966,6 +1009,17 @@ extern "C" {
|
||||
#endif
|
||||
#if !defined(ACC_SIZEOF_LONG_LONG) && !defined(ACC_SIZEOF___INT64)
|
||||
#if (ACC_SIZEOF_LONG > 0 && ACC_SIZEOF_LONG < 8)
|
||||
# if defined(__LONG_MAX__) && defined(__LONG_LONG_MAX__)
|
||||
# if (ACC_CC_GNUC >= 0x030300ul)
|
||||
# if ((__LONG_MAX__)+0 == (__LONG_LONG_MAX__)+0)
|
||||
# define ACC_SIZEOF_LONG_LONG ACC_SIZEOF_LONG
|
||||
# endif
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
#endif
|
||||
#if !defined(ACC_SIZEOF_LONG_LONG) && !defined(ACC_SIZEOF___INT64)
|
||||
#if (ACC_SIZEOF_LONG > 0 && ACC_SIZEOF_LONG < 8)
|
||||
#if (ACC_ARCH_I086 && ACC_CC_DMC)
|
||||
#elif (ACC_CC_CILLY) && defined(__GNUC__)
|
||||
# define ACC_SIZEOF_LONG_LONG 8
|
||||
@@ -993,6 +1047,11 @@ extern "C" {
|
||||
# define ACC_SIZEOF___INT64 8
|
||||
#elif (ACC_CC_WATCOMC && defined(_INTEGRAL_MAX_BITS) && (_INTEGRAL_MAX_BITS == 64))
|
||||
# define ACC_SIZEOF___INT64 8
|
||||
#elif (ACC_OS_OS400) && defined(__LLP64_IFC__)
|
||||
# define ACC_SIZEOF_LONG_LONG 8
|
||||
#elif (defined(__vms) || defined(__VMS)) && (__INITIAL_POINTER_SIZE+0 == 64)
|
||||
# define ACC_SIZEOF_LONG_LONG 8
|
||||
#elif (ACC_CC_SDCC) && (ACC_SIZEOF_INT == 2)
|
||||
#elif 1 && defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)
|
||||
# define ACC_SIZEOF_LONG_LONG 8
|
||||
#endif
|
||||
@@ -1012,12 +1071,38 @@ extern "C" {
|
||||
# else
|
||||
# error "ACC_MM"
|
||||
# endif
|
||||
#elif (ACC_ARCH_AVR || ACC_ARCH_C166 || ACC_ARCH_I086 || ACC_ARCH_MCS51 || ACC_ARCH_MCS251)
|
||||
#elif (ACC_ARCH_AVR || ACC_ARCH_C166 || ACC_ARCH_I086 || ACC_ARCH_MCS51 || ACC_ARCH_MCS251 || ACC_ARCH_Z80)
|
||||
# define ACC_SIZEOF_VOID_P 2
|
||||
#elif (ACC_SIZEOF_LONG == 8) && ((defined(__mips__) && ((_MIPS_SZPTR)+0 == 32)) || defined(__MIPS_PSX2__))
|
||||
#elif (ACC_ARCH_H8300)
|
||||
# if defined(__NORMAL_MODE__)
|
||||
# define ACC_SIZEOF_VOID_P 2
|
||||
# elif defined(__H8300H__) || defined(__H8300S__) || defined(__H8300SX__)
|
||||
# define ACC_SIZEOF_VOID_P 4
|
||||
# else
|
||||
# define ACC_SIZEOF_VOID_P 2
|
||||
# endif
|
||||
# if (ACC_CC_GNUC && (ACC_CC_GNUC < 0x040000ul)) && (ACC_SIZEOF_INT == 4)
|
||||
# define ACC_SIZEOF_SIZE_T ACC_SIZEOF_INT
|
||||
# define ACC_SIZEOF_PTRDIFF_T ACC_SIZEOF_INT
|
||||
# endif
|
||||
#elif (ACC_OS_CONSOLE_PS2)
|
||||
# define ACC_SIZEOF_VOID_P 4
|
||||
#elif (ACC_SIZEOF_LONG == 8) && ((defined(__mips__) && defined(__R5900__)) || defined(__MIPS_PSX2__))
|
||||
# define ACC_SIZEOF_VOID_P 4
|
||||
#elif defined(__LLP64__) || defined(__LLP64) || defined(_LLP64) || defined(_WIN64)
|
||||
# define ACC_SIZEOF_VOID_P 8
|
||||
#elif (ACC_OS_OS400) && defined(__LLP64_IFC__)
|
||||
# define ACC_SIZEOF_VOID_P 8
|
||||
# define ACC_SIZEOF_SIZE_T ACC_SIZEOF_LONG
|
||||
# define ACC_SIZEOF_PTRDIFF_T ACC_SIZEOF_LONG
|
||||
#elif (ACC_OS_OS400)
|
||||
# define ACC_SIZEOF_VOID_P 16
|
||||
# define ACC_SIZEOF_SIZE_T ACC_SIZEOF_LONG
|
||||
# define ACC_SIZEOF_PTRDIFF_T ACC_SIZEOF_LONG
|
||||
#elif (defined(__vms) || defined(__VMS)) && (__INITIAL_POINTER_SIZE+0 == 64)
|
||||
# define ACC_SIZEOF_VOID_P 8
|
||||
# define ACC_SIZEOF_SIZE_T ACC_SIZEOF_LONG
|
||||
# define ACC_SIZEOF_PTRDIFF_T ACC_SIZEOF_LONG
|
||||
#else
|
||||
# define ACC_SIZEOF_VOID_P ACC_SIZEOF_LONG
|
||||
#endif
|
||||
@@ -1076,7 +1161,7 @@ extern "C" {
|
||||
#elif (ACC_SIZEOF_INT == 4 && ACC_SIZEOF_LONG == 4 && ACC_SIZEOF_VOID_P == 4)
|
||||
# define ACC_ABI_ILP32 1
|
||||
# define ACC_INFO_ABI_PM "ilp32"
|
||||
#elif (ACC_SIZEOF_INT == 4 && ACC_SIZEOF_LONG == 4 && ACC_SIZEOF_VOID_P == 8)
|
||||
#elif (ACC_SIZEOF_INT == 4 && ACC_SIZEOF_LONG == 4 && ACC_SIZEOF_VOID_P == 8 && ACC_SIZEOF_SIZE_T == 8)
|
||||
# define ACC_ABI_LLP64 1
|
||||
# define ACC_INFO_ABI_PM "llp64"
|
||||
#elif (ACC_SIZEOF_INT == 4 && ACC_SIZEOF_LONG == 8 && ACC_SIZEOF_VOID_P == 8)
|
||||
@@ -1089,12 +1174,17 @@ extern "C" {
|
||||
# define ACC_ABI_IP32L64 1
|
||||
# define ACC_INFO_ABI_PM "ip32l64"
|
||||
#endif
|
||||
#if !defined(__ACC_LIBC_OVERRIDE)
|
||||
#if defined(ACC_LIBC_NAKED)
|
||||
# define ACC_INFO_LIBC "naked"
|
||||
#elif defined(ACC_LIBC_FREESTANDING)
|
||||
# define ACC_INFO_LIBC "freestanding"
|
||||
#elif defined(ACC_LIBC_MOSTLY_FREESTANDING)
|
||||
# define ACC_INFO_LIBC "mfreestanding"
|
||||
#elif defined(ACC_LIBC_ISOC90)
|
||||
# define ACC_INFO_LIBC "isoc90"
|
||||
#elif defined(ACC_LIBC_ISOC99)
|
||||
# define ACC_INFO_LIBC "isoc99"
|
||||
#elif defined(__dietlibc__)
|
||||
# define ACC_LIBC_DIETLIBC 1
|
||||
# define ACC_INFO_LIBC "dietlibc"
|
||||
@@ -1118,6 +1208,7 @@ extern "C" {
|
||||
# define ACC_LIBC_DEFAULT 1
|
||||
# define ACC_INFO_LIBC "default"
|
||||
#endif
|
||||
#endif
|
||||
#if (ACC_CC_GNUC >= 0x020800ul)
|
||||
# define __acc_gnuc_extension__ __extension__
|
||||
#elif (ACC_CC_LLVM || ACC_CC_PATHSCALE)
|
||||
@@ -1156,10 +1247,10 @@ extern "C" {
|
||||
# define __acc_forceinline __forceinline
|
||||
#elif (ACC_CC_INTELC && (__INTEL_COMPILER >= 800))
|
||||
# define __acc_forceinline __inline__ __attribute__((__always_inline__))
|
||||
#elif (ACC_CC_MSC && (_MSC_VER >= 1200))
|
||||
# define __acc_forceinline __forceinline
|
||||
#elif (ACC_CC_LLVM || ACC_CC_PATHSCALE)
|
||||
# define __acc_forceinline __inline__ __attribute__((__always_inline__))
|
||||
#elif (ACC_CC_MSC && (_MSC_VER >= 1200))
|
||||
# define __acc_forceinline __forceinline
|
||||
#endif
|
||||
#if (ACC_CC_GNUC >= 0x030200ul)
|
||||
# define __acc_noinline __attribute__((__noinline__))
|
||||
@@ -1167,10 +1258,12 @@ extern "C" {
|
||||
# define __acc_noinline __declspec(noinline)
|
||||
#elif (ACC_CC_INTELC && (__INTEL_COMPILER >= 800))
|
||||
# define __acc_noinline __attribute__((__noinline__))
|
||||
#elif (ACC_CC_MSC && (_MSC_VER >= 1300))
|
||||
# define __acc_noinline __declspec(noinline)
|
||||
#elif (ACC_CC_LLVM || ACC_CC_PATHSCALE)
|
||||
# define __acc_noinline __attribute__((__noinline__))
|
||||
#elif (ACC_CC_MSC && (_MSC_VER >= 1300))
|
||||
# define __acc_noinline __declspec(noinline)
|
||||
#elif (ACC_CC_MWERKS && (__MWERKS__ >= 0x3200) && (ACC_OS_WIN32 || ACC_OS_WIN64))
|
||||
# define __acc_noinline __declspec(noinline)
|
||||
#endif
|
||||
#if (defined(__acc_forceinline) || defined(__acc_noinline)) && !defined(__acc_inline)
|
||||
# error "this should not happen"
|
||||
@@ -1181,10 +1274,27 @@ extern "C" {
|
||||
# define __acc_noreturn __declspec(noreturn)
|
||||
#elif (ACC_CC_INTELC && (__INTEL_COMPILER >= 600) && (ACC_OS_POSIX))
|
||||
# define __acc_noreturn __attribute__((__noreturn__))
|
||||
#elif (ACC_CC_MSC && (_MSC_VER >= 1200))
|
||||
# define __acc_noreturn __declspec(noreturn)
|
||||
#elif (ACC_CC_LLVM || ACC_CC_PATHSCALE)
|
||||
# define __acc_noreturn __attribute__((__noreturn__))
|
||||
#elif (ACC_CC_MSC && (_MSC_VER >= 1200))
|
||||
# define __acc_noreturn __declspec(noreturn)
|
||||
#endif
|
||||
#if (ACC_CC_GNUC >= 0x030400ul)
|
||||
# define __acc_constructor __attribute__((__constructor__,__used__))
|
||||
#elif (ACC_CC_GNUC >= 0x020700ul)
|
||||
# define __acc_constructor __attribute__((__constructor__))
|
||||
#elif (ACC_CC_LLVM || ACC_CC_PATHSCALE)
|
||||
# define __acc_constructor __attribute__((__constructor__))
|
||||
#endif
|
||||
#if (ACC_CC_GNUC >= 0x030400ul)
|
||||
# define __acc_destructor __attribute__((__destructor__,__used__))
|
||||
#elif (ACC_CC_GNUC >= 0x020700ul)
|
||||
# define __acc_destructor __attribute__((__destructor__))
|
||||
#elif (ACC_CC_LLVM || ACC_CC_PATHSCALE)
|
||||
# define __acc_destructor __attribute__((__destructor__))
|
||||
#endif
|
||||
#if defined(__acc_destructor) && !defined(__acc_constructor)
|
||||
# error "this should not happen"
|
||||
#endif
|
||||
#if (ACC_CC_GNUC >= 0x030200ul)
|
||||
# define __acc_likely(e) (__builtin_expect(!!(e),1))
|
||||
@@ -1202,7 +1312,7 @@ extern "C" {
|
||||
#if !defined(ACC_UNUSED)
|
||||
# if (ACC_CC_BORLANDC && (__BORLANDC__ >= 0x0600))
|
||||
# define ACC_UNUSED(var) ((void) &var)
|
||||
# elif (ACC_CC_BORLANDC || ACC_CC_HIGHC || ACC_CC_NDPC || ACC_CC_TURBOC)
|
||||
# elif (ACC_CC_BORLANDC || ACC_CC_HIGHC || ACC_CC_NDPC || ACC_CC_PELLESC || ACC_CC_TURBOC)
|
||||
# define ACC_UNUSED(var) if (&var) ; else
|
||||
# elif (ACC_CC_GNUC || ACC_CC_LLVM || ACC_CC_PATHSCALE)
|
||||
# define ACC_UNUSED(var) ((void) var)
|
||||
@@ -1229,7 +1339,7 @@ extern "C" {
|
||||
# define ACC_UNUSED_FUNC(func) if (func) ; else
|
||||
# elif (ACC_CC_MSC)
|
||||
# define ACC_UNUSED_FUNC(func) ((void) &func)
|
||||
# elif (ACC_CC_KEILC)
|
||||
# elif (ACC_CC_KEILC || ACC_CC_PELLESC)
|
||||
# define ACC_UNUSED_FUNC(func) {extern int __acc_unused[1-2*!(sizeof((int)func)>0)];}
|
||||
# else
|
||||
# define ACC_UNUSED_FUNC(func) ((void) func)
|
||||
@@ -1412,6 +1522,8 @@ extern "C" {
|
||||
# define __ACC_INFOSTR_ENDIAN ""
|
||||
#endif
|
||||
#if defined(__ACC_INFOSTR_OSNAME)
|
||||
#elif defined(ACC_INFO_OS_CONSOLE)
|
||||
# define __ACC_INFOSTR_OSNAME ACC_INFO_OS "." ACC_INFO_OS_CONSOLE
|
||||
#elif defined(ACC_INFO_OS_POSIX)
|
||||
# define __ACC_INFOSTR_OSNAME ACC_INFO_OS "." ACC_INFO_OS_POSIX
|
||||
#else
|
||||
@@ -1439,10 +1551,12 @@ extern "C" {
|
||||
#if defined(ACC_LIBC_NAKED)
|
||||
#elif defined(ACC_LIBC_FREESTANDING)
|
||||
# define HAVE_LIMITS_H 1
|
||||
# define HAVE_STDARG_H 1
|
||||
# define HAVE_STDDEF_H 1
|
||||
#elif defined(ACC_LIBC_MOSTLY_FREESTANDING)
|
||||
# define HAVE_LIMITS_H 1
|
||||
# define HAVE_SETJMP_H 1
|
||||
# define HAVE_STDARG_H 1
|
||||
# define HAVE_STDDEF_H 1
|
||||
# define HAVE_STDIO_H 1
|
||||
# define HAVE_STRING_H 1
|
||||
@@ -1480,10 +1594,12 @@ extern "C" {
|
||||
#undef HAVE_STRINGS_H
|
||||
#undef HAVE_SYS_UTIME_H
|
||||
#if (ACC_OS_POSIX)
|
||||
# if 0
|
||||
# if (ACC_LIBC_DIETLIBC || ACC_LIBC_GLIBC || ACC_LIBC_UCLIBC)
|
||||
# define HAVE_STRINGS_H 1
|
||||
# elif (ACC_OS_POSIX_FREEBSD || ACC_OS_POSIX_MACOSX || ACC_OS_POSIX_NETBSD || ACC_OS_POSIX_OPENBSD)
|
||||
# define HAVE_STRINGS_H 1
|
||||
# endif
|
||||
# if (ACC_OS_POSIX_FREEBSD || ACC_OS_POSIX_MACOSX || ACC_OS_POSIX_OPENBSD)
|
||||
# if (ACC_OS_POSIX_FREEBSD || ACC_OS_POSIX_MACOSX || ACC_OS_POSIX_NETBSD || ACC_OS_POSIX_OPENBSD)
|
||||
# undef HAVE_MALLOC_H
|
||||
# elif (ACC_OS_POSIX_HPUX || ACC_OS_POSIX_INTERIX)
|
||||
# define HAVE_ALLOCA_H 1
|
||||
@@ -1661,6 +1777,9 @@ extern "C" {
|
||||
# undef HAVE_SYS_TIME_H
|
||||
#endif
|
||||
#endif
|
||||
#if (ACC_OS_CONSOLE)
|
||||
# undef HAVE_DIRENT_H
|
||||
#endif
|
||||
#if (ACC_LIBC_GLIBC >= 0x020100ul)
|
||||
# define HAVE_STDINT_H 1
|
||||
#elif (ACC_LIBC_DIETLIBC)
|
||||
@@ -1931,6 +2050,15 @@ extern "C" {
|
||||
# undef HAVE_VSNPRINTF
|
||||
#endif
|
||||
#endif
|
||||
#if (ACC_OS_CONSOLE)
|
||||
# undef HAVE_CHMOD
|
||||
# undef HAVE_CHOWN
|
||||
# undef HAVE_GETTIMEOFDAY
|
||||
# undef HAVE_LSTAT
|
||||
# undef HAVE_TIME
|
||||
# undef HAVE_UMASK
|
||||
# undef HAVE_UTIME
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#if !defined(ACC_CFG_AUTO_NO_SIZES)
|
||||
@@ -1988,7 +2116,7 @@ __acc_gnuc_extension__ typedef unsigned long long acc_ullong_t;
|
||||
#elif (ACC_SIZEOF_SHORT == 2)
|
||||
# define acc_int16e_t short int
|
||||
# define acc_uint16e_t unsigned short int
|
||||
#elif 1 && !defined(ACC_CFG_TYPE_NO_MODE_HI) && (ACC_CC_GNUC >= 0x025f00ul) && (__INT_MAX__+0 > 2147483647L)
|
||||
#elif 1 && !defined(ACC_CFG_TYPE_NO_MODE_HI) && (ACC_CC_GNUC >= 0x025f00ul)
|
||||
typedef int __acc_int16e_hi_t __attribute__((__mode__(__HI__)));
|
||||
typedef unsigned int __acc_uint16e_hi_t __attribute__((__mode__(__HI__)));
|
||||
# define acc_int16e_t __acc_int16e_hi_t
|
||||
@@ -2104,12 +2232,23 @@ __acc_gnuc_extension__ typedef unsigned long long acc_ullong_t;
|
||||
#endif
|
||||
#endif
|
||||
#if !defined(acc_intptr_t)
|
||||
#if (ACC_ARCH_I386 && ACC_CC_MSC && (_MSC_VER >= 1300))
|
||||
#if 1 && (ACC_OS_OS400 && (ACC_SIZEOF_VOID_P == 16))
|
||||
# define __ACC_INTPTR_T_IS_POINTER 1
|
||||
typedef char* acc_intptr_t;
|
||||
typedef char* acc_uintptr_t;
|
||||
# define acc_intptr_t acc_intptr_t
|
||||
# define acc_uintptr_t acc_uintptr_t
|
||||
# define ACC_SIZEOF_ACC_INTPTR_T ACC_SIZEOF_VOID_P
|
||||
#elif (ACC_ARCH_I386 && ACC_CC_MSC && (_MSC_VER >= 1300))
|
||||
typedef __w64 int acc_intptr_t;
|
||||
typedef __w64 unsigned int acc_uintptr_t;
|
||||
# define acc_intptr_t acc_intptr_t
|
||||
# define acc_uintptr_t acc_uintptr_t
|
||||
# define ACC_SIZEOF_ACC_INTPTR_T ACC_SIZEOF_INT
|
||||
#elif (ACC_SIZEOF_SHORT == ACC_SIZEOF_VOID_P) && (ACC_SIZEOF_INT > ACC_SIZEOF_VOID_P)
|
||||
# define acc_intptr_t short
|
||||
# define acc_uintptr_t unsigned short
|
||||
# define ACC_SIZEOF_ACC_INTPTR_T ACC_SIZEOF_SHORT
|
||||
#elif (ACC_SIZEOF_INT >= ACC_SIZEOF_VOID_P) && (ACC_SIZEOF_INT < ACC_SIZEOF_LONG)
|
||||
# define acc_intptr_t int
|
||||
# define acc_uintptr_t unsigned int
|
||||
@@ -2195,12 +2334,18 @@ __acc_gnuc_extension__ typedef unsigned long long acc_ullong_t;
|
||||
#if !defined(SIZEOF_ACC_INTPTR_T) && defined(ACC_SIZEOF_ACC_INTPTR_T)
|
||||
# define SIZEOF_ACC_INTPTR_T ACC_SIZEOF_ACC_INTPTR_T
|
||||
#endif
|
||||
#if 1 && !defined(acc_signo_t) && (ACC_OS_POSIX_LINUX) && (ACC_SIZEOF_INT != 4)
|
||||
# define acc_signo_t acc_int32e_t
|
||||
#endif
|
||||
#if !defined(acc_signo_t)
|
||||
# define acc_signo_t int
|
||||
#endif
|
||||
#if (ACC_BROKEN_CDECL_ALT_SYNTAX)
|
||||
typedef void __acc_cdecl_sighandler (*acc_sighandler_t)(int);
|
||||
typedef void __acc_cdecl_sighandler (*acc_sighandler_t)(acc_signo_t);
|
||||
#elif defined(RETSIGTYPE)
|
||||
typedef RETSIGTYPE (__acc_cdecl_sighandler *acc_sighandler_t)(int);
|
||||
typedef RETSIGTYPE (__acc_cdecl_sighandler *acc_sighandler_t)(acc_signo_t);
|
||||
#else
|
||||
typedef void (__acc_cdecl_sighandler *acc_sighandler_t)(int);
|
||||
typedef void (__acc_cdecl_sighandler *acc_sighandler_t)(acc_signo_t);
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
@@ -2229,7 +2374,7 @@ __acc_gnuc_extension__ typedef unsigned long long acc_ullong_t;
|
||||
#elif (ACC_SIZEOF_SHORT == 2)
|
||||
# define acc_int16e_t short int
|
||||
# define acc_uint16e_t unsigned short int
|
||||
#elif 1 && !defined(ACC_CFG_TYPE_NO_MODE_HI) && (ACC_CC_GNUC >= 0x025f00ul) && (__INT_MAX__+0 > 2147483647L)
|
||||
#elif 1 && !defined(ACC_CFG_TYPE_NO_MODE_HI) && (ACC_CC_GNUC >= 0x025f00ul)
|
||||
typedef int __acc_int16e_hi_t __attribute__((__mode__(__HI__)));
|
||||
typedef unsigned int __acc_uint16e_hi_t __attribute__((__mode__(__HI__)));
|
||||
# define acc_int16e_t __acc_int16e_hi_t
|
||||
@@ -2345,12 +2490,23 @@ __acc_gnuc_extension__ typedef unsigned long long acc_ullong_t;
|
||||
#endif
|
||||
#endif
|
||||
#if !defined(acc_intptr_t)
|
||||
#if (ACC_ARCH_I386 && ACC_CC_MSC && (_MSC_VER >= 1300))
|
||||
#if 1 && (ACC_OS_OS400 && (ACC_SIZEOF_VOID_P == 16))
|
||||
# define __ACC_INTPTR_T_IS_POINTER 1
|
||||
typedef char* acc_intptr_t;
|
||||
typedef char* acc_uintptr_t;
|
||||
# define acc_intptr_t acc_intptr_t
|
||||
# define acc_uintptr_t acc_uintptr_t
|
||||
# define ACC_SIZEOF_ACC_INTPTR_T ACC_SIZEOF_VOID_P
|
||||
#elif (ACC_ARCH_I386 && ACC_CC_MSC && (_MSC_VER >= 1300))
|
||||
typedef __w64 int acc_intptr_t;
|
||||
typedef __w64 unsigned int acc_uintptr_t;
|
||||
# define acc_intptr_t acc_intptr_t
|
||||
# define acc_uintptr_t acc_uintptr_t
|
||||
# define ACC_SIZEOF_ACC_INTPTR_T ACC_SIZEOF_INT
|
||||
#elif (ACC_SIZEOF_SHORT == ACC_SIZEOF_VOID_P) && (ACC_SIZEOF_INT > ACC_SIZEOF_VOID_P)
|
||||
# define acc_intptr_t short
|
||||
# define acc_uintptr_t unsigned short
|
||||
# define ACC_SIZEOF_ACC_INTPTR_T ACC_SIZEOF_SHORT
|
||||
#elif (ACC_SIZEOF_INT >= ACC_SIZEOF_VOID_P) && (ACC_SIZEOF_INT < ACC_SIZEOF_LONG)
|
||||
# define acc_intptr_t int
|
||||
# define acc_uintptr_t unsigned int
|
||||
@@ -2436,12 +2592,18 @@ __acc_gnuc_extension__ typedef unsigned long long acc_ullong_t;
|
||||
#if !defined(SIZEOF_ACC_INTPTR_T) && defined(ACC_SIZEOF_ACC_INTPTR_T)
|
||||
# define SIZEOF_ACC_INTPTR_T ACC_SIZEOF_ACC_INTPTR_T
|
||||
#endif
|
||||
#if 1 && !defined(acc_signo_t) && (ACC_OS_POSIX_LINUX) && (ACC_SIZEOF_INT != 4)
|
||||
# define acc_signo_t acc_int32e_t
|
||||
#endif
|
||||
#if !defined(acc_signo_t)
|
||||
# define acc_signo_t int
|
||||
#endif
|
||||
#if (ACC_BROKEN_CDECL_ALT_SYNTAX)
|
||||
typedef void __acc_cdecl_sighandler (*acc_sighandler_t)(int);
|
||||
typedef void __acc_cdecl_sighandler (*acc_sighandler_t)(acc_signo_t);
|
||||
#elif defined(RETSIGTYPE)
|
||||
typedef RETSIGTYPE (__acc_cdecl_sighandler *acc_sighandler_t)(int);
|
||||
typedef RETSIGTYPE (__acc_cdecl_sighandler *acc_sighandler_t)(acc_signo_t);
|
||||
#else
|
||||
typedef void (__acc_cdecl_sighandler *acc_sighandler_t)(int);
|
||||
typedef void (__acc_cdecl_sighandler *acc_sighandler_t)(acc_signo_t);
|
||||
#endif
|
||||
#endif
|
||||
#if defined(ACC_WANT_ACC_INCD_H)
|
||||
@@ -2451,11 +2613,6 @@ typedef void (__acc_cdecl_sighandler *acc_sighandler_t)(int);
|
||||
#if defined(ACC_LIBC_NAKED)
|
||||
#ifndef __ACC_FALLBACK_STDDEF_H_INCLUDED
|
||||
#define __ACC_FALLBACK_STDDEF_H_INCLUDED
|
||||
#if 0
|
||||
FIXME
|
||||
__PTRDIFF_TYPE__, __SSIZE_TYPE__, __SIZE_TYPE__
|
||||
wchar_t, wint_t
|
||||
#endif
|
||||
#if defined(__PTRDIFF_TYPE__)
|
||||
typedef __PTRDIFF_TYPE__ acc_fallback_ptrdiff_t;
|
||||
#elif defined(__MIPS_PSX2__)
|
||||
@@ -2952,44 +3109,11 @@ ACCLIB_EXTERN(void, acc_debug_break) (void);
|
||||
ACCLIB_EXTERN(void, acc_debug_nop) (void);
|
||||
ACCLIB_EXTERN(int, acc_debug_align_check_query) (void);
|
||||
ACCLIB_EXTERN(int, acc_debug_align_check_enable) (int);
|
||||
#if defined(acc_int32e_t)
|
||||
ACCLIB_EXTERN(int, acc_tsc_read) (acc_uint32e_t*);
|
||||
ACCLIB_EXTERN(int, acc_tsc_read_add) (acc_uint32e_t*);
|
||||
#endif
|
||||
typedef struct {
|
||||
acclib_handle_t h;
|
||||
int mode;
|
||||
#if (ACC_HAVE_WINDOWS_H) && defined(acc_int64l_t)
|
||||
double qpf;
|
||||
#endif
|
||||
} acc_uclock_handle_t;
|
||||
typedef struct {
|
||||
union {
|
||||
acc_uint32l_t t32;
|
||||
#if !(ACC_OS_DOS16 || ACC_OS_WIN16)
|
||||
double td;
|
||||
# if defined(acc_int64l_t)
|
||||
acc_int64l_t t64;
|
||||
# endif
|
||||
#endif
|
||||
} ticks;
|
||||
#if (ACC_HAVE_WINDOWS_H) && defined(acc_int64l_t)
|
||||
acc_int64l_t qpc;
|
||||
#endif
|
||||
} acc_uclock_t;
|
||||
#ifndef acc_uclock_handle_p
|
||||
#define acc_uclock_handle_p acc_uclock_handle_t *
|
||||
#endif
|
||||
#ifndef acc_uclock_p
|
||||
#define acc_uclock_p acc_uclock_t *
|
||||
#endif
|
||||
ACCLIB_EXTERN(int, acc_uclock_open) (acc_uclock_handle_p);
|
||||
ACCLIB_EXTERN(int, acc_uclock_close) (acc_uclock_handle_p);
|
||||
ACCLIB_EXTERN(void, acc_uclock_read) (acc_uclock_handle_p, acc_uclock_p);
|
||||
ACCLIB_EXTERN(double, acc_uclock_get_elapsed) (acc_uclock_handle_p, const acc_uclock_p, const acc_uclock_p);
|
||||
#if defined(acc_int64l_t)
|
||||
typedef struct {
|
||||
void* h;
|
||||
int mode;
|
||||
double tsc_to_seconds;
|
||||
unsigned cpu_type, cpu_features, cpu_khz, cpu_nrctrs;
|
||||
const char* cpu_name;
|
||||
} acc_perfctr_handle_t;
|
||||
@@ -3012,7 +3136,60 @@ ACCLIB_EXTERN(int, acc_perfctr_close) (acc_perfctr_handle_p);
|
||||
ACCLIB_EXTERN(void, acc_perfctr_read) (acc_perfctr_handle_p, acc_perfctr_clock_p);
|
||||
ACCLIB_EXTERN(double, acc_perfctr_get_elapsed) (acc_perfctr_handle_p, const acc_perfctr_clock_p, const acc_perfctr_clock_p);
|
||||
ACCLIB_EXTERN(double, acc_perfctr_get_elapsed_tsc) (acc_perfctr_handle_p, acc_uint64l_t);
|
||||
#else
|
||||
#undef __ACCLIB_UCLOCK_USE_RDTSC
|
||||
#undef __ACCLIB_UCLOCK_USE_PERFCTR
|
||||
#endif
|
||||
#if defined(acc_int32e_t)
|
||||
ACCLIB_EXTERN(int, acc_tsc_read) (acc_uint32e_t*);
|
||||
#else
|
||||
#undef __ACCLIB_UCLOCK_USE_RDTSC
|
||||
#endif
|
||||
#if (ACC_OS_CYGWIN || ACC_OS_WIN32 || ACC_OS_WIN64) && (ACC_HAVE_WINDOWS_H) && defined(acc_int64l_t)
|
||||
#define __ACCLIB_UCLOCK_USE_QPC 1
|
||||
#else
|
||||
#undef __ACCLIB_UCLOCK_USE_QPC
|
||||
#endif
|
||||
typedef struct {
|
||||
acclib_handle_t h;
|
||||
int mode;
|
||||
#if defined(__ACCLIB_UCLOCK_USE_PERFCTR)
|
||||
acc_perfctr_handle_t pch;
|
||||
#endif
|
||||
#if defined(__ACCLIB_UCLOCK_USE_QPC)
|
||||
double qpf;
|
||||
#endif
|
||||
} acc_uclock_handle_t;
|
||||
typedef struct {
|
||||
union {
|
||||
acc_uint32l_t t32;
|
||||
#if !(ACC_OS_DOS16 || ACC_OS_WIN16)
|
||||
double td;
|
||||
# if defined(acc_int64l_t)
|
||||
acc_int64l_t t64;
|
||||
# endif
|
||||
#endif
|
||||
} ticks;
|
||||
#if defined(__ACCLIB_UCLOCK_USE_RDTSC)
|
||||
acc_uint64l_t tsc;
|
||||
#endif
|
||||
#if defined(__ACCLIB_UCLOCK_USE_PERFCTR)
|
||||
acc_perfctr_clock_t pcc;
|
||||
#endif
|
||||
#if defined(__ACCLIB_UCLOCK_USE_QPC)
|
||||
acc_int64l_t qpc;
|
||||
#endif
|
||||
} acc_uclock_t;
|
||||
#ifndef acc_uclock_handle_p
|
||||
#define acc_uclock_handle_p acc_uclock_handle_t *
|
||||
#endif
|
||||
#ifndef acc_uclock_p
|
||||
#define acc_uclock_p acc_uclock_t *
|
||||
#endif
|
||||
ACCLIB_EXTERN(int, acc_uclock_open) (acc_uclock_handle_p);
|
||||
ACCLIB_EXTERN(int, acc_uclock_close) (acc_uclock_handle_p);
|
||||
ACCLIB_EXTERN(void, acc_uclock_read) (acc_uclock_handle_p, acc_uclock_p);
|
||||
ACCLIB_EXTERN(double, acc_uclock_get_elapsed) (acc_uclock_handle_p, const acc_uclock_p, const acc_uclock_p);
|
||||
ACCLIB_EXTERN(unsigned, acc_get_be16) (const acc_hvoid_p);
|
||||
ACCLIB_EXTERN(acc_uint32l_t, acc_get_be24) (const acc_hvoid_p);
|
||||
ACCLIB_EXTERN(acc_uint32l_t, acc_get_be32) (const acc_hvoid_p);
|
||||
@@ -3218,10 +3395,10 @@ ACCLIB_EXTERN(acc_uint32l_t, acc_randmt_r32) (acc_randmt_p);
|
||||
ACCCHK_ASSERT( (type) (~(type)0) relop (type) 0 ) \
|
||||
ACCCHK_ASSERT( (type) (~(type)0) == (type) (-1) )
|
||||
#endif
|
||||
#if !defined(ACCCHK_IS_SIGNED_T)
|
||||
#if !defined(ACCCHK_ASSERT_IS_SIGNED_T)
|
||||
# define ACCCHK_ASSERT_IS_SIGNED_T(type) ACCCHK_ASSERT_SIGN_T(type,<)
|
||||
#endif
|
||||
#if !defined(ACCCHK_IS_UNSIGNED_T)
|
||||
#if !defined(ACCCHK_ASSERT_IS_UNSIGNED_T)
|
||||
# if (ACC_BROKEN_INTEGRAL_PROMOTION)
|
||||
# define ACCCHK_ASSERT_IS_UNSIGNED_T(type) \
|
||||
ACCCHK_ASSERT( (type) (-1) > (type) 0 )
|
||||
@@ -3260,7 +3437,7 @@ ACCLIB_EXTERN(acc_uint32l_t, acc_randmt_r32) (acc_randmt_p);
|
||||
#endif
|
||||
#undef ACCCHK_TMP1
|
||||
#undef ACCCHK_TMP2
|
||||
#if 0 || defined(ACCCHK_CONFIG_PEDANTIC)
|
||||
#if 0 || defined(ACCCHK_CFG_PEDANTIC)
|
||||
# if (ACC_ARCH_MIPS) && defined(_MIPS_SZINT)
|
||||
ACCCHK_ASSERT((_MIPS_SZINT) == 8 * sizeof(int))
|
||||
# endif
|
||||
@@ -3410,7 +3587,7 @@ ACCLIB_EXTERN(acc_uint32l_t, acc_randmt_r32) (acc_randmt_p);
|
||||
ACCCHK_ASSERT(((acc_uint16e_t)(~(acc_uint16e_t)0ul) >> 15) == 1)
|
||||
#endif
|
||||
ACCCHK_ASSERT( (acc_int16e_t) (1 + ~(acc_int16e_t)0) == 0)
|
||||
#if defined(ACCCHK_CONFIG_PEDANTIC)
|
||||
#if defined(ACCCHK_CFG_PEDANTIC)
|
||||
ACCCHK_ASSERT( (acc_uint16e_t)(1 + ~(acc_uint16e_t)0) == 0)
|
||||
#endif
|
||||
#endif
|
||||
@@ -3425,7 +3602,7 @@ ACCLIB_EXTERN(acc_uint32l_t, acc_randmt_r32) (acc_randmt_p);
|
||||
ACCCHK_ASSERT(((( (acc_uint32e_t)1 << 31) + 1) >> 31) == 1)
|
||||
ACCCHK_ASSERT(((acc_uint32e_t)(~(acc_uint32e_t)0ul) >> 31) == 1)
|
||||
ACCCHK_ASSERT( (acc_int32e_t) (1 + ~(acc_int32e_t)0) == 0)
|
||||
#if defined(ACCCHK_CONFIG_PEDANTIC)
|
||||
#if defined(ACCCHK_CFG_PEDANTIC)
|
||||
ACCCHK_ASSERT( (acc_uint32e_t)(1 + ~(acc_uint32e_t)0) == 0)
|
||||
#endif
|
||||
#endif
|
||||
@@ -3481,8 +3658,10 @@ ACCLIB_EXTERN(acc_uint32l_t, acc_randmt_r32) (acc_randmt_p);
|
||||
ACCCHK_ASSERT(ACC_UINT64_C(9223372036854775807) % ACC_UINT32_C(2147483629) == 721)
|
||||
ACCCHK_ASSERT(ACC_UINT64_C(9223372036854775807) % ACC_UINT32_C(2147483647) == 1)
|
||||
#endif
|
||||
#if !defined(__ACC_INTPTR_T_IS_POINTER)
|
||||
ACCCHK_ASSERT_IS_SIGNED_T(acc_intptr_t)
|
||||
ACCCHK_ASSERT_IS_UNSIGNED_T(acc_uintptr_t)
|
||||
#endif
|
||||
ACCCHK_ASSERT(sizeof(acc_intptr_t) >= sizeof(void *))
|
||||
ACCCHK_ASSERT(sizeof(acc_intptr_t) == SIZEOF_ACC_INTPTR_T)
|
||||
ACCCHK_ASSERT(sizeof(acc_intptr_t) == sizeof(acc_uintptr_t))
|
||||
@@ -3497,15 +3676,13 @@ ACCLIB_EXTERN(acc_uint32l_t, acc_randmt_r32) (acc_randmt_p);
|
||||
ACCCHK_ASSERT((ACC_UINT32_C(0xffffffff) >> 31) == 1)
|
||||
#endif
|
||||
#if defined(ACC_INT64_C)
|
||||
#if (ACC_CC_BORLANDC && (__BORLANDC__ < 0x0560))
|
||||
#else
|
||||
ACCCHK_ASSERT(sizeof(ACC_INT64_C(0)) >= 8)
|
||||
ACCCHK_ASSERT(sizeof(ACC_UINT64_C(0)) >= 8)
|
||||
#endif
|
||||
ACCCHK_ASSERT((ACC_UINT64_C(0xffffffffffffffff) >> 63) == 1)
|
||||
#endif
|
||||
#if (ACC_MM_FLAT)
|
||||
#if 0
|
||||
ACCCHK_ASSERT(sizeof(void*) == sizeof(void (*)(void)))
|
||||
#endif
|
||||
#endif
|
||||
#if (ACC_MM_TINY || ACC_MM_SMALL || ACC_MM_MEDIUM)
|
||||
ACCCHK_ASSERT(sizeof(void*) == 2)
|
||||
ACCCHK_ASSERT(sizeof(ptrdiff_t) == 2)
|
||||
@@ -3966,27 +4143,33 @@ ACCLIB_PUBLIC(acc_uint32l_t, acc_randmt_r32) (acc_randmt_p r)
|
||||
# pragma warn(push)
|
||||
# pragma warn(disable:2007)
|
||||
#endif
|
||||
#if ((ACC_ARCH_AMD64 || ACC_ARCH_I386) && ACC_ASM_SYNTAX_GNUC)
|
||||
#if (ACC_ARCH_AMD64)
|
||||
#if (ACC_ARCH_AMD64 || ACC_ARCH_I386) && (ACC_ASM_SYNTAX_GNUC)
|
||||
#if (ACC_ARCH_AMD64 && ACC_CC_PATHSCALE)
|
||||
# define __ACCLIB_RDTSC_REGS : : "c" (t) : "cc", "memory", "rax", "rdx"
|
||||
#elif (ACC_ARCH_AMD64 && ACC_CC_INTELC)
|
||||
# define __ACCLIB_RDTSC_REGS : : "r" (t) : "memory", "rax", "rdx"
|
||||
#elif (ACC_ARCH_AMD64)
|
||||
# define __ACCLIB_RDTSC_REGS : : "r" (t) : "cc", "memory", "rax", "rdx"
|
||||
#elif (ACC_ARCH_I386 && ACC_CC_GNUC && (ACC_CC_GNUC < 0x020000ul))
|
||||
# define __ACCLIB_RDTSC_REGS : : "r" (t) : "ax", "dx"
|
||||
#elif (ACC_ARCH_I386 && ACC_CC_INTELC)
|
||||
# define __ACCLIB_RDTSC_REGS : : "r" (t) : "memory", "eax", "edx"
|
||||
#elif (ACC_ARCH_I386 && ACC_CC_PATHSCALE)
|
||||
# define __ACCLIB_RDTSC_REGS : : "c" (t) : "memory", "eax", "edx"
|
||||
#else
|
||||
# define __ACCLIB_RDTSC_REGS : : "r" (t) : "cc", "memory", "eax", "edx"
|
||||
#endif
|
||||
#endif
|
||||
ACCLIB_PUBLIC(int, acc_tsc_read) (acc_uint32e_t* t)
|
||||
{
|
||||
#if ((ACC_ARCH_AMD64 || ACC_ARCH_I386) && ACC_ASM_SYNTAX_GNUC)
|
||||
#if (ACC_ARCH_AMD64 || ACC_ARCH_I386) && (ACC_ASM_SYNTAX_GNUC)
|
||||
__asm__ __volatile__(
|
||||
"clc \n" ".byte 0x0f, 0x31\n"
|
||||
"clc \n" ".byte 0x0f,0x31\n"
|
||||
"movl %%eax,(%0)\n" "movl %%edx,4(%0)\n"
|
||||
__ACCLIB_RDTSC_REGS
|
||||
);
|
||||
return 0;
|
||||
#elif (ACC_ARCH_I386 && ACC_ASM_SYNTAX_MSC)
|
||||
#elif (ACC_ARCH_I386) && (ACC_ASM_SYNTAX_MSC)
|
||||
ACC_UNUSED(t);
|
||||
__asm {
|
||||
mov ecx, t
|
||||
@@ -4005,35 +4188,6 @@ ACCLIB_PUBLIC(int, acc_tsc_read) (acc_uint32e_t* t)
|
||||
t[0] = t[1] = 0; return -1;
|
||||
#endif
|
||||
}
|
||||
ACCLIB_PUBLIC(int, acc_tsc_read_add) (acc_uint32e_t* t)
|
||||
{
|
||||
#if ((ACC_ARCH_AMD64 || ACC_ARCH_I386) && ACC_ASM_SYNTAX_GNUC)
|
||||
__asm__ __volatile__(
|
||||
"clc \n" ".byte 0x0f, 0x31\n"
|
||||
"addl %%eax,(%0)\n" "adcl $0,%%edx\n" "addl %%edx,4(%0)\n"
|
||||
__ACCLIB_RDTSC_REGS
|
||||
);
|
||||
return 0;
|
||||
#elif (ACC_ARCH_I386 && ACC_ASM_SYNTAX_MSC)
|
||||
ACC_UNUSED(t);
|
||||
__asm {
|
||||
mov ecx, t
|
||||
clc
|
||||
# if (ACC_CC_MSC && (_MSC_VER < 1200))
|
||||
_emit 0x0f
|
||||
_emit 0x31
|
||||
# else
|
||||
rdtsc
|
||||
# endif
|
||||
add [ecx], eax
|
||||
adc edx, 0
|
||||
add [ecx+4], edx
|
||||
}
|
||||
return 0;
|
||||
#else
|
||||
ACC_UNUSED(t); return -1;
|
||||
#endif
|
||||
}
|
||||
#if (ACC_OS_WIN32 && ACC_CC_PELLESC && (__POCC__ >= 290))
|
||||
# pragma warn(pop)
|
||||
#endif
|
||||
@@ -4341,6 +4495,9 @@ ACCLIB_PUBLIC(long, acc_safe_hread) (int fd, acc_hvoid_p buf, long size)
|
||||
if (n == 0)
|
||||
break;
|
||||
if (n < 0) {
|
||||
#if defined(EAGAIN)
|
||||
if (errno == (EAGAIN)) continue;
|
||||
#endif
|
||||
#if defined(EINTR)
|
||||
if (errno == (EINTR)) continue;
|
||||
#endif
|
||||
@@ -4372,6 +4529,9 @@ ACCLIB_PUBLIC(long, acc_safe_hwrite) (int fd, const acc_hvoid_p buf, long size)
|
||||
if (n == 0)
|
||||
break;
|
||||
if (n < 0) {
|
||||
#if defined(EAGAIN)
|
||||
if (errno == (EAGAIN)) continue;
|
||||
#endif
|
||||
#if defined(EINTR)
|
||||
if (errno == (EINTR)) continue;
|
||||
#endif
|
||||
@@ -4393,9 +4553,6 @@ ACCLIB_PUBLIC(long, acc_safe_hwrite) (int fd, const acc_hvoid_p buf, long size)
|
||||
#if (ACC_OS_DOS16 || ACC_OS_WIN16)
|
||||
#elif (ACC_OS_DOS32 && ACC_CC_GNUC) && defined(__DJGPP__)
|
||||
#elif (ACC_OS_CYGWIN || ACC_OS_WIN32 || ACC_OS_WIN64) && (ACC_HAVE_WINDOWS_H)
|
||||
# if defined(acc_int64l_t)
|
||||
# define __ACCLIB_UCLOCK_USE_QPC 1
|
||||
# endif
|
||||
# if ((ACC_CC_DMC && (__DMC__ < 0x838)) || ACC_CC_LCCWIN32)
|
||||
# define __ACCLIB_UCLOCK_USE_CLOCK 1
|
||||
# else
|
||||
@@ -4444,50 +4601,63 @@ ACCLIB_PUBLIC(long, acc_safe_hwrite) (int fd, const acc_hvoid_p buf, long size)
|
||||
#endif
|
||||
ACCLIB_PUBLIC(int, acc_uclock_open) (acc_uclock_handle_p h)
|
||||
{
|
||||
acc_uclock_t c;
|
||||
int i;
|
||||
#if (__ACCLIB_UCLOCK_USE_QPC)
|
||||
LARGE_INTEGER li;
|
||||
h->qpf = 0.0;
|
||||
if (QueryPerformanceFrequency(&li) != 0) {
|
||||
h->qpf = (double) li.QuadPart;
|
||||
if (h->qpf <= 0.0 || QueryPerformanceCounter(&li) == 0) {
|
||||
h->qpf = 0.0;
|
||||
#endif
|
||||
memset(h, 0, sizeof(*h));
|
||||
h->h = 1;
|
||||
#if (__ACCLIB_UCLOCK_USE_PERFCTR)
|
||||
if (h->mode == 0 && acc_perfctr_open(&h->pch) == 0)
|
||||
h->mode = 2;
|
||||
#endif
|
||||
#if (__ACCLIB_UCLOCK_USE_QPC)
|
||||
if (h->mode == 0 && QueryPerformanceFrequency(&li) != 0) {
|
||||
double d = (double) li.QuadPart;
|
||||
if (d > 0.0 && QueryPerformanceCounter(&li) != 0) {
|
||||
h->mode = 3;
|
||||
h->qpf = d;
|
||||
}
|
||||
}
|
||||
#elif (ACC_HAVE_WINDOWS_H) && defined(acc_int64l_t)
|
||||
h->qpf = 0.0;
|
||||
#endif
|
||||
h->h = 1;
|
||||
h->mode = 0;
|
||||
i = 100;
|
||||
do {
|
||||
for (i = 0; i < 10; i++) {
|
||||
acc_uclock_t c;
|
||||
acc_uclock_read(h, &c);
|
||||
#if (__ACCLIB_UCLOCK_USE_QPC)
|
||||
if (h->qpf > 0.0 && c.qpc == 0) { h->qpf = 0.0; i = 100; }
|
||||
#endif
|
||||
} while (--i > 0);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
ACCLIB_PUBLIC(int, acc_uclock_close) (acc_uclock_handle_p h)
|
||||
{
|
||||
h->h = 0;
|
||||
h->mode = -1;
|
||||
#if (__ACCLIB_UCLOCK_USE_PERFCTR)
|
||||
acc_perfctr_close(&h->pch);
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
ACCLIB_PUBLIC(void, acc_uclock_read) (acc_uclock_handle_p h, acc_uclock_p c)
|
||||
{
|
||||
#if (__ACCLIB_UCLOCK_USE_RDTSC)
|
||||
acc_tsc_read((acc_uint32e_t*) &c->tsc);
|
||||
#endif
|
||||
#if (__ACCLIB_UCLOCK_USE_PERFCTR)
|
||||
if (h->pch.h) {
|
||||
acc_perfctr_read(&h->pch, &c->pcc);
|
||||
if (h->mode > 0 && h->mode <= 2)
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
#if (__ACCLIB_UCLOCK_USE_QPC)
|
||||
if (h->qpf > 0.0) {
|
||||
LARGE_INTEGER li;
|
||||
if (QueryPerformanceCounter(&li) != 0) {
|
||||
c->qpc = (acc_int64l_t) li.QuadPart;
|
||||
if (c->qpc > 0)
|
||||
if (h->mode > 0 && h->mode <= 3)
|
||||
return;
|
||||
} else {
|
||||
h->mode = 0; h->qpf = 0.0; c->qpc = 0;
|
||||
}
|
||||
c->qpc = 0;
|
||||
}
|
||||
#elif (ACC_HAVE_WINDOWS_H) && defined(acc_int64l_t)
|
||||
#endif
|
||||
{
|
||||
#if (ACC_OS_DOS16 || ACC_OS_WIN16)
|
||||
@@ -4527,34 +4697,44 @@ ACCLIB_PUBLIC(double, acc_uclock_get_elapsed) (acc_uclock_handle_p h, const acc_
|
||||
h->mode = -1;
|
||||
return 0.0;
|
||||
}
|
||||
#if (__ACCLIB_UCLOCK_USE_RDTSC)
|
||||
if (h->mode == 1) {
|
||||
d = (double) ((acc_int64l_t)stop->tsc - (acc_int64l_t)start->tsc);
|
||||
return d / 1000000000.0;
|
||||
}
|
||||
#endif
|
||||
#if (__ACCLIB_UCLOCK_USE_PERFCTR)
|
||||
if (h->pch.h && h->mode == 2) {
|
||||
return acc_perfctr_get_elapsed(&h->pch, &start->pcc, &stop->pcc);
|
||||
}
|
||||
#endif
|
||||
#if (__ACCLIB_UCLOCK_USE_QPC)
|
||||
if (h->qpf > 0.0) {
|
||||
h->mode = 1;
|
||||
if (h->qpf > 0.0 && h->mode == 3) {
|
||||
if (start->qpc == 0 || stop->qpc == 0) return 0.0;
|
||||
return (double) (stop->qpc - start->qpc) / h->qpf;
|
||||
}
|
||||
#endif
|
||||
#if (ACC_OS_DOS16 || ACC_OS_WIN16)
|
||||
h->mode = 2;
|
||||
h->mode = 11;
|
||||
d = (double) (stop->ticks.t32 - start->ticks.t32) / 100.0;
|
||||
if (d < 0.0) d += 86400.0;
|
||||
#elif (ACC_OS_DOS32 && ACC_CC_GNUC) && defined(__DJGPP__)
|
||||
h->mode = 3;
|
||||
h->mode = 12;
|
||||
d = (double) (stop->ticks.t64 - start->ticks.t64) / (UCLOCKS_PER_SEC);
|
||||
#elif (__ACCLIB_UCLOCK_USE_CLOCK) && defined(acc_int64l_t)
|
||||
h->mode = 4;
|
||||
h->mode = 13;
|
||||
d = (double) (stop->ticks.t64 - start->ticks.t64) / (CLOCKS_PER_SEC);
|
||||
#elif (__ACCLIB_UCLOCK_USE_CLOCK)
|
||||
h->mode = 5;
|
||||
h->mode = 14;
|
||||
d = (double) (stop->ticks.t32 - start->ticks.t32) / (CLOCKS_PER_SEC);
|
||||
#elif (__ACCLIB_UCLOCK_USE_WINMM)
|
||||
h->mode = 6;
|
||||
h->mode = 15;
|
||||
d = (double) (stop->ticks.t32 - start->ticks.t32) / 1000.0;
|
||||
#elif (__ACCLIB_UCLOCK_USE_GETRUSAGE)
|
||||
h->mode = 7;
|
||||
h->mode = 16;
|
||||
d = stop->ticks.td - start->ticks.td;
|
||||
#elif (HAVE_GETTIMEOFDAY)
|
||||
h->mode = 8;
|
||||
h->mode = 17;
|
||||
d = stop->ticks.td - start->ticks.td;
|
||||
#else
|
||||
h->mode = 0;
|
||||
@@ -4748,9 +4928,9 @@ ACCLIB_PUBLIC(void, acc_debug_break) (void)
|
||||
DebugBreak();
|
||||
#elif defined(ACC_CFG_NO_INLINE_ASM) && (ACC_OS_WIN32) && (ACC_HAVE_WINDOWS_H)
|
||||
DebugBreak();
|
||||
#elif ((ACC_ARCH_AMD64 || ACC_ARCH_I386) && ACC_ASM_SYNTAX_GNUC)
|
||||
#elif (ACC_ARCH_AMD64 || ACC_ARCH_I386) && (ACC_ASM_SYNTAX_GNUC)
|
||||
__asm__ __volatile__("int $3\n" : : : __ACC_ASM_CLOBBER);
|
||||
#elif (ACC_ARCH_I386 && ACC_ASM_SYNTAX_MSC)
|
||||
#elif (ACC_ARCH_I386) && (ACC_ASM_SYNTAX_MSC)
|
||||
__asm { int 3 }
|
||||
#elif (ACC_OS_WIN32) && (ACC_HAVE_WINDOWS_H)
|
||||
DebugBreak();
|
||||
@@ -4763,11 +4943,11 @@ ACCLIB_PUBLIC(void, acc_debug_nop) (void)
|
||||
}
|
||||
ACCLIB_PUBLIC(int, acc_debug_align_check_query) (void)
|
||||
{
|
||||
#if ((ACC_ARCH_AMD64 || ACC_ARCH_I386) && ACC_ASM_SYNTAX_GNUC)
|
||||
#if (ACC_ARCH_AMD64 || ACC_ARCH_I386) && (ACC_ASM_SYNTAX_GNUC)
|
||||
long r;
|
||||
__asm__ __volatile__("pushf\n pop %0\n" : "=a" (r) : : __ACC_ASM_CLOBBER);
|
||||
return (int)(r >> 18) & 1;
|
||||
#elif (ACC_ARCH_I386 && ACC_ASM_SYNTAX_MSC)
|
||||
#elif (ACC_ARCH_I386) && (ACC_ASM_SYNTAX_MSC)
|
||||
long r;
|
||||
__asm {
|
||||
pushf
|
||||
@@ -4782,21 +4962,21 @@ ACCLIB_PUBLIC(int, acc_debug_align_check_query) (void)
|
||||
ACCLIB_PUBLIC(int, acc_debug_align_check_enable) (int v)
|
||||
{
|
||||
int r;
|
||||
#if (ACC_ARCH_AMD64 && ACC_ASM_SYNTAX_GNUC)
|
||||
#if (ACC_ARCH_AMD64) && (ACC_ASM_SYNTAX_GNUC)
|
||||
if (v) {
|
||||
__asm__ __volatile__("pushf\n orl $262144,(%%rsp)\n popf\n" : : : __ACC_ASM_CLOBBER);
|
||||
} else {
|
||||
__asm__ __volatile__("pushf\n andl $-262145,(%%rsp)\n popf\n" : : : __ACC_ASM_CLOBBER);
|
||||
}
|
||||
r = 0;
|
||||
#elif (ACC_ARCH_I386 && ACC_ASM_SYNTAX_GNUC)
|
||||
#elif (ACC_ARCH_I386) && (ACC_ASM_SYNTAX_GNUC)
|
||||
if (v) {
|
||||
__asm__ __volatile__("pushf\n orl $262144,(%%esp)\n popf\n" : : : __ACC_ASM_CLOBBER);
|
||||
} else {
|
||||
__asm__ __volatile__("pushf\n andl $-262145,(%%esp)\n popf\n" : : : __ACC_ASM_CLOBBER);
|
||||
}
|
||||
r = 0;
|
||||
#elif (ACC_ARCH_I386 && ACC_ASM_SYNTAX_MSC)
|
||||
#elif (ACC_ARCH_I386) && (ACC_ASM_SYNTAX_MSC)
|
||||
if (v) { __asm {
|
||||
pushf
|
||||
or dword ptr [esp],262144
|
||||
@@ -4850,6 +5030,10 @@ ACCLIB_PUBLIC(void, acc_wildargv) (int* argc, char*** argv)
|
||||
{
|
||||
#if 1 && (ACC_ARCH_I086PM)
|
||||
if (ACC_MM_AHSHIFT != 3) { exit(1); }
|
||||
#elif 1 && (ACC_ARCH_M68K && ACC_OS_TOS && ACC_CC_GNUC) && defined(__MINT__)
|
||||
__binmode(1);
|
||||
if (isatty(1)) __set_binmode(stdout, 0);
|
||||
if (isatty(2)) __set_binmode(stderr, 0);
|
||||
#endif
|
||||
ACC_UNUSED(argc); ACC_UNUSED(argv);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user