diff options
| author | Zakk Chen <zakk.chen@sifive.com> | 2019-11-28 18:00:54 -0800 |
|---|---|---|
| committer | Hans Wennborg <hans@chromium.org> | 2020-01-27 19:07:09 +0100 |
| commit | 72882ca30d87bd7ea85d8099e8b9d2244749b71e (patch) | |
| tree | 08dc97948df36efcacf5742a1152fce2504eb57b /llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp | |
| parent | 4d342b7d8e9bc6f40001011b51b5ad812535c4a6 (diff) | |
| download | bcm5719-llvm-72882ca30d87bd7ea85d8099e8b9d2244749b71e.tar.gz bcm5719-llvm-72882ca30d87bd7ea85d8099e8b9d2244749b71e.zip | |
[RISCV] Support ABI checking with per function target-features
1. if users don't specific -mattr, the default target-feature come
from IR attribute.
2. fixed bug and re-land this patch
Reviewers: lenary, asb
Reviewed By: lenary
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D70837
(cherry picked from commit 0cb274de397a193fb37c60653b336d48a3a4f1bd)
Diffstat (limited to 'llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp')
| -rw-r--r-- | llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp b/llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp index cfd83e4189f..c7efdf42a7c 100644 --- a/llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp +++ b/llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp @@ -194,6 +194,19 @@ public: Parser.addAliasForDirective(".word", ".4byte"); Parser.addAliasForDirective(".dword", ".8byte"); setAvailableFeatures(ComputeAvailableFeatures(STI.getFeatureBits())); + + auto ABIName = StringRef(Options.ABIName); + if (ABIName.endswith("f") && + !getSTI().getFeatureBits()[RISCV::FeatureStdExtF]) { + errs() << "Hard-float 'f' ABI can't be used for a target that " + "doesn't support the F instruction set extension (ignoring " + "target-abi)\n"; + } else if (ABIName.endswith("d") && + !getSTI().getFeatureBits()[RISCV::FeatureStdExtD]) { + errs() << "Hard-float 'd' ABI can't be used for a target that " + "doesn't support the D instruction set extension (ignoring " + "target-abi)\n"; + } } }; |

