38 lines
1.1 KiB
Rust
38 lines
1.1 KiB
Rust
#![allow(non_snake_case)]
|
|
|
|
register_long_diagnostics! {
|
|
|
|
E0668: r##"
|
|
Malformed inline assembly rejected by LLVM.
|
|
|
|
LLVM checks the validity of the constraints and the assembly string passed to
|
|
it. This error implies that LLVM seems something wrong with the inline
|
|
assembly call.
|
|
|
|
In particular, it can happen if you forgot the closing bracket of a register
|
|
constraint (see issue #51430):
|
|
```ignore (error-emitted-at-codegen-which-cannot-be-handled-by-compile_fail)
|
|
#![feature(asm)]
|
|
|
|
fn main() {
|
|
let rax: u64;
|
|
unsafe {
|
|
asm!("" :"={rax"(rax));
|
|
println!("Accumulator is: {}", rax);
|
|
}
|
|
}
|
|
```
|
|
"##,
|
|
|
|
E0669: r##"
|
|
Cannot convert inline assembly operand to a single LLVM value.
|
|
|
|
This error usually happens when trying to pass in a value to an input inline
|
|
assembly operand that is actually a pair of values. In particular, this can
|
|
happen when trying to pass in a slice, for instance a `&str`. In Rust, these
|
|
values are represented internally as a pair of values, the pointer and its
|
|
length. When passed as an input operand, this pair of values can not be
|
|
coerced into a register and thus we must fail with an error.
|
|
"##,
|
|
|
|
}
|