about summary refs log tree commit diff
path: root/compiler/rustc_hir_analysis/src/structured_errors.rs
diff options
context:
space:
mode:
authorMatthias Krüger <matthias.krueger@famsik.de>2022-10-11 18:59:49 +0200
committerGitHub <noreply@github.com>2022-10-11 18:59:49 +0200
commit1b1223df9fb9c3152d5b5bb60accce08b237f297 (patch)
tree8c87f92ea2696550fbc2764da921c9dfae30fb40 /compiler/rustc_hir_analysis/src/structured_errors.rs
parent24722e8d5bba76eeaa8006d568658fbd92fd402c (diff)
parent8bda13367e4987937ddc2ba9bbe01b5f7a4cce3e (diff)
downloadrust-1b1223df9fb9c3152d5b5bb60accce08b237f297.tar.gz
rust-1b1223df9fb9c3152d5b5bb60accce08b237f297.zip
Rollup merge of #102685 - nbdd0121:unwind, r=m-ou-se
Interpret EH actions properly

The EH actions stored in the LSDA follows the format of GCC except table (even for LLVM-generated code). An missing action in the table is the encoding for `Terminate`, see https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/libsupc%2B%2B/eh_personality.cc#L522-L526.

The currently code interprets it as `None`, as a workaround for #35011, an issue that seems to occur in LLVM 3.7 and not after 3.9. These are very old versions of LLVM and we don't support them anymore, so remove this workaround and interpret them properly.

Note that LLVM currently does not emit any `Terminate` actions, but GCC does. Although GCC backend currently doesn't do unwinding, removing it preemptively would prevent future developers from wasting time to figure out what's wrong.

``@rustbot`` label: +T-compiler
Diffstat (limited to 'compiler/rustc_hir_analysis/src/structured_errors.rs')
0 files changed, 0 insertions, 0 deletions