This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH] Yet another PROMOTE_PROTOTYPES patch
- To: egcs-patches at egcs dot cygnus dot com
- Subject: [PATCH] Yet another PROMOTE_PROTOTYPES patch
- From: Jakub Jelinek <jj at sunsite dot ms dot mff dot cuni dot cz>
- Date: Thu, 10 Jun 1999 23:34:17 +0200
Hi!
This patch adds default for PROMOTE_PROTOTYPES into expr.h (the only header
I found which
a) had some related defaults for target macros
b) was included already by several c files needing PROMOTE_PROTOTYPES (but
not all).
Thu Jun 10 23:16:11 1999 Jakub Jelinek (jj@ultra.linux.cz)
* cp/call.c (convert_default_arg, build_over_call):
Change all uses of PROMOTE_PROTOTYPES, so that it
tests it as a C expression to see whether prototype
promotion is required. Ensure expr.h is included.
* cp/decl.c (grokparams): Ditto.
* cp/pt.c (tsubst_decl): Ditto.
* cp/typeck.c (convert_arguments): Ditto.
* java/decl.c (start_java_method): Ditto.
* java/expr.c (pop_arguments): Ditto.
* java/parse.y (expand_start_java_method): Ditto.
* c-decl.c (get_parm_info, store_parm_decls): Ditto.
* c-typecheck.c (convert_arguments): Ditto.
* expr.h: Supply default for PROMOTE_PROTOTYPES (0).
* config/arc/arc.h: Define PROMOTE_PROTOTYPES to 1.
* config/convex/convex.h: Ditto.
* config/dsp16xx/dsp16xx.h: Ditto.
* config/fx80/fx80.h: Ditto.
* config/gmicro/gmicro.h: Ditto.
* config/i370/i370.h: Ditto.
* config/i386/i386.h: Ditto.
* config/m32r/m32r.h: Ditto.
* config/m68k/m68k.h: Ditto.
* config/m88k/m88k.h: Ditto.
* config/mips/mips.h: Ditto.
* config/pa/pa.h: Ditto.
* config/pyr/pyr.h: Ditto.
* config/tahoe/tahoe.h: Ditto.
* config/we32k/we32k.h: Ditto.
* config/sparc/sparc.h: Define PROMOTE_PROTOTYPES
based on arch size.
* config/i1750a/i1750a.h: Define PROMOTE_PROTOTYPES to 0.
* config/i860/paragon.h: Remove PROMOTE_PROTOTYPES
from comment.
* tm.texi: Document new usage of PROMOTE_PROTOTYPES.
--- ./cp/call.c.jjm Fri May 28 07:34:31 1999
+++ ./cp/call.c Wed Jun 9 12:16:16 1999
@@ -31,6 +31,7 @@ Boston, MA 02111-1307, USA. */
#include "flags.h"
#include "rtl.h"
#include "toplev.h"
+#include "expr.h"
#include "obstack.h"
#define obstack_chunk_alloc xmalloc
@@ -3097,12 +3098,11 @@ convert_default_arg (type, arg, fn)
arg = convert_for_initialization (0, type, arg, LOOKUP_NORMAL,
"default argument", 0, 0);
-#ifdef PROMOTE_PROTOTYPES
- if ((TREE_CODE (type) == INTEGER_TYPE
- || TREE_CODE (type) == ENUMERAL_TYPE)
+ if (PROMOTE_PROTOTYPES
+ && (TREE_CODE (type) == INTEGER_TYPE
+ || TREE_CODE (type) == ENUMERAL_TYPE)
&& (TYPE_PRECISION (type) < TYPE_PRECISION (integer_type_node)))
arg = default_conversion (arg);
-#endif
}
return arg;
@@ -3213,12 +3213,11 @@ build_over_call (cand, args, flags)
val = convert_like (conv, TREE_VALUE (arg));
}
-#ifdef PROMOTE_PROTOTYPES
- if ((TREE_CODE (type) == INTEGER_TYPE
- || TREE_CODE (type) == ENUMERAL_TYPE)
+ if (PROMOTE_PROTOTYPES
+ && (TREE_CODE (type) == INTEGER_TYPE
+ || TREE_CODE (type) == ENUMERAL_TYPE)
&& (TYPE_PRECISION (type) < TYPE_PRECISION (integer_type_node)))
val = default_conversion (val);
-#endif
converted_args = expr_tree_cons (NULL_TREE, val, converted_args);
}
--- ./cp/decl.c.jjm Wed Jun 9 12:11:01 1999
+++ ./cp/decl.c Wed Jun 9 12:15:16 1999
@@ -42,6 +42,7 @@ Boston, MA 02111-1307, USA. */
#include "except.h"
#include "toplev.h"
#include "../hash.h"
+#include "expr.h"
#define obstack_chunk_alloc xmalloc
#define obstack_chunk_free free
@@ -12005,12 +12006,11 @@ grokparms (first_parm, funcdef_flag)
/* Since there is a prototype, args are passed in their own types. */
DECL_ARG_TYPE (decl) = TREE_TYPE (decl);
-#ifdef PROMOTE_PROTOTYPES
- if ((TREE_CODE (type) == INTEGER_TYPE
- || TREE_CODE (type) == ENUMERAL_TYPE)
+ if (PROMOTE_PROTOTYPES
+ && (TREE_CODE (type) == INTEGER_TYPE
+ || TREE_CODE (type) == ENUMERAL_TYPE)
&& TYPE_PRECISION (type) < TYPE_PRECISION (integer_type_node))
DECL_ARG_TYPE (decl) = integer_type_node;
-#endif
if (!any_error && init)
{
any_init++;
--- ./cp/pt.c.jjm Fri May 28 07:35:05 1999
+++ ./cp/pt.c Wed Jun 9 12:16:52 1999
@@ -41,6 +41,7 @@ Boston, MA 02111-1307, USA. */
#include "toplev.h"
#include "rtl.h"
#include "varray.h"
+#include "expr.h"
/* The type of functions taking a tree, and some additional data, and
returning an int. */
@@ -5787,12 +5788,11 @@ tsubst_decl (t, args, type, in_decl)
/*complain=*/1, in_decl);
DECL_CONTEXT (r) = NULL_TREE;
-#ifdef PROMOTE_PROTOTYPES
- if ((TREE_CODE (type) == INTEGER_TYPE
- || TREE_CODE (type) == ENUMERAL_TYPE)
+ if (PROMOTE_PROTOTYPES
+ && (TREE_CODE (type) == INTEGER_TYPE
+ || TREE_CODE (type) == ENUMERAL_TYPE)
&& TYPE_PRECISION (type) < TYPE_PRECISION (integer_type_node))
DECL_ARG_TYPE (r) = integer_type_node;
-#endif
if (TREE_CHAIN (t))
TREE_CHAIN (r) = tsubst (TREE_CHAIN (t), args,
/*complain=*/1, TREE_CHAIN (t));
--- ./cp/typeck.c.jjm Fri May 28 07:35:15 1999
+++ ./cp/typeck.c Thu Jun 3 22:04:14 1999
@@ -3180,13 +3180,12 @@ convert_arguments (typelist, values, fnd
parmval = convert_for_initialization
(NULL_TREE, type, val, flags,
"argument passing", fndecl, i);
-#ifdef PROMOTE_PROTOTYPES
- if ((TREE_CODE (type) == INTEGER_TYPE
- || TREE_CODE (type) == ENUMERAL_TYPE)
+ if (PROMOTE_PROTOTYPES
+ && (TREE_CODE (type) == INTEGER_TYPE
+ || TREE_CODE (type) == ENUMERAL_TYPE)
&& (TYPE_PRECISION (type)
< TYPE_PRECISION (integer_type_node)))
parmval = default_conversion (parmval);
-#endif
}
if (parmval == error_mark_node)
--- ./java/decl.c.jjm Fri May 28 07:36:21 1999
+++ ./java/decl.c Wed Jun 9 12:32:51 1999
@@ -33,6 +33,7 @@ The Free Software Foundation is independ
#include "jcf.h"
#include "toplev.h"
#include "except.h"
+#include "expr.h"
static tree push_jvm_slot PROTO ((int, tree));
static tree builtin_function PROTO ((const char *, tree,
@@ -1609,11 +1610,10 @@ start_java_method (fndecl)
parm_decl = build_decl (PARM_DECL, parm_name, parm_type);
DECL_CONTEXT (parm_decl) = fndecl;
-#ifdef PROMOTE_PROTOTYPES
- if (TYPE_PRECISION (parm_type) < TYPE_PRECISION (integer_type_node)
+ if (PROMOTE_PROTOTYPES
+ && TYPE_PRECISION (parm_type) < TYPE_PRECISION (integer_type_node)
&& INTEGRAL_TYPE_P (parm_type))
parm_type = integer_type_node;
-#endif
DECL_ARG_TYPE (parm_decl) = parm_type;
*ptr = parm_decl;
--- ./java/expr.c.jjm Wed Jun 9 12:24:55 1999
+++ ./java/expr.c Thu Jun 3 22:05:25 1999
@@ -1390,11 +1390,10 @@ pop_arguments (arg_types)
tree tail = pop_arguments (TREE_CHAIN (arg_types));
tree type = TREE_VALUE (arg_types);
tree arg = pop_value (type);
-#ifdef PROMOTE_PROTOTYPES
- if (TYPE_PRECISION (type) < TYPE_PRECISION (integer_type_node)
+ if (PROMOTE_PROTOTYPES
+ && TYPE_PRECISION (type) < TYPE_PRECISION (integer_type_node)
&& INTEGRAL_TYPE_P (type))
arg = convert (integer_type_node, arg);
-#endif
return tree_cons (NULL_TREE, arg, tail);
}
abort ();
--- ./java/parse.y.jjm Wed Jun 9 12:23:32 1999
+++ ./java/parse.y Wed Jun 9 12:23:49 1999
@@ -63,6 +63,7 @@ definitions and other extensions. */
#include "buffer.h"
#include "xref.h"
#include "except.h"
+#include "expr.h"
#ifndef DIR_SEPARATOR
#define DIR_SEPARATOR '/'
@@ -5528,7 +5529,8 @@ expand_start_java_method (fndecl)
tree next = TREE_CHAIN (tem);
tree type = TREE_TYPE (tem);
#ifdef PROMOTE_PROTOTYPES
- if (TYPE_PRECISION (type) < TYPE_PRECISION (integer_type_node)
+ if (PROMOTE_PROTOTYPES
+ && TYPE_PRECISION (type) < TYPE_PRECISION (integer_type_node)
&& INTEGRAL_TYPE_P (type))
type = integer_type_node;
#endif
--- ./java/parse.c.jjm Wed Jun 9 12:19:23 1999
+++ ./java/parse.c Wed Jun 9 12:20:53 1999
@@ -139,6 +139,7 @@
#include "buffer.h"
#include "xref.h"
#include "except.h"
+#include "expr.h"
#ifndef DIR_SEPARATOR
#define DIR_SEPARATOR '/'
@@ -8113,7 +8114,8 @@ expand_start_java_method (fndecl)
tree next = TREE_CHAIN (tem);
tree type = TREE_TYPE (tem);
#ifdef PROMOTE_PROTOTYPES
- if (TYPE_PRECISION (type) < TYPE_PRECISION (integer_type_node)
+ if (PROMOTE_PROTOTYPES
+ && TYPE_PRECISION (type) < TYPE_PRECISION (integer_type_node)
&& INTEGRAL_TYPE_P (type))
type = integer_type_node;
#endif
--- ./c-decl.c.jjm Mon Apr 12 16:05:29 1999
+++ ./c-decl.c Wed Jun 9 12:39:41 1999
@@ -34,6 +34,7 @@ Boston, MA 02111-1307, USA. */
#include "c-tree.h"
#include "c-lex.h"
#include "toplev.h"
+#include "expr.h"
#if USE_CPPLIB
#include "cpplib.h"
@@ -5603,12 +5604,11 @@ get_parm_info (void_at_end)
args are passed in their declared types. */
tree type = TREE_TYPE (decl);
DECL_ARG_TYPE (decl) = type;
-#ifdef PROMOTE_PROTOTYPES
- if ((TREE_CODE (type) == INTEGER_TYPE
- || TREE_CODE (type) == ENUMERAL_TYPE)
+ if (PROMOTE_PROTOTYPES
+ && (TREE_CODE (type) == INTEGER_TYPE
+ || TREE_CODE (type) == ENUMERAL_TYPE)
&& TYPE_PRECISION (type) < TYPE_PRECISION (integer_type_node))
DECL_ARG_TYPE (decl) = integer_type_node;
-#endif
types = saveable_tree_cons (NULL_TREE, TREE_TYPE (decl), types);
if (TYPE_MAIN_VARIANT (TREE_VALUE (types)) == void_type_node && ! erred
@@ -6941,13 +6941,14 @@ store_parm_decls ()
`int foo(float x) {...}'. This is particularly
useful for argument types like uid_t. */
DECL_ARG_TYPE (parm) = TREE_TYPE (parm);
-#ifdef PROMOTE_PROTOTYPES
- if ((TREE_CODE (TREE_TYPE (parm)) == INTEGER_TYPE
- || TREE_CODE (TREE_TYPE (parm)) == ENUMERAL_TYPE)
+
+ if (PROMOTE_PROTOTYPES
+ && (TREE_CODE (TREE_TYPE (parm)) == INTEGER_TYPE
+ || TREE_CODE (TREE_TYPE (parm)) == ENUMERAL_TYPE)
&& TYPE_PRECISION (TREE_TYPE (parm))
< TYPE_PRECISION (integer_type_node))
DECL_ARG_TYPE (parm) = integer_type_node;
-#endif
+
if (pedantic)
{
pedwarn ("promoted argument `%s' doesn't match prototype",
--- ./c-typeck.c.jjm Fri May 28 07:30:14 1999
+++ ./c-typeck.c Thu Jun 3 22:05:42 1999
@@ -1765,12 +1765,11 @@ convert_arguments (typelist, values, nam
(char *) 0, /* arg passing */
fundecl, name, parmnum + 1);
-#ifdef PROMOTE_PROTOTYPES
- if ((TREE_CODE (type) == INTEGER_TYPE
- || TREE_CODE (type) == ENUMERAL_TYPE)
+ if (PROMOTE_PROTOTYPES
+ && (TREE_CODE (type) == INTEGER_TYPE
+ || TREE_CODE (type) == ENUMERAL_TYPE)
&& (TYPE_PRECISION (type) < TYPE_PRECISION (integer_type_node)))
parmval = default_conversion (parmval);
-#endif
}
result = tree_cons (NULL_TREE, parmval, result);
}
--- ./expr.h.jjm Fri May 28 07:30:47 1999
+++ ./expr.h Wed Jun 9 12:42:25 1999
@@ -243,6 +243,11 @@ enum direction {none, upward, downward};
#define PRETEND_OUTGOING_VARARGS_NAMED 0
#endif
+/* Supply a default definition for PROMOTE_PROTOTYPES. */
+#ifndef PROMOTE_PROTOTYPES
+#define PROMOTE_PROTOTYPES 0
+#endif
+
/* Nonzero if we do not know how to pass TYPE solely in registers.
We cannot do so in the following cases:
--- ./config/1750a/1750a.h.jjm Mon Mar 22 01:08:23 1999
+++ ./config/1750a/1750a.h Thu Jun 3 22:15:50 1999
@@ -879,8 +879,8 @@ enum reg_class { NO_REGS, R2, R0_1, INDE
#define STORE_FLAG_VALUE 1
/* When a prototype says `char' or `short', really pass an `int'.
- 1750: for now, `char' is 16 bits wide anyway.
- #define PROMOTE_PROTOTYPES */
+ 1750: for now, `char' is 16 bits wide anyway. */
+#define PROMOTE_PROTOTYPES 0
/* Specify the machine mode that pointers have.
After generation of rtl, the compiler makes no further distinction
--- ./config/arc/arc.h.jjm Wed Dec 16 22:01:18 1998
+++ ./config/arc/arc.h Fri May 28 17:35:53 1999
@@ -634,7 +634,7 @@ extern enum reg_class arc_regno_reg_clas
/* Function argument passing. */
/* When a prototype says `char' or `short', really pass an `int'. */
-#define PROMOTE_PROTOTYPES
+#define PROMOTE_PROTOTYPES 1
/* If defined, the maximum amount of space required for outgoing
arguments will be computed and placed into the variable
--- ./config/convex/convex.h.jjm Wed Dec 16 22:02:25 1998
+++ ./config/convex/convex.h Fri May 28 17:37:09 1999
@@ -1077,7 +1077,7 @@ enum reg_class {
#define NO_FUNCTION_CSE
/* When a prototype says `char' or `short', really pass an `int'. */
-#define PROMOTE_PROTOTYPES
+#define PROMOTE_PROTOTYPES 1
/* Specify the machine mode that pointers have.
After generation of rtl, the compiler makes no further distinction
--- ./config/dsp16xx/dsp16xx.h.jjm Wed Jan 27 02:43:04 1999
+++ ./config/dsp16xx/dsp16xx.h Fri May 28 17:37:46 1999
@@ -1940,7 +1940,7 @@ const_section ()
#define TRULY_NOOP_TRUNCATION(OUTPREC, INPREC) 1
/* When a prototype says `char' or `short', really pass an `int'. */
-#define PROMOTE_PROTOTYPES
+#define PROMOTE_PROTOTYPES 1
/* An alias for the machine mode used for pointers */
#define Pmode QImode
--- ./config/fx80/fx80.h.jjm Mon Mar 22 01:08:17 1999
+++ ./config/fx80/fx80.h Fri May 28 17:38:01 1999
@@ -858,7 +858,7 @@ extern enum reg_class regno_reg_class[];
#define STORE_FLAG_VALUE -1
/* When a prototype says `char' or `short', really pass an `int'. */
-#define PROMOTE_PROTOTYPES
+#define PROMOTE_PROTOTYPES 1
/* Specify the machine mode that pointers have.
After generation of rtl, the compiler makes no further distinction
--- ./config/gmicro/gmicro.h.jjm Wed Dec 16 22:02:48 1998
+++ ./config/gmicro/gmicro.h Fri May 28 17:38:19 1999
@@ -1160,7 +1160,7 @@ extern enum reg_class regno_reg_class[];
/* #define STORE_FLAG_VALUE -1 */
/* When a prototype says `char' or `short', really pass an `int'. */
-#define PROMOTE_PROTOTYPES
+#define PROMOTE_PROTOTYPES 1
/* Specify the machine mode that pointers have.
After generation of rtl, the compiler makes no further distinction
--- ./config/i370/i370.h.jjm Mon Mar 22 01:08:15 1999
+++ ./config/i370/i370.h Fri May 28 17:38:33 1999
@@ -839,7 +839,7 @@ enum reg_class
/* When a prototype says `char' or `short', really pass an `int'. */
-#define PROMOTE_PROTOTYPES
+#define PROMOTE_PROTOTYPES 1
/* Don't perform CSE on function addresses. */
--- ./config/i386/i386.h.jjm Fri May 28 07:33:00 1999
+++ ./config/i386/i386.h Fri May 28 17:38:51 1999
@@ -1958,7 +1958,7 @@ while (0)
/* When a prototype says `char' or `short', really pass an `int'.
(The 386 can't easily push less than an int.) */
-#define PROMOTE_PROTOTYPES
+#define PROMOTE_PROTOTYPES 1
/* Specify the machine mode that pointers have.
After generation of rtl, the compiler makes no further distinction
--- ./config/i860/paragon.h.jjm Mon Mar 22 01:08:14 1999
+++ ./config/i860/paragon.h Thu Jun 3 22:31:51 1999
@@ -174,12 +174,6 @@ Boston, MA 02111-1307, USA. */
*/
#define ASM_STABS_OP "//.stabs"
-/* Define this macro if an argument declared as `char' or `short' in a
- prototype should actually be passed as an `int'. In addition to
- avoiding errors in certain cases of mismatch, it also makes for
- better code on certain machines. */
-/*#define PROMOTE_PROTOTYPES*/
-
/* Define this macro if an instruction to load a value narrower
than a word from memory into a register also zero-extends the
value to the whole register. */
--- ./config/m32r/m32r.h.jjm Wed Dec 16 22:06:02 1998
+++ ./config/m32r/m32r.h Fri May 28 17:40:43 1999
@@ -810,7 +810,7 @@ M32R_STACK_ALIGN (current_function_outgo
/* Function argument passing. */
/* When a prototype says `char' or `short', really pass an `int'. */
-#define PROMOTE_PROTOTYPES
+#define PROMOTE_PROTOTYPES 1
/* If defined, the maximum amount of space required for outgoing
arguments will be computed and placed into the variable
--- ./config/m68k/m68k.h.jjm Mon Mar 1 16:06:46 1999
+++ ./config/m68k/m68k.h Fri May 28 17:41:04 1999
@@ -1600,7 +1600,7 @@ __transfer_from_trampoline () \
#define STORE_FLAG_VALUE -1
/* When a prototype says `char' or `short', really pass an `int'. */
-#define PROMOTE_PROTOTYPES
+#define PROMOTE_PROTOTYPES 1
/* Specify the machine mode that pointers have.
After generation of rtl, the compiler makes no further distinction
--- ./config/m88k/m88k.h.jjm Wed Dec 16 22:08:23 1998
+++ ./config/m88k/m88k.h Fri May 28 17:41:29 1999
@@ -1576,7 +1576,7 @@ enum reg_class { NO_REGS, AP_REG, XRF_RE
`short' in a prototype should actually be passed as an
`int'. In addition to avoiding errors in certain cases of
mismatch, it also makes for better code on certain machines. */
-#define PROMOTE_PROTOTYPES
+#define PROMOTE_PROTOTYPES 1
/* Define this macro if a float function always returns float
(even in traditional mode). Redefined in luna.h. */
--- ./config/mips/mips.h.jjm Fri May 28 07:33:32 1999
+++ ./config/mips/mips.h Fri May 28 17:41:49 1999
@@ -1495,7 +1495,7 @@ do { \
avoiding errors in certain cases of mismatch, it also makes for
better code on certain machines. */
-#define PROMOTE_PROTOTYPES
+#define PROMOTE_PROTOTYPES 1
/* Define if operations between registers always perform the operation
on the full register even if a narrower mode is specified. */
--- ./config/pa/pa.h.jjm Fri May 28 07:33:49 1999
+++ ./config/pa/pa.h Fri May 28 17:42:10 1999
@@ -1884,7 +1884,7 @@ while (0)
#define STORE_FLAG_VALUE 1
/* When a prototype says `char' or `short', really pass an `int'. */
-#define PROMOTE_PROTOTYPES
+#define PROMOTE_PROTOTYPES 1
/* Specify the machine mode that pointers have.
After generation of rtl, the compiler makes no further distinction
--- ./config/pyr/pyr.h.jjm Wed Dec 16 22:11:31 1998
+++ ./config/pyr/pyr.h Fri May 28 17:42:44 1999
@@ -1045,7 +1045,7 @@ extern int current_function_calls_alloca
/* #define NO_FUNCTION_CSE */
/* When a prototype says `char' or `short', really pass an `int'. */
-#define PROMOTE_PROTOTYPES
+#define PROMOTE_PROTOTYPES 1
/* There are no flag store insns on a pyr. */
/* #define STORE_FLAG_VALUE */
--- ./config/sparc/sparc.h.jjm Fri May 28 07:34:19 1999
+++ ./config/sparc/sparc.h Fri May 28 18:33:19 1999
@@ -2686,7 +2698,7 @@ do {
#define STORE_FLAG_VALUE 1
/* When a prototype says `char' or `short', really pass an `int'. */
-#define PROMOTE_PROTOTYPES
+#define PROMOTE_PROTOTYPES (TARGET_ARCH32)
/* Define this to be nonzero if shift instructions ignore all but the low-order
few bits. */
--- ./config/tahoe/tahoe.h.jjm Wed Dec 16 22:14:11 1998
+++ ./config/tahoe/tahoe.h Fri May 28 17:51:39 1999
@@ -627,7 +627,7 @@ enum reg_class {NO_REGS,GENERAL_REGS,FPP
/* pass chars as ints */
-#define PROMOTE_PROTOTYPES
+#define PROMOTE_PROTOTYPES 1
/* pointers can be represented by an si mode expression */
--- ./config/we32k/we32k.h.jjm Wed Dec 16 22:14:35 1998
+++ ./config/we32k/we32k.h Fri May 28 17:51:57 1999
@@ -664,7 +664,7 @@ enum reg_class { NO_REGS, GENERAL_REGS,
#define STORE_FLAG_VALUE -1
/* When a prototype says `char' or `short', really pass an `int'. */
-#define PROMOTE_PROTOTYPES
+#define PROMOTE_PROTOTYPES 1
/* Specify the machine mode that pointers have.
After generation of rtl, the compiler makes no further distinction
--- ./tm.texi.jjm Fri May 28 07:31:49 1999
+++ ./tm.texi Thu Jun 3 22:36:29 1999
@@ -2607,10 +2608,12 @@
@table @code
@findex PROMOTE_PROTOTYPES
@item PROMOTE_PROTOTYPES
-Define this macro if an argument declared in a prototype as an
-integral type smaller than @code{int} should actually be passed as an
-@code{int}. In addition to avoiding errors in certain cases of
-mismatch, it also makes for better code on certain machines.
+A C expression whose value is nonzero if an argument declared in
+a prototype as an integral type smaller than @code{int} should
+actually be passed as an @code{int}. In addition to avoiding
+errors in certain cases of mismatch, it also makes for better
+code on certain machines. If the macro is not defined in target
+header files, it defaults to 0.
@findex PUSH_ROUNDING
@item PUSH_ROUNDING (@var{npushed})
Cheers,
Jakub
___________________________________________________________________
Jakub Jelinek | jj@sunsite.mff.cuni.cz | http://sunsite.mff.cuni.cz
Administrator of SunSITE Czech Republic, MFF, Charles University
___________________________________________________________________
UltraLinux | http://ultra.linux.cz/ | http://ultra.penguin.cz/
Linux version 2.3.4 on a sparc64 machine (1343.49 BogoMips)
___________________________________________________________________