re PR target/23250 (4.0.1 switch -mcallee-super-interworking generating wrong code...
authorRichard Earnshaw <rearnsha@arm.com>
Thu, 11 Aug 2005 14:20:23 +0000 (14:20 +0000)
committerRichard Earnshaw <rearnsha@gcc.gnu.org>
Thu, 11 Aug 2005 14:20:23 +0000 (14:20 +0000)
PR target/23250
* arm.c (arm_override_options): If the user has selected callee-super-
interworking, then enable normal interworking.

From-SVN: r102993

gcc/ChangeLog
gcc/config/arm/arm.c

index 1e1f0dc9e0958c874b526ac64557eaf6f352f51c..f2f72f51cf5f9bedb3825578d9903370e94574cf 100644 (file)
@@ -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
index 289fb00159a76ea6dff1e9728c5c1dcc19fe5495..d391a5242aea3bb1742cb7dd223f8dcaa175e7f8 100644 (file)
@@ -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)