mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-23 01:30:29 +08:00
sh.c (calc_live_regs): Update check for PIC liveness in compact code.
* config/sh/sh.c (calc_live_regs): Update check for PIC liveness in compact code. From-SVN: r59212
This commit is contained in:
parent
e300c78c25
commit
180bde4f78
@ -1,3 +1,8 @@
|
||||
2002-11-18 Richard Sandiford <rsandifo@redhat.com>
|
||||
|
||||
* config/sh/sh.c (calc_live_regs): Update check for PIC liveness
|
||||
in compact code.
|
||||
|
||||
2002-11-18 Richard Sandiford <rsandifo@redhat.com>
|
||||
|
||||
* config/sh/sh.md (initialize_trampoline): Do not force the
|
||||
|
@ -4456,7 +4456,11 @@ calc_live_regs (count_ptr, live_regs_mask)
|
||||
&& reg != RETURN_ADDRESS_POINTER_REGNUM
|
||||
&& reg != T_REG && reg != GBR_REG)
|
||||
: (/* Only push those regs which are used and need to be saved. */
|
||||
regs_ever_live[reg] && ! call_used_regs[reg]))
|
||||
(TARGET_SHCOMPACT
|
||||
&& flag_pic
|
||||
&& current_function_args_info.call_cookie
|
||||
&& reg == PIC_OFFSET_TABLE_REGNUM)
|
||||
|| (regs_ever_live[reg] && ! call_used_regs[reg])))
|
||||
{
|
||||
live_regs_mask[reg / 32] |= 1 << (reg % 32);
|
||||
count += GET_MODE_SIZE (REGISTER_NATURAL_MODE (reg));
|
||||
|
@ -1,3 +1,7 @@
|
||||
2002-11-18 Richard Sandiford <rsandifo@redhat.com>
|
||||
|
||||
* gcc.c-torture/execute/20021118-1.c: New test.
|
||||
|
||||
2002-11-16 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* gcc.dg/20021116-1.c: New test.
|
||||
|
15
gcc/testsuite/gcc.c-torture/execute/20021118-1.c
Normal file
15
gcc/testsuite/gcc.c-torture/execute/20021118-1.c
Normal file
@ -0,0 +1,15 @@
|
||||
struct s { int f[4]; };
|
||||
|
||||
int foo (struct s s, int x1, int x2, int x3, int x4, int x5, int x6, int x7)
|
||||
{
|
||||
return s.f[3] + x7;
|
||||
}
|
||||
|
||||
int main ()
|
||||
{
|
||||
struct s s = { 1, 2, 3, 4 };
|
||||
|
||||
if (foo (s, 100, 200, 300, 400, 500, 600, 700) != 704)
|
||||
abort ();
|
||||
exit (0);
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user