summaryrefslogtreecommitdiff
path: root/gcc/ipa-str-reorg-instance-interleave.c
diff options
context:
space:
mode:
authorGary Oblock <gary@amperecomputing.com>2020-06-10 20:05:49 -0700
committerGary Oblock <gary@amperecomputing.com>2020-06-10 20:05:49 -0700
commit8d37b300d1849ca8c35e2f5c50c0fafc952ec2ae (patch)
tree4be74c35c342043154dd1bcb025fb5a259bb5304 /gcc/ipa-str-reorg-instance-interleave.c
parent0e3acbe69c82973e886682c25531ecc05a29e71f (diff)
debugging of malloc and interface nicities
Diffstat (limited to 'gcc/ipa-str-reorg-instance-interleave.c')
-rw-r--r--gcc/ipa-str-reorg-instance-interleave.c459
1 files changed, 231 insertions, 228 deletions
diff --git a/gcc/ipa-str-reorg-instance-interleave.c b/gcc/ipa-str-reorg-instance-interleave.c
index d2eaa0fa4c7..d14b51abe66 100644
--- a/gcc/ipa-str-reorg-instance-interleave.c
+++ b/gcc/ipa-str-reorg-instance-interleave.c
@@ -291,240 +291,243 @@ str_reorg_instance_interleave_trans ( Info *info)
// Not needed for single pool.
break;
case ReorgT_Malloc:
- #if 0
- DEBUG_L("Transform ReorgT_Malloc\n");
- INDENT(2);
- // Note, unlike other simpler transformations,
- // this must build new basic blocks to add new
- // gimple to and use a phi for the final result.
- // See appendix on malloc transformation for
- // each comment starting with "FROM."
- ReorgType_t *ri = contains_a_reorgtype( stmt, info);
- // FROM len = val/size
- tree arg = gimple_call_arg( stmt, 0);
- // TBD: len is new SSA
- tree val = gimple_call_lhs( stmt);
- gcc_assert( TREE_CODE( TREE_TYPE(val)) == INDIRECT_REF);
- tree size = TYPE_SIZE_UNIT( TREE_TYPE( TREE_TYPE( val)));
- // FROM len = val/size (insert before stmt) <== maybe arg/size
- tree len =
- make_temp_ssa_name( sizetype, NULL, "fail_val");
- gimple_stmt_iterator gsi = gsi_for_stmt( stmt);
- //gimple *glen =
- // gimple_build_assign ( len, TRUNC_DIV_EXPR, val, size);
- gimple *glen =
- gimple_build_assign ( len, TRUNC_DIV_EXPR, arg, size);
- gsi_insert_before( &gsi, glen, GSI_SAME_STMT);
- // Note in other places in this doc this would
- // be "insert glen before stmt" instead of this but
- // here we need to create new basic blocks.
- // FROM edge = split this block after stmt
- edge new_edge = split_block ( bb, stmt);
- // FROM before_bb = edge->src // same as this bb
- basic_block before_bb = new_edge->src; //
- // FROM after_bb = edge->dest
- basic_block after_bb = new_edge->dest;
- // FROM delete edge
- remove_edge ( new_edge);
- // FROM prev_bb = before_bb
- basic_block prev_bb = before_bb;
- // FROM prev_ok_field is new label
- tree prev_ok_field_L =
- create_artificial_label ( UNKNOWN_LOCATION);
- // FROM after_label is new label
- tree after_label_L =
- create_artificial_label ( UNKNOWN_LOCATION);
- // FROM add goto for prev_ok_field to end of before_bb
- gimple *goto_pof = gimple_build_goto ( prev_ok_field_L);
- gsi_insert_before ( &gsi, goto_pof, GSI_SAME_STMT); // TBD insert after???
- // FROM failure_bb = create_empty_block(prev_bb)
- basic_block failure_bb = create_empty_bb ( prev_bb);
- // FROM make_edge( failure_bb, after_bb, EDGE_FALLTHRU);
- edge failure_edge = make_edge ( failure_bb,
- after_bb, EDGE_FALLTHRU);
- // FROM bad_field is new label
- tree bad_field_L =
- create_artificial_label ( UNKNOWN_LOCATION);
- // FROM delete stmt
- gsi_remove ( &gsi, true);
-
- // code in failure_bb
- //
- // FROM fail_val is new SSA
- tree return_type = TREE_TYPE ( arg);
- tree fail_val =
- make_temp_ssa_name ( return_type, NULL, "fail_val");
+ #if 1
+ {
+ DEBUG_L("Transform ReorgT_Malloc\n");
+ INDENT(2);
+ // Note, unlike other simpler transformations,
+ // this must build new basic blocks to add new
+ // gimple to and use a phi for the final result.
+ // See appendix on malloc transformation for
+ // each comment starting with "FROM."
+ ReorgType_t *ri = contains_a_reorgtype( stmt, info);
+ // FROM len = val/size
+ tree arg = gimple_call_arg( stmt, 0);
+ // TBD: len is new SSA
+ tree val = gimple_call_lhs( stmt);
+ gcc_assert( TREE_CODE( TREE_TYPE(val)) == INDIRECT_REF);
+ tree size = TYPE_SIZE_UNIT( TREE_TYPE( TREE_TYPE( val)));
+ // FROM len = val/size (insert before stmt) <== maybe arg/size
+ tree len =
+ make_temp_ssa_name( sizetype, NULL, "fail_val");
+ gimple_stmt_iterator gsi = gsi_for_stmt( stmt);
+ //gimple *glen =
+ // gimple_build_assign ( len, TRUNC_DIV_EXPR, val, size);
+ gimple *glen =
+ gimple_build_assign ( len, TRUNC_DIV_EXPR, arg, size);
+ gsi_insert_before( &gsi, glen, GSI_SAME_STMT);
+ // Note in other places in this doc this would
+ // be "insert glen before stmt" instead of this but
+ // here we need to create new basic blocks.
+ // FROM edge = split this block after stmt
+ edge new_edge = split_block ( bb, stmt);
+ // FROM before_bb = edge->src // same as this bb
+ basic_block before_bb = new_edge->src; //
+ // FROM after_bb = edge->dest
+ basic_block after_bb = new_edge->dest;
+ // FROM delete edge
+ remove_edge ( new_edge);
+ // FROM prev_bb = before_bb
+ basic_block prev_bb = before_bb;
+ // FROM prev_ok_field is new label
+ tree prev_ok_field_L =
+ create_artificial_label ( UNKNOWN_LOCATION);
+ // FROM after_label is new label
+ tree after_label_L =
+ create_artificial_label ( UNKNOWN_LOCATION);
+ // FROM add goto for prev_ok_field to end of before_bb
+ gimple *goto_pof = gimple_build_goto ( prev_ok_field_L);
+ gsi_insert_before ( &gsi, goto_pof, GSI_SAME_STMT); // TBD insert after???
+ // FROM failure_bb = create_empty_block(prev_bb)
+ basic_block failure_bb = create_empty_bb ( prev_bb);
+ // FROM make_edge( failure_bb, after_bb, EDGE_FALLTHRU);
+ edge failure_edge = make_edge ( failure_bb,
+ after_bb, EDGE_FALLTHRU);
+ // FROM bad_field is new label
+ tree bad_field_L =
+ create_artificial_label ( UNKNOWN_LOCATION);
+ // FROM delete stmt
+ gsi_remove ( &gsi, true);
+
+ // code in failure_bb
+ //
+ // FROM fail_val is new SSA
+ tree return_type = TREE_TYPE ( arg);
+ tree fail_val =
+ make_temp_ssa_name ( return_type, NULL, "fail_val");
// FROM gsi = gsi_start_bb ( failure_bb)
- gsi = gsi_start_bb ( failure_bb);
- // FROM gsi_insert_after ( &gsi, "goto after_label")
- gimple *goto_al = gimple_build_goto ( after_label_L);
- gsi_insert_after ( &gsi, goto_al, GSI_SAME_STMT);
- // (per field) {
- tree field;
- tree reorg_type = ri->gcc_type; // is this useful here?
- tree reorg_pointer_type = ri->pointer_rep;
- tree fndecl_free = builtin_decl_explicit( BUILT_IN_FREE);
- tree base = ri->clone;
- for( field = TYPE_FIELDS( reorg_type);
- field;
- field = DECL_CHAIN( field)) {
- // FROM gsi_insert_after( &gsi, "base.field = 0")
- tree lhs_ass =
- build3( COMPONENT_REF, ptr_type_node, base, field, NULL_TREE);
- gimple *gzero = gimple_build_assign( lhs_ass, null_pointer_node);
- gsi_insert_after( &gsi, gzero, GSI_SAME_STMT);
-
- // FROM gsi_insert_after( &gsi, "free(field)")
- // TBD -- I'm
- tree to_free =
- make_temp_ssa_name( reorg_pointer_type, NULL, "to_free");
- gcall *free_call = gimple_build_call( fndecl_free, 1, to_free);
- gsi_insert_after( &gsi, free_call, GSI_SAME_STMT);
- tree rhs_ass =
- build3( COMPONENT_REF, ptr_type_node, base, field, NULL_TREE);
- gimple *gaddr2free = gimple_build_assign( to_free, rhs_ass);
- gsi_insert_after( &gsi, gaddr2free, GSI_SAME_STMT);
- }
- // FROM gsi_insert_after( &gsi, "fail_val = minint")
- gimple *gretnull =
- gimple_build_assign ( fail_val,
- build_int_cst ( size_type_node,
- TYPE_MIN_VALUE ( TREE_TYPE ( fail_val))));
- gsi_insert_after( &gsi, gretnull, GSI_SAME_STMT);
- // FROM gsi_insert_after( &gsi, bad_field )
- gimple *gbad_field = gimple_build_label( bad_field_L);
- gsi_insert_after( &gsi, gbad_field, GSI_SAME_STMT);
-
- // loop setup trickery for gimple idioms
- //
- // FROM prev_order = failure_bb
- basic_block prev_order = failure_bb;
- // FROM prev_bb = before_bb
- prev_bb = before_bb;
-
- // Generate all the real allocation code
- tree fndecl_malloc = builtin_decl_explicit( BUILT_IN_MALLOC);
- // This, after the following loop, will hold the start of the
- // field related code.
- tree new_ok_field_L;
-
- // FROM (for fields) {
- for( field = TYPE_FIELDS( reorg_type);
- field;
- field = DECL_CHAIN( field))
- {
- // FROM res is new SSA
- // Note, alternative code would substitute ptr_type_node
- // for null_pointer_node.
- // This is probably a duplicate of the def of res below.
- //tree res =
- // make_temp_ssa_name( null_pointer_node, NULL, "res");
- // FROM new_bb = create_empty_block(prev_order);
- basic_block new_bb = create_empty_bb ( prev_order);
- // FROM gsi = gsi_start_bb( new_bb)
- gimple_stmt_iterator gsi = gsi_start_bb ( new_bb);
- // FROM set imm dom new_bb as prev_bb
- set_immediate_dominator ( CDI_DOMINATORS, new_bb, prev_bb);
- // FROM make_edge( prev_bb, new_bb, EDGE_TRUE_VALUE);
- make_edge ( prev_bb, new_bb, EDGE_TRUE_VALUE);
- // FROM make_edge( new_bb, failure_bb, EDGE_FALSE_VALUE);
- make_edge ( new_bb, failure_bb, EDGE_FALSE_VALUE);
- // FROM new_ok_field is new label
- new_ok_field_L =
- create_artificial_label ( UNKNOWN_LOCATION);
- // FROM gsi_insert_after( &gsi, "if( res NE NULL )
- // goto new_ok_field;
- // goto bad_field")
- tree res =
- make_temp_ssa_name ( ptr_type_node, NULL, "res");
- gimple *gcond =
- gimple_build_cond ( NE_EXPR, res, null_pointer_node,
- new_ok_field_L, bad_field_L);
- gsi_insert_after ( &gsi, gcond, GSI_SAME_STMT);
- // FROM gsi_insert_after( &gsi, "base.field = res")
+ gsi = gsi_start_bb ( failure_bb);
+ // FROM gsi_insert_after ( &gsi, "goto after_label")
+ gimple *goto_al = gimple_build_goto ( after_label_L);
+ gsi_insert_after ( &gsi, goto_al, GSI_SAME_STMT);
+ // (per field) {
+ tree field;
+ tree reorg_type = ri->gcc_type; // is this useful here?
+ tree reorg_pointer_type = ri->pointer_rep;
+ tree fndecl_free = builtin_decl_explicit( BUILT_IN_FREE);
+ tree base = ri->clone;
+ for( field = TYPE_FIELDS( reorg_type);
+ field;
+ field = DECL_CHAIN( field)) {
+ // FROM gsi_insert_after( &gsi, "base.field = 0")
tree lhs_ass =
build3( COMPONENT_REF, ptr_type_node, base, field, NULL_TREE);
- gimple *gset_field = gimple_build_assign( lhs_ass, res);
- gsi_insert_after( &gsi, gset_field, GSI_SAME_STMT);
+ gimple *gzero = gimple_build_assign( lhs_ass, null_pointer_node);
+ gsi_insert_after( &gsi, gzero, GSI_SAME_STMT);
- // FROM gsi_insert_after( &gsi, "res = malloc( mem_size)")
- // The alternative to sizetype are long_integer_type_node
- // and integer_type_node.
- tree mem_size =
- make_temp_ssa_name( sizetype, NULL, "mem_size");
- gcall *malloc_call = gimple_build_call( fndecl_malloc, 1, mem_size);
- gimple_call_set_lhs( malloc_call, res);
- gsi_insert_after( &gsi, malloc_call, GSI_SAME_STMT);
- // FROM gsi_insert_after( &gsi, "mem_size = len * field_size")
- //gimple *gsize =
- // gimple_build_assign ( mem_size, MULT_EXPR, TYPE_SIZE(field),
- // len, NULL_TREE, NULL_TREE);
- gimple *gsize =
- gimple_build_assign ( mem_size,
- MULT_EXPR,
- TYPE_SIZE ( field),
- len);
- gsi_insert_after( &gsi, gsize, GSI_SAME_STMT);
- // FROM gsi_insert_after( &gsi, prev_ok_field)
- gimple *gprev_ok_field = gimple_build_label ( prev_ok_field_L);
- gsi_insert_after ( &gsi, gprev_ok_field, GSI_SAME_STMT);
- // FROM prev_bb = new_bb
- prev_bb = new_bb;
- // FROM prev_order = new_bb
- prev_order = new_bb;
- // FROM prev_ok_field = new_ok_field
- prev_ok_field_L = new_ok_field_L;
+ // FROM gsi_insert_after( &gsi, "free(field)")
+ // TBD -- I'm
+ tree to_free =
+ make_temp_ssa_name( reorg_pointer_type, NULL, "to_free");
+ gcall *free_call = gimple_build_call( fndecl_free, 1, to_free);
+ gsi_insert_after( &gsi, free_call, GSI_SAME_STMT);
+ tree rhs_ass =
+ build3( COMPONENT_REF, ptr_type_node, base, field, NULL_TREE);
+ gimple *gaddr2free = gimple_build_assign( to_free, rhs_ass);
+ gsi_insert_after( &gsi, gaddr2free, GSI_SAME_STMT);
}
+ // FROM gsi_insert_after( &gsi, "fail_val = minint")
+ gimple *gretnull =
+ gimple_build_assign ( fail_val,
+ //build_int_cst ( size_type_node,
+ TYPE_MIN_VALUE ( TREE_TYPE ( fail_val))); // );
+ gsi_insert_after( &gsi, gretnull, GSI_SAME_STMT);
+ // FROM gsi_insert_after( &gsi, bad_field )
+ gimple *gbad_field = gimple_build_label( bad_field_L);
+ gsi_insert_after( &gsi, gbad_field, GSI_SAME_STMT);
+
+ // loop setup trickery for gimple idioms
+ //
+ // FROM prev_order = failure_bb
+ basic_block prev_order = failure_bb;
+ // FROM prev_bb = before_bb
+ prev_bb = before_bb;
+
+ // Generate all the real allocation code
+ tree fndecl_malloc = builtin_decl_explicit( BUILT_IN_MALLOC);
+ // This, after the following loop, will hold the start of the
+ // field related code.
+ tree new_ok_field_L;
+
+ // FROM (for fields) {
+ for( field = TYPE_FIELDS( reorg_type);
+ field;
+ field = DECL_CHAIN( field))
+ {
+ // FROM res is new SSA
+ // Note, alternative code would substitute ptr_type_node
+ // for null_pointer_node.
+ // This is probably a duplicate of the def of res below.
+ //tree res =
+ // make_temp_ssa_name( null_pointer_node, NULL, "res");
+ // FROM new_bb = create_empty_block(prev_order);
+ basic_block new_bb = create_empty_bb ( prev_order);
+ // FROM gsi = gsi_start_bb( new_bb)
+ gimple_stmt_iterator gsi = gsi_start_bb ( new_bb);
+ // FROM set imm dom new_bb as prev_bb
+ set_immediate_dominator ( CDI_DOMINATORS, new_bb, prev_bb);
+ // FROM make_edge( prev_bb, new_bb, EDGE_TRUE_VALUE);
+ make_edge ( prev_bb, new_bb, EDGE_TRUE_VALUE);
+ // FROM make_edge( new_bb, failure_bb, EDGE_FALSE_VALUE);
+ make_edge ( new_bb, failure_bb, EDGE_FALSE_VALUE);
+ // FROM new_ok_field is new label
+ new_ok_field_L =
+ create_artificial_label ( UNKNOWN_LOCATION);
+ // FROM gsi_insert_after( &gsi, "if( res NE NULL )
+ // goto new_ok_field;
+ // goto bad_field")
+ tree res =
+ make_temp_ssa_name ( ptr_type_node, NULL, "res");
+ gimple *gcond =
+ gimple_build_cond ( NE_EXPR, res, null_pointer_node,
+ new_ok_field_L, bad_field_L);
+ gsi_insert_after ( &gsi, gcond, GSI_SAME_STMT);
+ // FROM gsi_insert_after( &gsi, "base.field = res")
+ tree lhs_ass =
+ build3( COMPONENT_REF, ptr_type_node, base, field, NULL_TREE);
+ gimple *gset_field = gimple_build_assign( lhs_ass, res);
+ gsi_insert_after( &gsi, gset_field, GSI_SAME_STMT);
+
+ // FROM gsi_insert_after( &gsi, "res = malloc( mem_size)")
+ // The alternative to sizetype are long_integer_type_node
+ // and integer_type_node.
+ tree mem_size =
+ make_temp_ssa_name( sizetype, NULL, "mem_size");
+ gcall *malloc_call = gimple_build_call( fndecl_malloc, 1, mem_size);
+ gimple_call_set_lhs( malloc_call, res);
+ gsi_insert_after( &gsi, malloc_call, GSI_SAME_STMT);
+ // FROM gsi_insert_after( &gsi, "mem_size = len * field_size")
+ //gimple *gsize =
+ // gimple_build_assign ( mem_size, MULT_EXPR, TYPE_SIZE(field),
+ // len, NULL_TREE, NULL_TREE);
+ gimple *gsize =
+ gimple_build_assign ( mem_size,
+ MULT_EXPR,
+ TYPE_SIZE ( field),
+ len);
+ gsi_insert_after( &gsi, gsize, GSI_SAME_STMT);
+ // FROM gsi_insert_after( &gsi, prev_ok_field)
+ gimple *gprev_ok_field = gimple_build_label ( prev_ok_field_L);
+ gsi_insert_after ( &gsi, gprev_ok_field, GSI_SAME_STMT);
+ // FROM prev_bb = new_bb
+ prev_bb = new_bb;
+ // FROM prev_order = new_bb
+ prev_order = new_bb;
+ // FROM prev_ok_field = new_ok_field
+ prev_ok_field_L = new_ok_field_L;
+ }
+
+ // create basic block for success
+ //
+ // FROM success_bb = create_empty_block(prev_bb_order);
+ basic_block success_bb = create_empty_bb ( prev_bb);
+ // FROM set imm dom success_bb as prev_bb
+ set_immediate_dominator ( CDI_DOMINATORS, success_bb, prev_bb);
+ // FROM make_edge( prev_bb, success_bb, EDGE_TRUE_VALUE);
+ make_edge ( prev_bb, success_bb, EDGE_TRUE_VALUE);
+ // FROM make_edge( success_bb, after_bb, EDGE_TRUE_VALUE);
+ edge success_edge = make_edge ( success_bb, after_bb, EDGE_TRUE_VALUE);
+
+ // code in success_bb
+ //
+ // FROM success_val is new SSA
+ tree success_val =
+ make_temp_ssa_name( reorg_pointer_type, NULL, "success_val");
+ // FROM gsi = gsi_start_bb( failure_bb)
+ // Reuse the same gsi??? Or create a new one???
+ //gimple_stmt_iterator gsi = gsi_start_bb ( failure_bb);
+ gsi = gsi_start_bb ( success_bb); // used to be failure_bb
+ // FROM gsi_insert_after( &gsi, "goto after_label")
+ // Reuse goto_al
+ //gimple *goto_al = gimple_build_goto( after_label_L);
+ goto_al = gimple_build_goto( after_label_L);
+ gsi_insert_after( &gsi, goto_al, GSI_SAME_STMT);
+ // FROM gsi_insert_after( &gsi, "success_val = 0")
+ gimple *set_succ =
+ gimple_build_assign ( success_val,
+ build_int_cst ( reorg_pointer_type, 0));
+ gsi_insert_after( &gsi, set_succ, GSI_SAME_STMT);
+ // FROM gsi_insert_after( &gsi, new_ok_field )
+ gimple *gnew_ok_field = gimple_build_label ( new_ok_field_L);
+ gsi_insert_after ( &gsi, gnew_ok_field, GSI_SAME_STMT);
+
+ // add code to after_bb
+ //
+ // FROM gsi = gsi_start_bb( after_bb)
+ // Reuse gsi
+ //gimple_stmt_iterator gsi = gsi_start_bb( after_bb);
+ gsi = gsi_start_bb( after_bb);
+ // FROM gsi_insert_after( &gsi, "lhs = "phi(success_val, fail_val)
+ gphi *der_phi = create_phi_node( val, after_bb); // was lhs?? instead of val
+ add_phi_arg( der_phi, success_val, success_edge, UNKNOWN_LOCATION);
+ add_phi_arg( der_phi, fail_val, failure_edge, UNKNOWN_LOCATION);
+ gsi_insert_after( &gsi, der_phi, GSI_SAME_STMT);
- // create basic block for success
- //
- // FROM success_bb = create_empty_block(prev_bb_order);
- basic_block success_bb = create_empty_bb ( prev_bb);
- // FROM set imm dom success_bb as prev_bb
- set_immediate_dominator ( CDI_DOMINATORS, success_bb, prev_bb);
- // FROM make_edge( prev_bb, success_bb, EDGE_TRUE_VALUE);
- make_edge ( prev_bb, success_bb, EDGE_TRUE_VALUE);
- // FROM make_edge( success_bb, after_bb, EDGE_TRUE_VALUE);
- edge success_edge = make_edge ( success_bb, after_bb, EDGE_TRUE_VALUE);
-
- // code in success_bb
- //
- // FROM success_val is new SSA
- tree success_val =
- make_temp_ssa_name( reorg_pointer_type, NULL, "success_val");
- // FROM gsi = gsi_start_bb( failure_bb)
- // Reuse the same gsi??? Or create a new one???
- //gimple_stmt_iterator gsi = gsi_start_bb ( failure_bb);
- gsi = gsi_start_bb ( failure_bb);
- // FROM gsi_insert_after( &gsi, "goto after_label")
- // Reuse goto_al
- //gimple *goto_al = gimple_build_goto( after_label_L);
- goto_al = gimple_build_goto( after_label_L);
- gsi_insert_after( &gsi, goto_al, GSI_SAME_STMT);
- // FROM gsi_insert_after( &gsi, "success_val = 0")
- gimple *set_succ =
- gimple_build_assign ( success_val,
- build_int_cst ( reorg_pointer_type, 0));
- gsi_insert_after( &gsi, set_succ, GSI_SAME_STMT);
- // FROM gsi_insert_after( &gsi, new_ok_field )
- gimple *gnew_ok_field = gimple_build_label ( new_ok_field_L);
- gsi_insert_after ( &gsi, gnew_ok_field, GSI_SAME_STMT);
-
- // add code to after_bb
- //
- // FROM gsi = gsi_start_bb( after_bb)
- // Reuse gsi
- //gimple_stmt_iterator gsi = gsi_start_bb( after_bb);
- gsi = gsi_start_bb( after_bb);
- // FROM gsi_insert_after( &gsi, "lhs = "phi(success_val, fail_val)
- gphi *der_phi = create_phi_node( lhs, after_bb);
- add_phi_arg( der_phi, success_val, success_edge, UNKNOWN_LOCATION);
- add_phi_arg( der_phi, fail_val, failure_edge, UNKNOWN_LOCATION);
-
- // FROM gsi_insert_after( &gsi, after_label)
- gimple gafter_label = gimple_build_label( after_L);
- gsi_insert_after( &gsi, gafter_label, GSI_SAME_STMT);
- #endif
+ // FROM gsi_insert_after( &gsi, after_label)
+ gimple *gafter_label = gimple_build_label( after_label_L);
+ gsi_insert_after( &gsi, gafter_label, GSI_SAME_STMT);
+ }
+ #endif
INDENT(-2);
break;
case ReorgT_Calloc: