Open
Description
struct Foo(bool);
impl Drop for Foo {
fn drop(&mut self) {
if self.0 {
return;
}
panic!("dead");
}
}
pub fn foo() {
let a = Foo(true);
unsafe {unknown(9);}
}
extern "Rust" {
fn unknown(x: i32) -> bool;
}
https://rust.godbolt.org/z/zzoee9z1W
Removing either the drop panic or the unknown call enables full optimizations, the but their combination does not.
Metadata
Metadata
Assignees
Labels
Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues.Area: Code generationCategory: This is a bug.Issue: Problems and improvements with respect to performance of generated code.Relevant to the compiler team, which will review and decide on the PR/issue.