llvm-project/llvm/test/CodeGen/WebAssembly
Heejin Ahn 2b957ed4ff [WebAssembly] Fix ExceptionInfo grouping again
This is a case D97677 missed. When taking out remaining BBs that are
reachable from already-taken-out exceptions (because they are not
subexcptions but unwind destinations), I assumed the remaining BBs are
not EH pads, but they can be. For example,
```
try {
  try {
    throw 0;
  } catch (int) { // (a)
  }
} catch (int) {   // (b)
}
try {
  foo();
} catch (int) {   // (c)
}
```
In this code, (b) is the unwind destination of (a) so its exception is
taken out of (a)'s exception, But even though the next try-catch is not
inside the first two-level try-catches, because the first try always
throws, its continuation BB is unreachable and the whole rest of the
function is dominated by EH pad (a), including EH pad (c). So after we
take out of (b)'s exception out of (a)'s, we also need to take out (c)'s
exception out of (a)'s, because (c) is reachable from (b).

This adds one more step before what we did for remaining BBs in D97677;
it traverses EH pads first to take subexceptions out of their incorrect
parent exception. It's the same thing as D97677, but because we can do
this before we add BBs to exceptions' sets, we don't need to fix sets
and only need to fix parent exception pointers.

Other changes are variable name changes (I changed `WE` -> `SrcWE`,
`UnwindWE` -> `DstWE` for clarity), some comment changes, and a drive-by
fix in a bug in a `LLVM_DEBUG` print statement.

Fixes https://github.com/emscripten-core/emscripten/issues/13588.

Reviewed By: dschuff

