aboutsummaryrefslogtreecommitdiff
path: root/gcc/reload1.c
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@libertysurf.fr>2003-11-27 07:45:25 +0100
committerEric Botcazou <ebotcazou@gcc.gnu.org>2003-11-27 06:45:25 +0000
commitb483cfb7a714d1d4ca0868241f69b31d44c51e55 (patch)
tree5ee4068a1e45d473e12e2bc01e5182b2bc83fcd5 /gcc/reload1.c
parentecb63641ffab9d9e808620c2f6b68ec08e188cfa (diff)
downloadgcc-b483cfb7a714d1d4ca0868241f69b31d44c51e55.zip
gcc-b483cfb7a714d1d4ca0868241f69b31d44c51e55.tar.gz
gcc-b483cfb7a714d1d4ca0868241f69b31d44c51e55.tar.bz2
re PR rtl-optimization/13041 (linux-2.6/sound/core/oss/rate.c miscompiled)
PR optimization/13041 * final.c (frame_pointer_needed): Fix comment. * reload1.c (reload): Decrease alignment of the frame pointer if it was used for register allocation. From-SVN: r73978
Diffstat (limited to 'gcc/reload1.c')
-rw-r--r--gcc/reload1.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/gcc/reload1.c b/gcc/reload1.c
index 22c0342..64dc0be 100644
--- a/gcc/reload1.c
+++ b/gcc/reload1.c
@@ -1241,6 +1241,14 @@ reload (rtx first, int global)
by this, so unshare everything here. */
unshare_all_rtl_again (first);
+#ifdef STACK_BOUNDARY
+ /* init_emit has set the alignment of the hard frame pointer
+ to STACK_BOUNDARY. It is very likely no longer valid if
+ the hard frame pointer was used for register allocation. */
+ if (!frame_pointer_needed)
+ REGNO_POINTER_ALIGN (HARD_FRAME_POINTER_REGNUM) = BITS_PER_UNIT;
+#endif
+
return failure;
}