diff options
| author | Mark Rousskov <mark.simulacrum@gmail.com> | 2019-12-26 10:03:41 -0500 |
|---|---|---|
| committer | Amanieu d'Antras <amanieu@gmail.com> | 2020-03-02 11:43:07 +0000 |
| commit | 1920f817caf65e5ffb95628b15cedb8aa54a8ae8 (patch) | |
| tree | 0af3fa3cbd0818b325b09f7730d0a45f614f5de2 /src/librustc_codegen_llvm | |
| parent | d45ce5aed63fb58385705016dfaff1832a58d7c8 (diff) | |
| download | rust-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.rs | 6 |
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 { |
