Allow combining -Cprofile-generate and -Cpanic=unwind when targeting
MSVC. The LLVM limitation that previously prevented this has been fixed in LLVM 9 which is older than the oldest LLVM version we currently support. See https://github.com/rust-lang/rust/issues/61002.
This commit is contained in:
parent
8df945c471
commit
d56c02d7e9
8 changed files with 2 additions and 81 deletions
|
@ -1,7 +1,7 @@
|
|||
use crate::cgu_reuse_tracker::CguReuseTracker;
|
||||
use crate::code_stats::CodeStats;
|
||||
pub use crate::code_stats::{DataTypeKind, FieldInfo, SizeKind, VariantInfo};
|
||||
use crate::config::{self, CrateType, OutputType, PrintRequest, SwitchWithOptPath};
|
||||
use crate::config::{self, CrateType, OutputType, SwitchWithOptPath};
|
||||
use crate::filesearch;
|
||||
use crate::lint::{self, LintId};
|
||||
use crate::parse::ParseSess;
|
||||
|
@ -1440,25 +1440,6 @@ fn validate_commandline_args_with_session_available(sess: &Session) {
|
|||
}
|
||||
}
|
||||
|
||||
// PGO does not work reliably with panic=unwind on Windows. Let's make it
|
||||
// an error to combine the two for now. It always runs into an assertions
|
||||
// if LLVM is built with assertions, but without assertions it sometimes
|
||||
// does not crash and will probably generate a corrupted binary.
|
||||
// We should only display this error if we're actually going to run PGO.
|
||||
// If we're just supposed to print out some data, don't show the error (#61002).
|
||||
if sess.opts.cg.profile_generate.enabled()
|
||||
&& sess.target.is_like_msvc
|
||||
&& sess.panic_strategy() == PanicStrategy::Unwind
|
||||
&& sess.opts.prints.iter().all(|&p| p == PrintRequest::NativeStaticLibs)
|
||||
{
|
||||
sess.err(
|
||||
"Profile-guided optimization does not yet work in conjunction \
|
||||
with `-Cpanic=unwind` on Windows when targeting MSVC. \
|
||||
See issue #61002 <https://github.com/rust-lang/rust/issues/61002> \
|
||||
for more information.",
|
||||
);
|
||||
}
|
||||
|
||||
// Sanitizers can only be used on platforms that we know have working sanitizer codegen.
|
||||
let supported_sanitizers = sess.target.options.supported_sanitizers;
|
||||
let unsupported_sanitizers = sess.opts.debugging_opts.sanitizer - supported_sanitizers;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue