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]
Other format: [Raw text]

Re: Committed: target/14471, workaround for errata for CRIS mulinsns.


> Date: Mon, 8 Mar 2004 10:19:18 +0000 (UTC)
> From: "Joseph S. Myers" <jsm@polyomino.org.uk>

> On Mon, 8 Mar 2004, Hans-Peter Nilsson wrote:
> 
> > By the way, looks like nobody did "make dvi" for a while; it
> > breaks due to exceeding TeX limits with "TeX (Web2C 7.3.1)
> > 3.14159" (stock in RH 9).  To check this doc patch, I worked
> 
> "make dvi" is part of my build script so it gets tested in all my builds.  
> It works fine with Web2C 7.4.5 (teTeX 2.0.2 default limits).

It's good that it works for recent tetex versions and that
someone would notice if it didn't.  Still, I think the versions
and builds in RH 9 (mentioned above) and (beware of uncertain
version specifiers) Debian Woody (3.0) "TeX (Web2C 7.3.7)
3.14159" (tetex-base 1.0.2+20011202-2, tetex-bin
1.0.7+20011202-7.1) are in wide circulation, and since "make
dvi" for trunk of "Mon Mar 8 01:19:44 UTC 2004" fails for both
those, a work-around *should* be considered.  After all, end
users are expected to be able to "make dvi", not just
developers.

I opened other/14474 for this problem.  In it, Andreas Schwab
refers to texmf.cnf (in /etc but may be elsewhere) in a comment.
Perhaps the memory limit settings in that file are changeable in
some input file, like texinfo.tex, which would solve the
problem.  I don't have any TeXbook nearby that goes into that
kind of detail.  Google searches on "tex memory" gives hits for
the problem, but doesn't say explicitly whether or not it's
doable with input or options at run time, only with various
tools and config files, mainly /etc/texmf.cnf.  Do you or
perhaps another TeXpert here know?  IMHO a workaround is
preferable to notes in the installation instructions, if it
can't be done in e.g. gcc/doc/include/texinfo.tex.

As mentioned in the PR, it works to split up the last @ifset
INTERNALS in md.texi, wrapping each of the @node:s in md.texi in
its own.  (Strange that the size of the contents should matter
that much; I'd think it would be thrown away after parson.)

Here's a patch to do that.  Is this ok?  For obvious reasons, I
can't easily check that gccint.dvi looks the same with and
without this patch.  (If you accept this workaround, could you
please check?)

	* doc/md.texi (Pattern Ordering, Dependent Patterns)
	(Jump Patterns, Looping Patterns): Wrap in separate "@ifset
	INTERNALS".

Index: md.texi
===================================================================
RCS file: /cvs/gcc/gcc/gcc/doc/md.texi,v
retrieving revision 1.94
diff -c -p -r1.94 md.texi
*** md.texi	3 Mar 2004 08:35:32 -0000	1.94
--- md.texi	8 Mar 2004 18:54:28 -0000
*************** the values of operands 1 and 2.
*** 3483,3488 ****
--- 3483,3494 ----
  
  @end table
  
+ @end ifset
+ @c Each of the following nodes are wrapped in separate
+ @c "@ifset INTERNALS" to work around memory limits in
+ @c older tetex distributions.  Known to not work: tetex-1.0.7,
+ @c known to work: tetex-2.0.2.
+ @ifset INTERNALS
  @node Pattern Ordering
  @section When the Order of Patterns Matters
  @cindex Pattern Ordering
*************** Instead of using this pattern ordering i
*** 3506,3511 ****
--- 3512,3519 ----
  pattern for convert-a-byte smart enough to deal properly with any
  constant value.
  
+ @end ifset
+ @ifset INTERNALS
  @node Dependent Patterns
  @section Interdependence of Patterns
  @cindex Dependent Patterns
*************** instructions.  Instead, they should be g
*** 3586,3591 ****
--- 3594,3601 ----
  that supports register-register add insns by examining the operands and
  generating the appropriate machine instruction.
  
+ @end ifset
+ @ifset INTERNALS
  @node Jump Patterns
  @section Defining Jump Instruction Patterns
  @cindex jump instruction patterns
*************** discussed above, we have the pattern
*** 3699,3704 ****
--- 3709,3716 ----
  The @code{SELECT_CC_MODE} macro on the SPARC returns @code{CC_NOOVmode}
  for comparisons whose argument is a @code{plus}.
  
+ @end ifset
+ @ifset INTERNALS
  @node Looping Patterns
  @section Defining Looping Instruction Patterns
  @cindex looping instruction patterns
*************** be derived from it), however, in many ca
*** 3804,3809 ****
--- 3816,3823 ----
  may become redundant and removed by the flow pass.
  
  
+ @end ifset
+ @ifset INTERNALS
  @node Insn Canonicalizations
  @section Canonicalization of Instructions
  @cindex canonicalization of instructions
