Index: src/compiler/instruction-scheduler.cc |
diff --git a/src/compiler/instruction-scheduler.cc b/src/compiler/instruction-scheduler.cc |
index 829e883f49a20f12d006df43d0678c1748a4030a..9f7f9cac88c29f45cc00c0a89bee657c4ad6a2e6 100644 |
--- a/src/compiler/instruction-scheduler.cc |
+++ b/src/compiler/instruction-scheduler.cc |
@@ -172,13 +172,17 @@ void InstructionScheduler::ScheduleBlock() { |
int InstructionScheduler::GetInstructionFlags(const Instruction* instr) const { |
switch (instr->arch_opcode()) { |
case kArchNop: |
- case kArchStackPointer: |
case kArchFramePointer: |
case kArchParentFramePointer: |
case kArchTruncateDoubleToI: |
case kArchStackSlot: |
return kNoOpcodeFlags; |
+ case kArchStackPointer: |
+ // ArchStackPointer instruction loads the current stack pointer value and |
+ // must not be reordered with instruction with side effects. |
+ return kIsLoadOperation; |
+ |
case kArchPrepareCallCFunction: |
case kArchPrepareTailCall: |
case kArchCallCFunction: |