X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=gcc%2Ftarget.h;h=355a910502cc44a007ccab660009b7377bb54e3a;hb=aae061fde2843546ed8ff13a4e58cec9d0f5f47d;hp=afbdad04aaac649d3a62df25057247ded365f108;hpb=ef2b93f9585273e7f868f61ce103c1252c5b24ba;p=pf3gnuchains%2Fgcc-fork.git diff --git a/gcc/target.h b/gcc/target.h index afbdad04aaa..355a910502c 100644 --- a/gcc/target.h +++ b/gcc/target.h @@ -52,6 +52,23 @@ struct gcc_target /* Opening and closing parentheses for asm expression grouping. */ const char *open_paren, *close_paren; + /* Assembler instructions for creating various kinds of integer object. */ + const char *byte_op; + struct asm_int_op + { + const char *hi; + const char *si; + const char *di; + const char *ti; + } aligned_op, unaligned_op; + + /* Try to output the assembler code for an integer object whose + value is given by X. SIZE is the size of the object in bytes and + ALIGNED_P indicates whether it is aligned. Return true if + successful. Only handles cases for which BYTE_OP, ALIGNED_OP + and UNALIGNED_OP are NULL. */ + bool (* integer) PARAMS ((rtx x, unsigned int size, int aligned_p)); + /* Output the assembler code for entry to a function. */ void (* function_prologue) PARAMS ((FILE *, HOST_WIDE_INT)); @@ -68,6 +85,12 @@ struct gcc_target specified by FLAGS. */ void (* named_section) PARAMS ((const char *, unsigned int)); + /* Switch to the section that holds the exception table. */ + void (* exception_section) PARAMS ((void)); + + /* Switch to the section that holds the exception frames. */ + void (* eh_frame_section) PARAMS ((void)); + /* Output a constructor for a symbol with a given priority. */ void (* constructor) PARAMS ((rtx, int)); @@ -113,47 +136,6 @@ struct gcc_target 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. */ - int (* use_dfa_pipeline_interface) PARAMS ((void)); - /* The values of all the following members are used only for the - DFA based scheduler: */ - /* The values of the following four members are pointers to - functions used to simplify the automaton descriptions. - dfa_pre_cycle_insn and dfa_post_cycle_insn give functions - returning insns which are used to change the pipeline hazard - recognizer state when the new simulated processor cycle - correspondingly starts and finishes. The function defined by - init_dfa_pre_cycle_insn and init_dfa_post_cycle_insn are used - to initialize the corresponding insns. The default values of - the memebers result in not changing the automaton state when - the new simulated processor cycle correspondingly starts and - finishes. */ - void (* init_dfa_pre_cycle_insn) PARAMS ((void)); - rtx (* dfa_pre_cycle_insn) PARAMS ((void)); - void (* init_dfa_post_cycle_insn) PARAMS ((void)); - rtx (* dfa_post_cycle_insn) PARAMS ((void)); - /* The following member value is a pointer to a function returning value - which defines how many insns in queue `ready' will we try for - multi-pass scheduling. if the member value is nonzero and the - function returns positive value, the DFA based scheduler will make - multi-pass scheduling for the first cycle. In other words, we will - try to choose ready insn which permits to start maximum number of - insns on the same cycle. */ - int (* first_cycle_multipass_dfa_lookahead) PARAMS ((void)); - /* The values of the following members are pointers to functions - used to improve the first cycle multipass scheduling by - inserting nop insns. dfa_scheduler_bubble gives a function - returning a nop insn with given index. The indexes start with - zero. The function should return NULL if there are no more nop - insns with indexes greater than given index. To initialize the - nop insn the function given by member - init_dfa_scheduler_bubbles is used. The default values of the - members result in not inserting nop insns during the multipass - scheduling. */ - void (* init_dfa_bubbles) PARAMS ((void)); - rtx (* dfa_bubble) PARAMS ((int)); } sched; /* Given two decls, merge their attributes and return the result. */ @@ -162,17 +144,8 @@ struct gcc_target /* Given two types, merge their attributes and return the result. */ tree (* merge_type_attributes) PARAMS ((tree, tree)); - /* Return nonzero if IDENTIFIER with arguments ARGS is a valid machine - specific attribute for DECL. The attributes in ATTRIBUTES have - previously been assigned to DECL. */ - int (* valid_decl_attribute) PARAMS ((tree decl, tree attributes, - tree identifier, tree args)); - - /* Return nonzero if IDENTIFIER with arguments ARGS is a valid machine - specific attribute for TYPE. The attributes in ATTRIBUTES have - previously been assigned to TYPE. */ - int (* valid_type_attribute) PARAMS ((tree type, tree attributes, - tree identifier, tree args)); + /* Table of machine attributes and functions to handle them. */ + const struct attribute_spec *attribute_table; /* Return zero if the attributes on TYPE1 and TYPE2 are incompatible, one if they are compatible and two if they are nearly compatible @@ -185,6 +158,10 @@ struct gcc_target /* Insert attributes on the newly created DECL. */ void (* insert_attributes) PARAMS ((tree decl, tree *attributes)); + /* Return true if FNDECL (which has at least one machine attribute) + can be inlined despite its machine attributes, false otherwise. */ + bool (* function_attribute_inlinable_p) PARAMS ((tree fndecl)); + /* Set up target-specific built-in functions. */ void (* init_builtins) PARAMS ((void));