public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
* Re: The prototyping patch for rtl.h/rtl.def
@ 1997-08-18  3:07 meissner
  1997-08-18  5:12 ` Jeffrey A Law
  0 siblings, 1 reply; 6+ messages in thread
From: meissner @ 1997-08-18  3:07 UTC (permalink / raw)
  To: egcs

| Is it really safe to use #ifdef BUFSIZE?  What's to stop stdio.h from
| doing somethign like
| 
| const int BUFSIZE = 1024
| 
| ie, is there anything in ANSI that sez BUFSIZE must be a macro?

Yes, it is explicitly required to be a macro.  Quoting from a draft of C9X,
since I don't have the standard online:

       C9X Draft 10, 1997-06-27, WG14/Nxxx J11/97-xxx

       7.12  Input/output <stdio.h>

       7.12.1  Introduction

       [#1] The header  <stdio.h>  declares  three  types,  several
       macros, and many functions for performing input and output.

       [#2] The types declared are size_t (described in 7.1.6);

               FILE

       which is an object type other than an array type capable  of  |
       recording  all  the  information needed to control a stream,
       including its file position  indicator,  a  pointer  to  its
       associated  buffer (if any), an error indicator that records
       whether a read/write error has occurred, and an  end-of-file
       indicator  that records whether the end of the file has been
       reached; and

               fpos_t

       which is  an  object  type  capable  of  recording  all  the
       information needed to specify uniquely every position within
       a file.

       [#3] The macros are NULL (described in 7.1.6);

               _IOFBF
               _IOLBF
               _IONBF

       which expand to integral constant expressions with  distinct
       values,  suitable  for  use  as  the  third  argument to the
       setvbuf function;

               BUFSIZ

       which expands to an integral constant expression,  which  is
       the size of the buffer used by the setbuf function;

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: The prototyping patch for rtl.h/rtl.def
  1997-08-18  3:07 The prototyping patch for rtl.h/rtl.def meissner
@ 1997-08-18  5:12 ` Jeffrey A Law
  0 siblings, 0 replies; 6+ messages in thread
From: Jeffrey A Law @ 1997-08-18  5:12 UTC (permalink / raw)
  To: egcs

  In message <199708180317.XAA08185@tweedledumb.cygnus.com>you write:
  > | Is it really safe to use #ifdef BUFSIZE?  What's to stop stdio.h from
  > | doing somethign like
  > | 
  > | const int BUFSIZE = 1024
  > | 
  > | ie, is there anything in ANSI that sez BUFSIZE must be a macro?
  > 
  > Yes, it is explicitly required to be a macro.  Quoting from a draft of C9X,
  > since I don't have the standard online:
Good 'nuff.  I guess conditionalizing the prototype on the existence of
BUFSIZE is the best way to go.

Jeff

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: The prototyping patch for rtl.h/rtl.def
  1997-08-18  2:56 meissner
@ 1997-08-18  3:07 ` Jeffrey A Law
  0 siblings, 0 replies; 6+ messages in thread
From: Jeffrey A Law @ 1997-08-18  3:07 UTC (permalink / raw)
  To: egcs

  In message <199708180304.XAA07917@tweedledumb.cygnus.com>you write:
  > |   > 	* rtl.h (STDIO_PROTO): Changed to PROTO. Use "#ifdef BUFSIZ" to
  > |   > 	decide whether to provide prototype.
  > | Why not just provide a forward decl for "struct FILE" instead bothering
  > | with the #ifdef BUFSIZE?  Similarly for other places that have #ifdef BUF
  > SIZ.
  > 
  > You can't do that.  FILE is a typedef not a structure (VMS for instance
  > makes FILE a pointer, not a structure).
Bummer.

Is it really safe to use #ifdef BUFSIZE?  What's to stop stdio.h from
doing somethign like

const int BUFSIZE = 1024

ie, is there anything in ANSI that sez BUFSIZE must be a macro?

jeff

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: The prototyping patch for rtl.h/rtl.def
  1997-08-18  1:03 H.J. Lu
@ 1997-08-18  2:56 ` Jeffrey A Law
  0 siblings, 0 replies; 6+ messages in thread
