- floats = 0, /**< Nodes of this opcode can be placed in any basic block. */
- pinned /**< Nodes must remain in this basic block. */
-} op_pinned;
+ op_pin_state_floats = 0, /**< Nodes of this opcode can be placed in any basic block. */
+ op_pin_state_pinned, /**< Nodes must remain in this basic block. */
+ op_pin_state_exc_pinned, /**< Node must be remain in this basic block if it can throw an
+ exception, else can float. Used internally. */
+ op_pin_state_mem_pinned /**< Node must be remain in this basic block if it can throw an
+ exception or uses memory, else can float. Used internally. */
+} op_pin_state;
+
+const char *get_op_pin_state_name(op_pin_state s);