On 11/21/2011 11:31 AM, Aldy Hernandez wrote:
> case GIMPLE_DEBUG:
> + case GIMPLE_TRANSACTION:
> for (i = 0; i < gimple_num_ops (stmt); i++)
> {
> tree op = gimple_op (stmt, i);
> @@ -145,6 +146,8 @@ output_gimple_stmt (struct output_block
> else
> stream_write_tree (ob, gimple_call_fntype (stmt), true);
> }
> + if (gimple_code (stmt) == GIMPLE_TRANSACTION)
> + stream_write_tree (ob, gimple_transaction_label (stmt), true);
No point merging GIMPLE_TRANSACTION with those cases. There are only two
operands, BODY and LABEL, and BODY should have been lowered already. Make this
a separate case with an assert BODY == NULL, and writing the label.
> + if (gimple_code (stmt) == GIMPLE_TRANSACTION)
> + gimple_transaction_set_label (stmt, stream_read_tree (ib, data_in));
Similarly separate, although obviously no assert for BODY here.
Otherwise ok.
r~