From: Jeffrey A Law @ 1997-08-18  2:56 UTC (permalink / raw)
  To: egcs

  In message <m0x0HaP-0004ecC@ocean.lucon.org>you write:
  > Here is my prototyping patch for rtl.h/rtl.def.
It basically looks OK.  Just a few comments.

  > 	* rtl.h (STDIO_PROTO): Changed to PROTO. Use "#ifdef BUFSIZ" to
  > 	decide whether to provide prototype.
Why not just provide a forward decl for "struct FILE" instead bothering
with the #ifdef BUFSIZE?  Similarly for other places that have #ifdef BUFSIZ.

Other prototypes in rtl.h (and other locations) try to get the PROTOs
to line up in a nice column.  Can you line them up?  It will certainly
make them easier to read later.

I would #if 0 the prototypes for xmalloc and friends for this round.
Once all the other prototype changes are installed, then I would re-enable
the xmalloc prototypes and submit changes to fix whatever breaks.

If nothing could break due to the existence of the prototype for xmalloc
and friends, then tell me and we'll just ignore the issue.  I also think
those prototypes are wrong -- instead of an "unsigned" they should be
a "size_t".  The sizes of which can be different for some targets!


  > The reason of
  > odd rtl.def patch is the prototyping config.h may require
  > enum etx_code before rtl.h is included.
I don't understand this.

If config.h requires enum rtx_code before rtl.h is included, how
does this change help?  Are you suggesting that we include rtl.def
in config.h?!?

I would punt this issue for this round too.  We can return to it after
we've got the bulk of the other prototype stuff installed too.

Thanks,
jeff

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: The prototyping patch for rtl.h/rtl.def
@ 1997-08-18  2:56 meissner
  1997-08-18  3:07 ` Jeffrey A Law
  0 siblings, 1 reply; 6+ messages in thread
From: meissner @ 1997-08-18  2:56 UTC (permalink / raw)
  To: egcs

|   > 	* rtl.h (STDIO_PROTO): Changed to PROTO. Use "#ifdef BUFSIZ" to
|   > 	decide whether to provide prototype.
| Why not just provide a forward decl for "struct FILE" instead bothering
| with the #ifdef BUFSIZE?  Similarly for other places that have #ifdef BUFSIZ.

You can't do that.  FILE is a typedef not a structure (VMS for instance makes
FILE a pointer, not a structure).

^ permalink raw reply	[flat|nested] 6+ messages in thread

* The prototyping patch for rtl.h/rtl.def
@ 1997-08-18  1:03 H.J. Lu
  1997-08-18  2:56 ` Jeffrey A Law
  0 siblings, 1 reply; 6+ messages in thread
From: H.J. Lu @ 1997-08-18  1:03 UTC (permalink / raw)
  To: egcs

Hi,

Here is my prototyping patch for rtl.h/rtl.def. The reason of
odd rtl.def patch is the prototyping config.h may require
enum etx_code before rtl.h is included.

Please keep me informed on the status.

Thanks.

-- 
H.J. Lu (hjl@gnu.ai.mit.edu)
--
Sun Aug 17 19:27:04 1997  H.J. Lu  (hjl@gnu.ai.mit.edu)

	* rtl.h (STDIO_PROTO): Changed to PROTO. Use "#ifdef BUFSIZ" to
	decide whether to provide prototype.

	* rtl.def, rtl.h: Finish prototyping.

Index: rtl.h
===================================================================
RCS file: /home/work/cvs/gnu/egcs/rtl.h,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 rtl.h
--- rtl.h	1997/08/16 03:48:43	1.1.1.1
+++ rtl.h	1997/08/18 02:09:52
@@ -1,3 +1,6 @@
+#ifndef _RTL_H
+#define _RTL_H
+
 /* Register Transfer Language (RTL) definitions for GNU C-Compiler
    Copyright (C) 1987, 91-96, 1997 Free Software Foundation, Inc.
 
@@ -33,15 +36,9 @@
 /* Register Transfer Language EXPRESSIONS CODES */
 
 #define RTX_CODE	enum rtx_code
