Fix issue 57762

Issue 57762 points out a compiler crash when the compiler was built
using a stock LLVM 7.  LLVM 7 was released without a necessary fix for
a bug in the DWARF discriminant code.

This patch changes rustc to use the fallback mode on (non-Rust) LLVM 7.

Closes #57762
This commit is contained in:
Tom Tromey 2019-01-22 11:13:53 -07:00
parent 76c87a166f
commit 1c95f5a34c

View File

@ -1164,7 +1164,11 @@ fn use_enum_fallback(cx: &CodegenCx) -> bool {
// On MSVC we have to use the fallback mode, because LLVM doesn't
// lower variant parts to PDB.
return cx.sess().target.target.options.is_like_msvc
|| llvm_util::get_major_version() < 7;
|| llvm_util::get_major_version() < 7
// LLVM version 7 did not release with an important bug fix;
// but the required patch is in the equivalent Rust LLVM.
// See https://github.com/rust-lang/rust/issues/57762.
|| (llvm_util::get_major_version() == 7 && unsafe { !llvm::LLVMRustIsRustLLVM() });
}
// Describes the members of an enum value: An enum is described as a union of