about summary refs log tree commit diff
path: root/src/librustc_codegen_llvm
diff options
context:
space:
mode:
authorMark Rousskov <mark.simulacrum@gmail.com>2019-12-26 10:03:41 -0500
committerAmanieu d'Antras <amanieu@gmail.com>2020-03-02 11:43:07 +0000
commit1920f817caf65e5ffb95628b15cedb8aa54a8ae8 (patch)
tree0af3fa3cbd0818b325b09f7730d0a45f614f5de2 /src/librustc_codegen_llvm
parentd45ce5aed63fb58385705016dfaff1832a58d7c8 (diff)
downloadrust-1920f817caf65e5ffb95628b15cedb8aa54a8ae8.tar.gz
rust-1920f817caf65e5ffb95628b15cedb8aa54a8ae8.zip
Avoid over-aligning the return value in the -Cpanic=abort case
Diffstat (limited to 'src/librustc_codegen_llvm')
-rw-r--r--src/librustc_codegen_llvm/intrinsic.rs6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/librustc_codegen_llvm/intrinsic.rs b/src/librustc_codegen_llvm/intrinsic.rs
index 1ae9d2a6841..fa89c630345 100644
--- a/src/librustc_codegen_llvm/intrinsic.rs
+++ b/src/librustc_codegen_llvm/intrinsic.rs
@@ -858,8 +858,10 @@ fn try_intrinsic(
 ) {
     if bx.sess().no_landing_pads() {
         bx.call(func, &[data], None);
-        let ptr_align = bx.tcx().data_layout.pointer_align.abi;
-        bx.store(bx.const_null(bx.type_i8p()), dest, ptr_align);
+        // Return 0 unconditionally from the intrinsic call;
+        // we can never unwind.
+        let ret_align = bx.tcx().data_layout.i32_align.abi;
+        bx.store(bx.const_i32(0), dest, ret_align);
     } else if wants_msvc_seh(bx.sess()) {
         codegen_msvc_try(bx, func, data, local_ptr, dest);
     } else {