[PATCH] D42569: [ARM] disable FPU features when using soft floating point.

Keith Walker via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri Jan 26 02:11:50 PST 2018


keith.walker.arm created this revision.
keith.walker.arm added reviewers: efriedma, compnerd.
Herald added subscribers: cfe-commits, kristof.beyls, javed.absar, aemerson.

This change was orignally approved in Differential Revision
https://reviews.llvm.org/D40256 and committed in r319420 and subsequently
reverted in r319425.

The problem was identified due to creating a local string which was placed
in a vector used by the calling function resulting in undefined behaviour;
this revised patch fixes this issue with a call to Args.MakeArgString()
and updates the test results due to the fix (order of expected options
changed requiring more matching patterns) and other changes affecting
the tests since this issue was previously approved (macro hex constants
changing case).  Due to the number of changed lines in the tests I though
I should get this change re-reviewed and approved.

To be compatible with GCC if soft floating point is in effect any FPU
specified is effectively ignored, eg,

  -mfloat-abi=soft -fpu=neon

If any floating point features which require FPU hardware are enabled
they must be disable.

There was some support for doing this for NEON, but it did not handle
VFP, nor did it prevent the backend from emitting the build attribute
Tag_FP_arch describing the generated code as using the floating point
hardware if a FPU was specified (even though soft float does not use
the FPU).

Disabling the hardware floating point features for targets which are
compiling for soft float has meant that some tests which were incorrectly
checking for hardware support also needed to be updated. In such cases,
where appropriate the tests have been updated to check compiling for soft
float and a non-soft float variant (usually softfp). This was usually
because the target specified in the test defaulted to soft float.


Repository:
  rC Clang

https://reviews.llvm.org/D42569

Files:
  lib/Driver/ToolChains/Arch/ARM.cpp
  test/Driver/arm-cortex-cpus.c
  test/Driver/arm-dotprod.c
  test/Driver/arm-mfpu.c
  test/Preprocessor/arm-target-features.c

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D42569.131558.patch
Type: text/x-patch
Size: 55304 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20180126/4d5da9f8/attachment-0001.bin>


More information about the cfe-commits mailing list