*************** will be written using @code{zero_extract
*** 3938,3943 ****
--- 3952,3959 ----
  
  @end itemize
  
+ @end ifset
+ @ifset INTERNALS
  @node Expander Definitions
  @section Defining RTL Sequences for Code Generation
  @cindex expander definitions
*************** at the end, emit an insn to copy the res
*** 4155,4160 ****
--- 4171,4178 ----
  itself.  Such an insn will generate no code, but it can avoid problems
  in the compiler.
  
+ @end ifset
+ @ifset INTERNALS
  @node Insn Splitting
  @section Defining How to Split Instructions
  @cindex insn splitting
*************** functionality as two separate @code{defi
*** 4388,4393 ****
--- 4406,4413 ----
  patterns.  It exists for compactness, and as a maintenance tool to prevent
  having to ensure the two patterns' templates match.
  
+ @end ifset
+ @ifset INTERNALS
  @node Including Patterns
  @section Including Patterns in Machine Descriptions.
  @cindex insn includes
*************** one @option{-I} option, the directories 
*** 4462,4467 ****
--- 4482,4489 ----
  order; the standard default directory come after.
  
  
+ @end ifset
+ @ifset INTERNALS
  @node Peephole Definitions
  @section Machine-Specific Peephole Optimizers
  @cindex peephole optimizer definitions
*************** targets that do scheduling.
*** 4492,4497 ****
--- 4514,4521 ----
  * define_peephole2::    RTL to RTL Peephole Optimizers
  @end menu
  
+ @end ifset
+ @ifset INTERNALS
  @node define_peephole
  @subsection RTL to Text Peephole Optimizers
  @findex define_peephole
*************** then the way to mention this insn in a p
*** 4683,4688 ****
--- 4707,4714 ----
    @dots{})
  @end smallexample
  
+ @end ifset
+ @ifset INTERNALS
  @node define_peephole2
  @subsection RTL to RTL Peephole Optimizers
  @findex define_peephole2
*************** If we had not added the @code{(match_dup
*** 4768,4773 ****
--- 4794,4801 ----
  sequence, it might have been the case that the register we chose at the
  beginning of the sequence is killed by the first or second @code{set}.
  
+ @end ifset
+ @ifset INTERNALS
  @node Insn Attributes
  @section Instruction Attributes
  @cindex insn attributes
*************** to track the condition codes.
*** 4791,4796 ****
--- 4819,4826 ----
  * Processor pipeline description:: Specifying information for insn scheduling.
  @end menu
  
+ @end ifset
+ @ifset INTERNALS
  @node Defining Attributes
  @subsection Defining Attributes and their Values
  @cindex defining attributes and their values
*************** If the attribute takes numeric values, n
*** 4855,4860 ****
--- 4885,4892 ----
  defined and the function to obtain the attribute's value will return
  @code{int}.
  
+ @end ifset
+ @ifset INTERNALS
  @node Expressions
  @subsection Attribute Expressions
  @cindex attribute expressions
*************** for numeric attributes, as @code{eq_attr
*** 5064,5069 ****
--- 5096,5103 ----
  produce more efficient code for non-numeric attributes.
  @end table
  
+ @end ifset
+ @ifset INTERNALS
  @node Tagging Insns
  @subsection Assigning Attribute Values to Insns
  @cindex tagging insns
*************** string.  Therefore, the value of the @co
*** 5169,5174 ****
--- 5203,5210 ----
  in a @code{define_asm_attributes} should be the maximum possible length
  of a single machine instruction.
  
+ @end ifset
+ @ifset INTERNALS
  @node Attr Example
  @subsection Example of Attribute Specifications
  @cindex attribute specifications example
*************** performed on quantities smaller than a m
*** 5224,5229 ****
--- 5260,5267 ----
  code since they will set the condition code to a value corresponding to the
  full-word result.
  
+ @end ifset
+ @ifset INTERNALS
  @node Insn Lengths
  @subsection Computing the Length of an Insn
  @cindex insn lengths, computing
*************** as follows:
*** 5308,5313 ****
--- 5346,5353 ----
                        (const_int 6)))])
  @end smallexample
  
+ @end ifset
+ @ifset INTERNALS
  @node Constant Attributes
  @subsection Constant Attributes
  @cindex constant attributes
*************** the value of a constant attribute may us
*** 5337,5342 ****
--- 5377,5384 ----
  but may not use either the @code{match_operand} form or @code{eq_attr}
  forms involving insn attributes.
  
+ @end ifset
+ @ifset INTERNALS
  @node Delay Slots
  @subsection Delay Slot Scheduling
  @cindex delay slots, defining
*************** branch is true, we might represent this 
*** 5412,5417 ****
--- 5454,5461 ----
  @end smallexample
  @c the above is *still* too long.  --mew 4feb93
  
+ @end ifset
+ @ifset INTERNALS
  @node Processor pipeline description
  @subsection Specifying processor pipeline description
  @cindex processor pipeline description
*************** choose the best one.
*** 5497,5502 ****
--- 5541,5548 ----
  * Comparison of the two descriptions:: Drawbacks of the old pipeline description
  @end menu
  
+ @end ifset
+ @ifset INTERNALS
  @node Old pipeline description
  @subsubsection Specifying Function Units
  @cindex old pipeline description
*************** used during their execution and there is
*** 5619,5624 ****
--- 5665,5672 ----
  conflict.  We welcome any examples of how function unit conflicts work
  in such processors and suggestions for their representation.
  
+ @end ifset
+ @ifset INTERNALS
  @node Automaton pipeline description
  @subsubsection Describing instruction pipeline characteristics
  @cindex automaton based pipeline description
*************** construction
*** 6041,6046 ****
--- 6089,6096 ----
  @end smallexample
  
  
+ @end ifset
+ @ifset INTERNALS
  @node Comparison of the two descriptions
  @subsubsection Drawbacks of the old pipeline description
  @cindex old pipeline description
*************** In an automaton based pipeline hazard re
*** 6094,6099 ****
--- 6144,6151 ----
  on processor complexity.
  @end itemize
  
+ @end ifset
+ @ifset INTERNALS
  @node Conditional Execution
  @section Conditional Execution
  @cindex conditional execution
*************** generates a new pattern
*** 6174,6179 ****
--- 6226,6233 ----
    "(%3) add %2,%1,%0")
  @end smallexample
  
+ @end ifset
+ @ifset INTERNALS
  @node Constant Definitions
  @section Constant Definitions
  @cindex constant definitions

brgds, H-P


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