diff options
author | John van Groningen | 2006-01-20 15:08:32 +0000 |
---|---|---|
committer | John van Groningen | 2006-01-20 15:08:32 +0000 |
commit | d7a515da8618bf72ebb4b1a3325e66db1a48f640 (patch) | |
tree | f6b0edaa4d2a3d4771f53288662adcb2d2d881dd /cgcode.c | |
parent | generate code for amd64 (diff) |
fix incorrect code generation for return with > 7 floating point parameters
in registers and < 2 integer parameters in registers for IA32
Diffstat (limited to 'cgcode.c')
-rw-r--r-- | cgcode.c | 9 |
1 files changed, 9 insertions, 0 deletions
@@ -6599,6 +6599,8 @@ void code_rtn (void) if (n_data_registers>n_data_parameter_registers) n_data_registers=n_data_parameter_registers; + else if (n_data_registers<n_data_parameter_registers) + n_data_parameter_registers=n_data_registers; if (n_float_registers>n_float_parameter_registers) n_float_registers=n_float_parameter_registers; return_address_offset=n_data_registers+(n_float_registers<<1); @@ -6641,9 +6643,16 @@ void code_rtn (void) #ifndef I486 if (return_with_rts){ #endif + +#ifdef I486 + b_offset+= + end_basic_block_with_registers_and_return_address_and_return_b_stack_offset + (a_stack_size,b_stack_size,local_demanded_vector,n_data_parameter_registers); +#else b_offset+= end_basic_block_with_registers_and_return_b_stack_offset (a_stack_size,b_stack_size,local_demanded_vector,N_ADDRESS_PARAMETER_REGISTERS); +#endif #if ! (defined (sparc) || defined (G_POWER)) if (b_offset!=0) |