diff options
| author | Eli Friedman <efriedma@quicinc.com> | 2019-09-17 21:42:38 +0000 |
|---|---|---|
| committer | Eli Friedman <efriedma@quicinc.com> | 2019-09-17 21:42:38 +0000 |
| commit | ddf5e86c222c6b5226be53e1250421fe608bb4d0 (patch) | |
| tree | afec6010f0074c3518af2587d377cc25a0d701f9 /llvm/lib/Object/ELFObjectFile.cpp | |
| parent | f478c8bf92652151a73008ebc5c01b210e184ce7 (diff) | |
| download | bcm5719-llvm-ddf5e86c222c6b5226be53e1250421fe608bb4d0.tar.gz bcm5719-llvm-ddf5e86c222c6b5226be53e1250421fe608bb4d0.zip | |
[ARM] VFPv2 only supports 16 D registers.
r361845 changed the way we handle "D16" vs. "D32" targets; there used to
be a negative "d16" which removed instructions from the instruction set,
and now there's a "d32" feature which adds instructions to the
instruction set. This is good, but there was an oversight in the
implementation: the behavior of VFPv2 was changed. In particular, the
"vfp2" feature was changed to imply "d32". This is wrong: VFPv2 only
supports 16 D registers.
In practice, this means if you specify -mfpu=vfpv2, the compiler will
generate illegal instructions.
This patch gets rid of "vfp2d16" and "vfp2d16sp", and fixes "vfp2" and
"vfp2sp" so they don't imply "d32".
Differential Revision: https://reviews.llvm.org/D67375
llvm-svn: 372186
Diffstat (limited to 'llvm/lib/Object/ELFObjectFile.cpp')
| -rw-r--r-- | llvm/lib/Object/ELFObjectFile.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/llvm/lib/Object/ELFObjectFile.cpp b/llvm/lib/Object/ELFObjectFile.cpp index a10c643b3b9..bf6ffd6c37b 100644 --- a/llvm/lib/Object/ELFObjectFile.cpp +++ b/llvm/lib/Object/ELFObjectFile.cpp @@ -203,7 +203,7 @@ SubtargetFeatures ELFObjectFileBase::getARMFeatures() const { default: break; case ARMBuildAttrs::Not_Allowed: - Features.AddFeature("vfp2d16sp", false); + Features.AddFeature("vfp2sp", false); Features.AddFeature("vfp3d16sp", false); Features.AddFeature("vfp4d16sp", false); break; |

