From: titzer Date: Tue, 4 Aug 2015 13:13:54 +0000 (-0700) Subject: [turbofan] Handle void returns in instruction selector. X-Git-Tag: upstream/4.7.83~1041 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6b63aa06d31c3ca8d24c61165491636f977d90c1;p=platform%2Fupstream%2Fv8.git [turbofan] Handle void returns in instruction selector. R=jarin@chromium.org BUG= Review URL: https://codereview.chromium.org/1269183002 Cr-Commit-Position: refs/heads/master@{#29999} --- diff --git a/src/compiler/instruction-selector.cc b/src/compiler/instruction-selector.cc index 4981f64..fde7ba3 100644 --- a/src/compiler/instruction-selector.cc +++ b/src/compiler/instruction-selector.cc @@ -1000,9 +1000,13 @@ void InstructionSelector::VisitGoto(BasicBlock* target) { void InstructionSelector::VisitReturn(Node* value) { DCHECK_NOT_NULL(value); OperandGenerator g(this); - Emit(kArchRet, g.NoOutput(), - g.UseLocation(value, linkage()->GetReturnLocation(), - linkage()->GetReturnType())); + if (linkage()->GetIncomingDescriptor()->ReturnCount() == 0) { + Emit(kArchRet, g.NoOutput()); + } else { + Emit(kArchRet, g.NoOutput(), + g.UseLocation(value, linkage()->GetReturnLocation(), + linkage()->GetReturnType())); + } } diff --git a/test/cctest/compiler/test-run-machops.cc b/test/cctest/compiler/test-run-machops.cc index b1fc369..10e9e9f 100644 --- a/test/cctest/compiler/test-run-machops.cc +++ b/test/cctest/compiler/test-run-machops.cc @@ -82,6 +82,13 @@ TEST(CodeGenInt32Binop) { } +TEST(CodeGenNop) { + RawMachineAssemblerTester m; + m.Return(m.Int32Constant(0)); + m.GenerateCode(); +} + + #if V8_TURBOFAN_BACKEND_64 static Node* Int64Input(RawMachineAssemblerTester* m, int index) { switch (index) {