//@ compile-flags: -C no-prepopulate-passes -Copt-level=0 | |
//@ ignore-riscv64 | |
//@ ignore-loongarch64 | |
#![feature(link_llvm_intrinsics)] | |
#![crate_type = "lib"] | |
struct A; | |
impl Drop for A { | |
fn drop(&mut self) { | |
println!("A"); | |
} | |
} | |
extern "C" { | |
#[link_name = "llvm.sqrt.f32"] | |
fn sqrt(x: f32) -> f32; | |
} | |
pub fn do_call() { | |
let _a = A; | |
unsafe { | |
// Ensure that we `call` LLVM intrinsics instead of trying to `invoke` them | |
// CHECK: call float @llvm.sqrt.f32(float 4.000000e+00 | |
sqrt(4.0); | |
} | |
} |