Index: runtime/vm/flow_graph_compiler.cc |
diff --git a/runtime/vm/flow_graph_compiler.cc b/runtime/vm/flow_graph_compiler.cc |
index 79d9e6158730f4c3ed159f0638931ce408669345..4c6b4b7f32cd63a9a9bb35b52d880fb34838d7d1 100644 |
--- a/runtime/vm/flow_graph_compiler.cc |
+++ b/runtime/vm/flow_graph_compiler.cc |
@@ -1553,6 +1553,11 @@ ParallelMoveResolver::ScratchRegisterScope::ScratchRegisterScope( |
if (resolver->compiler_->intrinsic_mode()) { |
// Block additional registers that must be preserved for intrinsics. |
blocked_mask |= RegMaskBit(ARGS_DESC_REG); |
+#if !defined(TARGET_ARCH_IA32) |
+ // Need to preserve CODE_REG to be able to store the PC marker |
+ // and load the pool pointer. |
+ blocked_mask |= RegMaskBit(CODE_REG); |
+#endif |
} |
reg_ = static_cast<Register>( |
resolver_->AllocateScratchRegister(Location::kRegister, |