1) Move these functions to intrin-impl.h:
_bittest, _bittest64
_bittestandset, _bittestandreset, _bittestandcomplement
_bittestandset64, _bittestandreset64, _bittestandcomplement64
2) Update inline asm code:
*a) Remove "memory" clobber*.
*b) Remove volatile keyword.*
c) Several changes to inputs, outputs, and constraints.
d) add "cc" clobber.
e) Use symbolic names.
f) Support both att and intel asm formats.
dw
Index: mingw-w64-crt/intrincs/bittest.c
===================================================================
--- mingw-w64-crt/intrincs/bittest.c (revision 5952)
+++ mingw-w64-crt/intrincs/bittest.c (working copy)
@@ -1,11 +1,4 @@
+#define __INTRINSIC_ONLYSPECIAL
+#define __INTRINSIC_SPECIAL__bittest // Causes code generation in intrin-impl.h
+
#include <intrin.h>
-
-unsigned char _bittest(__LONG32 const *Base, __LONG32 Offset)
-{
- int old = 0;
- __asm__ __volatile__("btl %2,%1\n\tsbbl %0,%0 "
- :"=r" (old),"=m" ((*(volatile __LONG32 *) Base))
- :"Ir" (Offset) : "memory");
- return (old != 0);
-}
-
Index: mingw-w64-crt/intrincs/bittest64.c
===================================================================
--- mingw-w64-crt/intrincs/bittest64.c (revision 5952)
+++ mingw-w64-crt/intrincs/bittest64.c (working copy)
@@ -1,11 +1,4 @@
+#define __INTRINSIC_ONLYSPECIAL
+#define __INTRINSIC_SPECIAL__bittest64 // Causes code generation in
intrin-impl.h
+
#include <intrin.h>
-
-unsigned char _bittest64(__int64 const *Base, __int64 Offset)
-{
- int old = 0;
- __asm__ __volatile__("btq %2,%1\n\tsbbl %0,%0 "
- :"=r" (old),"=m" ((*(volatile long long *) Base))
- :"Ir" (Offset) : "memory");
- return (old != 0);
-}
-
Index: mingw-w64-crt/intrincs/bittestc.c
===================================================================
--- mingw-w64-crt/intrincs/bittestc.c (revision 5952)
+++ mingw-w64-crt/intrincs/bittestc.c (working copy)
@@ -1,11 +1,4 @@
+#define __INTRINSIC_ONLYSPECIAL
+#define __INTRINSIC_SPECIAL__bittestandcomplement // Causes code generation in
intrin-impl.h
+
#include <intrin.h>
-
-unsigned char _bittestandcomplement(__LONG32 *Base, __LONG32 Offset)
-{
- int old = 0;
- __asm__ __volatile__("btcl %2,%1\n\tsbbl %0,%0 "
- :"=r" (old),"=m" ((*(volatile __LONG32 *) Base))
- :"Ir" (Offset) : "memory");
- return (old != 0);
-}
-
Index: mingw-w64-crt/intrincs/bittestc64.c
===================================================================
--- mingw-w64-crt/intrincs/bittestc64.c (revision 5952)
+++ mingw-w64-crt/intrincs/bittestc64.c (working copy)
@@ -1,11 +1,4 @@
+#define __INTRINSIC_ONLYSPECIAL
+#define __INTRINSIC_SPECIAL__bittestandcomplement64 // Causes code generation
in intrin-impl.h
+
#include <intrin.h>
-
-unsigned char _bittestandcomplement64(__int64 *Base, __int64 Offset)
-{
- int old = 0;
- __asm__ __volatile__("btcq %2,%1\n\tsbbl %0,%0 "
- :"=r" (old),"=m" ((*(volatile long long *) Base))
- :"Ir" (Offset) : "memory");
- return (old != 0);
-}
-
Index: mingw-w64-crt/intrincs/bittestr.c
===================================================================
--- mingw-w64-crt/intrincs/bittestr.c (revision 5952)
+++ mingw-w64-crt/intrincs/bittestr.c (working copy)
@@ -1,11 +1,4 @@
+#define __INTRINSIC_ONLYSPECIAL
+#define __INTRINSIC_SPECIAL__bittestandreset // Causes code generation in
intrin-impl.h
+
#include <intrin.h>
-
-unsigned char _bittestandreset(__LONG32 *Base, __LONG32 Offset)
-{
- int old = 0;
- __asm__ __volatile__("btrl %2,%1\n\tsbbl %0,%0 "
- :"=r" (old),"=m" ((*(volatile __LONG32 *) Base))
- :"Ir" (Offset) : "memory");
- return (old != 0);
-}
-
Index: mingw-w64-crt/intrincs/bittestr64.c
===================================================================
--- mingw-w64-crt/intrincs/bittestr64.c (revision 5952)
+++ mingw-w64-crt/intrincs/bittestr64.c (working copy)
@@ -1,11 +1,4 @@
+#define __INTRINSIC_ONLYSPECIAL
+#define __INTRINSIC_SPECIAL__bittestandreset64 // Causes code generation in
intrin-impl.h
+
#include <intrin.h>
-
-unsigned char _bittestandreset64(__int64 *Base, __int64 Offset)
-{
- int old = 0;
- __asm__ __volatile__("btrq %2,%1\n\tsbbl %0,%0 "
- :"=r" (old),"=m" ((*(volatile long long *) Base))
- :"Ir" (Offset) : "memory");
- return (old != 0);
-}
-
Index: mingw-w64-crt/intrincs/bittests.c
===================================================================
--- mingw-w64-crt/intrincs/bittests.c (revision 5952)
+++ mingw-w64-crt/intrincs/bittests.c (working copy)
@@ -1,11 +1,4 @@
+#define __INTRINSIC_ONLYSPECIAL
+#define __INTRINSIC_SPECIAL__bittestandset // Causes code generation in
intrin-impl.h
+
#include <intrin.h>
-
-unsigned char _bittestandset(__LONG32 *Base, __LONG32 Offset)
-{
- int old = 0;
- __asm__ __volatile__("btsl %2,%1\n\tsbbl %0,%0 "
- :"=r" (old),"=m" ((*(volatile __LONG32 *) Base))
- :"Ir" (Offset) : "memory");
- return (old != 0);
-}
-
Index: mingw-w64-crt/intrincs/bittests64.c
===================================================================
--- mingw-w64-crt/intrincs/bittests64.c (revision 5952)
+++ mingw-w64-crt/intrincs/bittests64.c (working copy)
@@ -1,11 +1,4 @@
+#define __INTRINSIC_ONLYSPECIAL
+#define __INTRINSIC_SPECIAL__bittestandset64 // Causes code generation in
intrin-impl.h
+
#include <intrin.h>
-
-unsigned char _bittestandset64(__int64 *Base, __int64 Offset)
-{
- int old = 0;
- __asm__ __volatile__("btsq %2,%1\n\tsbbl %0,%0 "
- :"=r" (old),"=m" ((*(volatile long long *) Base))
- :"Ir" (Offset) : "memory");
- return (old != 0);
-}
-
Index: mingw-w64-headers/crt/intrin.h
===================================================================
--- mingw-w64-headers/crt/intrin.h (revision 5952)
+++ mingw-w64-headers/crt/intrin.h (working copy)
@@ -1060,20 +1060,20 @@
/* __MACHINEI(void __stosw(unsigned short *,unsigned short,size_t)) moved
to psdk_inc/intrin-impl.h */
/* __MACHINEI(void __stosd(unsigned __LONG32 *,unsigned __LONG32,size_t))
moved to psdk_inc/intrin-impl.h */
/* __MACHINEX64(__MINGW_EXTENSION void __stosq(unsigned __int64 *,unsigned
__int64,size_t)) moved to psdk_inc/intrin-impl.h */
- __MACHINEIW64(unsigned char _bittest(__LONG32 const *a,__LONG32 b))
- __MACHINEIW64(unsigned char _bittestandset(__LONG32 *a,__LONG32 b))
- __MACHINEIW64(unsigned char _bittestandreset(__LONG32 *a,__LONG32 b))
- __MACHINEIW64(unsigned char _bittestandcomplement(__LONG32 *a,__LONG32 b))
+ /* __MACHINEIW64(unsigned char _bittest(__LONG32 const *a,__LONG32 b))
moved to psdk_inc/intrin-impl.h */
+ /* __MACHINEIW64(unsigned char _bittestandset(__LONG32 *a,__LONG32 b))
moved to psdk_inc/intrin-impl.h */
+ /* __MACHINEIW64(unsigned char _bittestandreset(__LONG32 *a,__LONG32 b))
moved to psdk_inc/intrin-impl.h */
+ /* __MACHINEIW64(unsigned char _bittestandcomplement(__LONG32 *a,__LONG32
b)) moved to psdk_inc/intrin-impl.h */
/* __MACHINEI(unsigned char InterlockedBitTestAndSet(volatile __LONG32
*a,__LONG32 b)) moved to psdk_inc/intrin-impl.h */
/* __MACHINEI(unsigned char InterlockedBitTestAndReset(volatile __LONG32
*a,__LONG32 b)) moved to psdk_inc/intrin-impl.h */
/* __MACHINEI(unsigned char InterlockedBitTestAndComplement(volatile
__LONG32 *a,__LONG32 b)) moved to psdk_inc/intrin-impl.h */
/* __MACHINEI(unsigned char _interlockedbittestandset(__LONG32 *a,__LONG32
b)) moved to psdk_inc/intrin-impl.h */
/* __MACHINEI(unsigned char _interlockedbittestandreset(__LONG32
*a,__LONG32 b)) moved to psdk_inc/intrin-impl.h */
/* __MACHINEI(unsigned char _interlockedbittestandcomplement(__LONG32
*a,__LONG32 b)) moved to psdk_inc/intrin-impl.h */
- __MACHINEW64(__MINGW_EXTENSION unsigned char _bittest64(__int64 const
*a,__int64 b))
- __MACHINEW64(__MINGW_EXTENSION unsigned char _bittestandset64(__int64
*a,__int64 b))
- __MACHINEW64(__MINGW_EXTENSION unsigned char _bittestandreset64(__int64
*a,__int64 b))
- __MACHINEW64(__MINGW_EXTENSION unsigned char
_bittestandcomplement64(__int64 *a,__int64 b))
+ /* __MACHINEW64(__MINGW_EXTENSION unsigned char _bittest64(__int64 const
*a,__int64 b)) moved to psdk_inc/intrin-impl.h */
+ /* __MACHINEW64(__MINGW_EXTENSION unsigned char _bittestandset64(__int64
*a,__int64 b)) moved to psdk_inc/intrin-impl.h */
+ /* __MACHINEW64(__MINGW_EXTENSION unsigned char _bittestandreset64(__int64
*a,__int64 b)) moved to psdk_inc/intrin-impl.h */
+ /* __MACHINEW64(__MINGW_EXTENSION unsigned char
_bittestandcomplement64(__int64 *a,__int64 b)) moved to psdk_inc/intrin-impl.h
*/
/* __MACHINEX64(__MINGW_EXTENSION unsigned char
InterlockedBitTestAndSet64(volatile __int64 *a,__int64 b)) moved to
psdk_inc/intrin-impl.h */
/* __MACHINEX64(__MINGW_EXTENSION unsigned char
InterlockedBitTestAndReset64(volatile __int64 *a,__int64 b)) moved to
psdk_inc/intrin-impl.h */
/* __MACHINEX64(__MINGW_EXTENSION unsigned char
InterlockedBitTestAndComplement64(volatile __int64 *a,__int64 b)) moved to
psdk_inc/intrin-impl.h */
Index: mingw-w64-headers/include/psdk_inc/intrin-impl.h
===================================================================
--- mingw-w64-headers/include/psdk_inc/intrin-impl.h (revision 5952)
+++ mingw-w64-headers/include/psdk_inc/intrin-impl.h (working copy)
@@ -165,6 +165,14 @@
#define __INTRINSIC_SPECIAL__BitScanForward64
#define __INTRINSIC_SPECIAL__BitScanReverse
#define __INTRINSIC_SPECIAL__BitScanReverse64
+#define __INTRINSIC_SPECIAL__bittest
+#define __INTRINSIC_SPECIAL__bittestandset
+#define __INTRINSIC_SPECIAL__bittestandreset
+#define __INTRINSIC_SPECIAL__bittestandcomplement
+#define __INTRINSIC_SPECIAL__bittest64
+#define __INTRINSIC_SPECIAL__bittestandset64
+#define __INTRINSIC_SPECIAL__bittestandreset64
+#define __INTRINSIC_SPECIAL__bittestandcomplement64
#endif /* __INTRINSIC_GROUP_WINNT */
@@ -365,6 +373,34 @@
#define __INTRINSIC_DEFINED__BitScanReverse64
#endif /* __INTRINSIC_PROLOG */
+#if __INTRINSIC_PROLOG(_bittest64)
+__MINGW_EXTENSION unsigned char _bittest64(__int64 const *a, __int64 b);
+__MINGW_EXTENSION __INTRINSICS_USEINLINE
+__buildbittest(_bittest64, __int64, "J")
+#define __INTRINSIC_DEFINED__bittest64
+#endif /* __INTRINSIC_PROLOG */
+
+#if __INTRINSIC_PROLOG(_bittestandset64)
+__MINGW_EXTENSION unsigned char _bittestandset64(__int64 *a, __int64 b);
+__MINGW_EXTENSION __INTRINSICS_USEINLINE
+__buildbittestand(_bittestandset64, __int64, "bts", "J")
+#define __INTRINSIC_DEFINED__bittestandset64
+#endif /* __INTRINSIC_PROLOG */
+
+#if __INTRINSIC_PROLOG(_bittestandreset64)
+__MINGW_EXTENSION unsigned char _bittestandreset64(__int64 *a, __int64 b);
+__MINGW_EXTENSION __INTRINSICS_USEINLINE
+__buildbittestand(_bittestandreset64, __int64, "btr", "J")
+#define __INTRINSIC_DEFINED__bittestandreset64
+#endif /* __INTRINSIC_PROLOG */
+
+#if __INTRINSIC_PROLOG(_bittestandcomplement64)
+__MINGW_EXTENSION unsigned char _bittestandcomplement64(__int64 *a, __int64 b);
+__MINGW_EXTENSION __INTRINSICS_USEINLINE
+__buildbittestand(_bittestandcomplement64, __int64, "btc", "J")
+#define __INTRINSIC_DEFINED__bittestandcomplement64
+#endif /* __INTRINSIC_PROLOG */
+
#endif /* __x86_64__ */
/* ***************************************************** */
@@ -577,8 +613,38 @@
#define __INTRINSIC_DEFINED__BitScanReverse
#endif /* __INTRINSIC_PROLOG */
+#if __INTRINSIC_PROLOG(_bittest)
+unsigned char _bittest(__LONG32 const *a, __LONG32 b);
+__INTRINSICS_USEINLINE
+__buildbittest(_bittest, __LONG32, "I")
+#define __INTRINSIC_DEFINED__bittest
+#endif /* __INTRINSIC_PROLOG */
+
+#if __INTRINSIC_PROLOG(_bittestandset)
+unsigned char _bittestandset(__LONG32 *a, __LONG32 b);
+__INTRINSICS_USEINLINE
+__buildbittestand(_bittestandset, __LONG32, "bts", "I")
+#define __INTRINSIC_DEFINED__bittestandset
+#endif /* __INTRINSIC_PROLOG */
+
+#if __INTRINSIC_PROLOG(_bittestandreset)
+unsigned char _bittestandreset(__LONG32 *a, __LONG32 b);
+__INTRINSICS_USEINLINE
+__buildbittestand(_bittestandreset, __LONG32, "btr", "I")
+#define __INTRINSIC_DEFINED__bittestandreset
+#endif /* __INTRINSIC_PROLOG */
+
+#if __INTRINSIC_PROLOG(_bittestandcomplement)
+unsigned char _bittestandcomplement(__LONG32 *a, __LONG32 b);
+__INTRINSICS_USEINLINE
+__buildbittestand(_bittestandcomplement, __LONG32, "btc", "I")
+#define __INTRINSIC_DEFINED__bittestandcomplement
+#endif /* __INTRINSIC_PROLOG */
+
#endif /* defined(__x86_64__) || (defined(_X86_) */
+/* ***************************************************** */
+
#if defined(_X86_)
#if __INTRINSIC_PROLOG(__readfsbyte)
Index: mingw-w64-headers/include/psdk_inc/intrin-mac.h
===================================================================
--- mingw-w64-headers/include/psdk_inc/intrin-mac.h (revision 5952)
+++ mingw-w64-headers/include/psdk_inc/intrin-mac.h (working copy)
@@ -29,7 +29,7 @@
/* Parameters: (FunctionName, DataType, Operator)
FunctionName: Any valid function name
- DataType: __LONG32 or LONG64
+ DataType: __LONG32 or __int64
Operator: One of xor, or, and */
#define __buildlogicali(x, y, o) y x(volatile y *Destination, y Value) \
{ \
@@ -43,7 +43,7 @@
/* Parameters: (FunctionName, DataType, AsmCode, OffsetConstraint, Volatile)
FunctionName: Any valid function name
- DataType: __LONG32 or LONG64
+ DataType: __LONG32 or __int64
OffsetConstraint: either "I" for 32bit data types or "J" for 64.
Volatile: either volatile or blank. */
#define __buildbittesti(x, y, z, a, b) unsigned char x(b y *Base, y Offset) \
@@ -108,7 +108,7 @@
FunctionName: Any valid function name
DataType: unsigned __LONG32 or unsigned __int64
- Segment: BSF or BSR */
+ Statement: BSF or BSR */
#define __buildbitscan(x, y, z) unsigned char x(unsigned __LONG32 *Index, y
Mask) \
{ \
@@ -121,4 +121,40 @@
return Mask!=0; \
}
+/* This macro is used by _bittest & _bittest64
+
+ FunctionName: Any valid function name
+ DataType: __LONG32 or __int64
+ OffsetConstraint: either "I" for 32bit data types or "J" for 64.
+
+ */
+#define __buildbittest(x, y, a) unsigned char x(const y *Base, y Offset) \
+{ \
+ unsigned char old; \
+ __asm__ ("bt{%z[Base] %[Offset],%[Base] | %[Base],%[Offset]} ; setc %[old]"
\
+ : [old] "=rm" (old) \
+ : [Offset] a "r" (Offset), [Base] "rm" (*Base) \
+ : "cc"); \
+ return old; \
+}
+
+/* This macro is used by _bittestandset, _bittestandreset,
_bittestandcomplement,
+ _bittestandset64, _bittestandreset64, _bittestandcomplement64
+
+ FunctionName: Any valid function name
+ DataType: __LONG32 or __int64
+ Statement: asm statement
+ OffsetConstraint: either "I" for 32bit data types or "J" for 64.
+
+ */
+#define __buildbittestand(x, y, z, a) unsigned char x(y *Base, y Offset) \
+{ \
+ unsigned char old; \
+ __asm__ (z "%z[Base] {%[Offset],%[Base] | %[Base],%[Offset]} ; setc %[old]"
\
+ : [old] "=r" (old), [Base] "+rm" (*Base) \
+ : [Offset] a "r" (Offset) \
+ : "cc"); \
+ return old; \
+}
+
#endif /* _INTRIN_MAC_ */
Index: mingw-w64-headers/include/winnt.h
===================================================================
--- mingw-w64-headers/include/winnt.h (revision 5952)
+++ mingw-w64-headers/include/winnt.h (working copy)
@@ -1185,77 +1185,15 @@
#define BitTestAndSet64 _bittestandset64
#define BitTestAndReset64 _bittestandreset64
- BOOLEAN _bittest(LONG const *Base,LONG Offset);
- BOOLEAN _bittestandcomplement(LONG *Base,LONG Offset);
+ /* BOOLEAN _bittest(LONG const *Base,LONG Offset); moved to
psdk_inc/intrin-impl.h */
+ /* BOOLEAN _bittestandcomplement(LONG *Base,LONG Offset); moved to
psdk_inc/intrin-impl.h */
+ /* BOOLEAN _bittestandset(LONG *Base,LONG Offset); moved to
psdk_inc/intrin-impl.h */
+ /* BOOLEAN _bittestandreset(LONG *Base,LONG Offset); moved to
psdk_inc/intrin-impl.h */
+ /* BOOLEAN _bittest64(LONG64 const *Base,LONG64 Offset); moved to
psdk_inc/intrin-impl.h */
+ /* BOOLEAN _bittestandcomplement64(LONG64 *Base,LONG64 Offset); moved to
psdk_inc/intrin-impl.h */
+ /* BOOLEAN _bittestandset64(LONG64 *Base,LONG64 Offset); moved to
psdk_inc/intrin-impl.h */
+ /* BOOLEAN _bittestandreset64(LONG64 *Base,LONG64 Offset); moved to
psdk_inc/intrin-impl.h */
-#ifndef __CRT__NO_INLINE
- __CRT_INLINE BOOLEAN _bittest(LONG const *Base,LONG Offset) {
- int old = 0;
- __asm__ __volatile__("btl %2,%1\n\tsbbl %0,%0 "
- :"=r" (old),"=m" ((*(volatile __LONG32 *) Base))
- :"Ir" (Offset) : "memory");
- return (BOOLEAN) (old!=0);
- }
- __CRT_INLINE BOOLEAN _bittestandcomplement(LONG *Base,LONG Offset) {
- int old = 0;
- __asm__ __volatile__("btcl %2,%1\n\tsbbl %0,%0 "
- :"=r" (old),"=m" ((*(volatile __LONG32 *) Base))
- :"Ir" (Offset) : "memory");
- return (BOOLEAN) (old!=0);
- }
-#endif /* __CRT__NO_INLINE */
-
- BOOLEAN _bittestandset(LONG *Base,LONG Offset);
- BOOLEAN _bittestandreset(LONG *Base,LONG Offset);
- BOOLEAN _bittest64(LONG64 const *Base,LONG64 Offset);
- BOOLEAN _bittestandcomplement64(LONG64 *Base,LONG64 Offset);
- BOOLEAN _bittestandset64(LONG64 *Base,LONG64 Offset);
- BOOLEAN _bittestandreset64(LONG64 *Base,LONG64 Offset);
-#ifndef __CRT__NO_INLINE
- __CRT_INLINE BOOLEAN _bittestandset(LONG *Base,LONG Offset) {
- int old = 0;
- __asm__ __volatile__("btsl %2,%1\n\tsbbl %0,%0 "
- :"=r" (old),"=m" ((*(volatile __LONG32 *) Base))
- :"Ir" (Offset) : "memory");
- return (BOOLEAN) (old!=0);
- }
- __CRT_INLINE BOOLEAN _bittestandreset(LONG *Base,LONG Offset) {
- int old = 0;
- __asm__ __volatile__("btrl %2,%1\n\tsbbl %0,%0 "
- :"=r" (old),"=m" ((*(volatile __LONG32 *) Base))
- :"Ir" (Offset) : "memory");
- return (BOOLEAN) (old!=0);
- }
- __CRT_INLINE BOOLEAN _bittest64(LONG64 const *Base,LONG64 Offset) {
- int old = 0;
- __asm__ __volatile__("btq %2,%1\n\tsbbl %0,%0 "
- :"=r" (old),"=m" ((*(volatile LONG64 *) Base))
- :"Ir" (Offset) : "memory");
- return (BOOLEAN) (old!=0);
- }
- __CRT_INLINE BOOLEAN _bittestandcomplement64(LONG64 *Base,LONG64 Offset) {
- int old = 0;
- __asm__ __volatile__("btcq %2,%1\n\tsbbl %0,%0 "
- :"=r" (old),"=m" ((*(volatile LONG64 *) Base))
- :"Ir" (Offset) : "memory");
- return (BOOLEAN) (old!=0);
- }
- __CRT_INLINE BOOLEAN _bittestandset64(LONG64 *Base,LONG64 Offset) {
- int old = 0;
- __asm__ __volatile__("btsq %2,%1\n\tsbbl %0,%0 "
- :"=r" (old),"=m" ((*(volatile LONG64 *) Base))
- :"Ir" (Offset) : "memory");
- return (BOOLEAN) (old!=0);
- }
- __CRT_INLINE BOOLEAN _bittestandreset64(LONG64 *Base,LONG64 Offset) {
- int old = 0;
- __asm__ __volatile__("btrq %2,%1\n\tsbbl %0,%0 "
- :"=r" (old),"=m" ((*(volatile LONG64 *) Base))
- :"Ir" (Offset) : "memory");
- return (BOOLEAN) (old!=0);
- }
-#endif /* !__CRT__NO_INLINE */
-
#define BitScanForward _BitScanForward
#define BitScanReverse _BitScanReverse
#define BitScanForward64 _BitScanForward64
------------------------------------------------------------------------------
See everything from the browser to the database with AppDynamics
Get end-to-end visibility with application monitoring from AppDynamics
Isolate bottlenecks and diagnose root cause in seconds.
Start your free trial of AppDynamics Pro today!
http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk
_______________________________________________
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public