From b7d6755c867565cc3d89f1eb304ecf339bd0ee35 Mon Sep 17 00:00:00 2001 From: stuart Date: Sat, 25 Mar 2006 00:10:39 +0000 Subject: Radar 4443946 * gcc/global.c (global_alloc): Allow -fasm-blocks to clobber the frame pointer. gcc.apple/4443946.c: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/apple-local-200502-branch@112366 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog.apple-ppc | 6 ++++++ gcc/global.c | 9 +++++++-- gcc/testsuite/ChangeLog.apple-ppc | 5 +++++ gcc/testsuite/gcc.apple/4443946.c | 14 ++++++++++++++ 4 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/gcc.apple/4443946.c diff --git a/gcc/ChangeLog.apple-ppc b/gcc/ChangeLog.apple-ppc index 4f83ec51e17..dd97795ced5 100644 --- a/gcc/ChangeLog.apple-ppc +++ b/gcc/ChangeLog.apple-ppc @@ -1,3 +1,9 @@ +2006-03-24 Stuart Hastings + + Radar 4443946 + * gcc/global.c (global_alloc): Allow -fasm-blocks to clobber + the frame pointer. + 2006-03-24 Stuart Hastings Radar 4474259 diff --git a/gcc/global.c b/gcc/global.c index 4bd06896479..251e81a51ef 100644 --- a/gcc/global.c +++ b/gcc/global.c @@ -431,8 +431,13 @@ global_alloc (FILE *file) SET_HARD_REG_BIT (no_global_alloc_regs, HARD_FRAME_POINTER_REGNUM); } else if (need_fp) - error ("%s cannot be used in asm here", - reg_names[HARD_FRAME_POINTER_REGNUM]); + /* APPLE LOCAL begin 4443946 */ + { + if (!flag_cw_asm_blocks) + error ("%s cannot be used in asm here", + reg_names[HARD_FRAME_POINTER_REGNUM]); + } + /* APPLE LOCAL end 4443946 */ else regs_ever_live[HARD_FRAME_POINTER_REGNUM] = 1; #endif diff --git a/gcc/testsuite/ChangeLog.apple-ppc b/gcc/testsuite/ChangeLog.apple-ppc index e8b63d76bfe..1653ba53202 100644 --- a/gcc/testsuite/ChangeLog.apple-ppc +++ b/gcc/testsuite/ChangeLog.apple-ppc @@ -1,3 +1,8 @@ +2006-03-24 Stuart Hastings + + Radar 4443946 + gcc.apple/4443946.c: New. + 2006-03-24 Stuart Hastings Radar 4474259 diff --git a/gcc/testsuite/gcc.apple/4443946.c b/gcc/testsuite/gcc.apple/4443946.c new file mode 100644 index 00000000000..3280e824feb --- /dev/null +++ b/gcc/testsuite/gcc.apple/4443946.c @@ -0,0 +1,14 @@ +/* APPLE LOCAL file 4443946 */ +/* { dg-do compile { target i?86-*-darwin* } } */ +/* { dg-options "-fasm-blocks -O2" } */ +/* The compiler used to flag any write to %ebp as an error. */ +t2 () +{ + __asm { + movd mm4, ebp + movd ebp, mm3 + movntq [edi][ebp], mm0 + movd ebp, mm4 + } +} + -- cgit v1.2.3