about summary refs log tree commit diff
path: root/compiler/rustc_llvm/llvm-wrapper/CoverageMappingWrapper.cpp
diff options
context:
space:
mode:
authorRich Kadel <richkadel@google.com>2020-11-24 11:50:24 -0800
committerRich Kadel <richkadel@google.com>2020-11-24 11:50:24 -0800
commit51268d2735ed59b4f6b6351fd75edd0f4cf19c9f (patch)
tree500074e708757effa726f9ac33514548c29dad0f /compiler/rustc_llvm/llvm-wrapper/CoverageMappingWrapper.cpp
parent5d5dc4c9d86499854a50a54a8dab73c180f7cbbc (diff)
downloadrust-51268d2735ed59b4f6b6351fd75edd0f4cf19c9f.tar.gz
rust-51268d2735ed59b4f6b6351fd75edd0f4cf19c9f.zip
Check for LLVM 11+ when using `-Z instrument-coverage`
* `rustc` should now compile under LLVM 9 or 10
* Compiler generates an error if `-Z instrument-coverage` is specified
  but LLVM version is less than 11
* Coverage tests that require `-Z instrument-coverage` and run codegen
  should be skipped if LLVM version is less than 11
Diffstat (limited to 'compiler/rustc_llvm/llvm-wrapper/CoverageMappingWrapper.cpp')
-rw-r--r--compiler/rustc_llvm/llvm-wrapper/CoverageMappingWrapper.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/compiler/rustc_llvm/llvm-wrapper/CoverageMappingWrapper.cpp b/compiler/rustc_llvm/llvm-wrapper/CoverageMappingWrapper.cpp
index 6700482f2b7..2b76cd5849d 100644
--- a/compiler/rustc_llvm/llvm-wrapper/CoverageMappingWrapper.cpp
+++ b/compiler/rustc_llvm/llvm-wrapper/CoverageMappingWrapper.cpp
@@ -71,7 +71,11 @@ extern "C" void LLVMRustCoverageWriteMapSectionNameToString(LLVMModuleRef M,
 
 extern "C" void LLVMRustCoverageWriteFuncSectionNameToString(LLVMModuleRef M,
                                                              RustStringRef Str) {
+#if LLVM_VERSION_GE(11, 0)
   WriteSectionNameToString(M, IPSK_covfun, Str);
+#else
+  report_fatal_error("rustc option `-Z instrument-coverage` requires LLVM 11 or higher.");
+#endif
 }
 
 extern "C" void LLVMRustCoverageWriteMappingVarNameToString(RustStringRef Str) {
@@ -81,5 +85,9 @@ extern "C" void LLVMRustCoverageWriteMappingVarNameToString(RustStringRef Str) {
 }
 
 extern "C" uint32_t LLVMRustCoverageMappingVersion() {
+#if LLVM_VERSION_GE(11, 0)
   return coverage::CovMapVersion::Version4;
+#else
+  report_fatal_error("rustc option `-Z instrument-coverage` requires LLVM 11 or higher.");
+#endif
 }