diff options
author | Andrew Pinski <pinskia@gmail.com> | 2008-04-12 20:17:01 -0700 |
---|---|---|
committer | Andrew Pinski <pinskia@gcc.gnu.org> | 2008-04-12 20:17:01 -0700 |
commit | 298ac1dd20a0f91e5975bf8a3ca8138e4f0499e4 (patch) | |
tree | 03ec29e0002099e7f0dbae36f3186066b8fe0462 | |
parent | 70a7c7f11f253b8b38f2450c6f9727e1cda235c2 (diff) | |
download | gcc-298ac1dd20a0f91e5975bf8a3ca8138e4f0499e4.zip gcc-298ac1dd20a0f91e5975bf8a3ca8138e4f0499e4.tar.gz gcc-298ac1dd20a0f91e5975bf8a3ca8138e4f0499e4.tar.bz2 |
rs6000.c (compute_save_world_info): Set lr_save_p if we are going to "save the world".
2008-04-12 Andrew Pinski <pinskia@gmail.com>
* config/rs6000/rs6000.c (compute_save_world_info): Set lr_save_p if
we are going to "save the world".
2008-04-12 Andrew Pinski <pinskia@gmail.com>
* gcc.target/powerpc/darwin-save-world-1.c: New test.
From-SVN: r134237
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/powerpc/darwin-save-world-1.c | 18 |
4 files changed, 30 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 69cb7f2..9aa7f7d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2008-04-12 Andrew Pinski <pinskia@gmail.com> + + * config/rs6000/rs6000.c (compute_save_world_info): Set lr_save_p if + we are going to "save the world". + 2008-04-13 Hans-Peter Nilsson <hp@axis.com> * config/cris/cris.md ("*andhi_lowpart_non_v32", "*andhi_lowpart_v32") diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index be069cc..0d86894 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -14258,6 +14258,9 @@ compute_save_world_info (rs6000_stack_t *info_ptr) will attempt to save it. */ info_ptr->vrsave_size = 4; + /* If we are going to save the world, we need to save the link register too. */ + info_ptr->lr_save_p = 1; + /* "Save" the VRsave register too if we're saving the world. */ if (info_ptr->vrsave_mask == 0) info_ptr->vrsave_mask = compute_vrsave_mask (); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 35112f2..4c4feb1 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2008-04-12 Andrew Pinski <pinskia@gmail.com> + + * gcc.target/powerpc/darwin-save-world-1.c: New test. + 2008-04-11 Richard Guenther <rguenther@suse.de> PR tree-optimization/35869 diff --git a/gcc/testsuite/gcc.target/powerpc/darwin-save-world-1.c b/gcc/testsuite/gcc.target/powerpc/darwin-save-world-1.c new file mode 100644 index 0000000..452060e --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/darwin-save-world-1.c @@ -0,0 +1,18 @@ +/* { dg-do run { target powerpc*-*-* } } */ +/* { dg-require-effective-target powerpc_altivec_ok } */ +/* { dg-options "-maltivec" } */ + +/* With altivec turned on, Darwin wants to save the world but we did not mark lr as being saved any more + as saving the lr is not needed for saving altivec registers. */ + +int main (void) +{ + __label__ l1; + void __attribute__((used)) q(void) + { + goto l1; + } + + l1:; + return 0; +} |