Closed
Description
The following code will compile:
#![feature(repr_simd, platform_intrinsics)]
#[repr(simd)]
struct f64x2(f64, f64);
extern "platform-intrinsic" {
fn x86_mm_movemask_pd(x: f64x2, y: f64x2, z: f64x2) -> i32;
}
but it shouldn't because the function takes only one f64x2
as parameter and it crashes when executed:
rustc: /home/rustbuild/src/rust-buildbot/slave/nightly-dist-rustc-linux/build/src/llvm/lib/IR/Instructions.cpp:234: void llvm::CallInst::init(llvm::FunctionType*, llvm::Value*, llvm::ArrayRef<llvm::Value*>, const llvm::Twine&): Assertion `(Args.size() == FTy->getNumParams() || (FTy->isVarArg() && Args.size() > FTy->getNumParams())) && "Calling a function with bad signature!"' failed.
Aborted (core dumped)
playpen: application terminated with error code 134
As long as the awaited parameters are good, the compiler doesn't complain whereas it should.
Metadata
Metadata
Assignees
Labels
No labels