OSDN Git Service

Update email address for self.
[pf3gnuchains/gcc-fork.git] / gcc / target.h
index 6d8103e..7496fbb 100644 (file)
@@ -91,6 +91,22 @@ struct gcc_target
     /* 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));
 
@@ -118,7 +134,7 @@ struct gcc_target
     /* 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));
 
@@ -130,12 +146,6 @@ struct gcc_target
     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.  */
@@ -220,6 +230,26 @@ struct gcc_target
   /* ??? 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;
 
@@ -227,9 +257,8 @@ struct gcc_target
      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;