-enum rtx_code  {
-
-#define DEF_RTL_EXPR(ENUM, NAME, FORMAT, CLASS)   ENUM ,
+#define NEED_enum_rtx_code
 #include "rtl.def"		/* rtl expressions are documented here */
-#undef DEF_RTL_EXPR
-
-  LAST_AND_UNUSED_RTX_CODE};	/* A convenient way to get a value for
-				   NUM_RTX_CODE.
-				   Assumes default enum value assignment.  */
+#undef NEED_enum_rtx_code
 
 #define NUM_RTX_CODE ((int)LAST_AND_UNUSED_RTX_CODE)
 				/* The cast here, saves many elsewhere.  */
@@ -437,7 +434,7 @@
    to hold these things.  That happens to be true.  */
 
 /* For static or external objects.  */
-#define BYTECODE_LABEL(X) (XEXP ((X), 0))
+#define BYTECODE_LABEL(X) (XSTR ((X), 0))
 
 /* For goto labels inside bytecode functions.  */
 #define BYTECODE_BC_LABEL(X) (*(struct bc_label **) &XEXP ((X), 1))
@@ -648,9 +645,14 @@
    defined here and in tree.h.  */
 
 #ifndef exact_log2
-#define exact_log2(N) exact_log2_wide ((HOST_WIDE_INT) (N))
-#define floor_log2(N) floor_log2_wide ((HOST_WIDE_INT) (N))
+#define exact_log2(N) exact_log2_wide ((unsigned HOST_WIDE_INT) (N))
+#define floor_log2(N) floor_log2_wide ((unsigned HOST_WIDE_INT) (N))
 #endif
+extern int exact_log2_wide		PROTO((unsigned HOST_WIDE_INT));
+extern int floor_log2_wide		PROTO((unsigned HOST_WIDE_INT));
+
+/* In expmed.c */
+extern int ceil_log2			PROTO((unsigned HOST_WIDE_INT));
 
 #define plus_constant(X,C) plus_constant_wide (X, (HOST_WIDE_INT) (C))
 
@@ -662,20 +664,22 @@
 
 #define GEN_INT(N) gen_rtx (CONST_INT, VOIDmode, (HOST_WIDE_INT) (N))
 
-extern rtx bc_gen_rtx ();
+struct bc_label;
+extern rtx bc_gen_rtx			PROTO ((char *, int,
+						struct bc_label *));
 
 extern rtx gen_rtx			PVPROTO((enum rtx_code,
 						 enum machine_mode, ...));
 extern rtvec gen_rtvec			PVPROTO((int, ...));
 
-extern rtx read_rtx			STDIO_PROTO((FILE *));
+#ifdef BUFSIZ
+extern rtx read_rtx			PROTO((FILE *));
+#endif
 
 #if 0
-/* At present, don't prototype xrealloc, since all of the callers don't
-   cast their pointers to char *, and all of the xrealloc's don't use
-   void * yet.  */
-extern char *xmalloc			PROTO((size_t));
-extern char *xrealloc			PROTO((void *, size_t));
+extern GENERIC_PTR xmalloc		PROTO((unsigned));
+extern GENERIC_PTR xrealloc		PROTO((GENERIC_PTR, unsigned));
+extern GENERIC_PTR xcalloc		PROTO((unsigned, unsigned));
 #else
 extern char *xmalloc ();
 extern char *xrealloc ();
@@ -809,7 +813,7 @@
 extern int volatile_refs_p	PROTO((rtx));
 extern int volatile_insn_p	PROTO((rtx));
 extern void remove_note		PROTO((rtx, rtx));
-extern void note_stores		PROTO((rtx, void (*)()));
+extern void note_stores		PROTO((rtx, void (*) (rtx, rtx)));
 extern int refers_to_regno_p	PROTO((int, int, rtx, rtx *));
 extern int reg_overlap_mentioned_p PROTO((rtx, rtx));
 extern rtx find_use_as_address	PROTO((rtx, rtx, HOST_WIDE_INT));
@@ -971,11 +975,320 @@
 
 extern int rtx_to_tree_code	PROTO((enum rtx_code));
 
