/* Switch to the section that holds the exception frames. */
void (* eh_frame_section) PARAMS ((void));
+ /* Select and switch to a section for EXP. It may be a DECL or a
+ constant for which TREE_CST_RTL is valid. RELOC is non-zero if
+ runtime relocations must be applied; bit 1 will be set if the
+ runtime relocations require non-local name resolution. ALIGN is
+ the required alignment of the data. */
+ void (* select_section) PARAMS ((tree, int, unsigned HOST_WIDE_INT));
+
+ /* Select and switch to a section for X with MODE. ALIGN is
+ the desired alignment of the data. */
+ void (* select_rtx_section) PARAMS ((enum machine_mode, rtx,
+ unsigned HOST_WIDE_INT));
+
+ /* Select a unique section name for DECL. RELOC is the same as
+ for SELECT_SECTION. */
+ void (* unique_section) PARAMS ((tree, int));
+
/* Output a constructor for a symbol with a given priority. */
void (* constructor) PARAMS ((rtx, int));
/* Calculate how much this insn affects how many more insns we
can emit this cycle. Default is they all cost the same. */
int (* variable_issue) PARAMS ((FILE *, int, rtx, int));
-
+
/* Initialize machine-dependent scheduling code. */
void (* md_init) PARAMS ((FILE *, int, int));
int (* reorder) PARAMS ((FILE *, int, rtx *, int *, int));
int (* reorder2) PARAMS ((FILE *, int, rtx *, int *, int));
- /* cycle_display is a pointer to a function which can emit
- data into the assembly stream about the current cycle.
- Arguments are CLOCK, the data to emit, and LAST, the last
- insn in the new chain we're building. Returns a new LAST.
- The default is to do nothing. */
- rtx (* cycle_display) PARAMS ((int clock, rtx last));
/* The following member value is a pointer to a function returning
nonzero if we should use DFA based scheduling. The default is
to use the old pipeline scheduler. */
/* ??? Should be merged with SELECT_SECTION and UNIQUE_SECTION. */
unsigned int (* section_type_flags) PARAMS ((tree, const char *, int));
+ /* True if new jumps cannot be created, to replace existing ones or
+ not, at the current point in the compilation. */
+ bool (* cannot_modify_jumps_p) PARAMS ((void));
+
+ /* True if EXP should be placed in a "small data" section. */
+ bool (* in_small_data_p) PARAMS ((tree));
+
+ /* True if EXP names an object for which name resolution must resolve
+ to the current module. */
+ bool (* binds_local_p) PARAMS ((tree));
+
+ /* Do something target-specific to record properties of the DECL into
+ the associated SYMBOL_REF. */
+ void (* encode_section_info) PARAMS ((tree, int));
+
+ /* Undo the effects of encode_section_info on the symbol string. */
+ const char * (* strip_name_encoding) PARAMS ((const char *));
+
+ /* Leave the boolean fields at the end. */
+
/* True if arbitrary sections are supported. */
bool have_named_sections;
false if we're using collect2 for the job. */
bool have_ctors_dtors;
- /* True if new jumps cannot be created, to replace existing ones or
- not, at the current point in the compilation. */
- bool (* cannot_modify_jumps_p) PARAMS ((void));
+ /* True if thread-local storage is supported. */
+ bool have_tls;
};
extern struct gcc_target targetm;