diff options
Diffstat (limited to 'meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0366-gcc.patch')
-rw-r--r-- | meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0366-gcc.patch | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0366-gcc.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0366-gcc.patch new file mode 100644 index 0000000000..5b3f4bd89a --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0366-gcc.patch @@ -0,0 +1,52 @@ +From c3806c1e1e0c9895d17d729a96179f71f124857e Mon Sep 17 00:00:00 2001 +From: rsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Sun, 29 May 2011 17:48:14 +0000 +Subject: [PATCH] gcc/ + * config/mips/mips.c (mips_cfun_call_saved_reg_p): Handle global + registers. + +gcc/testsuite/ + * gcc.target/mips/reg-var-1.c: New test. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174405 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 027fc2d..8069a0b 100644 +--- a/gcc/config/mips/mips.c ++++ b/gcc/config/mips/mips.c +@@ -9053,6 +9053,11 @@ mips_interrupt_extra_call_saved_reg_p (unsigned int regno) + static bool + mips_cfun_call_saved_reg_p (unsigned int regno) + { ++ /* If the user makes an ordinarily-call-saved register global, ++ that register is no longer call-saved. */ ++ if (global_regs[regno]) ++ return false; ++ + /* Interrupt handlers need to save extra registers. */ + if (cfun->machine->interrupt_handler_p + && mips_interrupt_extra_call_saved_reg_p (regno)) +new file mode 100644 +index 0000000..d8b8118 +--- /dev/null ++++ b/gcc/testsuite/gcc.target/mips/reg-var-1.c +@@ -0,0 +1,16 @@ ++/* { dg-do run } */ ++register int g asm ("$18"); ++ ++void __attribute__((noinline)) ++test (void) ++{ ++ g = g + 1; ++} ++ ++int ++main (void) ++{ ++ g = 2; ++ test (); ++ return g != 3; ++} +-- +1.7.0.4 + |