-extern int true_dependence	PROTO((rtx, enum machine_mode, rtx, int (*)()));
+/* In rtlanal.c */
+extern int reg_set_p PROTO((rtx, rtx));
+extern int reg_mentioned_p PROTO((rtx, rtx));
+extern int reg_referenced_p PROTO((rtx, rtx));
+extern int reg_used_between_p PROTO((rtx, rtx, rtx));
+extern int reg_set_p PROTO((rtx, rtx));
+extern int reg_referenced_between_p PROTO((rtx, rtx, rtx));
+extern int reg_set_between_p PROTO((rtx, rtx, rtx));
+extern int rtx_unstable_p PROTO((rtx));
+extern int rtx_addr_varies_p PROTO((rtx));
+extern int rtx_addr_can_trap_p PROTO((rtx));
+extern int rtx_equal_p PROTO((rtx, rtx));
+extern int inequality_comparisons_p PROTO((rtx));
+extern int dead_or_set_p PROTO((rtx, rtx));
+extern int dead_or_set_regno_p PROTO((rtx, int));
+extern int no_labels_between_p PROTO((rtx, rtx));
+extern int modified_between_p PROTO((rtx, rtx, rtx));
+extern int modified_in_p PROTO((rtx, rtx));
+
+/* In tree.c */
+extern void obfree PROTO((char *));
+struct obstack;
+extern void gcc_obstack_init PROTO((struct obstack *));
+extern void pop_obstacks PROTO((void));
+extern void push_obstacks PROTO((struct obstack *, struct obstack *));
+#ifdef BUFSIZ
+extern int read_skip_spaces PROTO ((FILE *));
+#endif
+
+/* In cse.c */
+struct cse_basic_block_data;
+extern int rtx_cost PROTO((rtx, enum rtx_code));
+extern void delete_dead_from_cse PROTO((rtx, int));
+#ifdef BUFSIZ
+extern int cse_main PROTO((rtx, int, int, FILE *));
+#endif
+extern void cse_end_of_basic_block
+	PROTO((rtx, struct cse_basic_block_data *,
+	       int, int, int));
+
+/* In jump.c */
+extern int comparison_dominates_p
+	PROTO((enum rtx_code, enum rtx_code));
+extern int condjump_p PROTO((rtx));
+extern int simplejump_p PROTO((rtx));
+extern int sets_cc0_p PROTO((rtx));
+extern int invert_jump PROTO((rtx, rtx));
+extern int rtx_renumbered_equal_p PROTO((rtx, rtx));
+extern int true_regnum PROTO((rtx));
+extern int redirect_jump PROTO((rtx, rtx));
+extern void jump_optimize PROTO((rtx, int, int, int));
+extern void thread_jumps PROTO((rtx, int, int));
+extern int redirect_exp PROTO((rtx *, rtx, rtx, rtx));
+extern int rtx_equal_for_thread_p PROTO((rtx, rtx, rtx));
+extern int invert_exp PROTO((rtx, rtx));
+extern int can_reverse_comparison_p PROTO((rtx, rtx));
+extern void delete_for_peephole PROTO((rtx, rtx));
+extern int condjump_in_parallel_p PROTO((rtx));
+
+/* In emit-rtl.c. */
+extern int max_reg_num PROTO((void));
+extern int max_label_num PROTO((void));
+extern int get_first_label_num PROTO((void));
+extern void delete_insns_since PROTO((rtx));
+extern void mark_reg_pointer PROTO((rtx, int));
+extern void mark_user_reg PROTO((rtx));
+extern void reset_used_flags PROTO((rtx));
+extern void reorder_insns PROTO((rtx, rtx, rtx));
+extern int get_max_uid PROTO((void));
+extern int in_sequence_p PROTO((void));
+extern void force_next_line_note PROTO((void));
+extern void init_emit PROTO((void));
+extern void init_emit_once PROTO((int));
+extern void push_topmost_sequence PROTO((void));
+extern void pop_topmost_sequence PROTO((void));
+extern int subreg_realpart_p PROTO((rtx));
+extern void reverse_comparison PROTO((rtx));
+extern void set_new_first_and_last_insn PROTO((rtx, rtx));
+extern void set_new_first_and_last_label_num PROTO((int, int));
+extern void unshare_all_rtl PROTO((rtx));
+extern void set_last_insn PROTO((rtx));
+extern void link_cc0_insns PROTO((rtx));
+extern void add_insn PROTO((rtx));
+extern void add_insn_before PROTO((rtx, rtx));
+extern void add_insn_after PROTO((rtx, rtx));
+extern void reorder_insns_with_line_notes PROTO((rtx, rtx, rtx));
+extern void emit_insn_after_with_line_notes PROTO((rtx, rtx, rtx));
+extern enum rtx_code classify_insn PROTO((rtx));
+extern rtx emit PROTO((rtx));
+
+/* In insn-emit.c */
+extern void add_clobbers PROTO((rtx, int));
+
+/* In combine.c */
+extern void combine_instructions PROTO((rtx, int));
+extern int extended_count PROTO((rtx, enum machine_mode, int));
+extern rtx remove_death PROTO((int, rtx));
+#ifdef BUFSIZ
+extern void dump_combine_stats PROTO((FILE *));
+extern void dump_combine_total_stats PROTO((FILE *));
+#endif
+
+/* In sched.c. */
+#ifdef BUFSIZ
+ /* Main entry point of the file.  */
+extern void schedule_insns PROTO((FILE *));
+#endif
+
+/* In print-rtl.c */
+extern void debug_rtx PROTO((rtx));
+extern void debug_rtx_list PROTO((rtx, int));
+extern rtx debug_rtx_find PROTO((rtx, int));
+#ifdef BUFSIZ
+extern void print_rtl PROTO((FILE *, rtx));
+extern void print_inline_rtx PROTO((FILE *, rtx, int));
+#endif
+
+/* In loop.c */
+extern void init_loop PROTO((void));
+#ifdef BUFSIZ
+extern void loop_optimize PROTO((rtx, FILE *));
+#endif
+extern void record_excess_regs PROTO((rtx, rtx, rtx *));
+
+/* In function.c */
+extern void reposition_prologue_and_epilogue_notes PROTO((rtx));
+extern void thread_prologue_and_epilogue_insns PROTO((rtx));
+extern void use_variable PROTO((rtx));
+extern HOST_WIDE_INT get_frame_size PROTO((void));
+extern void preserve_rtl_expr_result PROTO((rtx));
+extern void mark_temp_addr_taken PROTO((rtx));
+extern void update_temp_slot_address PROTO((rtx, rtx));
+extern void use_variable_after PROTO((rtx, rtx));
+
+/* In reload.c */
+extern int operands_match_p PROTO((rtx, rtx));
+extern int safe_from_earlyclobber PROTO((rtx, rtx));
+extern int strict_memory_address_p PROTO((enum machine_mode, rtx));
+
+/* In recog.c */
+extern int memory_address_p PROTO((enum machine_mode, rtx));
+extern int constrain_operands PROTO((int, int));
+extern int mode_dependent_address_p PROTO((rtx));
+extern void init_recog_no_volatile PROTO((void));
+extern int offsettable_memref_p PROTO((rtx));
+extern int offsettable_nonstrict_memref_p PROTO((rtx));
+extern int reg_fits_class_p PROTO((rtx, register enum reg_class,
+				   int, enum machine_mode));
+extern int check_asm_operands PROTO((rtx));
+extern int address_operand PROTO((rtx, enum machine_mode));
+extern int const_int_operand PROTO((rtx, enum machine_mode));
+extern int const_double_operand PROTO((rtx, enum machine_mode));
+extern int general_operand PROTO((rtx, enum machine_mode));
+extern int immediate_operand PROTO((rtx, enum machine_mode));
+extern int nonimmediate_operand PROTO((rtx, enum machine_mode));
+extern int memory_operand PROTO((rtx, enum machine_mode));
+extern int nonmemory_operand PROTO((rtx, enum machine_mode));
+extern int push_operand PROTO((rtx, enum machine_mode));
+extern int register_operand PROTO((rtx, enum machine_mode));
+extern int scratch_operand PROTO((rtx, enum machine_mode));
+extern int indirect_operand PROTO((rtx, enum machine_mode));
+extern int mode_independent_operand PROTO((rtx, enum machine_mode));
+extern int comparison_operator PROTO((rtx, enum machine_mode));
+extern void init_recog_no_volatile PROTO((void));
+extern void init_recog PROTO((void));
+extern int validate_replace_rtx PROTO((rtx, rtx, rtx));
+extern int offsettable_address_p PROTO((int, enum machine_mode, rtx));
+extern int next_insn_tests_no_inequality PROTO((rtx));
+extern int recog_memoized PROTO((rtx));
+extern int validate_change PROTO((rtx, rtx *, rtx, int));
+extern int apply_change_group PROTO((void));
+extern void cancel_changes PROTO((int));
+extern int num_validated_changes PROTO((void));
+
+/* In insn-recog.c */
+extern int recog PROTO((rtx, rtx, int *));
+
+/* In stmt.c */
+extern void emit_jump PROTO((rtx));
+extern int preserve_subexpressions_p PROTO((void));
+
+/* In expr.c */
+extern rtx bc_allocate_local PROTO((int, int));
+extern void init_expr_once PROTO((void));
+
+/* In stupid.c */
+#ifdef BUFSIZ
+extern void stupid_life_analysis  PROTO((rtx, int, FILE *));
+#endif
+
+/* In flow.c */
+extern void allocate_for_life_analysis PROTO((void));
+#ifdef BUFSIZ
+extern void dump_flow_info PROTO((FILE *));
+#endif
+
+/* In expmed.c */
+extern void init_expmed PROTO((void));
+extern void expand_inc PROTO((rtx, rtx));
+extern void expand_dec PROTO((rtx, rtx));
+extern rtx expand_mult_highpart PROTO((enum machine_mode, rtx,
+				       unsigned HOST_WIDE_INT, rtx,
+				       int, int));
+
+/* In toplev.c */
+extern void strip_off_ending PROTO((char *, int));
+extern void print_time PROTO((char *, int));
+extern int get_run_time PROTO((void));
+#if 0
+extern void fatal PVPROTO((char *, ...));
+extern void warning PVPROTO((char *, ...));
+extern void error PVPROTO((char *, ...));
+#endif
+extern void pfatal_with_name PROTO((char *));
+extern void fancy_abort PROTO((void));
+extern int count_error PROTO((int));
+extern void pedwarn PVPROTO((char *, ...));
+extern void warning_for_asm PVPROTO((rtx, char *, ...));
+extern void error_for_asm PVPROTO((rtx, char *, ...));
+
+/* In global.c */
+#ifdef BUFSIZ
+extern int global_alloc PROTO((FILE *));
+extern void dump_global_regs PROTO((FILE *));
+#endif
+
+/* In regclass.c */
+extern void globalize_reg PROTO((int));
+extern void init_regs PROTO((void));
+extern void init_reg_sets PROTO((void));
+extern void regset_release_memory PROTO((void));
+extern void regclass_init PROTO((void));
+extern void regclass PROTO((rtx, int));
+extern void reg_scan PROTO((rtx, int, int));
+extern void fix_register PROTO((char *, int, int));
+
+/* In optabs.c */
+extern void init_optabs PROTO((void));
+
+/* In local-alloc.c */
+#ifdef BUFSIZ
+extern void dump_local_alloc PROTO((FILE *));
+#endif
+extern void local_alloc PROTO((void));
+
+/* In reload1.c */
+extern void reload_cse_regs PROTO((rtx));
+extern void init_reload PROTO((void));
+extern void mark_home_live PROTO((int));
+#ifdef BUFSIZ
+extern int reload PROTO((rtx, int, FILE *));
+#endif
+
+/* In caller-save.c */
+extern void init_caller_save PROTO((void));
+
+/* In profile.c */
+extern void init_branch_prob PROTO((char *));
+
+/* In reg-stack.c */
+#ifdef BUFSIZ
+extern void reg_to_stack PROTO((rtx, FILE *));
+#endif
+extern int stack_regs_mentioned_p PROTO((rtx));
+
+/* In fold-const.c */
+extern int add_double		PROTO((HOST_WIDE_INT, HOST_WIDE_INT,
+				       HOST_WIDE_INT, HOST_WIDE_INT,
+				       HOST_WIDE_INT *, HOST_WIDE_INT *));
+extern int neg_double		PROTO((HOST_WIDE_INT, HOST_WIDE_INT,
+				       HOST_WIDE_INT *, HOST_WIDE_INT *));
+extern int mul_double		PROTO((HOST_WIDE_INT, HOST_WIDE_INT,
+				       HOST_WIDE_INT, HOST_WIDE_INT,
+				       HOST_WIDE_INT *, HOST_WIDE_INT *));
+extern void lshift_double	PROTO((HOST_WIDE_INT, HOST_WIDE_INT,
+				       HOST_WIDE_INT, int, HOST_WIDE_INT *,
+				       HOST_WIDE_INT *, int));
+extern void rshift_double	PROTO((HOST_WIDE_INT, HOST_WIDE_INT,
+				       HOST_WIDE_INT, int,
+				       HOST_WIDE_INT *, HOST_WIDE_INT *, int));
+extern void lrotate_double	PROTO((HOST_WIDE_INT, HOST_WIDE_INT,
+				       HOST_WIDE_INT, int, HOST_WIDE_INT *,
+				       HOST_WIDE_INT *));
+extern void rrotate_double	PROTO((HOST_WIDE_INT, HOST_WIDE_INT,
+				       HOST_WIDE_INT, int, HOST_WIDE_INT *,
+				       HOST_WIDE_INT *));
+
+/* In calls.c */
+/* Emit library call.  */                                           
+extern void emit_library_call PVPROTO((rtx, int, enum machine_mode,
+				       int, ...));
+extern rtx emit_library_call_value PVPROTO((rtx, rtx, int,
+					    enum machine_mode,
+					    int, ...));
+
+/* In unroll.c */
+extern int set_dominates_use PROTO((int, int, int, rtx, rtx));
+
+/* In varasm.c */
+extern void bss_section PROTO((void));
+extern int in_data_section PROTO((void));
+extern int supports_one_only PROTO((void));
+
+/* In rtl.c */
+extern void init_rtl PROTO((void));
+extern void rtx_free PROTO((rtx));
+
+/* In alias.c */
+extern int true_dependence	PROTO((rtx, enum machine_mode, rtx,
+				       int (*)(rtx)));
 extern int read_dependence	PROTO((rtx, rtx));
 extern int anti_dependence	PROTO((rtx, rtx));
 extern int output_dependence	PROTO((rtx, rtx));
 extern void init_alias_analysis	PROTO((void));
 extern void end_alias_analysis	PROTO((void));
