basic_block cur_bb;
basic_block last_bb;
+ source_location orig_loc;
+
+ /* Remember the source location in the original first block. */
+ cur_bb = ENTRY_BLOCK_PTR_FOR_FUNCTION (cfun);
+ orig_loc = gimple_location (first_stmt (cur_bb->next_bb));
+
bb_pairs = VEC_alloc (bb_pair, gc, INITIAL_PAIRS);
label_pairs = VEC_alloc (label_pair, heap, INITIAL_PAIRS);
/* TODO: Can this line be removed? */
DECL_SOURCE_LOCATION(new_label) = DECL_SOURCE_LOCATION(old_label);
distributor_bb = split_edge(e);
-
+
tmpvar = create_tmp_var(integer_type_node, tmpvar_name);
/*add_referenced_var(tmpvar);*/
make_edge(distributor_bb, new_first_bb, EDGE_TRUE_VALUE);
}
+ /* Make the distributor block have the same source location as the
+ original entry block. The function entry pointcut relies on this
+ to determine line number/filename for its join point. */
+ gimple_set_location (first_stmt (distributor_bb), orig_loc);
+
free_original_copy_tables();
VEC_free (label_pair, heap, label_pairs);