[ARM 1/5 big.LITTLE] Add driver support for rewriting -mcpu names

Charles Baylis charles.baylis@linaro.org
Wed Jan 15 20:36:00 GMT 2014


Hi James,

This commit (SVN r206045) seems to have introduced a problem when
compiling multiple source files if a -mcpu option is also present on
the command line.

This can be reproduced in a arm-unknown-linux-gnueabihf build with any
source file which use floating point arguments/results. For example

===== t.c
float f(void) { return 1.0f;}
=====

Note that the example command line here specifies t.c twice, although
any two source files can be used. It is the second compilation which
triggers the error.
$ ~/tools/tools-arm-unknown-linux-gnueabihf-trunk/bin/arm-unknown-linux-gnueabihf-gcc
-mcpu=cortex-a15 -O2 -c t.c t.c
t.c: In function ‘f’:
t.c:2:1: sorry, unimplemented: Thumb-1 hard-float VFP ABI
 float f(void) { return 1.0f;}
 ^

Thanks in advance for taking a look
Charles


On 17 December 2013 11:53, Richard Earnshaw <rearnsha@arm.com> wrote:
> On 17/12/13 10:40, James Greenhalgh wrote:
>>
>> Hi,
>>
>> This patch adds machinery to the driver to ensure that big.LITTLE
>> style tuning names are rewritten before they are passed to the
>> assembler. This reduces the coupling needed between GCC versions
>> and assembler versions.
>>
>> The rule is simple, we truncate the CPU name at the first '.'
>> character we see.
>>
>> Thus -mcpu=cortex-a15.cortex-a7 would be truncated to -mcpu=cortex-a15.
>>
>> Bootstrapped on a ChromeBook and checked for an arm-none-eabi and
>> an arm-none-linux-gnueabi build.
>>
>> Thanks,
>> James
>>
>> ---
>> gcc/
>>
>> 2013-12-17  James Greenhalgh  <james.greenhalgh@arm.com>
>>
>>       * common/config/arm/arm-common.c (arm_rewrite_selected_cpu): New.
>>       (arm_rewrite_mcpu): Likewise.
>>       * config/arm/arm-protos.h (arm_rewrite_selected_cpu): New.
>>       * config/arm/arm.h (BIG_LITTLE_SPEC): New.
>>       (BIG_LITTLE_SPEC_FUNCTIONS): Likewise.
>>       (EXTRA_SPEC_FUNCTIONS): Include BIG_LITTLE_SPEC_FUNCTIONS.
>>       (ASM_CPU_SPEC): Include BIG_LITTLE_SPEC.
>>       * config/arm/arm.c (arm_file_start): Rewrite arm_selecetd_cpu values.
>>
>
> OK.
>
> R.
>
>



More information about the Gcc-patches mailing list