This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Revised mips alignment patches.


> Date: Wed, 1 Sep 1999 16:52:27 -0400 (EDT)
> From: Gavin Romig-Koch <gavin@cygnus.com>
> Cc: egcs-patches@gcc.gnu.org, law@cygnus.com, rth@cygnus.com, davem@redhat.com
> 
> 
> This is OK.  Actually it's great, thanks.  
> 
> In the long run, I think we'll need to base the mips defaults
> on the processor, but what you've got here is a good starting
> point.
> 
> I agree with Richard about '=' vs '-'.  For the new -falign-*
> options just add the '=' versions.  For the old -f* options
> that use '-', if your willing, add '=' versions, we'll remove
> the '-' versions as soon as we think it's reasonable.

OK.  I did this for -finline-limit, and just changed -fsched-verbose
to use = always (since it's only a debugging option).

I do like this better.  It's now clear that -fsched-verbose=4
overrides -fsched-verbose=3, but -fcall-saved-r4 is independent of
-fcall-saved-r3.

The revised sparc patch is also below.

-- 
Geoffrey Keating <geoffk@cygnus.com>

===File ~/patches/cygnus/mips-branch-align-5-generic.patch===
Index: egcs/gcc/ChangeLog
0a
Thu Sep  2 13:52:53 1999  Geoffrey Keating  <geoffk@cygnus.com>

	* flags.h: New variables align_loops, align_loops_log,
	align_jumps, align_jumps_log, align_labels, align_labels_log,
	align_functions, align_functions_log.
	* toplev.c: Define them.
	(f_options): Handle -falign-* when they have no argument.
	(main): Add logic to set variables for -falign-functions,
 	-falign-jumps, -falign-labels, -falign-loops.
	Make it -fsched-verbose=<n> and -finline-limit=<n>.
	(display_help): Change help to match options.
	* final.c (LABEL_ALIGN): Default to align_labels_log.
	(LABEL_ALIGN_MAX_SKIP): Default to align_labels-1.
	(LOOP_ALIGN): Default to align_loops_log.
	(LOOP_ALIGN_MAX_SKIP): Default to align_loops-1.
	(LABEL_ALIGN_AFTER_BARRIER): Default to align_jumps_log.
	(LABEL_ALIGN_AFTER_BARRIER_MAX_SKIP): Default to align_jumps-1.
	* varasm.c (assemble_start_function): Handle align_functions.

.
Changed files:
egcs/gcc/ChangeLog
egcs/gcc/final.c
egcs/gcc/flags.h
egcs/gcc/invoke.texi
egcs/gcc/tm.texi
egcs/gcc/toplev.c
egcs/gcc/varasm.c
--- /sloth/disk0/co/egcs-mainline/egcs/gcc/final.c	Wed Sep  1 14:28:30 1999
+++ egcs/gcc/final.c	Wed Sep  1 20:39:05 1999
@@ -797,27 +797,27 @@ get_attr_length (insn)
    address mod X to one mod Y, which is Y - X.  */
 
 #ifndef LABEL_ALIGN
-#define LABEL_ALIGN(LABEL) 0
+#define LABEL_ALIGN(LABEL) align_labels_log
 #endif
 
 #ifndef LABEL_ALIGN_MAX_SKIP
-#define LABEL_ALIGN_MAX_SKIP 0
+#define LABEL_ALIGN_MAX_SKIP (align_labels-1)
 #endif
 
 #ifndef LOOP_ALIGN
-#define LOOP_ALIGN(LABEL) 0
+#define LOOP_ALIGN(LABEL) align_loops_log
 #endif
 
 #ifndef LOOP_ALIGN_MAX_SKIP
-#define LOOP_ALIGN_MAX_SKIP 0
+#define LOOP_ALIGN_MAX_SKIP (align_loops-1)
 #endif
 
 #ifndef LABEL_ALIGN_AFTER_BARRIER
-#define LABEL_ALIGN_AFTER_BARRIER(LABEL) 0
+#define LABEL_ALIGN_AFTER_BARRIER(LABEL) align_jumps_log
 #endif
 
 #ifndef LABEL_ALIGN_AFTER_BARRIER_MAX_SKIP
-#define LABEL_ALIGN_AFTER_BARRIER_MAX_SKIP 0
+#define LABEL_ALIGN_AFTER_BARRIER_MAX_SKIP (align_jumps-1)
 #endif
 
 #ifndef ADDR_VEC_ALIGN
--- /sloth/disk0/co/egcs-mainline/egcs/gcc/flags.h	Wed Sep  1 14:28:30 1999
+++ egcs/gcc/flags.h	Wed Sep  1 20:39:05 1999
@@ -507,6 +507,20 @@ extern int g_switch_set;
 
 extern int inline_max_insns;
 
+/* Values of the -falign-* flags: how much to align labels in code. 
+   0 means `use default', 1 means `don't align'.  
+   For each variable, there is an _log variant which is the power
+   of two not less than the variable, for .align output.  */
+
+extern int align_loops;
+extern int align_loops_log;
+extern int align_jumps;
+extern int align_jumps_log;
+extern int align_labels;
+extern int align_labels_log;
+extern int align_functions;
+extern int align_functions_log;
+
 /* Nonzero if we dump in VCG format, not plain text.  */
 extern int dump_for_graph;
 
--- /sloth/disk0/co/egcs-mainline/egcs/gcc/invoke.texi	Tue Aug 31 17:20:48 1999
+++ egcs/gcc/invoke.texi	Thu Sep  2 13:46:05 1999
@@ -150,18 +150,20 @@ in the following sections.
 @item Optimization Options
 @xref{Optimize Options,,Options that Control Optimization}.
 @smallexample
--fbranch-probabilities  -foptimize-register-moves
+-falign-functions=@var{n}  -falign-labels=@var{n}  -falign-loops=@var{n} 
+-falign-jumps=@var{n}  -fbranch-probabilities  
 -fcaller-saves  -fcse-follow-jumps  -fcse-skip-blocks
 -fdelayed-branch   -fexpensive-optimizations
 -ffast-math  -ffloat-store  -fforce-addr  -fforce-mem
--fdata-sections -ffunction-sections  -fgcse 
--finline-functions -finline-limit-@var{n} -fkeep-inline-functions
--fno-default-inline -fno-defer-pop  -fno-function-cse
--fno-inline  -fno-peephole  -fomit-frame-pointer -fregmove
--frerun-cse-after-loop  -frerun-loop-opt -fschedule-insns
--fschedule-insns2  -fstrength-reduce  -fthread-jumps
--funroll-all-loops  -funroll-loops
--fmove-all-movables  -freduce-all-givs -fstrict-aliasing
+-fdata-sections  -ffunction-sections  -fgcse 
+-finline-functions  -finline-limit=@var{n}  -fkeep-inline-functions
+-fmove-all-movables  -fno-default-inline  -fno-defer-pop
+-fno-function-cse  -fno-inline  -fno-peephole
+-fomit-frame-pointer  -foptimize-register-moves  -fregmove
+-frerun-cse-after-loop  -frerun-loop-opt  -freduce-all-givs
+-fschedule-insns  -fschedule-insns2  -fstrength-reduce
+-fstrict-aliasing  -fthread-jumps  -funroll-all-loops
+-funroll-loops
 -O  -O0  -O1  -O2  -O3 -Os
 @end smallexample
 
@@ -223,8 +225,6 @@ in the following sections.
 -mcpu=@var{cpu type}
 -mtune=@var{cpu type}
 -mcmodel=@var{code model}
--malign-jumps=@var{num}  -malign-loops=@var{num}
--malign-functions=@var{num}
 -m32  -m64
 -mapp-regs  -mbroken-saverestore  -mcypress  -mepilogue
 -mflat  -mfpu  -mhard-float  -mhard-quad-float
@@ -2336,7 +2336,7 @@ If all calls to a given function are int
 declared @code{static}, then the function is normally not output as
 assembler code in its own right.
 
-@item -finline-limit-@var{n}
+@item -finline-limit=@var{n}
 By default, gcc limits the size of functions that can be inlined.  This flag
 allows the control of this limit for functions that are explicitly marked as
 inline (ie marked with the inline keyword or defined within the class 
@@ -2602,6 +2602,53 @@ allowed to alias.  For an example, see t
 @code{c_get_alias_set}.
 @end ifset
 
+@item -falign-functions
+@itemx -falign-functions=@var{n}
+Align the start of functions to the next power-of-two greater than
+@var{n}, skipping up to @var{n} bytes.  For instance,
+@samp{-falign-functions=32} aligns functions to the next 32-byte
+boundary, but @samp{-falign-functions=24} would align to the next
+32-byte boundary only if this can be done by skipping 23 bytes or less.
+
+@samp{-fno-align-functions} and @samp{-falign-functions=1} are
+equivalent and mean that functions will not be aligned.
+
+Some assemblers only support this flag when @var{n} is a power of two;
+in that case, it is rounded up.
+
+If @var{n} is not specified, use a machine-dependent default.
+
+@item -falign-labels
+@itemx -falign-labels=@var{n}
+Align all branch targets to a power-of-two boundary, skipping up to
+@var{n} bytes like @samp{-falign-functions}.  This option can easily
+make code slower, because it must insert dummy operations for when the
+branch target is reached in the usual flow of the code.
+
+If @samp{-falign-loops} or @samp{-falign-jumps} are applicable and
+are greater than this value, then their values are used instead.
+
+If @var{n} is not specified, use a machine-dependent default which is
+very likely to be @samp{1}, meaning no alignment.
+
+@item -falign-loops
+@itemx -falign-loops=@var{n}
+Align loops to a power-of-two boundary, skipping up to @var{n} bytes
+like @samp{-falign-functions}.  The hope is that the loop will be
+executed many times, which will make up for any execution of the dummy
+operations.
+
+If @var{n} is not specified, use a machine-dependent default.
+
+@item -falign-jumps
+@itemx -falign-jumps=@var{n}
+Align branch targets to a power-of-two boundary, for branch targets
+where the targets can only be reached by jumping, skipping up to @var{n}
+bytes like @samp{-falign-functions}.  In this case, no dummy operations
+need be executed.
+
+If @var{n} is not specified, use a machine-dependent default.
+
 @end table
 
 @node Preprocessor Options
@@ -3893,19 +3940,6 @@ The same values for @samp{-mcpu=}@var{cp
 select a particular cpu implementation: @samp{cypress}, @samp{supersparc},
 @samp{hypersparc}, @samp{f930}, @samp{f934}, @samp{sparclite86x},
 @samp{tsc701}, @samp{ultrasparc}.
-
-@item -malign-loops=@var{num}
-Align loops to a 2 raised to a @var{num} byte boundary.  If
-@samp{-malign-loops} is not specified, the default is 2.
-
-@item -malign-jumps=@var{num}
-Align instructions that are only jumped to to a 2 raised to a @var{num}
-byte boundary.  If @samp{-malign-jumps} is not specified, the default is 2.
-
-@item -malign-functions=@var{num}
-Align the start of functions to a 2 raised to @var{num} byte boundary.
-If @samp{-malign-functions} is not specified, the default is 2 if compiling
-for 32 bit sparc, and 5 if compiling for 64 bit sparc.
 
 @end table
 
--- /sloth/disk0/co/egcs-mainline/egcs/gcc/tm.texi	Tue Aug 31 17:21:00 1999
+++ egcs/gcc/tm.texi	Wed Sep  1 20:39:06 1999
@@ -6474,6 +6474,18 @@ This macro need not be defined if you do
 to be done at such a time.  Most machine descriptions do not currently
 define the macro.
 
+Unless it's necessary to inspect the @var{label} parameter, it is better
+to set the variable @var{align_jumps} in the target's
+@code{OVERRIDE_OPTIONS}.  Otherwise, you should try to honour the user's
+selection in @var{align_jumps} in a @code{LABEL_ALIGN_AFTER_BARRIER}
+implementation.
+
+@findex LABEL_ALIGN_AFTER_BARRIER_MAX_SKIP
+@item LABEL_ALIGN_AFTER_BARRIER_MAX_SKIP
+The maximum number of bytes to skip when applying 
+@code{LABEL_ALIGN_AFTER_BARRIER}.  This works only if
+@code{ASM_OUTPUT_MAX_SKIP_ALIGN} is defined.
+
 @findex LOOP_ALIGN
 @item LOOP_ALIGN (@var{label})
 The alignment (log base 2) to put in front of @var{label}, which follows
@@ -6483,11 +6495,31 @@ This macro need not be defined if you do
 to be done at such a time.  Most machine descriptions do not currently
 define the macro.
 
+Unless it's necessary to inspect the @var{label} parameter, it is better
+to set the variable @var{align_loops} in the target's
+@code{OVERRIDE_OPTIONS}.  Otherwise, you should try to honour the user's
+selection in @var{align_loops} in a @code{LOOP_ALIGN} implementation.
+
+@findex LOOP_ALIGN_MAX_SKIP
+@item LOOP_ALIGN_MAX_SKIP
+The maximum number of bytes to skip when applying @code{LOOP_ALIGN}.
+This works only if @code{ASM_OUTPUT_MAX_SKIP_ALIGN} is defined.
+
 @findex LABEL_ALIGN
 @item LABEL_ALIGN (@var{label})
 The alignment (log base 2) to put in front of @var{label}.
 If LABEL_ALIGN_AFTER_BARRIER / LOOP_ALIGN specify a different alignment,
 the maximum of the specified values is used.
+
+Unless it's necessary to inspect the @var{label} parameter, it is better
+to set the variable @var{align_labels} in the target's
+@code{OVERRIDE_OPTIONS}.  Otherwise, you should try to honour the user's
+selection in @var{align_labels} in a @code{LABEL_ALIGN} implementation.
+
+@findex LABEL_ALIGN_MAX_SKIP
+@item LABEL_ALIGN_MAX_SKIP
+The maximum number of bytes to skip when applying @code{LABEL_ALIGN}.
+This works only if @code{ASM_OUTPUT_MAX_SKIP_ALIGN} is defined.
 
 @findex ASM_OUTPUT_SKIP
 @item ASM_OUTPUT_SKIP (@var{stream}, @var{nbytes})
--- /sloth/disk0/co/egcs-mainline/egcs/gcc/toplev.c	Wed Sep  1 14:28:43 1999
+++ egcs/gcc/toplev.c	Wed Sep  1 21:04:25 1999
@@ -765,6 +765,20 @@ int flag_no_ident = 0;
 /* This will perform a peephole pass before sched2. */
 int flag_peephole2 = 0;
 
+/* Values of the -falign-* flags: how much to align labels in code. 
+   0 means `use default', 1 means `don't align'.  
+   For each variable, there is an _log variant which is the power
+   of two not less than the variable, for .align output.  */
+
+int align_loops;
+int align_loops_log;
+int align_jumps;
+int align_jumps_log;
+int align_labels;
+int align_labels_log;
+int align_functions;
+int align_functions_log;
+
 /* Table of supported debugging formats.  */
 static struct
 {
@@ -959,6 +973,14 @@ lang_independent_options f_options[] =
    "Assume arguments do not alias each other or globals" },
   {"strict-aliasing", &flag_strict_aliasing, 1,
    "Assume strict aliasing rules apply" },
+  {"align-loops", &align_loops, 0, 
+   "Align the start of loops" },
+  {"align-jumps", &align_jumps, 0, 
+   "Align labels which are only reached by jumping" },
+  {"align-labels", &align_labels, 0,
+   "Align all labels" },
+  {"align-functions", &align_functions, 0,
+   "Align the start of functions" },
   {"check-memory-usage", &flag_check_memory_usage, 1,
    "Generate code to check every memory access" },
   {"prefix-function-name", &flag_prefix_function_name, 1,
@@ -4494,7 +4516,7 @@ display_help ()
   printf ("  -ffixed-<register>      Mark <register> as being unavailable to the compiler\n");
   printf ("  -fcall-used-<register>  Mark <register> as being corrupted by function calls\n");
   printf ("  -fcall-saved-<register> Mark <register> as being preserved across functions\n");
-  printf ("  -finline-limit-<number> Limits the size of inlined functions to <number>\n");
+  printf ("  -finline-limit=<number> Limits the size of inlined functions to <number>\n");
 
   for (i = NUM_ELEM (f_options); i--;)
     {
@@ -4546,7 +4568,7 @@ display_help ()
   printf ("  -d[letters]             Enable dumps from specific passes of the compiler\n");
   printf ("  -dumpbase <file>        Base name to be used for dumps from specific passes\n");
 #if defined INSN_SCHEDULING
-  printf ("  -sched-verbose-<number> Set the verbosity level of the scheduler\n");
+  printf ("  -sched-verbose=<number> Set the verbosity level of the scheduler\n");
 #endif
   printf ("  --help                  Display this information\n");
 
@@ -4865,6 +4887,14 @@ main (argc, argv)
       flag_inline_functions = 1;
     }
 
+  if (optimize < 2 || optimize_size)
+    {
+      align_loops = 1;
+      align_jumps = 1;
+      align_labels = 1;
+      align_functions = 1;
+    }
+
   /* Initialize target_flags before OPTIMIZATION_OPTIONS so the latter can
      modify it.  */
   target_flags = 0;
@@ -5074,11 +5104,12 @@ main (argc, argv)
 
 	      if (found)
 		;
-	      else if (!strncmp (p, "inline-limit-", 13))
+	      else if (!strncmp (p, "inline-limit-", 13)
+		       || !strncmp (p, "inline-limit=", 13))
 	        inline_max_insns =
 		  read_integral_parameter (p + 13, p - 2, inline_max_insns);
 #ifdef INSN_SCHEDULING
-	      else if (!strncmp (p, "sched-verbose-",14))
+	      else if (!strncmp (p, "sched-verbose=",14))
 		fix_sched_param("verbose",&p[14]);
 #endif
 	      else if (!strncmp (p, "fixed-", 6))
@@ -5087,6 +5118,18 @@ main (argc, argv)
 		fix_register (&p[10], 0, 1);
 	      else if (!strncmp (p, "call-saved-", 11))
 		fix_register (&p[11], 0, 0);
+	      else if (!strncmp (p, "align-loops=", 12))
+		align_loops = read_integral_parameter (p + 12, p - 2,
+						       align_loops);
+	      else if (!strncmp (p, "align-functions=", 16))
+		align_functions = read_integral_parameter (p + 16, p - 2,
+						       align_functions);
+	      else if (!strncmp (p, "align-jumps=", 12))
+		align_jumps = read_integral_parameter (p + 12, p - 2,
+						       align_jumps);
+	      else if (!strncmp (p, "align-labels=", 13))
+		align_labels = read_integral_parameter (p + 13, p - 2,
+							align_labels);
 	      else
 		error ("Invalid option `%s'", argv[i]);
 	    }
@@ -5373,6 +5416,17 @@ main (argc, argv)
 #endif
     }
 
+  /* Set up the align_*_log variables, defaulting them to 1 if they
+     were still unset.  */
+  if (align_loops <= 0) align_loops = 1;
+  align_loops_log = floor_log2 (align_loops*2-1);
+  if (align_jumps <= 0) align_jumps = 1;
+  align_jumps_log = floor_log2 (align_jumps*2-1);
+  if (align_labels <= 0) align_labels = 1;
+  align_labels_log = floor_log2 (align_labels*2-1);
+  if (align_functions <= 0) align_functions = 1;
+  align_functions_log = floor_log2 (align_functions*2-1);
+  
   if (profile_block_flag == 3)
     {
       warning ("`-ax' and `-a' are conflicting options. `-a' ignored.");
--- /sloth/disk0/co/egcs-mainline/egcs/gcc/varasm.c	Wed Sep  1 14:28:44 1999
+++ egcs/gcc/varasm.c	Wed Sep  1 20:39:06 1999
@@ -979,6 +979,19 @@ assemble_start_function (decl, fnname)
   if (align > 0)
     ASM_OUTPUT_ALIGN (asm_out_file, align);
 
+  /* Handle a user-specified function alignment.
+     Note that we still need to align to FUNCTION_BOUNDARY, as above,
+     because ASM_OUTPUT_MAX_SKIP_ALIGN might not do any alignment at all.  */
+  if (align_functions_log > align)
+    {
+#ifdef ASM_OUTPUT_MAX_SKIP_ALIGN
+      ASM_OUTPUT_MAX_SKIP_ALIGN (asm_out_file, 
+				 align_functions_log, align_functions-1);
+#else
+      ASM_OUTPUT_ALIGN (asm_out_file, align_functions_log);
+#endif
+    }
+
 #ifdef ASM_OUTPUT_FUNCTION_PREFIX
   ASM_OUTPUT_FUNCTION_PREFIX (asm_out_file, fnname);
 #endif
============================================================

===File ~/patches/cygnus/mips-branch-align-5-sparc.patch====
Index: egcs/gcc/ChangeLog
0a
Thu Sep  2 13:52:53 1999  Geoffrey Keating  <geoffk@cygnus.com>

	* config/sparc/sparc.h: Don't declare sparc_align_*.
	Don't provide LABEL_ALIGN_AFTER_BARRIER or LOOP_ALIGN.
	(DEFAULT_SPARC_ALIGN_FUNCS): Delete; take functionality into
 	sparc.c.
	(FUNCTION_BOUNDARY): Fix incorrect use---it's not just a request,
	it's a promise.
	* config/sparc/sparc.c: Delete sparc_align_loops,
 	sparc_align_jumps, sparc_align_funcs and the corresponding string
	variables.
	(sparc_override_options): Default align_functions on ultrasparc.
	Delete -malign-* handling.

.
Changed files:
egcs/gcc/ChangeLog
egcs/gcc/config/sparc/sparc.c
egcs/gcc/config/sparc/sparc.h
--- /sloth/disk0/co/egcs-mainline/egcs/gcc/config/sparc/sparc.c	Tue Aug 31 17:21:17 1999
+++ egcs/gcc/config/sparc/sparc.c	Wed Sep  1 20:41:23 1999
@@ -132,16 +132,6 @@ const char *sparc_cmodel_string;
 /* Parsed value.  */
 enum cmodel sparc_cmodel;
 
-/* Record alignment options as passed by user.  */
-const char *sparc_align_loops_string;
-const char *sparc_align_jumps_string;
-const char *sparc_align_funcs_string;
-
-/* Parsed values, as a power of two.  */
-int sparc_align_loops;
-int sparc_align_jumps;
-int sparc_align_funcs;
-
 char sparc_hard_reg_printed[8];
 
 struct sparc_cpu_select sparc_select[] =
@@ -325,46 +315,9 @@ sparc_override_options ()
   if (! TARGET_FPU)
     target_flags &= ~MASK_VIS;
 
-  /* Validate -malign-loops= value, or provide default.  */
-  if (sparc_align_loops_string)
-    {
-      sparc_align_loops = exact_log2 (atoi (sparc_align_loops_string));
-      if (sparc_align_loops < 2 || sparc_align_loops > 7)
-	fatal ("-malign-loops=%s is not between 4 and 128 or is not a power of two",
-	       sparc_align_loops_string);
-    }
-  else
-    {
-      /* ??? This relies on ASM_OUTPUT_ALIGN to not emit the alignment if
-	 its 0.  This sounds a bit kludgey.  */
-      sparc_align_loops = 0;
-    }
-
-  /* Validate -malign-jumps= value, or provide default.  */
-  if (sparc_align_jumps_string)
-    {
-      sparc_align_jumps = exact_log2 (atoi (sparc_align_jumps_string));
-      if (sparc_align_jumps < 2 || sparc_align_loops > 7)
-	fatal ("-malign-jumps=%s is not between 4 and 128 or is not a power of two",
-	       sparc_align_jumps_string);
-    }
-  else
-    {
-      /* ??? This relies on ASM_OUTPUT_ALIGN to not emit the alignment if
-	 its 0.  This sounds a bit kludgey.  */
-      sparc_align_jumps = 0;
-    }
-
-  /* Validate -malign-functions= value, or provide default. */
-  if (sparc_align_funcs_string)
-    {
-      sparc_align_funcs = exact_log2 (atoi (sparc_align_funcs_string));
-      if (sparc_align_funcs < 2 || sparc_align_loops > 7)
-	fatal ("-malign-functions=%s is not between 4 and 128 or is not a power of two",
-	       sparc_align_funcs_string);
-    }
-  else
-    sparc_align_funcs = DEFAULT_SPARC_ALIGN_FUNCS;
+  /* Supply a default value for align_functions.  */
+  if (align_functions == 0 && sparc_cpu == PROCESSOR_ULTRASPARC)
+    align_functions = 32;
 
   /* Validate PCC_STRUCT_RETURN.  */
   if (flag_pcc_struct_return == DEFAULT_PCC_STRUCT_RETURN)
--- /sloth/disk0/co/egcs-mainline/egcs/gcc/config/sparc/sparc.h	Tue Aug 31 17:21:17 1999
+++ egcs/gcc/config/sparc/sparc.h	Wed Sep  1 20:42:53 1999
@@ -663,9 +663,6 @@ extern enum processor_type sparc_cpu;
   { "cpu=",  &sparc_select[1].string, "Use features of and schedule code for given CPU" }, \
   { "tune=", &sparc_select[2].string, "Schedule code for given CPU" }, \
   { "cmodel=", &sparc_cmodel_string, "Use given Sparc code model" }, \
-  { "align-loops=",	&sparc_align_loops_string, "Loop code aligned to this power of 2" }, \
-  { "align-jumps=",	&sparc_align_jumps_string, "Jump targets are aligned to this power of 2" }, \
-  { "align-functions=",	&sparc_align_funcs_string, "Function starts are aligned to this power of 2" }, \
   SUBTARGET_OPTIONS 					\
 }
 
@@ -682,18 +679,6 @@ struct sparc_cpu_select
 };
 
 extern struct sparc_cpu_select sparc_select[];
-
-/* Variables to record values the user passes.  */
-extern const char *sparc_align_loops_string;
-extern const char *sparc_align_jumps_string;
-extern const char *sparc_align_funcs_string;
-/* Parsed values as a power of two.  */
-extern int sparc_align_loops;
-extern int sparc_align_jumps;
-extern int sparc_align_funcs;
-
-#define DEFAULT_SPARC_ALIGN_FUNCS \
-(sparc_cpu == PROCESSOR_ULTRASPARC ? 5 : 2)
 
 /* target machine storage layout */
 
@@ -799,7 +784,7 @@ if (TARGET_ARCH64				\
   (TARGET_ARCH64 ? (((LOC)+15) & ~15) : (((LOC)+7) & ~7))
 
 /* Allocation boundary (in *bits*) for the code of a function.  */
-#define FUNCTION_BOUNDARY (1 << (sparc_align_funcs + 3))
+#define FUNCTION_BOUNDARY 32
 
 /* Alignment of field after `int : 0' in a structure.  */
 #define EMPTY_FIELD_BOUNDARY (TARGET_ARCH64 ? 64 : 32)
@@ -3038,10 +3023,6 @@ do {									\
 #define ASM_OUTPUT_ALIGN(FILE,LOG)	\
   if ((LOG) != 0)			\
     fprintf (FILE, "\t.align %d\n", (1<<(LOG)))
-
-#define LABEL_ALIGN_AFTER_BARRIER(LABEL) (sparc_align_jumps)
-
-#define LOOP_ALIGN(LABEL) (sparc_align_loops)
 
 #define ASM_OUTPUT_SKIP(FILE,SIZE)  \
   fprintf (FILE, "\t.skip %u\n", (SIZE))
============================================================


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]