aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorstuart <stuart@138bc75d-0d04-0410-961f-82ee72b054a4>2006-03-25 00:10:39 +0000
committerstuart <stuart@138bc75d-0d04-0410-961f-82ee72b054a4>2006-03-25 00:10:39 +0000
commitb7d6755c867565cc3d89f1eb304ecf339bd0ee35 (patch)
tree8be07ce972316e0e936376f89b473f65099578eb
parent0485019f23ed0b41a61e1ad2322267327cad92d0 (diff)
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
-rw-r--r--gcc/ChangeLog.apple-ppc6
-rw-r--r--gcc/global.c9
-rw-r--r--gcc/testsuite/ChangeLog.apple-ppc5
-rw-r--r--gcc/testsuite/gcc.apple/4443946.c14
4 files changed, 32 insertions, 2 deletions
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,5 +1,11 @@
2006-03-24 Stuart Hastings <stuart@apple.com>
+ Radar 4443946
+ * gcc/global.c (global_alloc): Allow -fasm-blocks to clobber
+ the frame pointer.
+
+2006-03-24 Stuart Hastings <stuart@apple.com>
+
Radar 4474259
* gcc/config/i386/i386.c (cw_reg_comp): Use strcasecmp.
(x86_canonicalize_operands): Exception for movd.
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,5 +1,10 @@
2006-03-24 Stuart Hastings <stuart@apple.com>
+ Radar 4443946
+ gcc.apple/4443946.c: New.
+
+2006-03-24 Stuart Hastings <stuart@apple.com>
+
Radar 4474259
* gcc.apple/4474259.c: New.
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
+ }
+}
+