From 3ce14752802766f1ec13cdf98672b78888229554 Mon Sep 17 00:00:00 2001 From: Ramana Radhakrishnan Date: Mon, 22 Jun 2009 12:40:37 +0000 Subject: [PATCH] Disable caller and callee super interworking. 2009-06-22 Ramana Radhakrishnan * config/arm/arm.c (arm_override_options): Disable -mcaller-super-interworking and -mcallee-super-interworking. * doc/invoke.texi (ARM Options): Document this. From-SVN: r148790 --- gcc/ChangeLog | 6 ++++++ gcc/config/arm/arm.c | 8 ++++++++ gcc/doc/invoke.texi | 7 +++++-- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4804cfa7609..ad04c15f01a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2009-06-22 Ramana Radhakrishnan + + * config/arm/arm.c (arm_override_options): Disable -mcaller-super-interworking + and -mcallee-super-interworking. + * doc/invoke.texi (ARM Options): Document this. + 2009-06-22 Nathan Sidwell * config/arm/arm.c (arm_print_operand): Deal with HIGH. diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index 7a11d52c296..7922edf2a19 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -1613,6 +1613,14 @@ arm_override_options (void) && (arm_fp_model == ARM_FP_MODEL_FPA)) error ("FPA is unsupported in the AAPCS"); + if (TARGET_AAPCS_BASED) + if (TARGET_CALLER_INTERWORKING) + error ("AAPCS doesn't support -mcaller-super-interworking"); + else + if (TARGET_CALLEE_INTERWORKING) + error ("AAPCS doesn't support -mcallee-super-interworking"); + + /* FPA and iWMMXt are incompatible because the insn encodings overlap. VFP and iWMMXt can theoretically coexist, but it's unlikely such silicon will ever exist. GCC makes no attempt to support this combination. */ diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 5df3513803f..ffd40501fb7 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -9439,14 +9439,17 @@ not call any other functions.) The default is @option{-mno-apcs-leaf-frame}. Gives all externally visible functions in the file being compiled an ARM instruction set header which switches to Thumb mode before executing the rest of the function. This allows these functions to be called from -non-interworking code. +non-interworking code. This option is not valid in AAPCS configurations +because interworking is enabled by default. @item -mcaller-super-interworking @opindex mcaller-super-interworking Allows calls via function pointers (including virtual functions) to execute correctly regardless of whether the target code has been compiled for interworking or not. There is a small overhead in the cost -of executing a function pointer if this option is enabled. +of executing a function pointer if this option is enabled. This option +is not valid in AAPCS configurations because interworking is enabled +by default. @item -mtp=@var{name} @opindex mtp -- 2.30.2