Distinguish different `vfp?` features

The different generations of ARM floating point VFP correspond to the
LLVM CPU features named `vfp2`, `vfp3`, and `vfp4`; they are now
exposed in Rust under the same names.

This commit fixes some crashes that would occour when checking if the
`vfp` feature exists (the crash occurs because the linear scan of the
LLVM feature goes past the end of the features whenever it searches
for a feature that does not exist in the LLVM tables).
This commit is contained in:
Andrea Canciani 2016-04-14 13:02:47 +02:00
parent f942c28900
commit 5879ee1eca
1 changed files with 7 additions and 1 deletions

View File

@ -24,9 +24,15 @@ use libc::c_char;
pub fn add_configuration(cfg: &mut ast::CrateConfig, sess: &Session) {
let target_machine = create_target_machine(sess);
// WARNING: the features must be known to LLVM or the feature
// detection code will walk past the end of the feature array,
// leading to crashes.
let arm_whitelist = [
"neon\0",
"vfp\0",
"vfp2\0",
"vfp3\0",
"vfp4\0",
];
let x86_whitelist = [