m3-sys/m3cc/gcc-apple/gcc/varasm.c
/* Output the objects in BLOCK.  */
Output the objects in BLOCK.
Output the objects in BLOCK .
static void
output_object_block (struct object_block *block)
{
  struct constant_descriptor_rtx *desc;
  unsigned int i;
  HOST_WIDE_INT offset;
  tree decl;
  rtx symbol;
  if (block->objects == NULL)
    return;
  switch_to_section (block->sect);
  assemble_align (block->alignment);
  for (i = 0; VEC_iterate (rtx, block->anchors, i, symbol); i++)
    targetm.asm_out.output_anchor (symbol);
  offset = 0;
  for (i = 0; VEC_iterate (rtx, block->objects, i, symbol); i++)
    {
      assemble_zeros (SYMBOL_REF_BLOCK_OFFSET (symbol) - offset);
      offset = SYMBOL_REF_BLOCK_OFFSET (symbol);
      if (CONSTANT_POOL_ADDRESS_P (symbol))
	{
	  desc = SYMBOL_REF_CONSTANT (symbol);
	  output_constant_pool_1 (desc, 1);
	  offset += GET_MODE_SIZE (desc->mode);
	}
      else if (TREE_CONSTANT_POOL_ADDRESS_P (symbol))
	{
	  decl = SYMBOL_REF_DECL (symbol);
	  assemble_constant_contents (decl, XSTR (symbol, 0),
				      get_constant_alignment (decl));
	  offset += get_constant_size (decl);
	}
      else
	{
	  decl = SYMBOL_REF_DECL (symbol);
	  assemble_variable_contents (decl, XSTR (symbol, 0), false);
	  offset += tree_low_cst (DECL_SIZE_UNIT (decl), 1);
	}
    }
}
static void output_object_block ( struct object_block * block ) { struct constant_descriptor_rtx * desc ; unsigned int i ; HOST_WIDE_INT offset ; tree decl ; rtx symbol ; if ( block -> objects == NULL ) return ; switch_to_section ( block -> sect ) ; assemble_align ( block -> alignment ) ; for ( i = 0 ; VEC_iterate ( rtx , block -> anchors , i , symbol ) ; i ++ ) targetm . asm_out . output_anchor ( symbol ) ; offset = 0 ; for ( i = 0 ; VEC_iterate ( rtx , block -> objects , i , symbol ) ; i ++ ) { assemble_zeros ( SYMBOL_REF_BLOCK_OFFSET ( symbol ) - offset ) ; offset = SYMBOL_REF_BLOCK_OFFSET ( symbol ) ; if ( CONSTANT_POOL_ADDRESS_P ( symbol ) ) { desc = SYMBOL_REF_CONSTANT ( symbol ) ; output_constant_pool_1 ( desc , 1 ) ; offset += GET_MODE_SIZE ( desc -> mode ) ; } else if ( TREE_CONSTANT_POOL_ADDRESS_P ( symbol ) ) { decl = SYMBOL_REF_DECL ( symbol ) ; assemble_constant_contents ( decl , XSTR ( symbol , 0 ) , get_constant_alignment ( decl ) ) ; offset += get_constant_size ( decl ) ; } else { decl = SYMBOL_REF_DECL ( symbol ) ; assemble_variable_contents ( decl , XSTR ( symbol , 0 ) , false ) ; offset += tree_low_cst ( DECL_SIZE_UNIT ( decl ) , 1 ) ; } } }
Output the objects in BLOCK.
Output the objects in BLOCK .
/* Switch to the section and make sure that the first byte is
     suitably aligned.  */ /* Define the values of all anchors relative to the current section
     position.  */ /* Output the objects themselves.  */ /* Move to the object's offset, padding with zeros if necessary.  */