diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 7ebce8dd4de..b3cb2338dc4 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,12 @@ +2012-01-27 Aldy Hernandez + + PR testsuite/52011 + * gcc.dg/lto/trans-mem.h: New file. + * gcc.dg/lto/trans-mem-2_0.c: Include it. + * gcc.dg/lto/trans-mem-1_1.c: Same. + * gcc.dg/lto/trans-mem-4_1.c: Same. + * gcc.dg/lto/trans-mem-3_1.c: Same. + 2012-01-27 Tobias Burnus PR fortran/52022 diff --git a/gcc/testsuite/gcc.dg/lto/trans-mem-1_1.c b/gcc/testsuite/gcc.dg/lto/trans-mem-1_1.c index 6dba2527cd8..f49a2626e58 100644 --- a/gcc/testsuite/gcc.dg/lto/trans-mem-1_1.c +++ b/gcc/testsuite/gcc.dg/lto/trans-mem-1_1.c @@ -1,10 +1 @@ -#include - -#define noinline __attribute__((noinline,noclone,used)) - -noinline uint32_t _ITM_beginTransaction(uint32_t a, ...) { asm(""); } -noinline void _ITM_commitTransaction (void) { asm(""); } -noinline void _ITM_WU4 (void *a, uint32_t b) { asm(""); } -noinline void _ITM_WU8 (void *a, uint64_t b) { asm(""); } -noinline void _ITM_registerTMCloneTable (void) { asm(""); } -noinline void _ITM_deregisterTMCloneTable (void) { asm(""); } +#include "trans-mem.h" diff --git a/gcc/testsuite/gcc.dg/lto/trans-mem-2_0.c b/gcc/testsuite/gcc.dg/lto/trans-mem-2_0.c index b99c5bf95e9..b2706022875 100644 --- a/gcc/testsuite/gcc.dg/lto/trans-mem-2_0.c +++ b/gcc/testsuite/gcc.dg/lto/trans-mem-2_0.c @@ -2,19 +2,10 @@ /* { dg-lto-do link } */ /* { dg-require-effective-target stdint_types } */ -#include +#include "trans-mem.h" extern void foobar() __attribute__((transaction_callable)); -#define noinline __attribute__((noinline,noclone,used)) - -noinline uint32_t _ITM_beginTransaction(uint32_t a, ...) { asm(""); } -noinline void _ITM_commitTransaction (void) { asm(""); } -noinline void _ITM_WU4 (void *a, uint32_t b) { asm(""); } -noinline void _ITM_WU8 (void *a, uint64_t b) { asm(""); } -noinline void _ITM_registerTMCloneTable (void) { asm(""); } -noinline void _ITM_deregisterTMCloneTable (void) { asm(""); } - main() { __transaction_relaxed diff --git a/gcc/testsuite/gcc.dg/lto/trans-mem-3_1.c b/gcc/testsuite/gcc.dg/lto/trans-mem-3_1.c index 6373ecc12ac..4b7f7d7510b 100644 --- a/gcc/testsuite/gcc.dg/lto/trans-mem-3_1.c +++ b/gcc/testsuite/gcc.dg/lto/trans-mem-3_1.c @@ -1,6 +1,6 @@ /* { dg-options "-fgnu-tm" } */ -#include +#include "trans-mem.h" extern int i; @@ -8,12 +8,3 @@ main() { __transaction_atomic { i = 0; } } - -#define noinline __attribute__((noinline,noclone,used)) - -noinline uint32_t _ITM_beginTransaction(uint32_t a, ...) { asm(""); } -noinline void _ITM_commitTransaction (void) { asm(""); } -noinline void _ITM_WU4 (void *a, uint32_t b) { asm(""); } -noinline void _ITM_WU8 (void *a, uint64_t b) { asm(""); } -noinline void _ITM_registerTMCloneTable (void) { asm(""); } -noinline void _ITM_deregisterTMCloneTable (void) { asm(""); } diff --git a/gcc/testsuite/gcc.dg/lto/trans-mem-4_1.c b/gcc/testsuite/gcc.dg/lto/trans-mem-4_1.c index a377e666605..620ce16b8c8 100644 --- a/gcc/testsuite/gcc.dg/lto/trans-mem-4_1.c +++ b/gcc/testsuite/gcc.dg/lto/trans-mem-4_1.c @@ -1,14 +1,6 @@ -#include +#include "trans-mem.h" __attribute__((transaction_safe)) void foo() { } - -uint32_t _ITM_beginTransaction(uint32_t prop, ...) -{ -} - -void __builtin__ITM_commitTransaction (void) -{ -} diff --git a/gcc/testsuite/gcc.dg/lto/trans-mem.h b/gcc/testsuite/gcc.dg/lto/trans-mem.h new file mode 100644 index 00000000000..add5a297b51 --- /dev/null +++ b/gcc/testsuite/gcc.dg/lto/trans-mem.h @@ -0,0 +1,22 @@ +#include + +/* Dummy declarations for common TM supporting functions. */ + +/* These must be in sync with both libitm/libitm.h and the TM builtin + definitions in gcc/gtm-builtins.def. */ + +#define noinline __attribute__((noinline,noclone,used)) + +#ifdef __i386__ +/* Only for 32-bit x86. */ +# define ITM_REGPARM __attribute__((regparm(2))) +#else +# define ITM_REGPARM +#endif + +ITM_REGPARM noinline uint32_t _ITM_beginTransaction(uint32_t a, ...) { asm(""); } +ITM_REGPARM noinline void _ITM_commitTransaction (void) { asm(""); } +ITM_REGPARM noinline void _ITM_WU4 (void *a, uint32_t b) { asm(""); } +ITM_REGPARM noinline void _ITM_WU8 (void *a, uint64_t b) { asm(""); } +noinline void _ITM_registerTMCloneTable (void) { asm(""); } +noinline void _ITM_deregisterTMCloneTable (void) { asm(""); }