v8/test/cctest/compiler
epertoso 0d22e7e46a [x64/ia32] Deal with the non-transitivity of InstructionSelector::CanCover() when folding loads into branches.
Sequences like:

1: Load[kRepWord32|kTypeInt32](<address>, ...)
2: Word32And(1, <constant>)
3: Word32Equal(2, <another constant>)
4: Store[(kRepWord32 : NoWriteBarrier)](<address>, <value>)
5: Branch[None](3, ...) -> B1, B2

where #1 and #4 refer to the same memory location, are problematic because in VisitBranch we assume that 'InstructionSelector::CanCover()' is transitive.

What happens is that CanCover(5, 3) is true (3 is a pure op), and so are CanCover(3, 2), CanCover(2, 1), but the effect level of 5 and 3 never gets checked because 3 is a pure op. Upon VisitBranch, we ended up materializing:

mov [address], <value>
test [address], <another constant>

With this patch, it becomes:

mov reg, [address]
mov [address], <value>
test reg, <another constant>

BUG=chromium:611976

Review-Url: https://codereview.chromium.org/2008493002
Cr-Commit-Position: refs/heads/master@{#36482}
2016-05-24 16:11:39 +00:00
..
c-signature.h [wasm] Replace the BufferedRawMachineAssemblerTester in the WasmRunner. 2016-02-18 09:55:49 +00:00
call-tester.h PPC64: [simulator] Do not sign-extend uint32_t call parameters. 2016-04-25 14:03:58 +00:00
codegen-tester.cc x87: fix the use of CheckFloatEq and CheckDoubleEq in test. 2016-03-07 12:30:23 +00:00
codegen-tester.h [build] Fix d8-for-Android builds 2016-05-20 12:10:45 +00:00
function-tester.h [interpreter] Be explicit when to test BytecodeGraphBuilder. 2016-04-29 08:41:11 +00:00
graph-builder-tester.h [turbofan] Remove left-over change bits from ChangeLowering. 2016-05-02 10:23:43 +00:00
test-basic-block-profiler.cc [turbofan] Make MachineType a pair of enums. 2015-12-10 09:03:53 +00:00
test-branch-combine.cc [x64/ia32] Deal with the non-transitivity of InstructionSelector::CanCover() when folding loads into branches. 2016-05-24 16:11:39 +00:00
test-code-stub-assembler.cc [turbofan] Add FixedArray peephole optimizations to CodeStubAssembler 2016-05-19 15:50:31 +00:00
test-gap-resolver.cc [turbofan] Rename floating point register / slot methods. 2016-05-10 15:20:28 +00:00
test-graph-visualizer.cc [tubofan] Remove .dot output of --trace-turbo 2015-12-11 16:58:31 +00:00
test-instruction.cc Expose a lower bound of malloc'd memory via heap statistics 2016-04-01 10:01:56 +00:00
test-js-constant-cache.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-js-context-specialization.cc Remove strong mode support from binary operations. 2016-02-16 13:55:29 +00:00
test-js-typed-lowering.cc [stubs] Split ToNumberStub into reusable subparts. 2016-03-21 09:05:49 +00:00
test-jump-threading.cc Expose a lower bound of malloc'd memory via heap statistics 2016-04-01 10:01:56 +00:00
test-linkage.cc Pass debug name as Vector instead of const char* 2016-04-26 14:37:05 +00:00
test-loop-analysis.cc Expose a lower bound of malloc'd memory via heap statistics 2016-04-01 10:01:56 +00:00
test-loop-assignment-analysis.cc [parser] Remove ParseInfo::closure field. 2016-04-08 12:32:23 +00:00
test-machine-operator-reducer.cc [turbofan] Store nodes use only MachineRepresentation, not MachineType. 2015-12-11 15:34:16 +00:00
test-multiple-return.cc Pass debug name as Vector instead of const char* 2016-04-26 14:37:05 +00:00
test-node.cc Expose a lower bound of malloc'd memory via heap statistics 2016-04-01 10:01:56 +00:00
test-operator.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-osr.cc [turbofan] Make MachineType a pair of enums. 2015-12-10 09:03:53 +00:00
test-representation-change.cc [turbofan] Remove left-over change bits from ChangeLowering. 2016-05-02 10:23:43 +00:00
test-run-bytecode-graph-builder.cc [turbofan] Enable concurrent (re)compilation. 2016-04-27 12:40:00 +00:00
test-run-calls-to-external-references.cc [wasm] New implementation of popcnt and ctz. 2016-04-21 07:47:05 +00:00
test-run-deopt.cc [turbofan] Enable tests for throwing into deopted code. 2016-02-12 10:50:17 +00:00
test-run-inlining.cc [turbofan] Remove support for --turbo-types. 2016-04-11 12:57:28 +00:00
test-run-intrinsics.cc [intrinsics] Remove unused intrinsic %_IncrementStatsCounter. 2016-03-22 06:35:39 +00:00
test-run-jsbranches.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-run-jscalls.cc [builtins] Migrate a bunch of Math builtins to C++. 2016-02-25 08:07:07 +00:00
test-run-jsexceptions.cc [turbofan] Deprecate --turbo-try-finally flag. 2016-02-05 15:20:44 +00:00
test-run-jsobjects.cc Add GetProperty/GetElement to JSReceiver and use it where possible 2016-03-08 17:30:42 +00:00
test-run-jsops.cc Remove runtime flags for sloppy mode block scoping features 2016-04-08 00:30:20 +00:00
test-run-load-store.cc Revert of [turbofan] Take the immediate size in account when narrowing ia32/x64 word comparison operators. (patchset #1 id:1 of https://codereview.chromium.org/1968453002/ ) 2016-05-20 14:09:46 +00:00
test-run-machops.cc [x64] Regression test for https://codereview.chromium.org/1877133004 2016-04-27 07:01:45 +00:00
test-run-native-calls.cc Pass debug name as Vector instead of const char* 2016-04-26 14:37:05 +00:00
test-run-stackcheck.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-run-stubs.cc Pass debug name as Vector instead of const char* 2016-04-26 14:37:05 +00:00
test-run-variables.cc Remove support for legacy const, part 1 2016-03-22 17:52:13 +00:00
test-run-wasm-machops.cc Add new relocation type WASM_MEMORY_SIZE_REFERENCE, use relocatable pointers to update wasm memory size references in generated code. 2016-05-04 20:20:50 +00:00
test-simplified-lowering.cc [turbofan] Initial version of allocation folding and write barrier elimination. 2016-05-10 10:12:25 +00:00
value-helper.h [wasm] Int64Lowering of Word64Ror and Word64Rol. 2016-03-31 17:05:43 +00:00