Differential Revision: https://reviews.llvm.org/D97929
2021-03-04 15:05:13 -08:00
..
PR40172.ll
PR40267.ll
PR41149.ll [SelectionDAG] Add scalarization of ABS node (PR41149) 2019-03-21 11:18:54 +00:00
PR41841.ll [WebAssembly] Don't assume that zext/sext result is i32/i64 in fast isel (PR41841) 2019-05-13 19:40:18 +00:00
add-prototypes-conflict.ll [WebAssembly] Fix a typo in a test file name 2019-07-09 01:21:04 +00:00
add-prototypes.ll OpaquePtr: Bulk update tests to use typed sret 2020-11-20 17:58:26 -05:00
address-offsets.ll [test] Split some tests which test both static and pic relocation models 2020-12-04 18:11:35 -08:00
aliases.ll [WebAssembly] MC: Fix for data aliases with offsets (getelementptr) 2020-06-17 16:25:50 -07:00
atomic-fence.ll [WebAssembly] Add atomic.fence instruction 2019-08-28 23:13:43 +00:00
atomic-fence.mir [WebAssembly] Rename atomic.notify and *.atomic.wait 2020-11-13 12:04:48 -08:00
atomic-mem-consistency.ll [WebAssembly] Remove uses of ThreadModel 2019-02-28 18:39:08 +00:00
atomic-pic.ll [WebAssembly] Fix code generated for atomic operations in PIC mode 2020-12-08 18:41:32 -08:00
atomic-rmw.ll [WebAssembly] Remove uses of ThreadModel 2019-02-28 18:39:08 +00:00
bulk-memory.ll [WebAssembly] Restore defaults for stores per memop 2019-09-18 23:18:16 +00:00
bulk-memory64.ll [WebAssembly] Added 64-bit memory.grow/size/copy/fill 2020-07-06 12:49:50 -07:00
byval.ll OpaquePtr: Bulk update tests to use typed byval 2020-11-20 14:00:46 -05:00
call-indirect.ll [WebAssembly] call_indirect causes indirect function table import 2021-01-05 11:09:24 +01:00
call-pic.ll [WebAssembly] Replace all calls with generalized multivalue calls 2020-02-18 15:55:20 -08:00
call.ll [WebAssembly] Remove unused FileCheck test prefixes 2020-10-29 13:37:55 -07:00
cfg-stackify-dbg-skip.ll [WebAssembly] Run ExplicitLocals pass after CFGStackify 2019-03-30 09:29:57 +00:00
cfg-stackify-dbg.mir [WebAssembly] Handle END_LOOP in unreachable BB in CFGStackify 2019-03-29 19:36:51 +00:00
cfg-stackify-eh.ll [WebAssembly] Fix ExceptionInfo grouping again 2021-03-04 15:05:13 -08:00
cfg-stackify-eh.mir [WebAssembly] Split EH MIR tests into two files 2021-02-22 12:05:00 -08:00
cfg-stackify.ll Reland "[WebAssembly] Eliminate range checks on br_tables" 2020-06-03 14:04:59 -07:00
cfi.ll
clear-cache.ll Revert "Revert "Reland "[Support] make report_fatal_error `abort` instead of `exit`""" 2020-02-13 10:16:06 -08:00
comparisons-f32.ll [LegalizeDAG][RISCV][PowerPC][AMDGPU][WebAssembly] Improve expansion of SETONE/SETUEQ on targets without SETO/SETUO. 2021-01-12 10:45:03 -08:00
comparisons-f64.ll [LegalizeDAG][RISCV][PowerPC][AMDGPU][WebAssembly] Improve expansion of SETONE/SETUEQ on targets without SETO/SETUO. 2021-01-12 10:45:03 -08:00
comparisons-i32.ll
comparisons-i64.ll
conv-trap.ll [WebAssembly] Trapping fptoint builtins and intrinsics 2019-10-15 01:11:51 +00:00
conv.ll
copysign-casts.ll
cpus.ll [WebAssembly] Adding 64-bit versions of all load & store ops. 2020-06-15 08:31:56 -07:00
custom-sections.ll
dbgvalue.ll [WebAssembly] Fixed byval args missing DWARF DW_AT_LOCATION 2021-01-07 10:31:38 -08:00
dead-vreg.ll
debugtest-opt.ll [WebAssembly] Add int32 DW_OP_WASM_location variant 2020-04-16 16:32:17 -07:00
debugtrap.ll [WebAssembly] Lower llvm.debugtrap properly 2020-06-04 13:25:10 -07:00
divrem-constant.ll
eh-lsda.ll [WebAssembly] Disable uses of __clang_call_terminate 2021-03-04 14:26:35 -08:00
exception.ll [WebAssembly] Disable uses of __clang_call_terminate 2021-03-04 14:26:35 -08:00
exception.mir [WebAssembly] Handle empty cleanuppads when adding catch_all 2021-03-01 10:07:05 -08:00
explicit-locals.mir [WebAssembly] Make returns variadic 2019-10-09 21:42:08 +00:00
export-name.ll [WebAssembly] Add new `export_name` clang attribute for controlling wasm export names 2019-12-11 11:54:57 -08:00
f16.ll [WebAssembly] Replace all calls with generalized multivalue calls 2020-02-18 15:55:20 -08:00
f32.ll [WebAssembly] Replace all calls with generalized multivalue calls 2020-02-18 15:55:20 -08:00
f64.ll [WebAssembly] Replace all calls with generalized multivalue calls 2020-02-18 15:55:20 -08:00
fast-isel-br-i1.ll
fast-isel-call-indirect64.ll [WebAssembly] Fix Fast ISEL not lowering 64-bit function pointers 2021-01-28 10:05:29 -08:00
fast-isel-i24.ll
fast-isel-i256.ll
fast-isel-noreg.ll
fast-isel-pr47040.ll [WebAssembly] Fix FastISel address calculation bug 2020-08-08 15:23:11 -07:00
fast-isel.ll
frem.ll [WebAssembly] Replace all calls with generalized multivalue calls 2020-02-18 15:55:20 -08:00
fshl.ll [SelectionDAG] Handle non-power-of-2 bitwidths in expandROT 2020-08-26 09:20:46 +01:00
func.ll
function-bitcasts-varargs.ll
function-bitcasts.ll [WebAssembly] Rename Emscripten EH functions 2020-10-07 09:42:49 -07:00
function-info.mir [WebAssembly] Support WasmEHFuncInfo serialization 2021-02-22 13:13:51 -08:00
function-pointer64.ll [WebAssembly] Swap operand order of call_indirect in text format 2021-03-03 08:51:21 +01:00
global.ll [WebAssembly] Replace all calls with generalized multivalue calls 2020-02-18 15:55:20 -08:00
global_dtors.ll [WebAssembly] Fix crash when @llvm.global_dtors is external 2019-03-01 00:12:13 +00:00
globl.ll
i32-load-store-alignment.ll
i32.ll
i64-load-store-alignment.ll
i64.ll
i128-returned.ll
i128.ll
ident.ll
immediates.ll [WebAssembly] Support single-floating-point immediate value 2021-02-04 18:05:06 -08:00
implicit-def.ll [WebAssembly] Disable MachineBlockPlacement pass 2019-03-05 20:35:34 +00:00
import-module.ll
indirect-import.ll OpaquePtr: Bulk update tests to use typed sret 2020-11-20 17:58:26 -05:00
indirectbr.ll [WebAssembly] Make BR_TABLE non-duplicable 2020-06-11 15:11:45 -07:00
inline-asm-m.ll
inline-asm-roundtrip.ll
inline-asm.ll [WebAssembly] Support fp reg class in r constraint 2020-11-18 17:05:58 -08:00
inlineasm-output-template.ll [AsmPrinter] refactor to support %c w/ GlobalAddress' 2019-04-26 18:45:04 +00:00
irreducible-cfg-exceptions.ll [WebAssembly] Improve readability of irreducibility tests 2019-03-19 05:10:39 +00:00
irreducible-cfg.ll [WebAssembly] Optimize the number of routing blocks in FixIrreducibleCFG 2019-03-30 01:31:11 +00:00
irreducible-cfg.mir [WebAssembly] Optimize the number of routing blocks in FixIrreducibleCFG 2019-03-30 01:31:11 +00:00
legalize.ll
libcalls.ll [WebAssembly] Replace all calls with generalized multivalue calls 2020-02-18 15:55:20 -08:00
lit.local.cfg
llround-conv-i32.ll [WebAssembly] Replace all calls with generalized multivalue calls 2020-02-18 15:55:20 -08:00
load-ext-atomic.ll [WebAssembly] Remove unused FileCheck test prefixes 2020-10-29 13:37:55 -07:00
load-ext.ll [WebAssembly] Remove unused FileCheck test prefixes 2020-10-29 13:37:55 -07:00
load-store-i1.ll [WebAssembly] Remove unused FileCheck test prefixes 2020-10-29 13:37:55 -07:00
load-store-pic.ll [TargetMachine] Delete wasm special case from shouldAssumeDSOLocal 2020-12-04 23:22:47 -08:00
load-store-static.ll [TargetMachine] Delete wasm special case from shouldAssumeDSOLocal 2020-12-04 23:22:47 -08:00
load.ll [WebAssembly] Adding 64-bit versions of all load & store ops. 2020-06-15 08:31:56 -07:00
lower-em-ehsjlj-multi-return.ll [WebAssembly] Rename Emscripten EH functions 2020-10-07 09:42:49 -07:00
lower-em-ehsjlj-options.ll [WebAssembly] Rename Emscripten EH functions 2020-10-07 09:42:49 -07:00
lower-em-exceptions-allowed.ll [Target] As part of using inclusive language within the llvm project, 2020-06-20 00:06:39 -07:00
lower-em-exceptions-resume-only.ll [WebAssembly] Fix resume-only case in Emscripten EH 2020-01-23 18:13:52 -08:00
lower-em-exceptions.ll [WebAssembly] Check features before making SjLj vars thread-local 2020-09-25 11:45:16 -07:00
lower-em-sjlj-alias.ll [WebAssembly] Compare functions by names in Emscripten Sjlj 2019-09-03 22:26:49 +00:00
lower-em-sjlj-debuginfo.ll [WebAssembly] Use dummy debug info in Emscripten SjLj 2020-04-09 18:44:50 -07:00
lower-em-sjlj-sret.ll [WebAssembly] Rename Emscripten EH functions 2020-10-07 09:42:49 -07:00
lower-em-sjlj.ll [WebAssembly] Handle indirect uses of longjmp 2020-10-08 11:37:19 -07:00
lower-global-dtors.ll [WebAssembly] Fix the order of destructors in the LowerGlobalDtors pass. 2020-03-26 16:19:02 -07:00
main-declaration.ll
main-no-args.ll
main-three-args.ll
main-with-args.ll
mem-intrinsics.ll [WebAssembly] Replace all calls with generalized multivalue calls 2020-02-18 15:55:20 -08:00
memory-addr32.ll
memory-addr64.ll [WebAssembly] Added 64-bit memory.grow/size/copy/fill 2020-07-06 12:49:50 -07:00
muloti4.ll
multi-return.ll [WebAssembly] Track frame registers through VReg and local allocation 2020-01-17 17:23:56 -08:00
multivalue-stackify.ll [WebAssembly] Fix RegStackify and ExplicitLocals to handle multivalue 2020-02-18 14:56:09 -08:00
multivalue-stackify.py [WebAssembly] Fix RegStackify and ExplicitLocals to handle multivalue 2020-02-18 14:56:09 -08:00
multivalue.ll [WebAssembly] Swap operand order of call_indirect in text format 2021-03-03 08:51:21 +01:00
mutable-globals.ll [WebAssembly] Add mutable globals feature 2019-03-29 22:00:18 +00:00
negative-base-reg.ll Migrate function attribute "no-frame-pointer-elim"="false" to "frame-pointer"="none" as cleanups after D56351 2019-12-24 16:27:51 -08:00
null-streamer.ll
offset-atomics.ll [WebAssembly] Fix code generated for atomic operations in PIC mode 2020-12-08 18:41:32 -08:00
offset-fastisel.ll
offset-folding.ll [test] Add explicit dso_local to definitions in ELF static relocation model tests 2020-12-30 15:47:16 -08:00
offset.ll [SelectionDAGBuilder] Stop setting alignment to one for hidden sret values 2020-05-04 14:44:39 +01:00
phi.ll [WebAssembly] Make LBB markers not affected by test order 2019-04-23 21:17:03 +00:00
pr47375.ll [WebAssembly] Fix incorrect assumption of simple value types 2020-09-06 15:42:21 -07:00
reference-types.ll [WebAssembly] Add reference types target feature 2020-01-24 14:26:27 -08:00
reg-argument.mir [WebAssembly] Remove exnref and br_on_exn 2021-01-09 02:02:54 -08:00
reg-copy.mir [WebAssembly] Remove exnref and br_on_exn 2021-01-09 02:02:54 -08:00
reg-stackify.ll [DAGCombiner] Rebuild (setcc x, y, ==) from (xor (xor x, y), 1) 2020-07-15 07:34:22 +00:00
return-address-emscripten.ll [WebAssembly] Replace all calls with generalized multivalue calls 2020-02-18 15:55:20 -08:00
return-address-unknown.ll [WebAssembly] Implement __builtin_return_address for emscripten 2019-05-23 01:24:01 +00:00
return-int32.ll
return-void.ll
returned.ll [WebAssembly] Replace all calls with generalized multivalue calls 2020-02-18 15:55:20 -08:00
select.ll [WebAssembly] Fix miscompile of select with and 2019-11-15 16:22:01 -08:00
signext-arg.ll [WebAssembly] Replace all calls with generalized multivalue calls 2020-02-18 15:55:20 -08:00
signext-inreg.ll
signext-zeroext.ll
simd-arith.ll [WebAssembly] Prefer v128.const for constant splats 2020-07-10 18:27:52 -07:00
simd-bitcasts.ll [WebAssembly] Enable recently implemented SIMD operations 2020-02-04 18:36:32 -08:00
simd-build-pair.ll [WebAssembly] Enable recently implemented SIMD operations 2020-02-04 18:36:32 -08:00
simd-build-vector.ll [WebAssembly][SIMD] Rename shuffle, swizzle, and load_splats 2020-12-22 14:29:06 -08:00
simd-comparisons.ll [LegalizeDAG][RISCV][PowerPC][AMDGPU][WebAssembly] Improve expansion of SETONE/SETUEQ on targets without SETO/SETUO. 2021-01-12 10:45:03 -08:00
simd-conversions.ll [WebAssembly] Renumber SIMD opcodes 2020-05-01 17:20:49 -07:00
simd-extended-extract.ll [WebAssembly] Enable recently implemented SIMD operations 2020-02-04 18:36:32 -08:00
simd-illegal-signext.ll [WebAssembly] Implement ReplaceNodeResults to fix a SIMD crash 2019-05-23 18:09:26 +00:00
simd-intrinsics.ll [WebAssembly] Prototype i8x16 to i32x4 widening instructions 2021-01-28 10:59:32 -08:00
simd-load-lane-offset.ll Reland "[WebAssembly] v128.load{8,16,32,64}_lane instructions" 2020-10-15 19:32:34 +00:00
simd-load-splat.ll [WebAssembly][SIMD] Rename shuffle, swizzle, and load_splats 2020-12-22 14:29:06 -08:00
simd-load-store-alignment.ll [WebAssembly][SIMD] Rename shuffle, swizzle, and load_splats 2020-12-22 14:29:06 -08:00
simd-load-zero-offset.ll [WebAssembly] Implement prototype v128.load{32,64}_zero instructions 2020-08-03 13:54:00 -07:00
simd-nested-shuffles.ll [WebAssembly][SIMD] Rename shuffle, swizzle, and load_splats 2020-12-22 14:29:06 -08:00
simd-nonconst-sext.ll [WebAssembly] Fix ISel crash in SIGN_EXTEND_INREG lowering 2020-06-03 15:36:44 -07:00
simd-noopt.ll
simd-offset.ll [WebAssembly][SIMD] Rename shuffle, swizzle, and load_splats 2020-12-22 14:29:06 -08:00
simd-prefetch-offset.ll [WebAssembly] Prototype prefetch instructions 2021-01-05 11:32:03 -08:00
simd-reductions.ll [WebAssembly] Optimize ISel for SIMD Boolean reductions 2019-06-19 00:02:13 +00:00
simd-scalar-to-vector.ll [WebAssembly] Enable recently implemented SIMD operations 2020-02-04 18:36:32 -08:00
simd-select.ll [WebAssembly] Implement v128.select 2020-07-16 11:37:25 -07:00
simd-sext-inreg.ll [WebAssembly] Simplify extract_vector lowering 2020-02-25 13:54:48 -08:00
simd-shift-complex-splats.ll [WebAssembly][SIMD] Rename shuffle, swizzle, and load_splats 2020-12-22 14:29:06 -08:00
simd-shuffle-bitcast.ll [WebAssembly][SIMD] Rename shuffle, swizzle, and load_splats 2020-12-22 14:29:06 -08:00
simd-unsupported.ll [WebAssembly] Implement i64x2.mul and remove i8x16.mul 2020-05-19 12:50:44 -07:00
simd-widening.ll [WebAssembly] Remove intrinsics for SIMD widening ops 2020-07-28 18:25:55 -07:00
simd.ll [WebAssembly][SIMD] Rename shuffle, swizzle, and load_splats 2020-12-22 14:29:06 -08:00
snan_literal.ll [WebAssembly] Support single-floating-point immediate value 2021-02-04 18:05:06 -08:00
stack-alignment.ll [WebAssembly] Adding 64-bit versions of __stack_pointer and other globals 2020-06-25 15:52:44 -07:00
stack-insts.ll Reland "[WebAssembly] Eliminate range checks on br_tables" 2020-06-03 14:04:59 -07:00
stack-protector.ll [WebAssembly] Generate unreachable after __stack_chk_fail 2020-07-08 01:02:05 -07:00
stackified-debug.ll [WebAssembly] Added Debug Fixup pass 2020-05-14 13:14:45 -07:00
store-trunc-atomic.ll [WebAssembly] Remove unused FileCheck test prefixes 2020-10-29 13:37:55 -07:00
store-trunc.ll [WebAssembly] Remove unused FileCheck test prefixes 2020-10-29 13:37:55 -07:00
store.ll [WebAssembly] Adding 64-bit versions of all load & store ops. 2020-06-15 08:31:56 -07:00
swiftcc.ll [WebAssembly] Support swiftself and swifterror for WebAssembly target 2020-03-19 17:39:52 -07:00
switch-in-loop.ll [WebAssembly] Make BR_TABLE non-duplicable 2020-06-11 15:11:45 -07:00
switch-unreachable-default.ll [BPI] Improve static heuristics for "cold" paths. 2020-12-23 22:47:36 +07:00
switch.ll [WebAssembly] Fixed 64-bit indices in br_table 2020-07-30 10:52:16 -07:00
tailcall.ll OpaquePtr: Bulk update tests to use typed byval 2020-11-20 14:00:46 -05:00
target-features-tls.ll [WebAssembly] Disallow 'shared-mem' rather than 'atomics' 2020-05-08 13:52:39 -07:00
target-features.ll [WebAssembly] Update bleeding-edge CPU features 2020-01-24 14:27:35 -08:00
tls-general-dynamic.ll [WebAssembly] Add new relocation type for TLS data symbols 2020-11-13 07:59:29 -08:00
tls-local-exec.ll [WebAssembly] Add new relocation type for TLS data symbols 2020-11-13 07:59:29 -08:00
umulo-128-legalisation-lowering.ll
umulo-i64.ll
unreachable.ll
unsupported-function-bitcasts.ll [WebAssembly] Replace all calls with generalized multivalue calls 2020-02-18 15:55:20 -08:00
unused-argument.ll [WebAssembly] Replace all calls with generalized multivalue calls 2020-02-18 15:55:20 -08:00
userstack.ll [WebAssembly] Don't fold frame offset for global addresses 2020-11-03 14:56:25 -08:00
varargs.ll [WebAssembly] Properly align fp128 arguments in outgoing varargs arguments 2019-02-26 05:20:19 +00:00
vector-sdiv.ll
vtable.ll [WebAssembly] Remove uses of ThreadModel 2019-02-28 18:39:08 +00:00
wasmehprepare.ll [WebAssembly] Disable uses of __clang_call_terminate 2021-03-04 14:26:35 -08:00
weak.ll [lld][WebAssembly] Convert more tests to asm format. NFC. 2020-11-19 16:57:00 -08:00