summaryrefslogtreecommitdiff
path: root/gnu/usr.bin/gcc/f/gbe
diff options
context:
space:
mode:
authorJason Downs <downsj@cvs.openbsd.org>1996-07-27 02:52:39 +0000
committerJason Downs <downsj@cvs.openbsd.org>1996-07-27 02:52:39 +0000
commit978f1b8e18efed5647513070f53f269049feb83c (patch)
treece00da25c18405cf3e6847ad3d72d14d363e98b9 /gnu/usr.bin/gcc/f/gbe
parente2ce9843b6a157aadf0700edefbe6d916cb98c57 (diff)
Initial integration of G77.
Please do a make cleandir before rebuilding gcc!
Diffstat (limited to 'gnu/usr.bin/gcc/f/gbe')
-rw-r--r--gnu/usr.bin/gcc/f/gbe/2.6.3.diff186
-rw-r--r--gnu/usr.bin/gcc/f/gbe/2.7.0.diff70
-rw-r--r--gnu/usr.bin/gcc/f/gbe/2.7.1.diff6
-rw-r--r--gnu/usr.bin/gcc/f/gbe/2.7.2.diff801
-rw-r--r--gnu/usr.bin/gcc/f/gbe/README33
5 files changed, 1096 insertions, 0 deletions
diff --git a/gnu/usr.bin/gcc/f/gbe/2.6.3.diff b/gnu/usr.bin/gcc/f/gbe/2.6.3.diff
new file mode 100644
index 00000000000..8ceee52de91
--- /dev/null
+++ b/gnu/usr.bin/gcc/f/gbe/2.6.3.diff
@@ -0,0 +1,186 @@
+*** gcc-2.6.3/Makefile.in Fri Dec 2 16:03:09 1994
+--- g77-2.6.3-0.5.16/Makefile.in Thu Aug 10 04:01:02 1995
+*************** ENQUIRE_CFLAGS = -DNO_MEM -DNO_LONG_DOUB
+*** 118,121 ****
+--- 118,126 ----
+ ENQUIRE_LDFLAGS = $(LDFLAGS)
+
++ # NEXT FOUR LINES ADDED BY g77 PATCH ONLY TO ENABLE COMPATIBILITY WITH 2.7.x.
++ # Sed command to transform gcc to installed name. Overwritten by configure.
++ program_transform_name = -e s,x,x,
++ program_transform_cross_name = -e s,^,$(target)-,
++
+ # Tools to use when building a cross-compiler.
+ # These are used because `configure' appends `cross-make'
+*************** infodir = $(prefix)/info
+*** 176,179 ****
+--- 181,188 ----
+ # Extension (if any) to put in installed man-page filename.
+ manext = .1
++ # NEXT THREE LINES ADDED BY g77 PATCH ONLY TO ENABLE COMPATIBILITY WITH 2.7.x.
++ objext = .o
++ exeext =
++
+ # Directory in which to put man pages.
+ mandir = $(prefix)/man/man1
+*************** c-common.o : c-common.c $(CONFIG_H) $(TR
+*** 1010,1014 ****
+ # Language-independent files.
+
+! gcc.o: gcc.c $(CONFIG_H) multilib.h config.status
+ $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
+ -DSTANDARD_STARTFILE_PREFIX=\"$(libdir)/\" \
+--- 1019,1023 ----
+ # Language-independent files.
+
+! gcc.o: gcc.c $(CONFIG_H) multilib.h config.status f/lang-specs.h
+ $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
+ -DSTANDARD_STARTFILE_PREFIX=\"$(libdir)/\" \
+*************** stor-layout.o : stor-layout.c $(CONFIG_H
+*** 1032,1036 ****
+ fold-const.o : fold-const.c $(CONFIG_H) $(TREE_H) flags.h
+ toplev.o : toplev.c $(CONFIG_H) $(TREE_H) $(RTL_H) flags.h input.h \
+! insn-attr.h xcoffout.h defaults.h
+ $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
+ $(MAYBE_TARGET_DEFAULT) $(MAYBE_USE_COLLECT2) \
+--- 1041,1045 ----
+ fold-const.o : fold-const.c $(CONFIG_H) $(TREE_H) flags.h
+ toplev.o : toplev.c $(CONFIG_H) $(TREE_H) $(RTL_H) flags.h input.h \
+! insn-attr.h xcoffout.h defaults.h f/lang-options.h
+ $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
+ $(MAYBE_TARGET_DEFAULT) $(MAYBE_USE_COLLECT2) \
+*** gcc-2.6.3/fold-const.c Fri Dec 2 16:03:43 1994
+--- g77-2.6.3-0.5.16/fold-const.c Thu Aug 10 04:01:03 1995
+*************** eval_subst (arg, old0, new0, old1, new1)
+*** 1938,1943 ****
+--- 1938,1948 ----
+ switch (code)
+ {
++ /* ??? Disable this since the SAVE_EXPR might already be in use outside
++ the expression. There may be no way to make this work, but it needs
++ to be looked at again for 2.6. */
++ #if 0
+ case SAVE_EXPR:
+ return eval_subst (TREE_OPERAND (arg, 0), old0, new0, old1, new1);
++ #endif
+
+ case COMPOUND_EXPR:
+*************** fold (expr)
+*** 3953,3958 ****
+--- 3958,3968 ----
+ tree xarg0 = arg0;
+
++ /* ??? Disable this since the SAVE_EXPR might already be in use outside
++ the expression. There may be no way to make this work, but it needs
++ to be looked at again for 2.6. */
++ #if 0
+ if (TREE_CODE (xarg0) == SAVE_EXPR)
+ have_save_expr = 1, xarg0 = TREE_OPERAND (xarg0, 0);
++ #endif
+
+ STRIP_NOPS (xarg0);
+*************** fold (expr)
+*** 3971,3976 ****
+--- 3981,3991 ----
+ }
+
++ /* ??? Disable this since the SAVE_EXPR might already be in use outside
++ the expression. There may be no way to make this work, but it needs
++ to be looked at again for 2.6. */
++ #if 0
+ if (TREE_CODE (xarg0) == SAVE_EXPR)
+ have_save_expr = 1, xarg0 = TREE_OPERAND (xarg0, 0);
++ #endif
+
+ STRIP_NOPS (xarg0);
+*** gcc-2.6.3/gcc.c Mon Nov 7 11:01:43 1994
+--- g77-2.6.3-0.5.16/gcc.c Thu Aug 10 04:01:03 1995
+*************** static struct compiler default_compilers
+*** 712,715 ****
+--- 712,716 ----
+ %{c:%W{o*}%{!o*:-o %w%b.o}}\
+ %{!c:-o %d%w%u.o} %{!pipe:%g.s} %A\n}}}}}} "},
++ #include "f/lang-specs.h"
+ /* Mark end of table */
+ {0, 0}
+*** gcc-2.6.3/obstack.c Sat Nov 12 06:40:02 1994
+--- g77-2.6.3-0.5.16/obstack.c Thu Aug 10 04:01:04 1995
+*************** Foundation, 675 Mass Ave, Cambridge, MA
+*** 27,33 ****
+ (especially if it is a shared library). Rather than having every GNU
+ program understand `configure --with-gnu-libc' and omit the object files,
+! it is simpler to just do this in the source for each such file. */
+
+! #if defined (_LIBC) || !defined (__GNU_LIBRARY__)
+
+
+--- 27,40 ----
+ (especially if it is a shared library). Rather than having every GNU
+ program understand `configure --with-gnu-libc' and omit the object files,
+! it is simpler to just do this in the source for each such file.
+
+! Actually, don't comment this code out after all. Else, unless the
+! inlining set up by obstack.h also is commented out (and replaced by
+! including the system's <obstack.h>), bugs will result on a system
+! with an older obstack (with older and different inlining) installed.
+! And for now it doesn't seem worth having obstack.h #include <stdio.h>,
+! as above, just to get __GNU_LIBRARY__ defined, for example. */
+!
+! #if defined (_LIBC) || !defined (__GNU_LIBRARY__) || 1
+
+
+*** gcc-2.6.3/stor-layout.c Thu Oct 20 09:41:02 1994
+--- g77-2.6.3-0.5.16/stor-layout.c Thu Aug 10 04:01:04 1995
+*************** get_pending_sizes ()
+*** 80,83 ****
+--- 80,93 ----
+ }
+
++ void
++ put_pending_sizes (chain)
++ tree chain;
++ {
++ if (pending_sizes)
++ abort ();
++
++ pending_sizes = chain;
++ }
++
+ /* Given a size SIZE that isn't constant, return a SAVE_EXPR
+ to serve as the actual size-expression for a type or decl. */
+*** gcc-2.6.3/toplev.c Tue Oct 25 16:09:12 1994
+--- g77-2.6.3-0.5.16/toplev.c Thu Aug 10 04:01:05 1995
+*************** char *lang_options[] =
+*** 725,728 ****
+--- 725,730 ----
+ "-Wno-protocol",
+
++ #include "f/lang-options.h"
++
+ /* This is for GNAT and is temporary. */
+ "-gnat",
+*** gcc-2.6.3/tree.c Fri Dec 2 16:03:49 1994
+--- g77-2.6.3-0.5.16/tree.c Thu Aug 10 04:01:05 1995
+*************** save_expr (expr)
+*** 1984,1988 ****
+
+ if (TREE_CONSTANT (t) || (TREE_READONLY (t) && ! TREE_SIDE_EFFECTS (t))
+! || TREE_CODE (t) == SAVE_EXPR)
+ return t;
+
+--- 1984,1988 ----
+
+ if (TREE_CONSTANT (t) || (TREE_READONLY (t) && ! TREE_SIDE_EFFECTS (t))
+! || TREE_CODE (t) == SAVE_EXPR || TREE_CODE (t) == ERROR_MARK)
+ return t;
+
+*** gcc-2.6.3/tree.h Thu Sep 8 14:25:41 1994
+--- g77-2.6.3-0.5.16/tree.h Thu Aug 10 04:01:06 1995
+*************** extern tree size_int PROTO((unsigned))
+*** 1245,1248 ****
+--- 1245,1249 ----
+ extern tree round_up PROTO((tree, int));
+ extern tree get_pending_sizes PROTO((void));
++ extern void put_pending_sizes PROTO((tree));
+
+ /* Type for sizes of data-type. */
diff --git a/gnu/usr.bin/gcc/f/gbe/2.7.0.diff b/gnu/usr.bin/gcc/f/gbe/2.7.0.diff
new file mode 100644
index 00000000000..5144d81128c
--- /dev/null
+++ b/gnu/usr.bin/gcc/f/gbe/2.7.0.diff
@@ -0,0 +1,70 @@
+*** gcc-2.7.0/obstack.c Thu Jun 15 18:12:08 1995
+--- g77-2.7.0-0.5.16/obstack.c Thu Aug 10 04:06:51 1995
+*************** Foundation, 675 Mass Ave, Cambridge, MA
+*** 27,33 ****
+ (especially if it is a shared library). Rather than having every GNU
+ program understand `configure --with-gnu-libc' and omit the object files,
+! it is simpler to just do this in the source for each such file. */
+
+! #if defined (_LIBC) || !defined (__GNU_LIBRARY__)
+
+
+--- 27,40 ----
+ (especially if it is a shared library). Rather than having every GNU
+ program understand `configure --with-gnu-libc' and omit the object files,
+! it is simpler to just do this in the source for each such file.
+
+! Actually, don't comment this code out after all. Else, unless the
+! inlining set up by obstack.h also is commented out (and replaced by
+! including the system's <obstack.h>), bugs will result on a system
+! with an older obstack (with older and different inlining) installed.
+! And for now it doesn't seem worth having obstack.h #include <stdio.h>,
+! as above, just to get __GNU_LIBRARY__ defined, for example. */
+!
+! #if defined (_LIBC) || !defined (__GNU_LIBRARY__) || 1
+
+
+*** gcc-2.7.0/stor-layout.c Thu Jun 15 08:08:47 1995
+--- g77-2.7.0-0.5.16/stor-layout.c Thu Aug 10 14:00:15 1995
+*************** get_pending_sizes ()
+*** 82,85 ****
+--- 82,95 ----
+ }
+
++ void
++ put_pending_sizes (chain)
++ tree chain;
++ {
++ if (pending_sizes)
++ abort ();
++
++ pending_sizes = chain;
++ }
++
+ /* Given a size SIZE that may not be a constant, return a SAVE_EXPR
+ to serve as the actual size-expression for a type or decl. */
+*** gcc-2.7.0/tree.c Thu Jun 15 08:10:23 1995
+--- g77-2.7.0-0.5.16/tree.c Mon Aug 28 12:21:15 1995
+*************** save_expr (expr)
+*** 2111,2115 ****
+
+ if (TREE_CONSTANT (t) || (TREE_READONLY (t) && ! TREE_SIDE_EFFECTS (t))
+! || TREE_CODE (t) == SAVE_EXPR)
+ return t;
+
+--- 2111,2115 ----
+
+ if (TREE_CONSTANT (t) || (TREE_READONLY (t) && ! TREE_SIDE_EFFECTS (t))
+! || TREE_CODE (t) == SAVE_EXPR || TREE_CODE (t) == ERROR_MARK)
+ return t;
+
+*** gcc-2.7.0/tree.h Thu Jun 15 08:10:49 1995
+--- g77-2.7.0-0.5.16/tree.h Thu Aug 10 04:06:52 1995
+*************** extern tree size_int PROTO((unsigned H
+*** 1290,1293 ****
+--- 1290,1294 ----
+ extern tree round_up PROTO((tree, int));
+ extern tree get_pending_sizes PROTO((void));
++ extern void put_pending_sizes PROTO((tree));
+
+ /* Type for sizes of data-type. */
diff --git a/gnu/usr.bin/gcc/f/gbe/2.7.1.diff b/gnu/usr.bin/gcc/f/gbe/2.7.1.diff
new file mode 100644
index 00000000000..e7bd45621e3
--- /dev/null
+++ b/gnu/usr.bin/gcc/f/gbe/2.7.1.diff
@@ -0,0 +1,6 @@
+1996-03-07
+
+This file would have been 124K long in the g77-0.5.18 distribution,
+so, since 2.7.2.diff is available, this file has been omitted.
+If you insist on using gcc-2.7.1 with g77-0.5.18, you should be
+okay, except you won't get some of the nifty new optimizations.
diff --git a/gnu/usr.bin/gcc/f/gbe/2.7.2.diff b/gnu/usr.bin/gcc/f/gbe/2.7.2.diff
new file mode 100644
index 00000000000..4b27bae56d5
--- /dev/null
+++ b/gnu/usr.bin/gcc/f/gbe/2.7.2.diff
@@ -0,0 +1,801 @@
+*** gcc-2.7.2/flags.h Thu Jun 15 07:34:11 1995
+--- g77-new/flags.h Wed Mar 6 10:32:55 1996
+*************** extern int flag_unroll_loops;
+*** 204,207 ****
+--- 204,221 ----
+ extern int flag_unroll_all_loops;
+
++ /* Nonzero forces all invariant computations in loops to be moved
++ outside the loop. */
++
++ extern int flag_move_all_movables;
++
++ /* Nonzero forces all general induction variables in loops to be
++ strength reduced. */
++
++ extern int flag_reduce_all_givs;
++
++ /* Nonzero gets another run of loop_optimize performed. */
++
++ extern int flag_rerun_loop_opt;
++
+ /* Nonzero for -fcse-follow-jumps:
+ have cse follow jumps to do a more extensive job. */
+*** gcc-2.7.2/gcc.info Wed Mar 6 10:23:38 1996
+--- g77-new/gcc.info Fri Mar 15 02:17:17 1996
+*************** Indirect:
+*** 34,60 ****
+ gcc.info-1: 1382
+ gcc.info-2: 42854
+! gcc.info-3: 80578
+! gcc.info-4: 127608
+! gcc.info-5: 173792
+! gcc.info-6: 214726
+! gcc.info-7: 235436
+! gcc.info-8: 285158
+! gcc.info-9: 333642
+! gcc.info-10: 382691
+! gcc.info-11: 419654
+! gcc.info-12: 468472
+! gcc.info-13: 517503
+! gcc.info-14: 564845
+! gcc.info-15: 604398
+! gcc.info-16: 654371
+! gcc.info-17: 703324
+! gcc.info-18: 751502
+! gcc.info-19: 797360
+! gcc.info-20: 846162
+! gcc.info-21: 890260
+! gcc.info-22: 933466
+! gcc.info-23: 982355
+! gcc.info-24: 1032258
+! gcc.info-25: 1067513
+ 
+ Tag Table:
+--- 34,60 ----
+ gcc.info-1: 1382
+ gcc.info-2: 42854
+! gcc.info-3: 80645
+! gcc.info-4: 129158
+! gcc.info-5: 175342
+! gcc.info-6: 216276
+! gcc.info-7: 236986
+! gcc.info-8: 286708
+! gcc.info-9: 335192
+! gcc.info-10: 384241
+! gcc.info-11: 421204
+! gcc.info-12: 470022
+! gcc.info-13: 519053
+! gcc.info-14: 566395
+! gcc.info-15: 605948
+! gcc.info-16: 655921
+! gcc.info-17: 704874
+! gcc.info-18: 753052
+! gcc.info-19: 798910
+! gcc.info-20: 847712
+! gcc.info-21: 891810
+! gcc.info-22: 935016
+! gcc.info-23: 983905
+! gcc.info-24: 1033808
+! gcc.info-25: 1069063
+ 
+ Tag Table:
+*************** Node: G++ and GCC37258
+*** 68,297 ****
+ Node: Invoking GCC39475
+ Node: Option Summary42854
+! Node: Overall Options53305
+! Node: Invoking G++57868
+! Node: C Dialect Options59742
+! Node: C++ Dialect Options69842
+! Node: Warning Options80578
+! Node: Debugging Options95513
+! Node: Optimize Options105094
+! Node: Preprocessor Options115596
+! Node: Assembler Options122059
+! Node: Link Options122426
+! Node: Directory Options127608
+! Node: Target Options131100
+! Node: Submodel Options134757
+! Node: M680x0 Options136138
+! Node: VAX Options139647
+! Node: SPARC Options140182
+! Node: Convex Options146602
+! Node: AMD29K Options148783
+! Node: ARM Options151814
+! Node: M88K Options153231
+! Node: RS/6000 and PowerPC Options161178
+! Node: RT Options172088
+! Node: MIPS Options173792
+! Node: i386 Options181418
+! Node: HPPA Options186857
+! Node: Intel 960 Options189953
+! Node: DEC Alpha Options192563
+! Node: Clipper Options194235
+! Node: H8/300 Options194634
+! Node: System V Options195079
+! Node: Code Gen Options195765
+! Node: Environment Variables204274
+! Node: Running Protoize208497
+! Node: Installation214726
+! Node: Configurations235436
+! Node: Other Dir271347
+! Node: Cross-Compiler273063
+! Node: Steps of Cross274894
+! Node: Configure Cross276012
+! Node: Tools and Libraries276649
+! Node: Cross Runtime279092
+! Node: Cross Headers283173
+! Node: Build Cross285158
+! Node: Sun Install287034
+! Node: VMS Install288166
+! Node: Collect2298095
+! Node: Header Dirs300804
+! Node: C Extensions302218
+! Node: Statement Exprs305497
+! Node: Local Labels307391
+! Node: Labels as Values309453
+! Node: Nested Functions311318
+! Node: Constructing Calls315174
+! Node: Naming Types317231
+! Node: Typeof318325
+! Node: Lvalues320190
+! Node: Conditionals322630
+! Node: Long Long323521
+! Node: Complex324965
+! Node: Zero Length326827
+! Node: Variable Length327501
+! Node: Macro Varargs330026
+! Node: Subscripting332129
+! Node: Pointer Arith332612
+! Node: Initializers333177
+! Node: Constructors333642
+! Node: Labeled Elements335336
+! Node: Case Ranges337965
+! Node: Cast to Union338646
+! Node: Function Attributes339724
+! Node: Function Prototypes348987
+! Node: C++ Comments350786
+! Node: Dollar Signs351322
+! Node: Character Escapes352102
+! Node: Alignment352383
+! Node: Variable Attributes353855
+! Node: Type Attributes361763
+! Node: Inline368282
+! Node: Extended Asm372159
+! Node: Asm Labels382691
+! Node: Explicit Reg Vars384010
+! Node: Global Reg Vars385258
+! Node: Local Reg Vars389823
+! Node: Alternate Keywords391415
+! Node: Incomplete Enums392817
+! Node: Function Names393573
+! Node: C++ Extensions394824
+! Node: Naming Results396061
+! Node: Min and Max399375
+! Node: Destructors and Goto400825
+! Node: C++ Interface401375
+! Node: Template Instantiation406598
+! Node: C++ Signatures412330
+! Node: Trouble416674
+! Node: Actual Bugs418385
+! Node: Installation Problems419654
+! Node: Cross-Compiler Problems433440
+! Node: Interoperation434911
+! Node: External Bugs448275
+! Node: Incompatibilities450407
+! Node: Fixed Headers458957
+! Node: Standard Libraries461299
+! Node: Disappointments462546
+! Node: C++ Misunderstandings466771
+! Node: Static Definitions467418
+! Node: Temporaries468472
+! Node: Protoize Caveats470676
+! Node: Non-bugs474632
+! Node: Warnings and Errors483592
+! Node: Bugs485362
+! Node: Bug Criteria486722
+! Node: Bug Lists489152
+! Node: Bug Reporting490545
+! Node: Sending Patches502963
+! Node: Service508350
+! Node: VMS508911
+! Node: Include Files and VMS509304
+! Node: Global Declarations513194
+! Node: VMS Misc517503
+! Node: Portability521829
+! Node: Interface523592
+! Node: Passes528225
+! Node: RTL545568
+! Node: RTL Objects547456
+! Node: Accessors550500
+! Node: Flags555826
+! Node: Machine Modes564845
+! Node: Constants572479
+! Node: Regs and Memory577667
+! Node: Arithmetic589377
+! Node: Comparisons595275
+! Node: Bit Fields599337
+! Node: Conversions600701
+! Node: RTL Declarations603589
+! Node: Side Effects604398
+! Node: Incdec616945
+! Node: Assembler619461
+! Node: Insns620983
+! Node: Calls641836
+! Node: Sharing644431
+! Node: Reading RTL647507
+! Node: Machine Desc648446
+! Node: Patterns650299
+! Node: Example653243
+! Node: RTL Template654371
+! Node: Output Template666569
+! Node: Output Statement670530
+! Node: Constraints674243
+! Node: Simple Constraints675246
+! Node: Multi-Alternative686679
+! Node: Class Preferences689515
+! Node: Modifiers690395
+! Node: Machine Constraints693555
+! Node: No Constraints702203
+! Node: Standard Names703324
+! Node: Pattern Ordering731232
+! Node: Dependent Patterns732458
+! Node: Jump Patterns735273
+! Node: Insn Canonicalizations741089
+! Node: Peephole Definitions744584
+! Node: Expander Definitions751502
+! Node: Insn Splitting758948
+! Node: Insn Attributes765962
+! Node: Defining Attributes767009
+! Node: Expressions769021
+! Node: Tagging Insns775333
+! Node: Attr Example779696
+! Node: Insn Lengths782072
+! Node: Constant Attributes785436
+! Node: Delay Slots786596
+! Node: Function Units789807
+! Node: Target Macros795477
+! Node: Driver797360
+! Node: Run-time Target809090
+! Node: Storage Layout814977
+! Node: Type Layout828925
+! Node: Registers835348
+! Node: Register Basics836328
+! Node: Allocation Order840365
+! Node: Values in Registers841783
+! Node: Leaf Functions846162
+! Node: Stack Registers848637
+! Node: Obsolete Register Macros849470
+! Node: Register Classes852165
+! Node: Stack and Calling871700
+! Node: Frame Layout872136
+! Node: Frame Registers875576
+! Node: Elimination879386
+! Node: Stack Arguments883642
+! Node: Register Arguments890260
+! Node: Scalar Return898935
+! Node: Aggregate Return902898
+! Node: Caller Saves906613
+! Node: Function Entry907763
+! Node: Profiling916691
+! Node: Varargs919595
+! Node: Trampolines927004
+! Node: Library Calls933466
+! Node: Addressing Modes941524
+! Node: Condition Code949112
+! Node: Costs955311
+! Node: Sections963690
+! Node: PIC968479
+! Node: Assembler Format971189
+! Node: File Framework972194
+! Node: Data Output976431
+! Node: Uninitialized Data982355
+! Node: Label Output985062
+! Node: Initialization994456
+! Node: Macros for Initialization1000599
+! Node: Instruction Output1005196
+! Node: Dispatch Tables1013191
+! Node: Alignment Output1015568
+! Node: Debugging Info1017308
+! Node: All Debuggers1017917
+! Node: DBX Options1020331
+! Node: DBX Hooks1025216
+! Node: File Names and DBX1028555
+! Node: SDB and DWARF1030528
+! Node: Cross-compilation1032258
+! Node: Misc1038705
+! Node: Config1055831
+! Node: Fragments1063276
+! Node: Target Fragment1063873
+! Node: Host Fragment1066911
+! Node: Index1067513
+ 
+ End Tag Table
+--- 68,297 ----
+ Node: Invoking GCC39475
+ Node: Option Summary42854
+! Node: Overall Options53372
+! Node: Invoking G++57935
+! Node: C Dialect Options59809
+! Node: C++ Dialect Options69909
+! Node: Warning Options80645
+! Node: Debugging Options95580
+! Node: Optimize Options105161
+! Node: Preprocessor Options117146
+! Node: Assembler Options123609
+! Node: Link Options123976
+! Node: Directory Options129158
+! Node: Target Options132650
+! Node: Submodel Options136307
+! Node: M680x0 Options137688
+! Node: VAX Options141197
+! Node: SPARC Options141732
+! Node: Convex Options148152
+! Node: AMD29K Options150333
+! Node: ARM Options153364
+! Node: M88K Options154781
+! Node: RS/6000 and PowerPC Options162728
+! Node: RT Options173638
+! Node: MIPS Options175342
+! Node: i386 Options182968
+! Node: HPPA Options188407
+! Node: Intel 960 Options191503
+! Node: DEC Alpha Options194113
+! Node: Clipper Options195785
+! Node: H8/300 Options196184
+! Node: System V Options196629
+! Node: Code Gen Options197315
+! Node: Environment Variables205824
+! Node: Running Protoize210047
+! Node: Installation216276
+! Node: Configurations236986
+! Node: Other Dir272897
+! Node: Cross-Compiler274613
+! Node: Steps of Cross276444
+! Node: Configure Cross277562
+! Node: Tools and Libraries278199
+! Node: Cross Runtime280642
+! Node: Cross Headers284723
+! Node: Build Cross286708
+! Node: Sun Install288584
+! Node: VMS Install289716
+! Node: Collect2299645
+! Node: Header Dirs302354
+! Node: C Extensions303768
+! Node: Statement Exprs307047
+! Node: Local Labels308941
+! Node: Labels as Values311003
+! Node: Nested Functions312868
+! Node: Constructing Calls316724
+! Node: Naming Types318781
+! Node: Typeof319875
+! Node: Lvalues321740
+! Node: Conditionals324180
+! Node: Long Long325071
+! Node: Complex326515
+! Node: Zero Length328377
+! Node: Variable Length329051
+! Node: Macro Varargs331576
+! Node: Subscripting333679
+! Node: Pointer Arith334162
+! Node: Initializers334727
+! Node: Constructors335192
+! Node: Labeled Elements336886
+! Node: Case Ranges339515
+! Node: Cast to Union340196
+! Node: Function Attributes341274
+! Node: Function Prototypes350537
+! Node: C++ Comments352336
+! Node: Dollar Signs352872
+! Node: Character Escapes353652
+! Node: Alignment353933
+! Node: Variable Attributes355405
+! Node: Type Attributes363313
+! Node: Inline369832
+! Node: Extended Asm373709
+! Node: Asm Labels384241
+! Node: Explicit Reg Vars385560
+! Node: Global Reg Vars386808
+! Node: Local Reg Vars391373
+! Node: Alternate Keywords392965
+! Node: Incomplete Enums394367
+! Node: Function Names395123
+! Node: C++ Extensions396374
+! Node: Naming Results397611
+! Node: Min and Max400925
+! Node: Destructors and Goto402375
+! Node: C++ Interface402925
+! Node: Template Instantiation408148
+! Node: C++ Signatures413880
+! Node: Trouble418224
+! Node: Actual Bugs419935
+! Node: Installation Problems421204
+! Node: Cross-Compiler Problems434990
+! Node: Interoperation436461
+! Node: External Bugs449825
+! Node: Incompatibilities451957
+! Node: Fixed Headers460507
+! Node: Standard Libraries462849
+! Node: Disappointments464096
+! Node: C++ Misunderstandings468321
+! Node: Static Definitions468968
+! Node: Temporaries470022
+! Node: Protoize Caveats472226
+! Node: Non-bugs476182
+! Node: Warnings and Errors485142
+! Node: Bugs486912
+! Node: Bug Criteria488272
+! Node: Bug Lists490702
+! Node: Bug Reporting492095
+! Node: Sending Patches504513
+! Node: Service509900
+! Node: VMS510461
+! Node: Include Files and VMS510854
+! Node: Global Declarations514744
+! Node: VMS Misc519053
+! Node: Portability523379
+! Node: Interface525142
+! Node: Passes529775
+! Node: RTL547118
+! Node: RTL Objects549006
+! Node: Accessors552050
+! Node: Flags557376
+! Node: Machine Modes566395
+! Node: Constants574029
+! Node: Regs and Memory579217
+! Node: Arithmetic590927
+! Node: Comparisons596825
+! Node: Bit Fields600887
+! Node: Conversions602251
+! Node: RTL Declarations605139
+! Node: Side Effects605948
+! Node: Incdec618495
+! Node: Assembler621011
+! Node: Insns622533
+! Node: Calls643386
+! Node: Sharing645981
+! Node: Reading RTL649057
+! Node: Machine Desc649996
+! Node: Patterns651849
+! Node: Example654793
+! Node: RTL Template655921
+! Node: Output Template668119
+! Node: Output Statement672080
+! Node: Constraints675793
+! Node: Simple Constraints676796
+! Node: Multi-Alternative688229
+! Node: Class Preferences691065
+! Node: Modifiers691945
+! Node: Machine Constraints695105
+! Node: No Constraints703753
+! Node: Standard Names704874
+! Node: Pattern Ordering732782
+! Node: Dependent Patterns734008
+! Node: Jump Patterns736823
+! Node: Insn Canonicalizations742639
+! Node: Peephole Definitions746134
+! Node: Expander Definitions753052
+! Node: Insn Splitting760498
+! Node: Insn Attributes767512
+! Node: Defining Attributes768559
+! Node: Expressions770571
+! Node: Tagging Insns776883
+! Node: Attr Example781246
+! Node: Insn Lengths783622
+! Node: Constant Attributes786986
+! Node: Delay Slots788146
+! Node: Function Units791357
+! Node: Target Macros797027
+! Node: Driver798910
+! Node: Run-time Target810640
+! Node: Storage Layout816527
+! Node: Type Layout830475
+! Node: Registers836898
+! Node: Register Basics837878
+! Node: Allocation Order841915
+! Node: Values in Registers843333
+! Node: Leaf Functions847712
+! Node: Stack Registers850187
+! Node: Obsolete Register Macros851020
+! Node: Register Classes853715
+! Node: Stack and Calling873250
+! Node: Frame Layout873686
+! Node: Frame Registers877126
+! Node: Elimination880936
+! Node: Stack Arguments885192
+! Node: Register Arguments891810
+! Node: Scalar Return900485
+! Node: Aggregate Return904448
+! Node: Caller Saves908163
+! Node: Function Entry909313
+! Node: Profiling918241
+! Node: Varargs921145
+! Node: Trampolines928554
+! Node: Library Calls935016
+! Node: Addressing Modes943074
+! Node: Condition Code950662
+! Node: Costs956861
+! Node: Sections965240
+! Node: PIC970029
+! Node: Assembler Format972739
+! Node: File Framework973744
+! Node: Data Output977981
+! Node: Uninitialized Data983905
+! Node: Label Output986612
+! Node: Initialization996006
+! Node: Macros for Initialization1002149
+! Node: Instruction Output1006746
+! Node: Dispatch Tables1014741
+! Node: Alignment Output1017118
+! Node: Debugging Info1018858
+! Node: All Debuggers1019467
+! Node: DBX Options1021881
+! Node: DBX Hooks1026766
+! Node: File Names and DBX1030105
+! Node: SDB and DWARF1032078
+! Node: Cross-compilation1033808
+! Node: Misc1040255
+! Node: Config1057381
+! Node: Fragments1064826
+! Node: Target Fragment1065423
+! Node: Host Fragment1068461
+! Node: Index1069063
+ 
+ End Tag Table
+*** gcc-2.7.2/gcc.info-2 Wed Mar 6 10:23:35 1996
+--- g77-new/gcc.info-2 Fri Mar 15 02:17:16 1996
+*************** are in the following sections.
+*** 92,95 ****
+--- 92,96 ----
+ -fschedule-insns2 -fstrength-reduce -fthread-jumps
+ -funroll-all-loops -funroll-loops
++ -fmove-all-movables -freduce-all-givs -frerun-loop-opt
+ -O -O0 -O1 -O2 -O3
+
+*** gcc-2.7.2/gcc.info-3 Wed Mar 6 10:23:35 1996
+--- g77-new/gcc.info-3 Fri Mar 15 02:17:16 1996
+*************** of optimizations to be performed is desi
+*** 907,910 ****
+--- 907,946 ----
+ `-frerun-cse-after-loop'.
+
++ `-fmove-all-movables'
++ Forces all invariant computations in loops to be moved outside the
++ loop. This option is provided primarily to improve performance
++ for some Fortran code, though it might improve code written in
++ other languages.
++
++ *Note:* When compiling programs written in Fortran, this option is
++ enabled by default.
++
++ Analysis of Fortran code optimization and the resulting
++ optimizations triggered by this option, and the
++ `-freduce-all-givs' and `-frerun-loop-opt' options as well, were
++ contributed by Toon Moene (`toon@moene.indiv.nluug.nl').
++
++ Please let us (`fortran@gnu.ai.mit.edu') know how use of these
++ options affects the performance of your production code. We're
++ very interested in code that runs *slower* when these options are
++ *enabled*.
++
++ `-freduce-all-givs'
++ Forces all general-induction variables in loops to be
++ strength-reduced. This option is provided primarily to improve
++ performance for some Fortran code, though it might improve code
++ written in other languages.
++
++ *Note:* When compiling programs written in Fortran, this option is
++ enabled by default.
++
++ `-frerun-loop-opt'
++ Runs loop optimizations a second time. This option is provided
++ primarily to improve performance for some Fortran code, though it
++ might improve code written in other languages.
++
++ *Note:* When compiling programs written in Fortran, this option is
++ enabled by default.
++
+ `-fno-peephole'
+ Disable any machine-specific peephole optimizations.
+*** gcc-2.7.2/gcc.texi Wed Mar 6 10:20:58 1996
+--- g77-new/gcc.texi Wed Mar 6 14:30:40 1996
+*************** original English.
+*** 149,152 ****
+--- 149,153 ----
+ @sp 3
+ @center Last updated 26 November 1995
++ @center (Revised for GNU Fortran 1996-03-06)
+ @sp 1
+ @c The version number appears twice more in this file.
+*** gcc-2.7.2/invoke.texi Tue Oct 3 11:40:43 1995
+--- g77-new/invoke.texi Fri Mar 15 01:49:11 1996
+*************** in the following sections.
+*** 149,152 ****
+--- 149,153 ----
+ -fschedule-insns2 -fstrength-reduce -fthread-jumps
+ -funroll-all-loops -funroll-loops
++ -fmove-all-movables -freduce-all-givs -frerun-loop-opt
+ -O -O0 -O1 -O2 -O3
+ @end smallexample
+*************** Perform the optimization of loop unrolli
+*** 1940,1943 ****
+--- 1941,1985 ----
+ and usually makes programs run more slowly. @samp{-funroll-all-loops}
+ implies @samp{-fstrength-reduce} as well as @samp{-frerun-cse-after-loop}.
++
++ @item -fmove-all-movables
++ Forces all invariant computations in loops to be moved
++ outside the loop.
++ This option is provided primarily to improve performance
++ for some Fortran code, though it might improve code written
++ in other languages.
++
++ @emph{Note:} When compiling programs written in Fortran,
++ this option is enabled by default.
++
++ Analysis of Fortran code optimization and the resulting
++ optimizations triggered by this option, and the
++ @samp{-freduce-all-givs} and @samp{-frerun-loop-opt}
++ options as well, were
++ contributed by Toon Moene (@code{toon@@moene.indiv.nluug.nl}).
++
++ Please let us (@code{fortran@@gnu.ai.mit.edu})
++ know how use of these options affects
++ the performance of your production code.
++ We're very interested in code that runs @emph{slower}
++ when these options are @emph{enabled}.
++
++ @item -freduce-all-givs
++ Forces all general-induction variables in loops to be
++ strength-reduced.
++ This option is provided primarily to improve performance
++ for some Fortran code, though it might improve code written
++ in other languages.
++
++ @emph{Note:} When compiling programs written in Fortran,
++ this option is enabled by default.
++
++ @item -frerun-loop-opt
++ Runs loop optimizations a second time.
++ This option is provided primarily to improve performance
++ for some Fortran code, though it might improve code written
++ in other languages.
++
++ @emph{Note:} When compiling programs written in Fortran,
++ this option is enabled by default.
+
+ @item -fno-peephole
+*** gcc-2.7.2/loop.c Tue Oct 3 12:17:16 1995
+--- g77-new/loop.c Wed Mar 6 10:32:58 1996
+*************** move_movables (movables, threshold, insn
+*** 1629,1632 ****
+--- 1629,1633 ----
+
+ if (already_moved[regno]
++ || flag_move_all_movables
+ || (threshold * savings * m->lifetime) >= insn_count
+ || (m->forces && m->forces->done
+*************** strength_reduce (scan_start, end, loop_t
+*** 3821,3826 ****
+ exit. */
+
+! if (v->lifetime * threshold * benefit < insn_count
+! && ! bl->reversed)
+ {
+ if (loop_dump_stream)
+--- 3822,3827 ----
+ exit. */
+
+! if ( ! flag_reduce_all_givs && v->lifetime * threshold * benefit < insn_count
+! && ! bl->reversed )
+ {
+ if (loop_dump_stream)
+*** gcc-2.7.2/toplev.c Fri Oct 20 17:56:35 1995
+--- g77-new/toplev.c Wed Mar 6 10:32:59 1996
+*************** int flag_unroll_loops;
+*** 388,391 ****
+--- 388,405 ----
+ int flag_unroll_all_loops;
+
++ /* Nonzero forces all invariant computations in loops to be moved
++ outside the loop. */
++
++ int flag_move_all_movables = 0;
++
++ /* Nonzero forces all general induction variables in loops to be
++ strength reduced. */
++
++ int flag_reduce_all_givs = 0;
++
++ /* Nonzero gets another run of loop_optimize performed. */
++
++ int flag_rerun_loop_opt = 0;
++
+ /* Nonzero for -fwritable-strings:
+ store string constants in data segment and don't uniquize them. */
+*************** struct { char *string; int *variable; in
+*** 542,545 ****
+--- 556,562 ----
+ {"unroll-loops", &flag_unroll_loops, 1},
+ {"unroll-all-loops", &flag_unroll_all_loops, 1},
++ {"move-all-movables", &flag_move_all_movables, 1},
++ {"reduce-all-givs", &flag_reduce_all_givs, 1},
++ {"rerun-loop-opt", &flag_rerun_loop_opt, 1},
+ {"writable-strings", &flag_writable_strings, 1},
+ {"peephole", &flag_no_peephole, 0},
+*************** rest_of_compilation (decl)
+*** 2894,2897 ****
+--- 2911,2916 ----
+ {
+ loop_optimize (insns, loop_dump_file);
++ if (flag_rerun_loop_opt)
++ loop_optimize (insns, loop_dump_file);
+ });
+ }
+*** gcc-2.7.2/tree.c Sun Oct 1 21:26:56 1995
+--- g77-new/tree.c Wed Mar 6 10:33:00 1996
+*************** saveable_tree_cons (purpose, value, chai
+*** 1965,1968 ****
+--- 1965,1992 ----
+ }
+
++ /* Try to find out whether the type for which the size is to be determined
++ is an ARRAY(of ARRAY(of ARRAY ... of something with a constant size
++ which is an integral multiple of BITS_PER_UNIT)).
++ In that case, the size in bytes can be determined using an EXACT_DIV_EXPR.
++ */
++ enum tree_code
++ which_div_expr(type)
++ tree type;
++ {
++ tree t;
++
++ if (TREE_CODE (type) != POINTER_TYPE && TREE_CODE (type) != ARRAY_TYPE)
++ return CEIL_DIV_EXPR;
++
++ for (t = TREE_TYPE (type); TREE_CODE (t) == ARRAY_TYPE; t = TREE_TYPE (t))
++ ;
++
++ if (TYPE_SIZE (t) != 0 && TREE_CODE (TYPE_SIZE (t)) == INTEGER_CST &&
++ TREE_INT_CST_LOW (TYPE_SIZE (t)) % BITS_PER_UNIT == 0)
++ return EXACT_DIV_EXPR;
++ else
++ return CEIL_DIV_EXPR;
++ }
++
+ /* Return the size nominally occupied by an object of type TYPE
+ when it resides in memory. The value is measured in units of bytes,
+*************** size_in_bytes (type)
+*** 1985,1989 ****
+ return integer_zero_node;
+ }
+! t = size_binop (CEIL_DIV_EXPR, TYPE_SIZE (type),
+ size_int (BITS_PER_UNIT));
+ if (TREE_CODE (t) == INTEGER_CST)
+--- 2009,2013 ----
+ return integer_zero_node;
+ }
+! t = size_binop (which_div_expr (type), TYPE_SIZE (type),
+ size_int (BITS_PER_UNIT));
+ if (TREE_CODE (t) == INTEGER_CST)
+*************** int_size_in_bytes (type)
+*** 2009,2013 ****
+ if (TREE_INT_CST_HIGH (TYPE_SIZE (type)) != 0)
+ {
+! tree t = size_binop (CEIL_DIV_EXPR, TYPE_SIZE (type),
+ size_int (BITS_PER_UNIT));
+ return TREE_INT_CST_LOW (t);
+--- 2033,2037 ----
+ if (TREE_INT_CST_HIGH (TYPE_SIZE (type)) != 0)
+ {
+! tree t = size_binop (which_div_expr (type), TYPE_SIZE (type),
+ size_int (BITS_PER_UNIT));
+ return TREE_INT_CST_LOW (t);
+*** gcc-2.7.2/version.c Wed Mar 6 10:21:01 1996
+--- g77-new/version.c Mon Mar 25 21:17:27 1996
+***************
+*** 1 ****
+! char *version_string = "2.7.2";
+--- 1 ----
+! char *version_string = "2.7.2.f.1";
diff --git a/gnu/usr.bin/gcc/f/gbe/README b/gnu/usr.bin/gcc/f/gbe/README
new file mode 100644
index 00000000000..0e7585f90c3
--- /dev/null
+++ b/gnu/usr.bin/gcc/f/gbe/README
@@ -0,0 +1,33 @@
+951118
+
+This directory contains .diff files for various GNU CC distributions.
+The name of a file tells which version to which it applies. Prior to
+gcc version 2.7.1, g77 will not build without the appropriate .diff
+file applied to the GNU CC distribution via patch. That is because
+g77 needs certain changes to be made to the GNU CC back end, which
+it shares with not only the C front end, but with other GNU front
+ends (C++, Objective-C, Pascal, ADA, Chill, ...) as well. Version
+2.7.1 of gcc includes the changes needed by g77 versions through 0.5.17.
+Future versions of g77 might again require changes to versions 2.7.1,
+and later versions, of gcc.
+
+This distribution of g77 is not supported for versions of gcc prior
+to 2.6.2. The 2.6.3 patch file should work for version 2.6.2, but
+you should probably use gcc-2.6.3 in any case if that is possible.
+
+To apply a .diff file to, say, gcc 2.7.0, one might use the following
+command:
+
+ patch -p1 -d gcc-2.7.0 < gcc-2.7.0/f/gbe/2.7.0.diff
+
+If you are using a version of gcc more recent than the most
+recent .diff file's version, try the most recent .diff ONLY
+if the difference is in the third field. E.g. the above
+patch might work on gcc-2.6.4 or gcc-2.6.5 if these were
+released. On the other hand, it probably wouldn't work for
+a more major release like gcc-2.7.0 or gcc-3.0.0, and you
+shouldn't try it. If the .diff file is missing, don't bother
+asking `fortran@gnu.ai.mit.edu' for it -- it is certainly
+being worked on. In the meantime, watch the usual channels
+(see gcc/f/DOC *TROUBLE (BUGS, ETC.)*) for information on
+support for the new version of gcc.