-extern void mark_user_reg	PROTO((rtx));
-extern void mark_reg_pointer	PROTO((rtx, int));
+
+#endif /* _RTL_H */
Index: rtl.def
===================================================================
RCS file: /home/work/cvs/gnu/egcs/rtl.def,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 rtl.def
--- rtl.def	1997/08/16 03:48:43	1.1.1.1
+++ rtl.def	1997/08/18 02:01:23
@@ -21,6 +21,23 @@
 Boston, MA 02111-1307, USA.  */
 
 
+#if !defined (NEED_enum_rtx_code) || !defined(DEFINE_enum_rtx_code)
+
+#ifdef NEED_enum_rtx_code
+
+#ifndef DEFINE_enum_rtx_code
+#define DEFINE_enum_rtx_code
+#endif
+
+enum rtx_code
+{
+#define DEF_RTL_EXPR(ENUM, NAME, FORMAT, CLASS)   ENUM ,
+#endif
+
+#if !defined (RETURN) && !defined (AND)
+/* It is a kludge. We assume whoever defines RETURN or AND don't really
+   use this enum at all. */
+
 /* Expression definitions and descriptions for all targets are in this file.
    Some will not be used for some targets.
 
@@ -756,6 +773,19 @@
 /* LO_SUM is the sum of a register and the low-order bits
    of a constant expression.  */
 DEF_RTL_EXPR(LO_SUM, "lo_sum", "ee", 'o')
+
+#endif /* !RETURN && !AND */
+
+#ifdef NEED_enum_rtx_code
+#undef DEF_RTL_EXPR
+
+/* A convenient way to get a value for NUM_RTX_CODE. Assumes default
+   enum value assignment.  */
+LAST_AND_UNUSED_RTX_CODE
+};
+#endif
+
+#endif /* !NEED_enum_rtx_code || !DEFINE_enum_rtx_code */
 
 /*
 Local variables:

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~1997-08-18  5:12 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1997-08-18  3:07 The prototyping patch for rtl.h/rtl.def meissner
1997-08-18  5:12 ` Jeffrey A Law
  -- strict thread matches above, loose matches on Subject: below --
1997-08-18  2:56 meissner
1997-08-18  3:07 ` Jeffrey A Law
1997-08-18  1:03 H.J. Lu
1997-08-18  2:56 ` Jeffrey A Law

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).