diff options
| author | Erik Desjardins <erikdesjardins@users.noreply.github.com> | 2022-03-10 17:10:36 -0500 |
|---|---|---|
| committer | Nikita Popov <npopov@redhat.com> | 2023-10-02 10:37:53 +0200 |
| commit | 31ee8b18188c748bf73cce52478c61629ed889cc (patch) | |
| tree | e93662870c9c1746465731f620d5713d6512034a /compiler/rustc_codegen_llvm/src/builder.rs | |
| parent | 15783292e5e26336f76ddc2123d66025ec6d84b7 (diff) | |
| download | rust-31ee8b18188c748bf73cce52478c61629ed889cc.tar.gz rust-31ee8b18188c748bf73cce52478c61629ed889cc.zip | |
Reapply: Mark drop calls in landing pads cold instead of noinline
Co-authored-by: Max Fan <git@max.fan> Co-authored-by: Nikita Popov <npopov@redhat.com>
Diffstat (limited to 'compiler/rustc_codegen_llvm/src/builder.rs')
| -rw-r--r-- | compiler/rustc_codegen_llvm/src/builder.rs | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/compiler/rustc_codegen_llvm/src/builder.rs b/compiler/rustc_codegen_llvm/src/builder.rs index ac6d8f84142..057e2759454 100644 --- a/compiler/rustc_codegen_llvm/src/builder.rs +++ b/compiler/rustc_codegen_llvm/src/builder.rs @@ -1225,9 +1225,11 @@ impl<'a, 'll, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> { unsafe { llvm::LLVMBuildZExt(self.llbuilder, val, dest_ty, UNNAMED) } } - fn do_not_inline(&mut self, llret: &'ll Value) { - let noinline = llvm::AttributeKind::NoInline.create_attr(self.llcx); - attributes::apply_to_callsite(llret, llvm::AttributePlace::Function, &[noinline]); + fn apply_attrs_to_cleanup_callsite(&mut self, llret: &'ll Value) { + // Cleanup is always the cold path. + let cold_inline = llvm::AttributeKind::Cold.create_attr(self.llcx); + + attributes::apply_to_callsite(llret, llvm::AttributePlace::Function, &[cold_inline]); } } |
