parent
ddd5a7c180
commit
9faa82d8c0
|
@ -260,7 +260,7 @@ init_dummy ()
|
||||||
|
|
||||||
Note that we use some tricks here to get *just* the body and just
|
Note that we use some tricks here to get *just* the body and just
|
||||||
a function epilogue (but no function prologue) into the .init
|
a function epilogue (but no function prologue) into the .init
|
||||||
section of the crtend.o file. Sepcifically, we switch to the .text
|
section of the crtend.o file. Specifically, we switch to the .text
|
||||||
section, start to define a function, and then we switch to the .init
|
section, start to define a function, and then we switch to the .init
|
||||||
section just before the body code.
|
section just before the body code.
|
||||||
|
|
||||||
|
|
|
@ -4999,7 +4999,7 @@ fold_rtx (x, insn)
|
||||||
if (offset == 0 && mode == const_mode)
|
if (offset == 0 && mode == const_mode)
|
||||||
return constant;
|
return constant;
|
||||||
|
|
||||||
/* If this actually isn't a constant (wierd!), we can't do
|
/* If this actually isn't a constant (weird!), we can't do
|
||||||
anything. Otherwise, handle the two most common cases:
|
anything. Otherwise, handle the two most common cases:
|
||||||
extracting a word from a multi-word constant, and extracting
|
extracting a word from a multi-word constant, and extracting
|
||||||
the low-order bits. Other cases don't seem common enough to
|
the low-order bits. Other cases don't seem common enough to
|
||||||
|
@ -6192,7 +6192,7 @@ cse_insn (insn, in_libcall_block)
|
||||||
/* Store the equivalent value in SRC_EQV, if different, or if the DEST
|
/* Store the equivalent value in SRC_EQV, if different, or if the DEST
|
||||||
is a STRICT_LOW_PART. The latter condition is necessary because SRC_EQV
|
is a STRICT_LOW_PART. The latter condition is necessary because SRC_EQV
|
||||||
is handled specially for this case, and if it isn't set, then there will
|
is handled specially for this case, and if it isn't set, then there will
|
||||||
be no equivalence for the destinatation. */
|
be no equivalence for the destination. */
|
||||||
if (n_sets == 1 && REG_NOTES (insn) != 0
|
if (n_sets == 1 && REG_NOTES (insn) != 0
|
||||||
&& (tem = find_reg_note (insn, REG_EQUAL, NULL_RTX)) != 0
|
&& (tem = find_reg_note (insn, REG_EQUAL, NULL_RTX)) != 0
|
||||||
&& (! rtx_equal_p (XEXP (tem, 0), SET_SRC (sets[0].rtl))
|
&& (! rtx_equal_p (XEXP (tem, 0), SET_SRC (sets[0].rtl))
|
||||||
|
|
|
@ -1957,7 +1957,7 @@ location_attribute (rtl)
|
||||||
suppress the generation of the entire location attribute because
|
suppress the generation of the entire location attribute because
|
||||||
the absence of a location attribute in certain kinds of DIEs is
|
the absence of a location attribute in certain kinds of DIEs is
|
||||||
used to indicate something else entirely... i.e. that the DIE
|
used to indicate something else entirely... i.e. that the DIE
|
||||||
represents an object declaration, but not a definition. So sayeth
|
represents an object declaration, but not a definition. So saith
|
||||||
the PLSIG.
|
the PLSIG.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -2414,7 +2414,7 @@ subscript_data_attribute (type)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Output the prefix byte that says that the element type is comming up. */
|
/* Output the prefix byte that says that the element type is coming up. */
|
||||||
|
|
||||||
ASM_OUTPUT_DWARF_FMT_BYTE (asm_out_file, FMT_ET);
|
ASM_OUTPUT_DWARF_FMT_BYTE (asm_out_file, FMT_ET);
|
||||||
|
|
||||||
|
@ -4524,7 +4524,7 @@ output_decl (decl, containing_scope)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* this is unprotoyped, check for undefined (just declaration) */
|
/* this is unprototyped, check for undefined (just declaration) */
|
||||||
if (!DECL_INITIAL (decl))
|
if (!DECL_INITIAL (decl))
|
||||||
output_die (output_unspecified_parameters_die, decl);
|
output_die (output_unspecified_parameters_die, decl);
|
||||||
}
|
}
|
||||||
|
@ -4555,7 +4555,7 @@ output_decl (decl, containing_scope)
|
||||||
|
|
||||||
Just within the `outer_scope' there will be another BLOCK
|
Just within the `outer_scope' there will be another BLOCK
|
||||||
node representing the function's outermost pair of curly
|
node representing the function's outermost pair of curly
|
||||||
braces. We musn't generate a lexical_block DIE for this
|
braces. We mustn't generate a lexical_block DIE for this
|
||||||
outermost pair of curly braces because that is not really an
|
outermost pair of curly braces because that is not really an
|
||||||
independent scope according to ANSI C rules. Rather, it is
|
independent scope according to ANSI C rules. Rather, it is
|
||||||
the same scope in which the parameters were declared. */
|
the same scope in which the parameters were declared. */
|
||||||
|
@ -4756,12 +4756,12 @@ dwarfout_file_scope_decl (decl, set_finalizing)
|
||||||
/* What we would really like to do here is to filter out all mere
|
/* What we would really like to do here is to filter out all mere
|
||||||
file-scope declarations of file-scope functions which are never
|
file-scope declarations of file-scope functions which are never
|
||||||
referenced later within this translation unit (and keep all of
|
referenced later within this translation unit (and keep all of
|
||||||
ones that *are* referenced later on) but we aren't clarvoiant,
|
ones that *are* referenced later on) but we aren't clairvoyant,
|
||||||
so we have no idea which functions will be referenced in the
|
so we have no idea which functions will be referenced in the
|
||||||
future (i.e. later on within the current translation unit).
|
future (i.e. later on within the current translation unit).
|
||||||
So here we just ignore all file-scope function declarations
|
So here we just ignore all file-scope function declarations
|
||||||
which are not also definitions. If and when the debugger needs
|
which are not also definitions. If and when the debugger needs
|
||||||
to know something about these funcstion, it wil have to hunt
|
to know something about these functions, it wil have to hunt
|
||||||
around and find the DWARF information associated with the
|
around and find the DWARF information associated with the
|
||||||
*definition* of the function.
|
*definition* of the function.
|
||||||
|
|
||||||
|
|
|
@ -1598,7 +1598,7 @@ reset_used_flags (x)
|
||||||
|
|
||||||
code = GET_CODE (x);
|
code = GET_CODE (x);
|
||||||
|
|
||||||
/* These types may be freely shared so we needn't do any reseting
|
/* These types may be freely shared so we needn't do any resetting
|
||||||
for them. */
|
for them. */
|
||||||
|
|
||||||
switch (code)
|
switch (code)
|
||||||
|
@ -3060,8 +3060,8 @@ gen_sequence ()
|
||||||
sequence_result[len] = 0;
|
sequence_result[len] = 0;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* Ensure that this rtl goes in saveable_obstack, since we may be
|
/* Ensure that this rtl goes in saveable_obstack, since we may
|
||||||
caching it. */
|
cache it. */
|
||||||
push_obstacks_nochange ();
|
push_obstacks_nochange ();
|
||||||
rtl_in_saveable_obstack ();
|
rtl_in_saveable_obstack ();
|
||||||
result = gen_rtx (SEQUENCE, VOIDmode, rtvec_alloc (len));
|
result = gen_rtx (SEQUENCE, VOIDmode, rtvec_alloc (len));
|
||||||
|
|
|
@ -982,7 +982,7 @@ allocate_dynamic_stack_space (size, target, known_align)
|
||||||
int known_align;
|
int known_align;
|
||||||
{
|
{
|
||||||
/* If we're asking for zero bytes, it doesn't matter what we point
|
/* If we're asking for zero bytes, it doesn't matter what we point
|
||||||
to since we can't derefference it. But return a reasonable
|
to since we can't dereference it. But return a reasonable
|
||||||
address anyway. */
|
address anyway. */
|
||||||
if (size == const0_rtx)
|
if (size == const0_rtx)
|
||||||
return virtual_stack_dynamic_rtx;
|
return virtual_stack_dynamic_rtx;
|
||||||
|
|
|
@ -2811,7 +2811,7 @@ expand_divmod (rem_flag, code, mode, op0, op1, target, unsignedp)
|
||||||
|
|
||||||
last = get_last_insn ();
|
last = get_last_insn ();
|
||||||
|
|
||||||
/* Promote floor rouding to trunc rounding for unsigned operations. */
|
/* Promote floor rounding to trunc rounding for unsigned operations. */
|
||||||
if (unsignedp)
|
if (unsignedp)
|
||||||
{
|
{
|
||||||
if (code == FLOOR_DIV_EXPR)
|
if (code == FLOOR_DIV_EXPR)
|
||||||
|
|
|
@ -3149,7 +3149,7 @@ store_constructor (exp, target)
|
||||||
tree domain = TYPE_DOMAIN (type);
|
tree domain = TYPE_DOMAIN (type);
|
||||||
tree domain_min, domain_max, bitlength;
|
tree domain_min, domain_max, bitlength;
|
||||||
|
|
||||||
/* The default implementation stategy is to extract the constant
|
/* The default implementation strategy is to extract the constant
|
||||||
parts of the constructor, use that to initialize the target,
|
parts of the constructor, use that to initialize the target,
|
||||||
and then "or" in whatever non-constant ranges we need in addition.
|
and then "or" in whatever non-constant ranges we need in addition.
|
||||||
|
|
||||||
|
@ -3274,7 +3274,7 @@ store_constructor (exp, target)
|
||||||
|
|
||||||
#ifdef TARGET_MEM_FUNCTIONS
|
#ifdef TARGET_MEM_FUNCTIONS
|
||||||
/* Optimization: If startbit and endbit are
|
/* Optimization: If startbit and endbit are
|
||||||
constants divisble by BITS_PER_UNIT,
|
constants divisible by BITS_PER_UNIT,
|
||||||
call memset instead. */
|
call memset instead. */
|
||||||
if (TREE_CODE (startbit) == INTEGER_CST
|
if (TREE_CODE (startbit) == INTEGER_CST
|
||||||
&& TREE_CODE (endbit) == INTEGER_CST
|
&& TREE_CODE (endbit) == INTEGER_CST
|
||||||
|
@ -7955,7 +7955,7 @@ static enum machine_mode apply_result_mode[FIRST_PSEUDO_REGISTER];
|
||||||
|
|
||||||
/* For each register that may be used for calling a function, this
|
/* For each register that may be used for calling a function, this
|
||||||
gives the offset of that register into the block returned by
|
gives the offset of that register into the block returned by
|
||||||
__bultin_apply_args. 0 indicates that the register is not
|
__builtin_apply_args. 0 indicates that the register is not
|
||||||
used for calling a function. */
|
used for calling a function. */
|
||||||
static int apply_args_reg_offset[FIRST_PSEUDO_REGISTER];
|
static int apply_args_reg_offset[FIRST_PSEUDO_REGISTER];
|
||||||
|
|
||||||
|
@ -8475,7 +8475,7 @@ expand_increment (exp, post)
|
||||||
op0 = expand_expr (incremented, NULL_RTX, VOIDmode, 0);
|
op0 = expand_expr (incremented, NULL_RTX, VOIDmode, 0);
|
||||||
|
|
||||||
/* If OP0 is a SUBREG made for a promoted variable, we cannot increment
|
/* If OP0 is a SUBREG made for a promoted variable, we cannot increment
|
||||||
in place but intead must do sign- or zero-extension during assignment,
|
in place but instead must do sign- or zero-extension during assignment,
|
||||||
so we copy it into a new register and let the code below use it as
|
so we copy it into a new register and let the code below use it as
|
||||||
a copy.
|
a copy.
|
||||||
|
|
||||||
|
|
|
@ -643,7 +643,7 @@ extern rtx emit_move_insn_1 PROTO ((rtx, rtx));
|
||||||
and return an rtx to address the beginning of the block. */
|
and return an rtx to address the beginning of the block. */
|
||||||
extern rtx push_block PROTO((rtx, int, int));
|
extern rtx push_block PROTO((rtx, int, int));
|
||||||
|
|
||||||
/* Make an operand to push someting on the stack. */
|
/* Make an operand to push something on the stack. */
|
||||||
extern rtx gen_push_operand PROTO((void));
|
extern rtx gen_push_operand PROTO((void));
|
||||||
|
|
||||||
#ifdef TREE_CODE
|
#ifdef TREE_CODE
|
||||||
|
|
|
@ -29,7 +29,7 @@ Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
|
||||||
the empty parameter list with the argument lust from sys-protos.h.
|
the empty parameter list with the argument lust from sys-protos.h.
|
||||||
|
|
||||||
* The program can be given a list of (names of) required standard
|
* The program can be given a list of (names of) required standard
|
||||||
functions (such as fclose for stdio.h). If a reqquired function
|
functions (such as fclose for stdio.h). If a required function
|
||||||
is not seen in the input, then a prototype for it will be
|
is not seen in the input, then a prototype for it will be
|
||||||
written to the output.
|
written to the output.
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
# provide many essential definitions and declarations if
|
# provide many essential definitions and declarations if
|
||||||
# __STDC__ is 1. This script modifies the header files to check
|
# __STDC__ is 1. This script modifies the header files to check
|
||||||
# for __STRICT_ANSI__ being defined instead. However the most
|
# for __STRICT_ANSI__ being defined instead. However the most
|
||||||
# important modification is to change all occurences of __stdcall
|
# important modification is to change all occurrences of __stdcall
|
||||||
# and __cdecl to __attribute__((stdcall)) and __attribute__((cdecl)),
|
# and __cdecl to __attribute__((stdcall)) and __attribute__((cdecl)),
|
||||||
# respectively. Once munged, the
|
# respectively. Once munged, the
|
||||||
# resulting new system include files are placed in a directory
|
# resulting new system include files are placed in a directory
|
||||||
|
|
|
@ -46,7 +46,7 @@
|
||||||
# files are copied. An earlier version just included the original
|
# files are copied. An earlier version just included the original
|
||||||
# by "reference", using GNU cpp's #include_next mechanism.
|
# by "reference", using GNU cpp's #include_next mechanism.
|
||||||
# This is currently not done, partly because #include_next is
|
# This is currently not done, partly because #include_next is
|
||||||
# fragile (susceptible to version incompatibilties, and depends
|
# fragile (susceptible to version incompatibilities, and depends
|
||||||
# and GCC-specific features), and partly for performance reasons.
|
# and GCC-specific features), and partly for performance reasons.
|
||||||
#
|
#
|
||||||
# AUTHORS
|
# AUTHORS
|
||||||
|
|
|
@ -177,7 +177,7 @@ int *reg_basic_block;
|
||||||
|
|
||||||
int *reg_n_refs;
|
int *reg_n_refs;
|
||||||
|
|
||||||
/* Indexed by N; says whether a psuedo register N was ever used
|
/* Indexed by N; says whether a pseudo register N was ever used
|
||||||
within a SUBREG that changes the size of the reg. Some machines prohibit
|
within a SUBREG that changes the size of the reg. Some machines prohibit
|
||||||
such objects to be in certain (usually floating-point) registers. */
|
such objects to be in certain (usually floating-point) registers. */
|
||||||
|
|
||||||
|
@ -727,14 +727,14 @@ find_basic_blocks (f, nonlocal_label_list)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* There are pathalogical cases where one function calling hundreds of
|
/* There are pathological cases where one function calling hundreds of
|
||||||
nested inline functions can generate lots and lots of unreachable
|
nested inline functions can generate lots and lots of unreachable
|
||||||
blocks that jump can't delete. Since we don't use sparse matrices
|
blocks that jump can't delete. Since we don't use sparse matrices
|
||||||
a lot of memory will be needed to compile such functions.
|
a lot of memory will be needed to compile such functions.
|
||||||
Implementing sparse matrices is a fair bit of work and it is not
|
Implementing sparse matrices is a fair bit of work and it is not
|
||||||
clear that they win more than they lose (we don't want to
|
clear that they win more than they lose (we don't want to
|
||||||
unnecessarily slow down compilation of normal code). By making
|
unnecessarily slow down compilation of normal code). By making
|
||||||
another pass for the pathalogical case, we can greatly speed up
|
another pass for the pathological case, we can greatly speed up
|
||||||
their compilation without hurting normal code. This works because
|
their compilation without hurting normal code. This works because
|
||||||
all the insns in the unreachable blocks have either been deleted or
|
all the insns in the unreachable blocks have either been deleted or
|
||||||
turned into notes.
|
turned into notes.
|
||||||
|
|
|
@ -2631,7 +2631,7 @@ unextend (c, p, unsignedp)
|
||||||
c = convert (signed_type (type), c);
|
c = convert (signed_type (type), c);
|
||||||
|
|
||||||
/* We work by getting just the sign bit into the low-order bit, then
|
/* We work by getting just the sign bit into the low-order bit, then
|
||||||
into the high-order bit, then sign-extened. We then XOR that value
|
into the high-order bit, then sign-extend. We then XOR that value
|
||||||
with C. */
|
with C. */
|
||||||
temp = const_binop (RSHIFT_EXPR, c, size_int (p - 1), 0);
|
temp = const_binop (RSHIFT_EXPR, c, size_int (p - 1), 0);
|
||||||
temp = const_binop (BIT_AND_EXPR, temp, size_int (1), 0);
|
temp = const_binop (BIT_AND_EXPR, temp, size_int (1), 0);
|
||||||
|
@ -3277,7 +3277,7 @@ fold (expr)
|
||||||
succeed in folding one part to a constant, we do not need
|
succeed in folding one part to a constant, we do not need
|
||||||
to make this SAVE_EXPR. Since we do this optimization
|
to make this SAVE_EXPR. Since we do this optimization
|
||||||
primarily to see if we do end up with constant and this
|
primarily to see if we do end up with constant and this
|
||||||
SAVE_EXPR interfers with later optimizations, suppressing
|
SAVE_EXPR interferes with later optimizations, suppressing
|
||||||
it when we can is important. */
|
it when we can is important. */
|
||||||
|
|
||||||
if (TREE_CODE (arg0) != SAVE_EXPR
|
if (TREE_CODE (arg0) != SAVE_EXPR
|
||||||
|
|
|
@ -60,7 +60,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
|
||||||
/* Some systems use __main in a way incompatible with its use in gcc, in these
|
/* Some systems use __main in a way incompatible with its use in gcc, in these
|
||||||
cases use the macros NAME__MAIN to give a quoted symbol and SYMBOL__MAIN to
|
cases use the macros NAME__MAIN to give a quoted symbol and SYMBOL__MAIN to
|
||||||
give the same symbol without quotes for an alternative entry point. You
|
give the same symbol without quotes for an alternative entry point. You
|
||||||
must define both, or niether. */
|
must define both, or neither. */
|
||||||
#ifndef NAME__MAIN
|
#ifndef NAME__MAIN
|
||||||
#define NAME__MAIN "__main"
|
#define NAME__MAIN "__main"
|
||||||
#define SYMBOL__MAIN __main
|
#define SYMBOL__MAIN __main
|
||||||
|
@ -978,7 +978,7 @@ find_temp_slot_from_address (x)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Indicate that NEW is an alternate way of refering to the temp slot
|
/* Indicate that NEW is an alternate way of referring to the temp slot
|
||||||
that previous was known by OLD. */
|
that previous was known by OLD. */
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -1002,7 +1002,7 @@ update_temp_slot_address (old, new)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If X could be a reference to a temporary slot, mark the fact that its
|
/* If X could be a reference to a temporary slot, mark the fact that its
|
||||||
adddress was taken. */
|
address was taken. */
|
||||||
|
|
||||||
void
|
void
|
||||||
mark_temp_addr_taken (x)
|
mark_temp_addr_taken (x)
|
||||||
|
@ -1470,7 +1470,7 @@ fixup_var_refs_insns (var, promoted_mode, unsignedp, insn, toplevel)
|
||||||
|
|
||||||
If we don't use an intermediate pseudo, such things as
|
If we don't use an intermediate pseudo, such things as
|
||||||
address computations to make the address of VAR valid
|
address computations to make the address of VAR valid
|
||||||
if it is not can be placed beween the CALL_INSN and INSN.
|
if it is not can be placed between the CALL_INSN and INSN.
|
||||||
|
|
||||||
To make sure this doesn't happen, we record the destination
|
To make sure this doesn't happen, we record the destination
|
||||||
of the CALL_INSN and see if the next insn uses both that
|
of the CALL_INSN and see if the next insn uses both that
|
||||||
|
@ -5105,7 +5105,7 @@ expand_function_start (subr, parms_have_cleanups)
|
||||||
/* Fetch static chain values for containing functions. */
|
/* Fetch static chain values for containing functions. */
|
||||||
tem = decl_function_context (current_function_decl);
|
tem = decl_function_context (current_function_decl);
|
||||||
/* If not doing stupid register allocation copy the static chain
|
/* If not doing stupid register allocation copy the static chain
|
||||||
pointer into a psuedo. If we have small register classes, copy the
|
pointer into a pseudo. If we have small register classes, copy the
|
||||||
value from memory if static_chain_incoming_rtx is a REG. If we do
|
value from memory if static_chain_incoming_rtx is a REG. If we do
|
||||||
stupid register allocation, we use the stack address generated above. */
|
stupid register allocation, we use the stack address generated above. */
|
||||||
if (tem && ! obey_regdecls)
|
if (tem && ! obey_regdecls)
|
||||||
|
@ -5452,7 +5452,7 @@ contains (insn, vec)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Generate the prologe and epilogue RTL if the machine supports it. Thread
|
/* Generate the prologue and epilogue RTL if the machine supports it. Thread
|
||||||
this into place with notes indicating where the prologue ends and where
|
this into place with notes indicating where the prologue ends and where
|
||||||
the epilogue begins. Update the basic block information when possible. */
|
the epilogue begins. Update the basic block information when possible. */
|
||||||
|
|
||||||
|
|
|
@ -372,7 +372,7 @@ add_to_sequence (pattern, last, position)
|
||||||
|
|
||||||
Finally, if we know that the predicate does not allow CONST_INT, we
|
Finally, if we know that the predicate does not allow CONST_INT, we
|
||||||
know that the only way the predicate can match is if the modes match
|
know that the only way the predicate can match is if the modes match
|
||||||
(here we use the kluge of relying on the fact that "address_operand"
|
(here we use the kludge of relying on the fact that "address_operand"
|
||||||
accepts CONST_INT; otherwise, it would have to be a special case),
|
accepts CONST_INT; otherwise, it would have to be a special case),
|
||||||
so we can test the mode (but we need not). This fact should
|
so we can test the mode (but we need not). This fact should
|
||||||
considerably simplify the generated code. */
|
considerably simplify the generated code. */
|
||||||
|
|
|
@ -2190,7 +2190,7 @@ copy_rtx_and_substitute (orig, map)
|
||||||
&& CODE_LABEL_NUMBER (XEXP (copy, 0)) < max_label_num ()));
|
&& CODE_LABEL_NUMBER (XEXP (copy, 0)) < max_label_num ()));
|
||||||
|
|
||||||
/* If we have made a nonlocal label local, it means that this
|
/* If we have made a nonlocal label local, it means that this
|
||||||
inlined call will be refering to our nonlocal goto handler.
|
inlined call will be referring to our nonlocal goto handler.
|
||||||
So make sure we create one for this block; we normally would
|
So make sure we create one for this block; we normally would
|
||||||
not since this is not otherwise considered a "call". */
|
not since this is not otherwise considered a "call". */
|
||||||
if (LABEL_REF_NONLOCAL_P (orig) && ! LABEL_REF_NONLOCAL_P (copy))
|
if (LABEL_REF_NONLOCAL_P (orig) && ! LABEL_REF_NONLOCAL_P (copy))
|
||||||
|
|
|
@ -1136,7 +1136,7 @@ __fixunssfsi (SFtype a)
|
||||||
#ifdef L__gcc_bcmp
|
#ifdef L__gcc_bcmp
|
||||||
|
|
||||||
/* Like bcmp except the sign is meaningful.
|
/* Like bcmp except the sign is meaningful.
|
||||||
Reult is negative if S1 is less than S2,
|
Result is negative if S1 is less than S2,
|
||||||
positive if S1 is greater, 0 if S1 and S2 are equal. */
|
positive if S1 is greater, 0 if S1 and S2 are equal. */
|
||||||
|
|
||||||
int
|
int
|
||||||
|
@ -1422,7 +1422,7 @@ BLOCK_PROFILER_CODE
|
||||||
#ifndef inhibit_libc
|
#ifndef inhibit_libc
|
||||||
|
|
||||||
/* Simple minded basic block profiling output dumper for
|
/* Simple minded basic block profiling output dumper for
|
||||||
systems that don't provde tcov support. At present,
|
systems that don't provide tcov support. At present,
|
||||||
it requires atexit and stdio. */
|
it requires atexit and stdio. */
|
||||||
|
|
||||||
#undef NULL /* Avoid errors if stdio.h and our stddef.h mismatch. */
|
#undef NULL /* Avoid errors if stdio.h and our stddef.h mismatch. */
|
||||||
|
@ -2017,7 +2017,7 @@ __enable_execute_stack ()
|
||||||
/* Some systems use __main in a way incompatible with its use in gcc, in these
|
/* Some systems use __main in a way incompatible with its use in gcc, in these
|
||||||
cases use the macros NAME__MAIN to give a quoted symbol and SYMBOL__MAIN to
|
cases use the macros NAME__MAIN to give a quoted symbol and SYMBOL__MAIN to
|
||||||
give the same symbol without quotes for an alternative entry point. You
|
give the same symbol without quotes for an alternative entry point. You
|
||||||
must define both, or niether. */
|
must define both, or neither. */
|
||||||
#ifndef NAME__MAIN
|
#ifndef NAME__MAIN
|
||||||
#define NAME__MAIN "__main"
|
#define NAME__MAIN "__main"
|
||||||
#define SYMBOL__MAIN __main
|
#define SYMBOL__MAIN __main
|
||||||
|
|
|
@ -1625,7 +1625,7 @@ qty_compare_1 (q1, q2)
|
||||||
is called for quantities that have suggested hard registers. First priority
|
is called for quantities that have suggested hard registers. First priority
|
||||||
goes to quantities that have copy preferences, then to those that have
|
goes to quantities that have copy preferences, then to those that have
|
||||||
normal preferences. Within those groups, quantities with the lower
|
normal preferences. Within those groups, quantities with the lower
|
||||||
number of preferenes have the highest priority. Of those, we use the same
|
number of preferences have the highest priority. Of those, we use the same
|
||||||
algorithm as above. */
|
algorithm as above. */
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
|
|
@ -2359,7 +2359,7 @@ add_aux_sym_tir (t, state, hash_tbl)
|
||||||
: (t->sizes[i] * 8) / t->dimensions[i]);
|
: (t->sizes[i] * 8) / t->dimensions[i]);
|
||||||
};
|
};
|
||||||
|
|
||||||
/* NOTE: Mips documentation claism that the bitfield width goes here.
|
/* NOTE: Mips documentation claims that the bitfield width goes here.
|
||||||
But it needs to be emitted earlier. */
|
But it needs to be emitted earlier. */
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -3332,7 +3332,7 @@ parse_def (name_start)
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (symbol_type == st_Member && t.num_sizes - t.extra_sizes == 1)
|
else if (symbol_type == st_Member && t.num_sizes - t.extra_sizes == 1)
|
||||||
{ /* Is this a bitfield? This is indicated by a structure memeber
|
{ /* Is this a bitfield? This is indicated by a structure member
|
||||||
having a size field that isn't an array. */
|
having a size field that isn't an array. */
|
||||||
|
|
||||||
t.bitfield = 1;
|
t.bitfield = 1;
|
||||||
|
@ -3632,7 +3632,7 @@ mark_stabs (start)
|
||||||
{
|
{
|
||||||
if (!stabs_seen)
|
if (!stabs_seen)
|
||||||
{
|
{
|
||||||
/* Add a dummy @stabs dymbol. */
|
/* Add a dummy @stabs symbol. */
|
||||||
stabs_seen = 1;
|
stabs_seen = 1;
|
||||||
(void) add_local_symbol (stabs_symbol,
|
(void) add_local_symbol (stabs_symbol,
|
||||||
stabs_symbol + sizeof (stabs_symbol),
|
stabs_symbol + sizeof (stabs_symbol),
|
||||||
|
|
|
@ -275,9 +275,9 @@ class_pose_as (Class impostor, Class super_class)
|
||||||
impostor->subclass_list = sub;
|
impostor->subclass_list = sub;
|
||||||
|
|
||||||
/* It will happen that SUB is not a class object if it is
|
/* It will happen that SUB is not a class object if it is
|
||||||
the top of the meta class hierachy chain. (root
|
the top of the meta class hierarchy chain. (root
|
||||||
meta-class objects inherit theit class object) If that is
|
meta-class objects inherit their class object) If that is
|
||||||
the case... dont mess with the meta-meta class. */
|
the case... don't mess with the meta-meta class. */
|
||||||
if (CLS_ISCLASS (sub))
|
if (CLS_ISCLASS (sub))
|
||||||
{
|
{
|
||||||
/* meta classes */
|
/* meta classes */
|
||||||
|
@ -305,7 +305,7 @@ class_pose_as (Class impostor, Class super_class)
|
||||||
|
|
||||||
/* This is how to update the lookup table. Regardless of
|
/* This is how to update the lookup table. Regardless of
|
||||||
what the keys of the hashtable is, change all values that are
|
what the keys of the hashtable is, change all values that are
|
||||||
suprecalss into impostor. */
|
superclass into impostor. */
|
||||||
|
|
||||||
for (node = hash_next (__objc_class_hash, NULL); node;
|
for (node = hash_next (__objc_class_hash, NULL); node;
|
||||||
node = hash_next (__objc_class_hash, node))
|
node = hash_next (__objc_class_hash, node))
|
||||||
|
|
|
@ -281,7 +281,7 @@ objc_promoted_size (const char* type)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Skip type qualifiers. These may eventually precede typespecs
|
Skip type qualifiers. These may eventually precede typespecs
|
||||||
occuring in method prototype encodings.
|
occurring in method prototype encodings.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
inline const char*
|
inline const char*
|
||||||
|
|
|
@ -113,7 +113,7 @@ cache_ptr hash_new (unsigned int size,
|
||||||
void hash_delete (cache_ptr cache);
|
void hash_delete (cache_ptr cache);
|
||||||
|
|
||||||
/* Add the key/value pair to the hash table. If the
|
/* Add the key/value pair to the hash table. If the
|
||||||
hash table reaches a level of fullnes then it will be resized.
|
hash table reaches a level of fullness then it will be resized.
|
||||||
|
|
||||||
assert if the key is already in the hash. */
|
assert if the key is already in the hash. */
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* GNU Objective C Runtime Miscellanious
|
/* GNU Objective C Runtime Miscellaneous
|
||||||
Copyright (C) 1993, 1994, 1995 Free Software Foundation, Inc.
|
Copyright (C) 1993, 1994, 1995 Free Software Foundation, Inc.
|
||||||
|
|
||||||
Author: Kresten Krab Thorup
|
Author: Kresten Krab Thorup
|
||||||
|
|
|
@ -1115,7 +1115,7 @@ synth_module_prologue ()
|
||||||
{
|
{
|
||||||
if (flag_typed_selectors)
|
if (flag_typed_selectors)
|
||||||
{
|
{
|
||||||
/* supress outputting debug symbols, because
|
/* suppress outputting debug symbols, because
|
||||||
dbxout_init hasn'r been called yet... */
|
dbxout_init hasn'r been called yet... */
|
||||||
enum debug_info_type save_write_symbols = write_symbols;
|
enum debug_info_type save_write_symbols = write_symbols;
|
||||||
write_symbols = NO_DEBUG;
|
write_symbols = NO_DEBUG;
|
||||||
|
@ -4839,7 +4839,7 @@ build_message_expr (mess)
|
||||||
warning ("method `%s' not implemented by protocol.",
|
warning ("method `%s' not implemented by protocol.",
|
||||||
IDENTIFIER_POINTER (sel_name));
|
IDENTIFIER_POINTER (sel_name));
|
||||||
|
|
||||||
/* try and find the method signiture in the global pools! */
|
/* try and find the method signature in the global pools! */
|
||||||
|
|
||||||
if (!(hsh = hash_lookup (nst_method_hash_list, sel_name)))
|
if (!(hsh = hash_lookup (nst_method_hash_list, sel_name)))
|
||||||
hsh = hash_lookup (cls_method_hash_list, sel_name);
|
hsh = hash_lookup (cls_method_hash_list, sel_name);
|
||||||
|
|
|
@ -27,7 +27,7 @@ Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
|
||||||
#include "objc/sarray.h"
|
#include "objc/sarray.h"
|
||||||
#include "encoding.h"
|
#include "encoding.h"
|
||||||
|
|
||||||
/* Initial selector hash table size. Value doesnt matter much */
|
/* Initial selector hash table size. Value doesn't matter much */
|
||||||
#define SELECTOR_HASH_SIZE 128
|
#define SELECTOR_HASH_SIZE 128
|
||||||
|
|
||||||
/* Tables mapping selector names to uid and opposite */
|
/* Tables mapping selector names to uid and opposite */
|
||||||
|
|
|
@ -285,7 +285,7 @@ __objc_install_dispatch_table_for_class (Class class)
|
||||||
if (super != 0 && (super->dtable == __objc_uninstalled_dtable))
|
if (super != 0 && (super->dtable == __objc_uninstalled_dtable))
|
||||||
__objc_install_dispatch_table_for_class (super);
|
__objc_install_dispatch_table_for_class (super);
|
||||||
|
|
||||||
/* Allocate dtable if nessecary */
|
/* Allocate dtable if necessary */
|
||||||
if (super == 0)
|
if (super == 0)
|
||||||
{
|
{
|
||||||
class->dtable = sarray_new (__objc_selector_max_index, 0);
|
class->dtable = sarray_new (__objc_selector_max_index, 0);
|
||||||
|
@ -351,7 +351,7 @@ class_add_method_list (Class class, MethodList_t list)
|
||||||
|
|
||||||
if (method->method_name) /* Sometimes these are NULL */
|
if (method->method_name) /* Sometimes these are NULL */
|
||||||
{
|
{
|
||||||
/* This is where selector names are transmogriffed to SEL's */
|
/* This is where selector names are transmogrified to SEL's */
|
||||||
method->method_name =
|
method->method_name =
|
||||||
sel_register_typed_name ((const char*)method->method_name,
|
sel_register_typed_name ((const char*)method->method_name,
|
||||||
method->method_types);
|
method->method_types);
|
||||||
|
@ -475,7 +475,7 @@ __objc_block_forward (id rcv, SEL op, ...)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* This fuction is installed in the dispatch table for all methods which are
|
/* This function is installed in the dispatch table for all methods which are
|
||||||
not implemented. Thus, it is called when a selector is not recognized. */
|
not implemented. Thus, it is called when a selector is not recognized. */
|
||||||
static retval_t
|
static retval_t
|
||||||
__objc_forward (id object, SEL sel, arglist_t args)
|
__objc_forward (id object, SEL sel, arglist_t args)
|
||||||
|
|
|
@ -102,7 +102,7 @@ long objc_get_stream_class_version (TypedStream* stream, Class class);
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Convenience funtions
|
** Convenience functions
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int objc_write_array (TypedStream* stream, const char* type,
|
int objc_write_array (TypedStream* stream, const char* type,
|
||||||
|
|
|
@ -3051,7 +3051,7 @@ output_string (str)
|
||||||
buffer (which may include original comments and preprocessing directives)
|
buffer (which may include original comments and preprocessing directives)
|
||||||
will be copied into the output buffer.
|
will be copied into the output buffer.
|
||||||
|
|
||||||
Note that the request implide when this routine is called includes the
|
Note that the request implied when this routine is called includes the
|
||||||
byte pointed to by the argument pointer `p'. */
|
byte pointed to by the argument pointer `p'. */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -3848,7 +3848,7 @@ edit_fn_definition (def_dec_p, clean_text_p)
|
||||||
output_string ("\n");
|
output_string ("\n");
|
||||||
}
|
}
|
||||||
#else /* !defined (UNPROTOIZE) */
|
#else /* !defined (UNPROTOIZE) */
|
||||||
/* If we are protoizing, there may be some flotsum & jetsum (like comments
|
/* If we are protoizing, there may be some flotsam & jetsam (like comments
|
||||||
and preprocessing directives) after the old formals list but before
|
and preprocessing directives) after the old formals list but before
|
||||||
the following { and we would like to preserve that stuff while effectively
|
the following { and we would like to preserve that stuff while effectively
|
||||||
deleting the existing K&R formal parameter declarations. We do so here
|
deleting the existing K&R formal parameter declarations. We do so here
|
||||||
|
|
|
@ -2585,7 +2585,7 @@ eadd1 (a, b, c)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
/* if same sign, result is double */
|
/* if same sign, result is double */
|
||||||
/* double denomalized tiny number */
|
/* double denormalized tiny number */
|
||||||
if ((bi[E] == 0) && ((bi[3] & 0x8000) == 0))
|
if ((bi[E] == 0) && ((bi[3] & 0x8000) == 0))
|
||||||
{
|
{
|
||||||
eshup1 (bi);
|
eshup1 (bi);
|
||||||
|
|
|
@ -84,7 +84,7 @@ init_recog ()
|
||||||
|
|
||||||
/* Try recognizing the instruction INSN,
|
/* Try recognizing the instruction INSN,
|
||||||
and return the code number that results.
|
and return the code number that results.
|
||||||
Remeber the code so that repeated calls do not
|
Remember the code so that repeated calls do not
|
||||||
need to spend the time for actual rerecognition.
|
need to spend the time for actual rerecognition.
|
||||||
|
|
||||||
This function is the normal interface to instruction recognition.
|
This function is the normal interface to instruction recognition.
|
||||||
|
|
|
@ -44,7 +44,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
/* If we have auto-increment or auto-decrement and we can have secondary
|
/* If we have auto-increment or auto-decrement and we can have secondary
|
||||||
reloads, we are not allowed to use classes requiring secondary
|
reloads, we are not allowed to use classes requiring secondary
|
||||||
reloads for psuedos auto-incremented since reload can't handle it. */
|
reloads for pseudos auto-incremented since reload can't handle it. */
|
||||||
|
|
||||||
#ifdef AUTO_INC_DEC
|
#ifdef AUTO_INC_DEC
|
||||||
#if defined(SECONDARY_INPUT_RELOAD_CLASS) || defined(SECONDARY_OUTPUT_RELOAD_CLASS)
|
#if defined(SECONDARY_INPUT_RELOAD_CLASS) || defined(SECONDARY_OUTPUT_RELOAD_CLASS)
|
||||||
|
@ -410,7 +410,7 @@ init_reg_modes ()
|
||||||
??? One situation in which we need to do this is on the mips where
|
??? One situation in which we need to do this is on the mips where
|
||||||
HARD_REGNO_NREGS (fpreg, [SD]Fmode) returns 2. Ideally we'd like
|
HARD_REGNO_NREGS (fpreg, [SD]Fmode) returns 2. Ideally we'd like
|
||||||
to use DF mode for the even registers and VOIDmode for the odd
|
to use DF mode for the even registers and VOIDmode for the odd
|
||||||
(for the cpu models where the odd ones are inaccessable). */
|
(for the cpu models where the odd ones are inaccessible). */
|
||||||
if (reg_raw_mode[i] == VOIDmode)
|
if (reg_raw_mode[i] == VOIDmode)
|
||||||
reg_raw_mode[i] = word_mode;
|
reg_raw_mode[i] = word_mode;
|
||||||
}
|
}
|
||||||
|
|
|
@ -53,7 +53,7 @@ extern short *reg_n_sets;
|
||||||
|
|
||||||
extern short *reg_n_deaths;
|
extern short *reg_n_deaths;
|
||||||
|
|
||||||
/* Indexed by N; says whether a psuedo register N was ever used
|
/* Indexed by N; says whether a pseudo register N was ever used
|
||||||
within a SUBREG that changes the size of the reg. Some machines prohibit
|
within a SUBREG that changes the size of the reg. Some machines prohibit
|
||||||
such objects to be in certain (usually floating-point) registers. */
|
such objects to be in certain (usually floating-point) registers. */
|
||||||
|
|
||||||
|
|
|
@ -212,7 +212,7 @@ struct decomposition
|
||||||
{
|
{
|
||||||
int reg_flag; /* Nonzero if referencing a register. */
|
int reg_flag; /* Nonzero if referencing a register. */
|
||||||
int safe; /* Nonzero if this can't conflict with anything. */
|
int safe; /* Nonzero if this can't conflict with anything. */
|
||||||
rtx base; /* Base adddress for MEM. */
|
rtx base; /* Base address for MEM. */
|
||||||
HOST_WIDE_INT start; /* Starting offset or register number. */
|
HOST_WIDE_INT start; /* Starting offset or register number. */
|
||||||
HOST_WIDE_INT end; /* Endinf offset or register number. */
|
HOST_WIDE_INT end; /* Endinf offset or register number. */
|
||||||
};
|
};
|
||||||
|
|
|
@ -923,7 +923,7 @@ reload (first, global, dumpfile)
|
||||||
int did_elimination = 0;
|
int did_elimination = 0;
|
||||||
|
|
||||||
/* To compute the number of reload registers of each class
|
/* To compute the number of reload registers of each class
|
||||||
needed for an insn, we must similate what choose_reload_regs
|
needed for an insn, we must simulate what choose_reload_regs
|
||||||
can do. We do this by splitting an insn into an "input" and
|
can do. We do this by splitting an insn into an "input" and
|
||||||
an "output" part. RELOAD_OTHER reloads are used in both.
|
an "output" part. RELOAD_OTHER reloads are used in both.
|
||||||
The input part uses those reloads, RELOAD_FOR_INPUT reloads,
|
The input part uses those reloads, RELOAD_FOR_INPUT reloads,
|
||||||
|
@ -1546,7 +1546,7 @@ reload (first, global, dumpfile)
|
||||||
|
|
||||||
/* Put all registers spilled so far back in potential_reload_regs, but
|
/* Put all registers spilled so far back in potential_reload_regs, but
|
||||||
put them at the front, since we've already spilled most of the
|
put them at the front, since we've already spilled most of the
|
||||||
psuedos in them (we might have left some pseudos unspilled if they
|
pseudos in them (we might have left some pseudos unspilled if they
|
||||||
were in a block that didn't need any spill registers of a conflicting
|
were in a block that didn't need any spill registers of a conflicting
|
||||||
class. We used to try to mark off the need for those registers,
|
class. We used to try to mark off the need for those registers,
|
||||||
but doing so properly is very complex and reallocating them is the
|
but doing so properly is very complex and reallocating them is the
|
||||||
|
@ -2800,7 +2800,7 @@ eliminate_regs (x, mem_mode, insn)
|
||||||
/* If this is the product of an eliminable register and a
|
/* If this is the product of an eliminable register and a
|
||||||
constant, apply the distribute law and move the constant out
|
constant, apply the distribute law and move the constant out
|
||||||
so that we have (plus (mult ..) ..). This is needed in order
|
so that we have (plus (mult ..) ..). This is needed in order
|
||||||
to keep load-address insns valid. This case is pathalogical.
|
to keep load-address insns valid. This case is pathological.
|
||||||
We ignore the possibility of overflow here. */
|
We ignore the possibility of overflow here. */
|
||||||
if (GET_CODE (XEXP (x, 0)) == REG
|
if (GET_CODE (XEXP (x, 0)) == REG
|
||||||
&& REGNO (XEXP (x, 0)) < FIRST_PSEUDO_REGISTER
|
&& REGNO (XEXP (x, 0)) < FIRST_PSEUDO_REGISTER
|
||||||
|
@ -3374,7 +3374,7 @@ eliminate_regs_in_insn (insn, replace)
|
||||||
}
|
}
|
||||||
|
|
||||||
done:
|
done:
|
||||||
/* If we changed something, perform elmination in REG_NOTES. This is
|
/* If we changed something, perform elimination in REG_NOTES. This is
|
||||||
needed even when REPLACE is zero because a REG_DEAD note might refer
|
needed even when REPLACE is zero because a REG_DEAD note might refer
|
||||||
to a register that we eliminate and could cause a different number
|
to a register that we eliminate and could cause a different number
|
||||||
of spill registers to be needed in the final reload pass than in
|
of spill registers to be needed in the final reload pass than in
|
||||||
|
|
|
@ -454,7 +454,7 @@ extern char *note_insn_name[];
|
||||||
|
|
||||||
/* The rest is used instead of the above, in a CODE_LABEL,
|
/* The rest is used instead of the above, in a CODE_LABEL,
|
||||||
if bytecode is being output.
|
if bytecode is being output.
|
||||||
We make the slightly klugy assumption that a LABEL has enough slots
|
We make the slightly kludgy assumption that a LABEL has enough slots
|
||||||
to hold these things. That happens to be true. */
|
to hold these things. That happens to be true. */
|
||||||
|
|
||||||
/* For static or external objects. */
|
/* For static or external objects. */
|
||||||
|
|
|
@ -847,7 +847,7 @@ anti_dependence (mem, x)
|
||||||
{
|
{
|
||||||
/* If MEM is an unchanging read, then it can't possibly conflict with
|
/* If MEM is an unchanging read, then it can't possibly conflict with
|
||||||
the store to X, because there is at most one store to MEM, and it must
|
the store to X, because there is at most one store to MEM, and it must
|
||||||
have occured somewhere before MEM. */
|
have occurred somewhere before MEM. */
|
||||||
if (RTX_UNCHANGING_P (mem))
|
if (RTX_UNCHANGING_P (mem))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
@ -2367,7 +2367,7 @@ sched_note_set (b, x, death)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Macros and functions for keeping the priority queue sorted, and
|
/* Macros and functions for keeping the priority queue sorted, and
|
||||||
dealing with queueing and unqueueing of instructions. */
|
dealing with queueing and dequeueing of instructions. */
|
||||||
|
|
||||||
#define SCHED_SORT(READY, NEW_READY, OLD_READY) \
|
#define SCHED_SORT(READY, NEW_READY, OLD_READY) \
|
||||||
do { if ((NEW_READY) - (OLD_READY) == 1) \
|
do { if ((NEW_READY) - (OLD_READY) == 1) \
|
||||||
|
|
|
@ -2715,7 +2715,7 @@ expand_return (retval)
|
||||||
/* Clobber REG and move each partword into it. Ensure we don't
|
/* Clobber REG and move each partword into it. Ensure we don't
|
||||||
go past the end of the structure. Note that the loop below
|
go past the end of the structure. Note that the loop below
|
||||||
works because we've already verified that padding and
|
works because we've already verified that padding and
|
||||||
endianness are compatable. */
|
endianness are compatible. */
|
||||||
emit_insn (gen_rtx (CLOBBER, VOIDmode, reg));
|
emit_insn (gen_rtx (CLOBBER, VOIDmode, reg));
|
||||||
|
|
||||||
for (bitpos = 0;
|
for (bitpos = 0;
|
||||||
|
@ -4330,7 +4330,7 @@ all_cases_count (type, spareness)
|
||||||
has the given TYPE.
|
has the given TYPE.
|
||||||
SPARSENESS is as determined by all_cases_count.
|
SPARSENESS is as determined by all_cases_count.
|
||||||
|
|
||||||
The time needed is propotional to COUNT, unless
|
The time needed is proportional to COUNT, unless
|
||||||
SPARSENESS is 2, in which case quadratic time is needed. */
|
SPARSENESS is 2, in which case quadratic time is needed. */
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -4547,7 +4547,7 @@ check_for_full_enumeration_handling (type)
|
||||||
#if 0
|
#if 0
|
||||||
/* ??? This optimization is disabled because it causes valid programs to
|
/* ??? This optimization is disabled because it causes valid programs to
|
||||||
fail. ANSI C does not guarantee that an expression with enum type
|
fail. ANSI C does not guarantee that an expression with enum type
|
||||||
will have a value that is the same as one of the enumation literals. */
|
will have a value that is the same as one of the enumeration literals. */
|
||||||
|
|
||||||
/* If all values were found as case labels, make one of them the default
|
/* If all values were found as case labels, make one of them the default
|
||||||
label. Thus, this switch will never fall through. We arbitrarily pick
|
label. Thus, this switch will never fall through. We arbitrarily pick
|
||||||
|
|
|
@ -670,7 +670,7 @@ layout_type (type)
|
||||||
{
|
{
|
||||||
case LANG_TYPE:
|
case LANG_TYPE:
|
||||||
/* This kind of type is the responsibility
|
/* This kind of type is the responsibility
|
||||||
of the languge-specific code. */
|
of the language-specific code. */
|
||||||
abort ();
|
abort ();
|
||||||
|
|
||||||
case INTEGER_TYPE:
|
case INTEGER_TYPE:
|
||||||
|
|
|
@ -2685,7 +2685,7 @@ rest_of_compilation (decl)
|
||||||
TIMEVAR (integration_time,
|
TIMEVAR (integration_time,
|
||||||
{
|
{
|
||||||
lose = function_cannot_inline_p (decl);
|
lose = function_cannot_inline_p (decl);
|
||||||
/* If not optimzing, then make sure the DECL_INLINE
|
/* If not optimizing, then make sure the DECL_INLINE
|
||||||
bit is off. */
|
bit is off. */
|
||||||
if (lose || ! optimize)
|
if (lose || ! optimize)
|
||||||
{
|
{
|
||||||
|
|
10
gcc/tree.c
10
gcc/tree.c
|
@ -920,11 +920,11 @@ make_node (code)
|
||||||
/* PARM_DECLs go on the context of the parent. If this is a nested
|
/* PARM_DECLs go on the context of the parent. If this is a nested
|
||||||
function, then we must allocate the PARM_DECL on the parent's
|
function, then we must allocate the PARM_DECL on the parent's
|
||||||
obstack, so that they will live to the end of the parent's
|
obstack, so that they will live to the end of the parent's
|
||||||
closing brace. This is neccesary in case we try to inline the
|
closing brace. This is necessary in case we try to inline the
|
||||||
function into its parent.
|
function into its parent.
|
||||||
|
|
||||||
PARM_DECLs of top-level functions do not have this problem. However,
|
PARM_DECLs of top-level functions do not have this problem. However,
|
||||||
we allocate them where we put the FUNCTION_DECL for languauges such as
|
we allocate them where we put the FUNCTION_DECL for languages such as
|
||||||
Ada that need to consult some flags in the PARM_DECLs of the function
|
Ada that need to consult some flags in the PARM_DECLs of the function
|
||||||
when calling it.
|
when calling it.
|
||||||
|
|
||||||
|
@ -4306,7 +4306,7 @@ get_file_function_name (kind)
|
||||||
constraints). -- Raeburn@MIT.EDU, 10 Jan 1990. */
|
constraints). -- Raeburn@MIT.EDU, 10 Jan 1990. */
|
||||||
sprintf (buf, FILE_FUNCTION_FORMAT, p);
|
sprintf (buf, FILE_FUNCTION_FORMAT, p);
|
||||||
|
|
||||||
/* Don't need to pull wierd characters out of global names. */
|
/* Don't need to pull weird characters out of global names. */
|
||||||
if (p != first_global_object_name)
|
if (p != first_global_object_name)
|
||||||
{
|
{
|
||||||
for (p = buf+11; *p; p++)
|
for (p = buf+11; *p; p++)
|
||||||
|
@ -4332,7 +4332,7 @@ get_file_function_name (kind)
|
||||||
return get_identifier (buf);
|
return get_identifier (buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Expand (the constant part of) a SET_TYPE CONTRUCTOR node.
|
/* Expand (the constant part of) a SET_TYPE CONSTRUCTOR node.
|
||||||
The result is placed in BUFFER (which has length BIT_SIZE),
|
The result is placed in BUFFER (which has length BIT_SIZE),
|
||||||
with one bit in each char ('\000' or '\001').
|
with one bit in each char ('\000' or '\001').
|
||||||
|
|
||||||
|
@ -4390,7 +4390,7 @@ get_set_constructor_bits (init, buffer, bit_size)
|
||||||
return non_const_bits;
|
return non_const_bits;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Expand (the constant part of) a SET_TYPE CONTRUCTOR node.
|
/* Expand (the constant part of) a SET_TYPE CONSTRUCTOR node.
|
||||||
The result is placed in BUFFER (which is an array of bytes).
|
The result is placed in BUFFER (which is an array of bytes).
|
||||||
If the constructor is constant, NULL_TREE is returned.
|
If the constructor is constant, NULL_TREE is returned.
|
||||||
Otherwise, a TREE_LIST of the non-constant elements is emitted. */
|
Otherwise, a TREE_LIST of the non-constant elements is emitted. */
|
||||||
|
|
|
@ -870,7 +870,7 @@ struct tree_type
|
||||||
/* Nonzero for a given ..._DECL node means that this node represents an
|
/* Nonzero for a given ..._DECL node means that this node represents an
|
||||||
"abstract instance" of the given declaration (e.g. in the original
|
"abstract instance" of the given declaration (e.g. in the original
|
||||||
declaration of an inline function). When generating symbolic debugging
|
declaration of an inline function). When generating symbolic debugging
|
||||||
information, we musn't try to generate any address information for nodes
|
information, we mustn't try to generate any address information for nodes
|
||||||
marked as "abstract instances" because we don't actually generate
|
marked as "abstract instances" because we don't actually generate
|
||||||
any code or allocate any data space for such instances. */
|
any code or allocate any data space for such instances. */
|
||||||
#define DECL_ABSTRACT(NODE) ((NODE)->decl.abstract_flag)
|
#define DECL_ABSTRACT(NODE) ((NODE)->decl.abstract_flag)
|
||||||
|
@ -1644,7 +1644,7 @@ extern void init_decl_processing PROTO((void));
|
||||||
extern void lang_init PROTO((void));
|
extern void lang_init PROTO((void));
|
||||||
extern void lang_finish PROTO((void));
|
extern void lang_finish PROTO((void));
|
||||||
|
|
||||||
/* Funtion to identify which front-end produced the output file. */
|
/* Function to identify which front-end produced the output file. */
|
||||||
extern char *lang_identify PROTO((void));
|
extern char *lang_identify PROTO((void));
|
||||||
|
|
||||||
/* Function to replace the DECL_LANG_SPECIFIC field of a DECL with a copy. */
|
/* Function to replace the DECL_LANG_SPECIFIC field of a DECL with a copy. */
|
||||||
|
|
10
gcc/unroll.c
10
gcc/unroll.c
|
@ -1585,7 +1585,7 @@ copy_loop_body (copy_start, copy_end, map, exit_label, last_iteration,
|
||||||
dest_reg = XEXP (tv->dest_reg, 0);
|
dest_reg = XEXP (tv->dest_reg, 0);
|
||||||
|
|
||||||
/* Check for shared address givs, and avoid
|
/* Check for shared address givs, and avoid
|
||||||
incrementing the shared psuedo reg more than
|
incrementing the shared pseudo reg more than
|
||||||
once. */
|
once. */
|
||||||
if (! tv->same_insn)
|
if (! tv->same_insn)
|
||||||
{
|
{
|
||||||
|
@ -1797,8 +1797,8 @@ copy_loop_body (copy_start, copy_end, map, exit_label, last_iteration,
|
||||||
{
|
{
|
||||||
rtx jmp;
|
rtx jmp;
|
||||||
rtx lab = gen_label_rtx ();
|
rtx lab = gen_label_rtx ();
|
||||||
/* Can't do it by reversing the jump (probably becasue we
|
/* Can't do it by reversing the jump (probably because we
|
||||||
couln't reverse the conditions), so emit a new
|
couldn't reverse the conditions), so emit a new
|
||||||
jump_insn after COPY, and redirect the jump around
|
jump_insn after COPY, and redirect the jump around
|
||||||
that. */
|
that. */
|
||||||
jmp = emit_jump_insn_after (gen_jump (exit_label), copy);
|
jmp = emit_jump_insn_after (gen_jump (exit_label), copy);
|
||||||
|
@ -2670,7 +2670,7 @@ find_splittable_givs (bl, unroll_type, loop_start, loop_end, increment,
|
||||||
following cse pass. */
|
following cse pass. */
|
||||||
|
|
||||||
/* As a special case, if we have multiple identical address givs
|
/* As a special case, if we have multiple identical address givs
|
||||||
within a single instruction, then we do use a single psuedo
|
within a single instruction, then we do use a single pseudo
|
||||||
reg for both. This is necessary in case one is a match_dup
|
reg for both. This is necessary in case one is a match_dup
|
||||||
of the other. */
|
of the other. */
|
||||||
|
|
||||||
|
@ -3376,7 +3376,7 @@ loop_iterations (loop_start, loop_end)
|
||||||
return tempu / i + ((tempu % i) != 0);
|
return tempu / i + ((tempu % i) != 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Replace uses of split bivs with their split psuedo register. This is
|
/* Replace uses of split bivs with their split pseudo register. This is
|
||||||
for original instructions which remain after loop unrolling without
|
for original instructions which remain after loop unrolling without
|
||||||
copying. */
|
copying. */
|
||||||
|
|
||||||
|
|
|
@ -1013,7 +1013,7 @@ assemble_variable (decl, top_level, at_end, dont_output_data)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Normally no need to say anything here for external references,
|
/* Normally no need to say anything here for external references,
|
||||||
since assemble_external is called by the langauge-specific code
|
since assemble_external is called by the language-specific code
|
||||||
when a declaration is first seen. */
|
when a declaration is first seen. */
|
||||||
|
|
||||||
if (DECL_EXTERNAL (decl))
|
if (DECL_EXTERNAL (decl))
|
||||||
|
|
|
@ -132,7 +132,7 @@ VARIABLE makefile_buf, opt_file_buf, complist_buf, extra_compilers; ! Globals.
|
||||||
!!
|
!!
|
||||||
PROCEDURE process_makefile( )
|
PROCEDURE process_makefile( )
|
||||||
!
|
!
|
||||||
! Intepret Makefile.in and subsidiary Make-lang.in templates.
|
! Interpret Makefile.in and subsidiary Make-lang.in templates.
|
||||||
!
|
!
|
||||||
LOCAL range1, cmark, makefilename;
|
LOCAL range1, cmark, makefilename;
|
||||||
|
|
||||||
|
@ -330,7 +330,7 @@ PROCEDURE fetch_tag( tag_n, punct )
|
||||||
mark0 := MARK (NONE); ! Remember where we started; restore before return.
|
mark0 := MARK (NONE); ! Remember where we started; restore before return.
|
||||||
POSITION (BEGINNING_OF (makefile_buf));
|
POSITION (BEGINNING_OF (makefile_buf));
|
||||||
! The tag definition always starts in the first column, and might have
|
! The tag definition always starts in the first column, and might have
|
||||||
! optional space(es) before "=" or ":" punctutation.
|
! optional space(es) before "=" or ":" punctuation.
|
||||||
range2 := SEARCH_QUIETLY (LINE_BEGIN & tag_n & ((SPAN(" ") & punct) | punct),
|
range2 := SEARCH_QUIETLY (LINE_BEGIN & tag_n & ((SPAN(" ") & punct) | punct),
|
||||||
FORWARD, EXACT);
|
FORWARD, EXACT);
|
||||||
IF (range2 = 0) THEN
|
IF (range2 = 0) THEN
|
||||||
|
@ -360,7 +360,7 @@ ENDPROCEDURE; !fetch_tag
|
||||||
|
|
||||||
PROCEDURE pat_replace( oldstring, newstring )
|
PROCEDURE pat_replace( oldstring, newstring )
|
||||||
!
|
!
|
||||||
! Replace all occurences of a pattern.
|
! Replace all occurrences of a pattern.
|
||||||
!
|
!
|
||||||
LOCAL range1, range2, kill_it, count;
|
LOCAL range1, range2, kill_it, count;
|
||||||
|
|
||||||
|
|
|
@ -483,7 +483,7 @@ xcoffout_declare_function (file, decl, name)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Any pending .bi or .ei must occur before the .function psuedo op.
|
/* Any pending .bi or .ei must occur before the .function pseudo op.
|
||||||
Otherwise debuggers will think that the function is in the previous
|
Otherwise debuggers will think that the function is in the previous
|
||||||
file and/or at the wrong line number. */
|
file and/or at the wrong line number. */
|
||||||
xcoffout_source_file (file, DECL_SOURCE_FILE (decl), 0);
|
xcoffout_source_file (file, DECL_SOURCE_FILE (decl), 0);
|
||||||
|
|
|
@ -145,7 +145,7 @@ extern char *xcoff_lastfile;
|
||||||
/* Write out main source file name using ".file" rather than ".stabs".
|
/* Write out main source file name using ".file" rather than ".stabs".
|
||||||
We don't actually do this here, because the assembler gets confused if there
|
We don't actually do this here, because the assembler gets confused if there
|
||||||
is more than one .file directive. ASM_FILE_START in config/rs6000/rs6000.h
|
is more than one .file directive. ASM_FILE_START in config/rs6000/rs6000.h
|
||||||
is already emitting a .file direcgtory, so we don't output one here also.
|
is already emitting a .file directory, so we don't output one here also.
|
||||||
Initialize xcoff_lastfile. */
|
Initialize xcoff_lastfile. */
|
||||||
#define DBX_OUTPUT_MAIN_SOURCE_FILENAME(FILE,FILENAME) \
|
#define DBX_OUTPUT_MAIN_SOURCE_FILENAME(FILE,FILENAME) \
|
||||||
xcoff_lastfile = input_file_name
|
xcoff_lastfile = input_file_name
|
||||||
|
|
Loading…
Reference in New Issue