v8/test/unittests/compiler
Ross McIlroy 4a2ef63c3a [TurboProp] Remove unreachable successor basic blocks from schedule.
Effect-control-linearizer will update a basic block to connect it
directly to the end node if it has an Unreachable node. Usually the
block would already have been connected directly to end (via a Throw
node) already, however in some cases it can be connected indirectly
(via a branch, where both end in a throw node).

If this happens, and the Effect-control-linearizer is maintaining the
schedule (e.g., for TurboProp), it will cause the end block to have
unreachable predecessor blocks, which can cause issues with the
register allocator.

To fix this, have the BasicBlockUpdater remove all successor blocks
from the schedule, when they become Unreachable. Also add some tests
to cover this in effect-control-linearizer-unittests.

BUG=v8:10332,v8:9684

Change-Id: Ibce140e6d1f61751a86247e6f8c36075723a1e55
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2120537
Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#66994}
2020-04-03 17:00:29 +00:00
..
arm Revert "Move branch inversion on ==0 into platform-agnostic reducer" 2020-03-25 16:47:48 +00:00
arm64 Revert "Move branch inversion on ==0 into platform-agnostic reducer" 2020-03-25 16:47:48 +00:00
backend [compiler] Don't calculate StateValueAccess::size in InstructionSelector 2020-02-14 10:30:31 +00:00
ia32 [interpreter,compiler] Remove CodeAssembler::LoadStackPointer 2019-08-12 14:49:47 +00:00
mips Move architecture dependent files 2019-05-28 14:02:15 +00:00
mips64 Move architecture dependent files 2019-05-28 14:02:15 +00:00
ppc Move code generation related files to src/codegen 2019-05-21 10:33:39 +00:00
regalloc [tests] Fix subobject-linkage error when building with GCC 2019-10-07 11:11:39 +00:00
s390 Move architecture dependent files 2019-05-28 14:02:15 +00:00
x64 [interpreter,compiler] Remove CodeAssembler::LoadStackPointer 2019-08-12 14:49:47 +00:00
branch-elimination-unittest.cc [compiler]Use Phi in Branch if control flow is known 2019-08-28 19:12:03 +00:00
bytecode-analysis-unittest.cc [interpreter] Make IterationBody StackChecks implicit within JumpLoop 2020-03-20 13:22:41 +00:00
checkpoint-elimination-unittest.cc [cleanup] Refactor compiler to use default members. 2018-09-17 12:12:21 +00:00
common-operator-reducer-unittest.cc Revert "Move branch inversion on ==0 into platform-agnostic reducer" 2020-03-25 16:47:48 +00:00
common-operator-unittest.cc [tests] Fix subobject-linkage error when building with GCC 2019-10-07 11:11:39 +00:00
compiler-test-utils.h [turbofan] Drop V8_TURBOFAN_BACKEND and V8_TURBOFAN_TARGET defines. 2015-08-10 07:17:34 +00:00
constant-folding-reducer-unittest.cc Reland "[turbofan] Clean up ConstantFoldingReducer" 2020-03-17 09:49:24 +00:00
control-equivalence-unittest.cc Move utility code to src/utils 2019-05-23 14:13:34 +00:00
control-flow-optimizer-unittest.cc [turbofan] introduce a deterministic tick measurement and assert optimization doesn't take too long 2019-07-17 07:00:00 +00:00
dead-code-elimination-unittest.cc [cleanup] Refactor compiler to use default members. 2018-09-17 12:12:21 +00:00
decompression-optimizer-unittest.cc [ptr-compr] Added BitcastTaggedToWord* to DecompressionOptimizer 2020-01-08 21:48:29 +00:00
diamond-unittest.cc [cleanup] [compiler] Fix (D)CHECK macros 2017-09-25 10:21:34 +00:00
effect-control-linearizer-unittest.cc [TurboProp] Remove unreachable successor basic blocks from schedule. 2020-04-03 17:00:29 +00:00
graph-reducer-unittest.cc [turbofan] introduce a deterministic tick measurement and assert optimization doesn't take too long 2019-07-17 07:00:00 +00:00
graph-reducer-unittest.h [turbofan] Add AdvancedReducer::ReplaceWithValue() method and convert JSInlining to an AdvancedReducer. 2015-05-12 12:41:36 +00:00
graph-trimmer-unittest.cc [turbofan] Proper dead code elimination as regular reducer. 2015-06-19 12:07:26 +00:00
graph-unittest.cc [turbofan] Normalize types for Oddball constants 2020-03-12 14:28:52 +00:00
graph-unittest.h [turbofan] introduce a deterministic tick measurement and assert optimization doesn't take too long 2019-07-17 07:00:00 +00:00
int64-lowering-unittest.cc [wasm][i64-lowering] Refactor special CallDescriptor lowering 2020-02-25 10:23:46 +00:00
js-call-reducer-unittest.cc [gasm] Implement parts of js call reducer using the graph assembler 2019-11-21 13:00:44 +00:00
js-create-lowering-unittest.cc [objects] rename kSize to kHeaderSize for JSObject subclasses 2019-11-18 15:17:52 +00:00
js-intrinsic-lowering-unittest.cc [turbofan] Make broker own the is_concurrent_inlining flag 2020-01-22 15:21:55 +00:00
js-native-context-specialization-unittest.cc Move number related files to src/numbers 2019-05-15 19:34:44 +00:00
js-operator-unittest.cc [tests] Fix subobject-linkage error when building with GCC 2019-10-07 11:11:39 +00:00
js-typed-lowering-unittest.cc [turbofan] Avoid widening type when reducing JSStrictEqual 2020-03-18 10:08:58 +00:00
linkage-tail-call-unittest.cc [turbofan][cleanup] Remove Node-use in linkage.cc 2019-08-21 14:49:06 +00:00
load-elimination-unittest.cc Retire PretenureFlag and use AllocationType everywhere. 2019-03-12 08:10:44 +00:00
loop-peeling-unittest.cc [turbofan] introduce a deterministic tick measurement and assert optimization doesn't take too long 2019-07-17 07:00:00 +00:00
machine-operator-reducer-unittest.cc Complete Torque definition of JSArrayBuffer 2020-02-28 17:27:12 +00:00
machine-operator-unittest.cc Reland "[compiler] Optionally apply an offset to stack checks" 2019-10-30 10:23:05 +00:00
node-cache-unittest.cc [turbofan] use ZoneUnorderedMap for NodeCache 2020-03-05 13:00:34 +00:00
node-matchers-unittest.cc [cleanup] Refactor compiler to use default members. 2018-09-17 12:12:21 +00:00
node-properties-unittest.cc [jumbo] add unittests jumbo support 2017-09-28 22:19:40 +00:00
node-test-utils.cc [TurboProp] Remove unreachable successor basic blocks from schedule. 2020-04-03 17:00:29 +00:00
node-test-utils.h [TurboProp] Remove unreachable successor basic blocks from schedule. 2020-04-03 17:00:29 +00:00
node-unittest.cc [cleanup] Replace simple typedefs by using 2019-05-27 12:39:49 +00:00
opcodes-unittest.cc [ubsan][compiler] Avoid out-of-range casts to IrOpcode::Value 2019-01-25 20:55:25 +00:00
persistent-unittest.cc [ubsan] Fix numerical overflows in the compiler 2019-01-10 11:17:37 +00:00
redundancy-elimination-unittest.cc [turbofan] Preserve CheckBounds's kAbortOnOutOfBounds mode 2020-03-31 12:41:30 +00:00
schedule-unittest.cc [cleanup] Replace simple typedefs by using 2019-05-27 12:39:49 +00:00
scheduler-rpo-unittest.cc [cleanup] Refactor compiler to use default members. 2018-09-17 12:12:21 +00:00
scheduler-unittest.cc [turbofan] introduce a deterministic tick measurement and assert optimization doesn't take too long 2019-07-17 07:00:00 +00:00
simplified-lowering-unittest.cc [turbofan] introduce a deterministic tick measurement and assert optimization doesn't take too long 2019-07-17 07:00:00 +00:00
simplified-operator-reducer-unittest.cc [turbofan] Disable concurrent inlining for OSR 2020-01-09 18:24:12 +00:00
simplified-operator-unittest.cc [ptr-compr] Remove Compressed mentions from in the pipeline 2019-11-11 12:23:41 +00:00
state-values-utils-unittest.cc [compiler] Optimize AddInputsToFrameStateDescriptor 2020-03-05 11:45:15 +00:00
typed-optimization-unittest.cc [turbofan] introduce a deterministic tick measurement and assert optimization doesn't take too long 2019-07-17 07:00:00 +00:00
typer-unittest.cc [turbofan] Fix NumberMin and NumberMax typings 2020-03-25 11:19:13 +00:00
value-numbering-reducer-unittest.cc [jumbo] fix another set of unittest compilation errors 2017-10-19 09:15:44 +00:00
zone-stats-unittest.cc [cleanup] Don't use virtual inheritance in gtest fixtures 2018-10-30 06:28:42 +00:00