Hello! 2012-10-02 Uros Bizjak <ubiz...@gmail.com>
* config/x86/target.h (struct gtm_jmpbuf): Merge x86_64 and ia32 declarations some more. * config/x86/sjlj.S (_ITM_beginTransaction): Move ret to common code. Tested on x86_64-pc-linux-gnu, committed to mainline SVN. Uros.
Index: config/x86/sjlj.S =================================================================== --- config/x86/sjlj.S (revision 191953) +++ config/x86/sjlj.S (working copy) @@ -74,7 +74,6 @@ call SYM(GTM_begin_transaction) addq $56, %rsp cfi_def_cfa_offset(8) - ret #else leal 4(%esp), %ecx movl 4(%esp), %eax @@ -99,8 +98,8 @@ #endif addl $28, %esp cfi_def_cfa_offset(4) - ret #endif + ret cfi_endproc TYPE(_ITM_beginTransaction) Index: config/x86/target.h =================================================================== --- config/x86/target.h (revision 191953) +++ config/x86/target.h (working copy) @@ -24,11 +24,11 @@ namespace GTM HIDDEN { -#ifdef __x86_64__ /* ??? This doesn't work for Win64. */ typedef struct gtm_jmpbuf { void *cfa; +#ifdef __x86_64__ unsigned long long rbx; unsigned long long rbp; unsigned long long r12; @@ -36,18 +36,14 @@ unsigned long long r14; unsigned long long r15; unsigned long long rip; -} gtm_jmpbuf; #else -typedef struct gtm_jmpbuf -{ - void *cfa; unsigned long ebx; unsigned long esi; unsigned long edi; unsigned long ebp; unsigned long eip; -} gtm_jmpbuf; #endif +} gtm_jmpbuf; /* x86 doesn't require strict alignment for the basic types. */ #define STRICT_ALIGNMENT 0