aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Earnshaw <rearnsha@arm.com>2005-08-11 14:20:23 +0000
committerRichard Earnshaw <rearnsha@gcc.gnu.org>2005-08-11 14:20:23 +0000
commitda8ce8be372a2ca4220120b81fe6a1d79a54ea75 (patch)
tree3efe76e22e3573ec08ca865129e030da3b17dc35
parentad9863cd8d68ce11f5ac1cee98a779ac927c2fa2 (diff)
downloadgcc-da8ce8be372a2ca4220120b81fe6a1d79a54ea75.zip
gcc-da8ce8be372a2ca4220120b81fe6a1d79a54ea75.tar.gz
gcc-da8ce8be372a2ca4220120b81fe6a1d79a54ea75.tar.bz2
re PR target/23250 (4.0.1 switch -mcallee-super-interworking generating wrong code for ARM7TDMI)
PR target/23250 * arm.c (arm_override_options): If the user has selected callee-super- interworking, then enable normal interworking. From-SVN: r102993
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/arm/arm.c5
2 files changed, 11 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 1e1f0dc..f2f72f5 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2005-08-11 Richard Earnshaw <richard.earnshaw@arm.com>
+
+ PR target/23250
+ * arm.c (arm_override_options): If the user has selected callee-super-
+ interworking, then enable normal interworking.
+
2005-08-11 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
* config/i386/x86-64.h (ASM_OUTPUT_ALIGNED_BSS): Undef before
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index 289fb00..d391a52 100644
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
@@ -1010,6 +1010,11 @@ arm_override_options (void)
target_flags &= ~MASK_APCS_FRAME;
}
+ /* Callee super interworking implies thumb interworking. Adding
+ this to the flags here simplifies the logic elsewhere. */
+ if (TARGET_THUMB && TARGET_CALLEE_INTERWORKING)
+ target_flags |= MASK_INTERWORK;
+
/* TARGET_BACKTRACE calls leaf_function_p, which causes a crash if done
from here where no function is being compiled currently. */
if ((TARGET_TPCS_FRAME || TARGET_TPCS_LEAF_FRAME) && TARGET_ARM)