summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Object/ELFObjectFile.cpp
diff options
context:
space:
mode:
authorEli Friedman <efriedma@quicinc.com>2019-09-17 21:42:38 +0000
committerEli Friedman <efriedma@quicinc.com>2019-09-17 21:42:38 +0000
commitddf5e86c222c6b5226be53e1250421fe608bb4d0 (patch)
treeafec6010f0074c3518af2587d377cc25a0d701f9 /llvm/lib/Object/ELFObjectFile.cpp
parentf478c8bf92652151a73008ebc5c01b210e184ce7 (diff)
downloadbcm5719-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.cpp2
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;
OpenPOWER on IntegriCloud