target.h: Fix formatting.
* target.h: Fix formatting. * timevar.h: Likewise. * tlink.c: Likewise. * toplev.c: Likewise. * toplev.h: Likewise. * tree.c: Likewise. * tree-dump.h: Likewise. * tree.h: Likewise. * tree-inline.h: Likewise. * unroll.c: Likewise. * unwind-dw2.c: Likewise. * unwind-dw2-fde.c: Likewise. * unwind-dw2-fde-glibc.c: Likewise. * unwind-dw2-fde.h: Likewise. * unwind.h: Likewise. * unwind-sjlj.c: Likewise. * varasm.c: Likewise. * varray.h: Likewise. * vmsdbg.h: Likewise. * vmsdbgout.c: Likewise. * xcoffout.h: Likewise. From-SVN: r54123
This commit is contained in:
parent
b2e426a0cc
commit
41077ce4b3
|
@ -1,3 +1,27 @@
|
||||||
|
2002-05-31 Kazu Hirata <kazu@cs.umass.edu>
|
||||||
|
|
||||||
|
* target.h: Fix formatting.
|
||||||
|
* timevar.h: Likewise.
|
||||||
|
* tlink.c: Likewise.
|
||||||
|
* toplev.c: Likewise.
|
||||||
|
* toplev.h: Likewise.
|
||||||
|
* tree.c: Likewise.
|
||||||
|
* tree-dump.h: Likewise.
|
||||||
|
* tree.h: Likewise.
|
||||||
|
* tree-inline.h: Likewise.
|
||||||
|
* unroll.c: Likewise.
|
||||||
|
* unwind-dw2.c: Likewise.
|
||||||
|
* unwind-dw2-fde.c: Likewise.
|
||||||
|
* unwind-dw2-fde-glibc.c: Likewise.
|
||||||
|
* unwind-dw2-fde.h: Likewise.
|
||||||
|
* unwind.h: Likewise.
|
||||||
|
* unwind-sjlj.c: Likewise.
|
||||||
|
* varasm.c: Likewise.
|
||||||
|
* varray.h: Likewise.
|
||||||
|
* vmsdbg.h: Likewise.
|
||||||
|
* vmsdbgout.c: Likewise.
|
||||||
|
* xcoffout.h: Likewise.
|
||||||
|
|
||||||
2002-05-31 Igor Shevlyakov <igor@microunity.com>
|
2002-05-31 Igor Shevlyakov <igor@microunity.com>
|
||||||
|
|
||||||
* expr.c (compare_from_rtx): Generate comparison between op0 and op1
|
* expr.c (compare_from_rtx): Generate comparison between op0 and op1
|
||||||
|
|
|
@ -134,7 +134,7 @@ struct gcc_target
|
||||||
/* Calculate how much this insn affects how many more insns we
|
/* Calculate how much this insn affects how many more insns we
|
||||||
can emit this cycle. Default is they all cost the same. */
|
can emit this cycle. Default is they all cost the same. */
|
||||||
int (* variable_issue) PARAMS ((FILE *, int, rtx, int));
|
int (* variable_issue) PARAMS ((FILE *, int, rtx, int));
|
||||||
|
|
||||||
/* Initialize machine-dependent scheduling code. */
|
/* Initialize machine-dependent scheduling code. */
|
||||||
void (* md_init) PARAMS ((FILE *, int, int));
|
void (* md_init) PARAMS ((FILE *, int, int));
|
||||||
|
|
||||||
|
|
|
@ -41,9 +41,9 @@
|
||||||
|
|
||||||
- As a standalone timer, using timevar_start and timevar_stop.
|
- As a standalone timer, using timevar_start and timevar_stop.
|
||||||
All time elapsed between the two calls is attributed to the
|
All time elapsed between the two calls is attributed to the
|
||||||
variable.
|
variable.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* This structure stores the various varieties of time that can be
|
/* This structure stores the various varieties of time that can be
|
||||||
measured. Times are stored in seconds. The time may be an
|
measured. Times are stored in seconds. The time may be an
|
||||||
absolute time or a time difference; in the former case, the time
|
absolute time or a time difference; in the former case, the time
|
||||||
|
@ -67,7 +67,7 @@ struct timevar_time_def
|
||||||
the contents of timevar.def. */
|
the contents of timevar.def. */
|
||||||
|
|
||||||
#define DEFTIMEVAR(identifier__, name__) \
|
#define DEFTIMEVAR(identifier__, name__) \
|
||||||
identifier__,
|
identifier__,
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
#include "timevar.def"
|
#include "timevar.def"
|
||||||
|
|
|
@ -588,7 +588,7 @@ demangle_new_symbols ()
|
||||||
{
|
{
|
||||||
demangled *dem;
|
demangled *dem;
|
||||||
const char *p = cplus_demangle ((char*) sym->root.key,
|
const char *p = cplus_demangle ((char*) sym->root.key,
|
||||||
DMGL_PARAMS | DMGL_ANSI);
|
DMGL_PARAMS | DMGL_ANSI);
|
||||||
|
|
||||||
if (! p)
|
if (! p)
|
||||||
continue;
|
continue;
|
||||||
|
|
|
@ -1673,7 +1673,7 @@ strip_off_ending (name, len)
|
||||||
int len;
|
int len;
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
for (i = 2; i < 6 && len > i; i++)
|
for (i = 2; i < 6 && len > i; i++)
|
||||||
{
|
{
|
||||||
if (name[len - i] == '.')
|
if (name[len - i] == '.')
|
||||||
{
|
{
|
||||||
|
@ -1715,15 +1715,15 @@ output_quoted_string (asm_file, string)
|
||||||
usable as an identifier in a target's assembly file. */
|
usable as an identifier in a target's assembly file. */
|
||||||
void
|
void
|
||||||
output_clean_symbol_name (file, name)
|
output_clean_symbol_name (file, name)
|
||||||
FILE *file;
|
FILE *file;
|
||||||
const char *name;
|
const char *name;
|
||||||
{
|
{
|
||||||
/* Make a copy of NAME. */
|
/* Make a copy of NAME. */
|
||||||
char *id = xstrdup (name);
|
char *id = xstrdup (name);
|
||||||
|
|
||||||
/* Make it look like a valid identifier for an assembler. */
|
/* Make it look like a valid identifier for an assembler. */
|
||||||
clean_symbol_name (id);
|
clean_symbol_name (id);
|
||||||
|
|
||||||
fputs (id, file);
|
fputs (id, file);
|
||||||
free (id);
|
free (id);
|
||||||
}
|
}
|
||||||
|
|
|
@ -116,7 +116,7 @@ extern struct ht *ident_hash;
|
||||||
|
|
||||||
/* This function can be used by targets to set the flags originally
|
/* This function can be used by targets to set the flags originally
|
||||||
implied by -ffast-math and -fno-fast-math. */
|
implied by -ffast-math and -fno-fast-math. */
|
||||||
|
|
||||||
extern void set_fast_math_flags PARAMS ((int));
|
extern void set_fast_math_flags PARAMS ((int));
|
||||||
|
|
||||||
/* Return true iff flags are set as if -ffast-math. */
|
/* Return true iff flags are set as if -ffast-math. */
|
||||||
|
|
|
@ -46,7 +46,7 @@ typedef struct dump_queue
|
||||||
struct dump_queue *next;
|
struct dump_queue *next;
|
||||||
} *dump_queue_p;
|
} *dump_queue_p;
|
||||||
|
|
||||||
/* A dump_info gives information about how we should perform the dump
|
/* A dump_info gives information about how we should perform the dump
|
||||||
and about the current state of the dump. */
|
and about the current state of the dump. */
|
||||||
|
|
||||||
struct dump_info
|
struct dump_info
|
||||||
|
@ -67,7 +67,7 @@ struct dump_info
|
||||||
dump_queue_p queue_end;
|
dump_queue_p queue_end;
|
||||||
/* Free queue nodes. */
|
/* Free queue nodes. */
|
||||||
dump_queue_p free_list;
|
dump_queue_p free_list;
|
||||||
/* The tree nodes which we have already written out. The
|
/* The tree nodes which we have already written out. The
|
||||||
keys are the addresses of the nodes; the values are the integer
|
keys are the addresses of the nodes; the values are the integer
|
||||||
indices we assigned them. */
|
indices we assigned them. */
|
||||||
splay_tree nodes;
|
splay_tree nodes;
|
||||||
|
@ -79,17 +79,17 @@ struct dump_info
|
||||||
|
|
||||||
extern void dump_pointer
|
extern void dump_pointer
|
||||||
PARAMS ((dump_info_p, const char *, void *));
|
PARAMS ((dump_info_p, const char *, void *));
|
||||||
extern void dump_int
|
extern void dump_int
|
||||||
PARAMS ((dump_info_p, const char *, int));
|
PARAMS ((dump_info_p, const char *, int));
|
||||||
extern void dump_string
|
extern void dump_string
|
||||||
PARAMS ((dump_info_p, const char *));
|
PARAMS ((dump_info_p, const char *));
|
||||||
extern void dump_stmt
|
extern void dump_stmt
|
||||||
PARAMS ((dump_info_p, tree));
|
PARAMS ((dump_info_p, tree));
|
||||||
extern void dump_next_stmt
|
extern void dump_next_stmt
|
||||||
PARAMS ((dump_info_p, tree));
|
PARAMS ((dump_info_p, tree));
|
||||||
extern void queue_and_dump_index
|
extern void queue_and_dump_index
|
||||||
PARAMS ((dump_info_p, const char *, tree, int));
|
PARAMS ((dump_info_p, const char *, tree, int));
|
||||||
extern void queue_and_dump_type
|
extern void queue_and_dump_type
|
||||||
PARAMS ((dump_info_p, tree));
|
PARAMS ((dump_info_p, tree));
|
||||||
|
|
||||||
#endif /* ! GCC_TREE_DUMP_H */
|
#endif /* ! GCC_TREE_DUMP_H */
|
||||||
|
|
|
@ -33,8 +33,8 @@ void clone_body PARAMS ((tree, tree, void*));
|
||||||
void remap_save_expr PARAMS ((tree*, void*, tree, int*));
|
void remap_save_expr PARAMS ((tree*, void*, tree, int*));
|
||||||
|
|
||||||
/* 0 if we should not perform inlining.
|
/* 0 if we should not perform inlining.
|
||||||
1 if we should expand functions calls inline at the tree level.
|
1 if we should expand functions calls inline at the tree level.
|
||||||
2 if we should consider *all* functions to be inline
|
2 if we should consider *all* functions to be inline
|
||||||
candidates. */
|
candidates. */
|
||||||
|
|
||||||
extern int flag_inline_trees;
|
extern int flag_inline_trees;
|
||||||
|
|
|
@ -522,7 +522,7 @@ build_real (type, d)
|
||||||
v = make_node (REAL_CST);
|
v = make_node (REAL_CST);
|
||||||
dp = ggc_alloc (sizeof (REAL_VALUE_TYPE));
|
dp = ggc_alloc (sizeof (REAL_VALUE_TYPE));
|
||||||
memcpy (dp, &d, sizeof (REAL_VALUE_TYPE));
|
memcpy (dp, &d, sizeof (REAL_VALUE_TYPE));
|
||||||
|
|
||||||
TREE_TYPE (v) = type;
|
TREE_TYPE (v) = type;
|
||||||
TREE_REAL_CST_PTR (v) = dp;
|
TREE_REAL_CST_PTR (v) = dp;
|
||||||
TREE_OVERFLOW (v) = TREE_CONSTANT_OVERFLOW (v) = overflow;
|
TREE_OVERFLOW (v) = TREE_CONSTANT_OVERFLOW (v) = overflow;
|
||||||
|
@ -4209,7 +4209,7 @@ decl_type_context (decl)
|
||||||
while (context)
|
while (context)
|
||||||
{
|
{
|
||||||
if (TREE_CODE (context) == NAMESPACE_DECL)
|
if (TREE_CODE (context) == NAMESPACE_DECL)
|
||||||
return NULL_TREE;
|
return NULL_TREE;
|
||||||
|
|
||||||
if (TREE_CODE (context) == RECORD_TYPE
|
if (TREE_CODE (context) == RECORD_TYPE
|
||||||
|| TREE_CODE (context) == UNION_TYPE
|
|| TREE_CODE (context) == UNION_TYPE
|
||||||
|
|
28
gcc/tree.h
28
gcc/tree.h
|
@ -492,7 +492,7 @@ extern void tree_class_check_failed PARAMS ((const tree, int,
|
||||||
construct the address of this field. This is used for aliasing
|
construct the address of this field. This is used for aliasing
|
||||||
purposes: see record_component_aliases.
|
purposes: see record_component_aliases.
|
||||||
In CONSTRUCTOR nodes, it means object constructed must be in memory.
|
In CONSTRUCTOR nodes, it means object constructed must be in memory.
|
||||||
In LABEL_DECL nodes, it means a goto for this label has been seen
|
In LABEL_DECL nodes, it means a goto for this label has been seen
|
||||||
from a place outside all binding contours that restore stack levels.
|
from a place outside all binding contours that restore stack levels.
|
||||||
In ..._TYPE nodes, it means that objects of this type must
|
In ..._TYPE nodes, it means that objects of this type must
|
||||||
be fully addressable. This means that pieces of this
|
be fully addressable. This means that pieces of this
|
||||||
|
@ -699,9 +699,9 @@ extern void tree_class_check_failed PARAMS ((const tree, int,
|
||||||
(((unsigned HOST_WIDE_INT) TREE_INT_CST_HIGH (A) \
|
(((unsigned HOST_WIDE_INT) TREE_INT_CST_HIGH (A) \
|
||||||
< (unsigned HOST_WIDE_INT) TREE_INT_CST_HIGH (B)) \
|
< (unsigned HOST_WIDE_INT) TREE_INT_CST_HIGH (B)) \
|
||||||
|| (((unsigned HOST_WIDE_INT) TREE_INT_CST_HIGH (A) \
|
|| (((unsigned HOST_WIDE_INT) TREE_INT_CST_HIGH (A) \
|
||||||
== (unsigned HOST_WIDE_INT) TREE_INT_CST_HIGH (B)) \
|
== (unsigned HOST_WIDE_INT) TREE_INT_CST_HIGH (B)) \
|
||||||
&& TREE_INT_CST_LOW (A) < TREE_INT_CST_LOW (B)))
|
&& TREE_INT_CST_LOW (A) < TREE_INT_CST_LOW (B)))
|
||||||
|
|
||||||
struct tree_int_cst
|
struct tree_int_cst
|
||||||
{
|
{
|
||||||
struct tree_common common;
|
struct tree_common common;
|
||||||
|
@ -926,7 +926,7 @@ struct tree_exp
|
||||||
One of the logical block fragments is arbitrarily chosen to be
|
One of the logical block fragments is arbitrarily chosen to be
|
||||||
the ORIGIN. The other fragments will point to the origin via
|
the ORIGIN. The other fragments will point to the origin via
|
||||||
BLOCK_FRAGMENT_ORIGIN; the origin itself will have this pointer
|
BLOCK_FRAGMENT_ORIGIN; the origin itself will have this pointer
|
||||||
be null. The list of fragments will be chained through
|
be null. The list of fragments will be chained through
|
||||||
BLOCK_FRAGMENT_CHAIN from the origin. */
|
BLOCK_FRAGMENT_CHAIN from the origin. */
|
||||||
|
|
||||||
#define BLOCK_FRAGMENT_ORIGIN(NODE) (BLOCK_CHECK (NODE)->block.fragment_origin)
|
#define BLOCK_FRAGMENT_ORIGIN(NODE) (BLOCK_CHECK (NODE)->block.fragment_origin)
|
||||||
|
@ -1277,7 +1277,7 @@ struct tree_type
|
||||||
from the base of the complete object to the base of the part of the
|
from the base of the complete object to the base of the part of the
|
||||||
object that is allocated on behalf of this `type'.
|
object that is allocated on behalf of this `type'.
|
||||||
This is always 0 except when there is multiple inheritance. */
|
This is always 0 except when there is multiple inheritance. */
|
||||||
|
|
||||||
#define BINFO_OFFSET(NODE) TREE_VEC_ELT ((NODE), 1)
|
#define BINFO_OFFSET(NODE) TREE_VEC_ELT ((NODE), 1)
|
||||||
#define TYPE_BINFO_OFFSET(NODE) BINFO_OFFSET (TYPE_BINFO (NODE))
|
#define TYPE_BINFO_OFFSET(NODE) BINFO_OFFSET (TYPE_BINFO (NODE))
|
||||||
#define BINFO_OFFSET_ZEROP(NODE) (integer_zerop (BINFO_OFFSET (NODE)))
|
#define BINFO_OFFSET_ZEROP(NODE) (integer_zerop (BINFO_OFFSET (NODE)))
|
||||||
|
@ -1375,15 +1375,15 @@ struct tree_type
|
||||||
DECL_ASSEMBLER_NAME has not yet been set, using this macro will not cause
|
DECL_ASSEMBLER_NAME has not yet been set, using this macro will not cause
|
||||||
the DECL_ASSEMBLER_NAME of either DECL to be set. In other words, the
|
the DECL_ASSEMBLER_NAME of either DECL to be set. In other words, the
|
||||||
semantics of using this macro, are different than saying:
|
semantics of using this macro, are different than saying:
|
||||||
|
|
||||||
SET_DECL_ASSEMBLER_NAME(DECL2, DECL_ASSEMBLER_NAME (DECL1))
|
SET_DECL_ASSEMBLER_NAME(DECL2, DECL_ASSEMBLER_NAME (DECL1))
|
||||||
|
|
||||||
which will try to set the DECL_ASSEMBLER_NAME for DECL1. */
|
which will try to set the DECL_ASSEMBLER_NAME for DECL1. */
|
||||||
|
|
||||||
#define COPY_DECL_ASSEMBLER_NAME(DECL1, DECL2) \
|
#define COPY_DECL_ASSEMBLER_NAME(DECL1, DECL2) \
|
||||||
(DECL_ASSEMBLER_NAME_SET_P (DECL1) \
|
(DECL_ASSEMBLER_NAME_SET_P (DECL1) \
|
||||||
? (void) SET_DECL_ASSEMBLER_NAME (DECL2, \
|
? (void) SET_DECL_ASSEMBLER_NAME (DECL2, \
|
||||||
DECL_ASSEMBLER_NAME (DECL1)) \
|
DECL_ASSEMBLER_NAME (DECL1)) \
|
||||||
: (void) 0)
|
: (void) 0)
|
||||||
|
|
||||||
/* Records the section name in a section attribute. Used to pass
|
/* Records the section name in a section attribute. Used to pass
|
||||||
|
@ -1470,7 +1470,7 @@ struct tree_type
|
||||||
PROMOTED_MODE is defined, the mode of this expression may not be same
|
PROMOTED_MODE is defined, the mode of this expression may not be same
|
||||||
as DECL_MODE. In that case, DECL_MODE contains the mode corresponding
|
as DECL_MODE. In that case, DECL_MODE contains the mode corresponding
|
||||||
to the variable's data type, while the mode
|
to the variable's data type, while the mode
|
||||||
of DECL_RTL is the mode actually used to contain the data.
|
of DECL_RTL is the mode actually used to contain the data.
|
||||||
|
|
||||||
This value can be evaluated lazily for functions, variables with
|
This value can be evaluated lazily for functions, variables with
|
||||||
static storage duration, and labels. */
|
static storage duration, and labels. */
|
||||||
|
@ -1578,7 +1578,7 @@ struct tree_type
|
||||||
|
|
||||||
/* In a TYPE_DECL
|
/* In a TYPE_DECL
|
||||||
nonzero means the detail info about this type is not dumped into stabs.
|
nonzero means the detail info about this type is not dumped into stabs.
|
||||||
Instead it will generate cross reference ('x') of names.
|
Instead it will generate cross reference ('x') of names.
|
||||||
This uses the same flag as DECL_EXTERNAL. */
|
This uses the same flag as DECL_EXTERNAL. */
|
||||||
#define TYPE_DECL_SUPPRESS_DEBUG(NODE) \
|
#define TYPE_DECL_SUPPRESS_DEBUG(NODE) \
|
||||||
(TYPE_DECL_CHECK (NODE)->decl.external_flag)
|
(TYPE_DECL_CHECK (NODE)->decl.external_flag)
|
||||||
|
@ -1614,7 +1614,7 @@ struct tree_type
|
||||||
/* In a FUNCTION_DECL, nonzero if the function cannot be inlined. */
|
/* In a FUNCTION_DECL, nonzero if the function cannot be inlined. */
|
||||||
#define DECL_UNINLINABLE(NODE) (FUNCTION_DECL_CHECK (NODE)->decl.uninlinable)
|
#define DECL_UNINLINABLE(NODE) (FUNCTION_DECL_CHECK (NODE)->decl.uninlinable)
|
||||||
|
|
||||||
/* In a VAR_DECL, nonzero if the data should be allocated from
|
/* In a VAR_DECL, nonzero if the data should be allocated from
|
||||||
thread-local storage. */
|
thread-local storage. */
|
||||||
#define DECL_THREAD_LOCAL(NODE) (VAR_DECL_CHECK (NODE)->decl.thread_local_flag)
|
#define DECL_THREAD_LOCAL(NODE) (VAR_DECL_CHECK (NODE)->decl.thread_local_flag)
|
||||||
|
|
||||||
|
@ -1895,7 +1895,7 @@ enum tree_index
|
||||||
TI_UINTSI_TYPE,
|
TI_UINTSI_TYPE,
|
||||||
TI_UINTDI_TYPE,
|
TI_UINTDI_TYPE,
|
||||||
TI_UINTTI_TYPE,
|
TI_UINTTI_TYPE,
|
||||||
|
|
||||||
TI_INTEGER_ZERO,
|
TI_INTEGER_ZERO,
|
||||||
TI_INTEGER_ONE,
|
TI_INTEGER_ONE,
|
||||||
TI_INTEGER_MINUS_ONE,
|
TI_INTEGER_MINUS_ONE,
|
||||||
|
@ -1955,7 +1955,7 @@ enum tree_index
|
||||||
extern tree global_trees[TI_MAX];
|
extern tree global_trees[TI_MAX];
|
||||||
|
|
||||||
#define error_mark_node global_trees[TI_ERROR_MARK]
|
#define error_mark_node global_trees[TI_ERROR_MARK]
|
||||||
|
|
||||||
#define intQI_type_node global_trees[TI_INTQI_TYPE]
|
#define intQI_type_node global_trees[TI_INTQI_TYPE]
|
||||||
#define intHI_type_node global_trees[TI_INTHI_TYPE]
|
#define intHI_type_node global_trees[TI_INTHI_TYPE]
|
||||||
#define intSI_type_node global_trees[TI_INTSI_TYPE]
|
#define intSI_type_node global_trees[TI_INTSI_TYPE]
|
||||||
|
@ -2028,7 +2028,7 @@ extern tree global_trees[TI_MAX];
|
||||||
|
|
||||||
/* An enumeration of the standard C integer types. These must be
|
/* An enumeration of the standard C integer types. These must be
|
||||||
ordered so that shorter types appear before longer ones. */
|
ordered so that shorter types appear before longer ones. */
|
||||||
enum integer_type_kind
|
enum integer_type_kind
|
||||||
{
|
{
|
||||||
itk_char,
|
itk_char,
|
||||||
itk_signed_char,
|
itk_signed_char,
|
||||||
|
|
|
@ -1635,7 +1635,7 @@ calculate_giv_inc (pattern, src_insn, regno)
|
||||||
rtx second_part = XEXP (increment, 1);
|
rtx second_part = XEXP (increment, 1);
|
||||||
enum rtx_code code = GET_CODE (increment);
|
enum rtx_code code = GET_CODE (increment);
|
||||||
|
|
||||||
increment = find_last_value (XEXP (increment, 0),
|
increment = find_last_value (XEXP (increment, 0),
|
||||||
&src_insn, NULL_RTX, 0);
|
&src_insn, NULL_RTX, 0);
|
||||||
/* Don't need the last insn anymore. */
|
/* Don't need the last insn anymore. */
|
||||||
delete_related_insns (get_last_insn ());
|
delete_related_insns (get_last_insn ());
|
||||||
|
@ -1732,7 +1732,7 @@ final_reg_note_copy (notesp, map)
|
||||||
while (*notesp)
|
while (*notesp)
|
||||||
{
|
{
|
||||||
rtx note = *notesp;
|
rtx note = *notesp;
|
||||||
|
|
||||||
if (GET_CODE (note) == INSN_LIST)
|
if (GET_CODE (note) == INSN_LIST)
|
||||||
{
|
{
|
||||||
/* Sometimes, we have a REG_WAS_0 note that points to a
|
/* Sometimes, we have a REG_WAS_0 note that points to a
|
||||||
|
@ -2579,7 +2579,7 @@ find_splittable_regs (loop, unroll_type, unroll_number)
|
||||||
rtx tem = gen_reg_rtx (bl->biv->mode);
|
rtx tem = gen_reg_rtx (bl->biv->mode);
|
||||||
|
|
||||||
record_base_value (REGNO (tem), bl->biv->add_val, 0);
|
record_base_value (REGNO (tem), bl->biv->add_val, 0);
|
||||||
loop_insn_hoist (loop,
|
loop_insn_hoist (loop,
|
||||||
gen_move_insn (tem, bl->biv->src_reg));
|
gen_move_insn (tem, bl->biv->src_reg));
|
||||||
|
|
||||||
if (loop_dump_stream)
|
if (loop_dump_stream)
|
||||||
|
@ -3594,7 +3594,7 @@ loop_iterations (loop)
|
||||||
&& INSN_LUID (JUMP_LABEL (temp)) < INSN_LUID (loop->cont))
|
&& INSN_LUID (JUMP_LABEL (temp)) < INSN_LUID (loop->cont))
|
||||||
{
|
{
|
||||||
if (loop_dump_stream)
|
if (loop_dump_stream)
|
||||||
fprintf
|
fprintf
|
||||||
(loop_dump_stream,
|
(loop_dump_stream,
|
||||||
"Loop iterations: Loop has multiple back edges.\n");
|
"Loop iterations: Loop has multiple back edges.\n");
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -81,7 +81,7 @@ struct unw_eh_frame_hdr
|
||||||
|
|
||||||
/* Like base_of_encoded_value, but take the base from a struct object
|
/* Like base_of_encoded_value, but take the base from a struct object
|
||||||
instead of an _Unwind_Context. */
|
instead of an _Unwind_Context. */
|
||||||
|
|
||||||
static _Unwind_Ptr
|
static _Unwind_Ptr
|
||||||
base_from_cb_data (unsigned char encoding, struct unw_eh_callback_data *data)
|
base_from_cb_data (unsigned char encoding, struct unw_eh_callback_data *data)
|
||||||
{
|
{
|
||||||
|
@ -94,7 +94,7 @@ base_from_cb_data (unsigned char encoding, struct unw_eh_callback_data *data)
|
||||||
case DW_EH_PE_pcrel:
|
case DW_EH_PE_pcrel:
|
||||||
case DW_EH_PE_aligned:
|
case DW_EH_PE_aligned:
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
case DW_EH_PE_textrel:
|
case DW_EH_PE_textrel:
|
||||||
return (_Unwind_Ptr) data->tbase;
|
return (_Unwind_Ptr) data->tbase;
|
||||||
case DW_EH_PE_datarel:
|
case DW_EH_PE_datarel:
|
||||||
|
|
|
@ -53,7 +53,7 @@ static __gthread_mutex_t object_mutex;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __GTHREAD_MUTEX_INIT_FUNCTION
|
#ifdef __GTHREAD_MUTEX_INIT_FUNCTION
|
||||||
static void
|
static void
|
||||||
init_object_mutex (void)
|
init_object_mutex (void)
|
||||||
{
|
{
|
||||||
__GTHREAD_MUTEX_INIT_FUNCTION (&object_mutex);
|
__GTHREAD_MUTEX_INIT_FUNCTION (&object_mutex);
|
||||||
|
@ -111,7 +111,7 @@ __register_frame (void *begin)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ob = (struct object *) malloc (sizeof (struct object));
|
ob = (struct object *) malloc (sizeof (struct object));
|
||||||
__register_frame_info (begin, ob);
|
__register_frame_info (begin, ob);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Similar, but BEGIN is actually a pointer to a table of unwind entries
|
/* Similar, but BEGIN is actually a pointer to a table of unwind entries
|
||||||
|
@ -161,7 +161,7 @@ __register_frame_table (void *begin)
|
||||||
Since the registration did not happen there, we'll abort.
|
Since the registration did not happen there, we'll abort.
|
||||||
|
|
||||||
Therefore, declare a new deregistration entry point that does the
|
Therefore, declare a new deregistration entry point that does the
|
||||||
exact same thing, but will resolve to the same library as
|
exact same thing, but will resolve to the same library as
|
||||||
implements __register_frame_info_bases. */
|
implements __register_frame_info_bases. */
|
||||||
|
|
||||||
void *
|
void *
|
||||||
|
@ -398,7 +398,7 @@ start_fde_sort (struct fde_accumulator *accu, size_t count)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void
|
static inline void
|
||||||
|
@ -411,7 +411,7 @@ fde_insert (struct fde_accumulator *accu, fde *this_fde)
|
||||||
/* Split LINEAR into a linear sequence with low values and an erratic
|
/* Split LINEAR into a linear sequence with low values and an erratic
|
||||||
sequence with high values, put the linear one (of longest possible
|
sequence with high values, put the linear one (of longest possible
|
||||||
length) into LINEAR and the erratic one into ERRATIC. This is O(N).
|
length) into LINEAR and the erratic one into ERRATIC. This is O(N).
|
||||||
|
|
||||||
Because the longest linear sequence we are trying to locate within the
|
Because the longest linear sequence we are trying to locate within the
|
||||||
incoming LINEAR array can be interspersed with (high valued) erratic
|
incoming LINEAR array can be interspersed with (high valued) erratic
|
||||||
entries. We construct a chain indicating the sequenced entries.
|
entries. We construct a chain indicating the sequenced entries.
|
||||||
|
@ -434,18 +434,18 @@ fde_split (struct object *ob, fde_compare_t fde_compare,
|
||||||
them and the overlaying onto ERRATIC will not work. */
|
them and the overlaying onto ERRATIC will not work. */
|
||||||
if (sizeof (fde *) != sizeof (fde **))
|
if (sizeof (fde *) != sizeof (fde **))
|
||||||
abort ();
|
abort ();
|
||||||
|
|
||||||
for (i = 0; i < count; i++)
|
for (i = 0; i < count; i++)
|
||||||
{
|
{
|
||||||
fde **probe;
|
fde **probe;
|
||||||
|
|
||||||
for (probe = chain_end;
|
for (probe = chain_end;
|
||||||
probe != &marker && fde_compare (ob, linear->array[i], *probe) < 0;
|
probe != &marker && fde_compare (ob, linear->array[i], *probe) < 0;
|
||||||
probe = chain_end)
|
probe = chain_end)
|
||||||
{
|
{
|
||||||
chain_end = (fde **) erratic->array[probe - linear->array];
|
chain_end = (fde **) erratic->array[probe - linear->array];
|
||||||
erratic->array[probe - linear->array] = NULL;
|
erratic->array[probe - linear->array] = NULL;
|
||||||
}
|
}
|
||||||
erratic->array[i] = (fde *) chain_end;
|
erratic->array[i] = (fde *) chain_end;
|
||||||
chain_end = &linear->array[i];
|
chain_end = &linear->array[i];
|
||||||
}
|
}
|
||||||
|
@ -486,22 +486,22 @@ frame_heapsort (struct object *ob, fde_compare_t fde_compare,
|
||||||
/* Invariant: a[m..n-1] is a heap. */
|
/* Invariant: a[m..n-1] is a heap. */
|
||||||
m--;
|
m--;
|
||||||
for (i = m; 2*i+1 < n; )
|
for (i = m; 2*i+1 < n; )
|
||||||
{
|
{
|
||||||
if (2*i+2 < n
|
if (2*i+2 < n
|
||||||
&& fde_compare (ob, a[2*i+2], a[2*i+1]) > 0
|
&& fde_compare (ob, a[2*i+2], a[2*i+1]) > 0
|
||||||
&& fde_compare (ob, a[2*i+2], a[i]) > 0)
|
&& fde_compare (ob, a[2*i+2], a[i]) > 0)
|
||||||
{
|
{
|
||||||
SWAP (a[i], a[2*i+2]);
|
SWAP (a[i], a[2*i+2]);
|
||||||
i = 2*i+2;
|
i = 2*i+2;
|
||||||
}
|
}
|
||||||
else if (fde_compare (ob, a[2*i+1], a[i]) > 0)
|
else if (fde_compare (ob, a[2*i+1], a[i]) > 0)
|
||||||
{
|
{
|
||||||
SWAP (a[i], a[2*i+1]);
|
SWAP (a[i], a[2*i+1]);
|
||||||
i = 2*i+1;
|
i = 2*i+1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
while (n > 1)
|
while (n > 1)
|
||||||
{
|
{
|
||||||
|
@ -509,22 +509,22 @@ frame_heapsort (struct object *ob, fde_compare_t fde_compare,
|
||||||
n--;
|
n--;
|
||||||
SWAP (a[0], a[n]);
|
SWAP (a[0], a[n]);
|
||||||
for (i = 0; 2*i+1 < n; )
|
for (i = 0; 2*i+1 < n; )
|
||||||
{
|
{
|
||||||
if (2*i+2 < n
|
if (2*i+2 < n
|
||||||
&& fde_compare (ob, a[2*i+2], a[2*i+1]) > 0
|
&& fde_compare (ob, a[2*i+2], a[2*i+1]) > 0
|
||||||
&& fde_compare (ob, a[2*i+2], a[i]) > 0)
|
&& fde_compare (ob, a[2*i+2], a[i]) > 0)
|
||||||
{
|
{
|
||||||
SWAP (a[i], a[2*i+2]);
|
SWAP (a[i], a[2*i+2]);
|
||||||
i = 2*i+2;
|
i = 2*i+2;
|
||||||
}
|
}
|
||||||
else if (fde_compare (ob, a[2*i+1], a[i]) > 0)
|
else if (fde_compare (ob, a[2*i+1], a[i]) > 0)
|
||||||
{
|
{
|
||||||
SWAP (a[i], a[2*i+1]);
|
SWAP (a[i], a[2*i+1]);
|
||||||
i = 2*i+1;
|
i = 2*i+1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#undef SWAP
|
#undef SWAP
|
||||||
}
|
}
|
||||||
|
@ -550,7 +550,7 @@ fde_merge (struct object *ob, fde_compare_t fde_compare,
|
||||||
v1->array[i1+i2] = v1->array[i1-1];
|
v1->array[i1+i2] = v1->array[i1-1];
|
||||||
i1--;
|
i1--;
|
||||||
}
|
}
|
||||||
v1->array[i1+i2] = fde2;
|
v1->array[i1+i2] = fde2;
|
||||||
}
|
}
|
||||||
while (i2 > 0);
|
while (i2 > 0);
|
||||||
v1->count += v2->count;
|
v1->count += v2->count;
|
||||||
|
@ -590,7 +590,7 @@ end_fde_sort (struct object *ob, struct fde_accumulator *accu, size_t count)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Update encoding, mixed_encoding, and pc_begin for OB for the
|
/* Update encoding, mixed_encoding, and pc_begin for OB for the
|
||||||
fde array beginning at THIS_FDE. Return the number of fdes
|
fde array beginning at THIS_FDE. Return the number of fdes
|
||||||
encountered along the way. */
|
encountered along the way. */
|
||||||
|
|
||||||
|
@ -747,7 +747,7 @@ init_object (struct object* ob)
|
||||||
{
|
{
|
||||||
fde **p;
|
fde **p;
|
||||||
for (p = ob->u.array; *p; ++p)
|
for (p = ob->u.array; *p; ++p)
|
||||||
add_fdes (ob, &accu, *p);
|
add_fdes (ob, &accu, *p);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
add_fdes (ob, &accu, ob->u.single);
|
add_fdes (ob, &accu, ob->u.single);
|
||||||
|
@ -826,7 +826,7 @@ linear_search_fdes (struct object *ob, fde *this_fde, void *pc)
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((_Unwind_Ptr) pc - pc_begin < pc_range)
|
if ((_Unwind_Ptr) pc - pc_begin < pc_range)
|
||||||
return this_fde;
|
return this_fde;
|
||||||
}
|
}
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -840,7 +840,7 @@ binary_search_unencoded_fdes (struct object *ob, void *pc)
|
||||||
{
|
{
|
||||||
struct fde_vector *vec = ob->u.sort;
|
struct fde_vector *vec = ob->u.sort;
|
||||||
size_t lo, hi;
|
size_t lo, hi;
|
||||||
|
|
||||||
for (lo = 0, hi = vec->count; lo < hi; )
|
for (lo = 0, hi = vec->count; lo < hi; )
|
||||||
{
|
{
|
||||||
size_t i = (lo + hi) / 2;
|
size_t i = (lo + hi) / 2;
|
||||||
|
@ -869,7 +869,7 @@ binary_search_single_encoding_fdes (struct object *ob, void *pc)
|
||||||
int encoding = ob->s.b.encoding;
|
int encoding = ob->s.b.encoding;
|
||||||
_Unwind_Ptr base = base_from_object (encoding, ob);
|
_Unwind_Ptr base = base_from_object (encoding, ob);
|
||||||
size_t lo, hi;
|
size_t lo, hi;
|
||||||
|
|
||||||
for (lo = 0, hi = vec->count; lo < hi; )
|
for (lo = 0, hi = vec->count; lo < hi; )
|
||||||
{
|
{
|
||||||
size_t i = (lo + hi) / 2;
|
size_t i = (lo + hi) / 2;
|
||||||
|
@ -897,7 +897,7 @@ binary_search_mixed_encoding_fdes (struct object *ob, void *pc)
|
||||||
{
|
{
|
||||||
struct fde_vector *vec = ob->u.sort;
|
struct fde_vector *vec = ob->u.sort;
|
||||||
size_t lo, hi;
|
size_t lo, hi;
|
||||||
|
|
||||||
for (lo = 0, hi = vec->count; lo < hi; )
|
for (lo = 0, hi = vec->count; lo < hi; )
|
||||||
{
|
{
|
||||||
size_t i = (lo + hi) / 2;
|
size_t i = (lo + hi) / 2;
|
||||||
|
@ -952,14 +952,14 @@ search_object (struct object* ob, void *pc)
|
||||||
{
|
{
|
||||||
/* Long slow labourious linear search, cos we've no memory. */
|
/* Long slow labourious linear search, cos we've no memory. */
|
||||||
if (ob->s.b.from_array)
|
if (ob->s.b.from_array)
|
||||||
{
|
{
|
||||||
fde **p;
|
fde **p;
|
||||||
for (p = ob->u.array; *p ; p++)
|
for (p = ob->u.array; *p ; p++)
|
||||||
{
|
{
|
||||||
fde *f = linear_search_fdes (ob, *p, pc);
|
fde *f = linear_search_fdes (ob, *p, pc);
|
||||||
if (f)
|
if (f)
|
||||||
return f;
|
return f;
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -122,7 +122,7 @@ typedef unsigned char ubyte;
|
||||||
a) in a linear search, find the shared image (i.e. DLL) containing
|
a) in a linear search, find the shared image (i.e. DLL) containing
|
||||||
the PC
|
the PC
|
||||||
b) using the FDE table for that shared object, locate the FDE using
|
b) using the FDE table for that shared object, locate the FDE using
|
||||||
binary search (which requires the sorting). */
|
binary search (which requires the sorting). */
|
||||||
|
|
||||||
/* The first few fields of a CIE. The CIE_id field is 0 for a CIE,
|
/* The first few fields of a CIE. The CIE_id field is 0 for a CIE,
|
||||||
to distinguish it from a valid FDE. FDEs are aligned to an addressing
|
to distinguish it from a valid FDE. FDEs are aligned to an addressing
|
||||||
|
|
130
gcc/unwind-dw2.c
130
gcc/unwind-dw2.c
|
@ -591,68 +591,68 @@ execute_stack_op (const unsigned char *op_ptr, const unsigned char *op_end,
|
||||||
{
|
{
|
||||||
/* Binary operations. */
|
/* Binary operations. */
|
||||||
_Unwind_Word first, second;
|
_Unwind_Word first, second;
|
||||||
if ((stack_elt -= 2) < 0)
|
if ((stack_elt -= 2) < 0)
|
||||||
abort ();
|
|
||||||
second = stack[stack_elt];
|
|
||||||
first = stack[stack_elt + 1];
|
|
||||||
|
|
||||||
switch (op)
|
|
||||||
{
|
|
||||||
case DW_OP_and:
|
|
||||||
result = second & first;
|
|
||||||
break;
|
|
||||||
case DW_OP_div:
|
|
||||||
result = (_Unwind_Sword) second / (_Unwind_Sword) first;
|
|
||||||
break;
|
|
||||||
case DW_OP_minus:
|
|
||||||
result = second - first;
|
|
||||||
break;
|
|
||||||
case DW_OP_mod:
|
|
||||||
result = (_Unwind_Sword) second % (_Unwind_Sword) first;
|
|
||||||
break;
|
|
||||||
case DW_OP_mul:
|
|
||||||
result = second * first;
|
|
||||||
break;
|
|
||||||
case DW_OP_or:
|
|
||||||
result = second | first;
|
|
||||||
break;
|
|
||||||
case DW_OP_plus:
|
|
||||||
result = second + first;
|
|
||||||
break;
|
|
||||||
case DW_OP_shl:
|
|
||||||
result = second << first;
|
|
||||||
break;
|
|
||||||
case DW_OP_shr:
|
|
||||||
result = second >> first;
|
|
||||||
break;
|
|
||||||
case DW_OP_shra:
|
|
||||||
result = (_Unwind_Sword) second >> first;
|
|
||||||
break;
|
|
||||||
case DW_OP_xor:
|
|
||||||
result = second ^ first;
|
|
||||||
break;
|
|
||||||
case DW_OP_le:
|
|
||||||
result = (_Unwind_Sword) first <= (_Unwind_Sword) second;
|
|
||||||
break;
|
|
||||||
case DW_OP_ge:
|
|
||||||
result = (_Unwind_Sword) first >= (_Unwind_Sword) second;
|
|
||||||
break;
|
|
||||||
case DW_OP_eq:
|
|
||||||
result = (_Unwind_Sword) first == (_Unwind_Sword) second;
|
|
||||||
break;
|
|
||||||
case DW_OP_lt:
|
|
||||||
result = (_Unwind_Sword) first < (_Unwind_Sword) second;
|
|
||||||
break;
|
|
||||||
case DW_OP_gt:
|
|
||||||
result = (_Unwind_Sword) first > (_Unwind_Sword) second;
|
|
||||||
break;
|
|
||||||
case DW_OP_ne:
|
|
||||||
result = (_Unwind_Sword) first != (_Unwind_Sword) second;
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
abort ();
|
abort ();
|
||||||
}
|
second = stack[stack_elt];
|
||||||
|
first = stack[stack_elt + 1];
|
||||||
|
|
||||||
|
switch (op)
|
||||||
|
{
|
||||||
|
case DW_OP_and:
|
||||||
|
result = second & first;
|
||||||
|
break;
|
||||||
|
case DW_OP_div:
|
||||||
|
result = (_Unwind_Sword) second / (_Unwind_Sword) first;
|
||||||
|
break;
|
||||||
|
case DW_OP_minus:
|
||||||
|
result = second - first;
|
||||||
|
break;
|
||||||
|
case DW_OP_mod:
|
||||||
|
result = (_Unwind_Sword) second % (_Unwind_Sword) first;
|
||||||
|
break;
|
||||||
|
case DW_OP_mul:
|
||||||
|
result = second * first;
|
||||||
|
break;
|
||||||
|
case DW_OP_or:
|
||||||
|
result = second | first;
|
||||||
|
break;
|
||||||
|
case DW_OP_plus:
|
||||||
|
result = second + first;
|
||||||
|
break;
|
||||||
|
case DW_OP_shl:
|
||||||
|
result = second << first;
|
||||||
|
break;
|
||||||
|
case DW_OP_shr:
|
||||||
|
result = second >> first;
|
||||||
|
break;
|
||||||
|
case DW_OP_shra:
|
||||||
|
result = (_Unwind_Sword) second >> first;
|
||||||
|
break;
|
||||||
|
case DW_OP_xor:
|
||||||
|
result = second ^ first;
|
||||||
|
break;
|
||||||
|
case DW_OP_le:
|
||||||
|
result = (_Unwind_Sword) first <= (_Unwind_Sword) second;
|
||||||
|
break;
|
||||||
|
case DW_OP_ge:
|
||||||
|
result = (_Unwind_Sword) first >= (_Unwind_Sword) second;
|
||||||
|
break;
|
||||||
|
case DW_OP_eq:
|
||||||
|
result = (_Unwind_Sword) first == (_Unwind_Sword) second;
|
||||||
|
break;
|
||||||
|
case DW_OP_lt:
|
||||||
|
result = (_Unwind_Sword) first < (_Unwind_Sword) second;
|
||||||
|
break;
|
||||||
|
case DW_OP_gt:
|
||||||
|
result = (_Unwind_Sword) first > (_Unwind_Sword) second;
|
||||||
|
break;
|
||||||
|
case DW_OP_ne:
|
||||||
|
result = (_Unwind_Sword) first != (_Unwind_Sword) second;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
abort ();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -783,7 +783,7 @@ execute_cfa_program (const unsigned char *insn_ptr,
|
||||||
fs->regs.reg[reg].loc.reg = reg2;
|
fs->regs.reg[reg].loc.reg = reg2;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DW_CFA_remember_state:
|
case DW_CFA_remember_state:
|
||||||
{
|
{
|
||||||
struct frame_state_reg_info *new_rs;
|
struct frame_state_reg_info *new_rs;
|
||||||
|
@ -850,7 +850,7 @@ execute_cfa_program (const unsigned char *insn_ptr,
|
||||||
fs->regs.reg[reg].how = REG_SAVED_OFFSET;
|
fs->regs.reg[reg].how = REG_SAVED_OFFSET;
|
||||||
fs->regs.reg[reg].loc.offset = offset;
|
fs->regs.reg[reg].loc.offset = offset;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DW_CFA_def_cfa_sf:
|
case DW_CFA_def_cfa_sf:
|
||||||
insn_ptr = read_uleb128 (insn_ptr, &fs->cfa_reg);
|
insn_ptr = read_uleb128 (insn_ptr, &fs->cfa_reg);
|
||||||
insn_ptr = read_sleb128 (insn_ptr, &fs->cfa_offset);
|
insn_ptr = read_sleb128 (insn_ptr, &fs->cfa_offset);
|
||||||
|
@ -1034,7 +1034,7 @@ uw_update_context_1 (struct _Unwind_Context *context, _Unwind_FrameState *fs)
|
||||||
/* Special handling here: Many machines do not use a frame pointer,
|
/* Special handling here: Many machines do not use a frame pointer,
|
||||||
and track the CFA only through offsets from the stack pointer from
|
and track the CFA only through offsets from the stack pointer from
|
||||||
one frame to the next. In this case, the stack pointer is never
|
one frame to the next. In this case, the stack pointer is never
|
||||||
stored, so it has no saved address in the context. What we do
|
stored, so it has no saved address in the context. What we do
|
||||||
have is the CFA from the previous stack frame. */
|
have is the CFA from the previous stack frame. */
|
||||||
if (context->reg[fs->cfa_reg] == NULL)
|
if (context->reg[fs->cfa_reg] == NULL)
|
||||||
cfa = context->cfa;
|
cfa = context->cfa;
|
||||||
|
@ -1108,7 +1108,7 @@ uw_update_context (struct _Unwind_Context *context, _Unwind_FrameState *fs)
|
||||||
|
|
||||||
/* Fill in CONTEXT for top-of-stack. The only valid registers at this
|
/* Fill in CONTEXT for top-of-stack. The only valid registers at this
|
||||||
level will be the return address and the CFA. */
|
level will be the return address and the CFA. */
|
||||||
|
|
||||||
#define uw_init_context(CONTEXT) \
|
#define uw_init_context(CONTEXT) \
|
||||||
do \
|
do \
|
||||||
{ \
|
{ \
|
||||||
|
|
|
@ -63,7 +63,7 @@ struct SjLj_Function_Context
|
||||||
#ifdef DONT_USE_BUILTIN_SETJMP
|
#ifdef DONT_USE_BUILTIN_SETJMP
|
||||||
/* We don't know what sort of alignment requirements the system
|
/* We don't know what sort of alignment requirements the system
|
||||||
jmp_buf has. We over estimated in except.c, and now we have
|
jmp_buf has. We over estimated in except.c, and now we have
|
||||||
to match that here just in case the system *didn't* have more
|
to match that here just in case the system *didn't* have more
|
||||||
restrictive requirements. */
|
restrictive requirements. */
|
||||||
jmp_buf jbuf __attribute__((aligned));
|
jmp_buf jbuf __attribute__((aligned));
|
||||||
#else
|
#else
|
||||||
|
@ -76,7 +76,7 @@ struct _Unwind_Context
|
||||||
struct SjLj_Function_Context *fc;
|
struct SjLj_Function_Context *fc;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
_Unwind_Personality_Fn personality;
|
_Unwind_Personality_Fn personality;
|
||||||
} _Unwind_FrameState;
|
} _Unwind_FrameState;
|
||||||
|
@ -244,7 +244,7 @@ uw_update_context (struct _Unwind_Context *context,
|
||||||
context->fc = context->fc->prev;
|
context->fc = context->fc->prev;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void
|
static inline void
|
||||||
uw_init_context (struct _Unwind_Context *context)
|
uw_init_context (struct _Unwind_Context *context)
|
||||||
{
|
{
|
||||||
context->fc = _Unwind_SjLj_GetContext ();
|
context->fc = _Unwind_SjLj_GetContext ();
|
||||||
|
|
|
@ -136,15 +136,15 @@ extern _Unwind_Ptr _Unwind_GetRegionStart (struct _Unwind_Context *);
|
||||||
library and language-specific exception handling semantics. It is
|
library and language-specific exception handling semantics. It is
|
||||||
specific to the code fragment described by an unwind info block, and
|
specific to the code fragment described by an unwind info block, and
|
||||||
it is always referenced via the pointer in the unwind info block, and
|
it is always referenced via the pointer in the unwind info block, and
|
||||||
hence it has no ABI-specified name.
|
hence it has no ABI-specified name.
|
||||||
|
|
||||||
Note that this implies that two different C++ implementations can
|
Note that this implies that two different C++ implementations can
|
||||||
use different names, and have different contents in the language
|
use different names, and have different contents in the language
|
||||||
specific data area. Moreover, that the language specific data
|
specific data area. Moreover, that the language specific data
|
||||||
area contains no version info because name of the function invoked
|
area contains no version info because name of the function invoked
|
||||||
provides more effective versioning by detecting at link time the
|
provides more effective versioning by detecting at link time the
|
||||||
lack of code to handle the different data format. */
|
lack of code to handle the different data format. */
|
||||||
|
|
||||||
typedef _Unwind_Reason_Code (*_Unwind_Personality_Fn)
|
typedef _Unwind_Reason_Code (*_Unwind_Personality_Fn)
|
||||||
(int, _Unwind_Action, _Unwind_Exception_Class,
|
(int, _Unwind_Action, _Unwind_Exception_Class,
|
||||||
struct _Unwind_Exception *, struct _Unwind_Context *);
|
struct _Unwind_Exception *, struct _Unwind_Context *);
|
||||||
|
|
22
gcc/varasm.c
22
gcc/varasm.c
|
@ -1557,7 +1557,7 @@ assemble_variable (decl, top_level, at_end, dont_output_data)
|
||||||
{
|
{
|
||||||
warning_with_decl (decl,
|
warning_with_decl (decl,
|
||||||
"alignment of `%s' is greater than maximum object file alignment. Using %d",
|
"alignment of `%s' is greater than maximum object file alignment. Using %d",
|
||||||
MAX_OFILE_ALIGNMENT/BITS_PER_UNIT);
|
MAX_OFILE_ALIGNMENT/BITS_PER_UNIT);
|
||||||
align = MAX_OFILE_ALIGNMENT;
|
align = MAX_OFILE_ALIGNMENT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1569,7 +1569,7 @@ assemble_variable (decl, top_level, at_end, dont_output_data)
|
||||||
#endif
|
#endif
|
||||||
#ifdef CONSTANT_ALIGNMENT
|
#ifdef CONSTANT_ALIGNMENT
|
||||||
if (DECL_INITIAL (decl) != 0 && DECL_INITIAL (decl) != error_mark_node)
|
if (DECL_INITIAL (decl) != 0 && DECL_INITIAL (decl) != error_mark_node)
|
||||||
align = CONSTANT_ALIGNMENT (DECL_INITIAL (decl), align);
|
align = CONSTANT_ALIGNMENT (DECL_INITIAL (decl), align);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1610,7 +1610,7 @@ assemble_variable (decl, top_level, at_end, dont_output_data)
|
||||||
#endif
|
#endif
|
||||||
else if (DECL_INITIAL (decl) == 0
|
else if (DECL_INITIAL (decl) == 0
|
||||||
|| DECL_INITIAL (decl) == error_mark_node
|
|| DECL_INITIAL (decl) == error_mark_node
|
||||||
|| (flag_zero_initialized_in_bss
|
|| (flag_zero_initialized_in_bss
|
||||||
&& initializer_zerop (DECL_INITIAL (decl))))
|
&& initializer_zerop (DECL_INITIAL (decl))))
|
||||||
{
|
{
|
||||||
unsigned HOST_WIDE_INT size = tree_low_cst (DECL_SIZE_UNIT (decl), 1);
|
unsigned HOST_WIDE_INT size = tree_low_cst (DECL_SIZE_UNIT (decl), 1);
|
||||||
|
@ -1630,8 +1630,8 @@ assemble_variable (decl, top_level, at_end, dont_output_data)
|
||||||
/* Don't continue this line--convex cc version 4.1 would lose. */
|
/* Don't continue this line--convex cc version 4.1 would lose. */
|
||||||
#if !defined(ASM_OUTPUT_ALIGNED_COMMON) && !defined(ASM_OUTPUT_ALIGNED_DECL_COMMON) && !defined(ASM_OUTPUT_ALIGNED_BSS)
|
#if !defined(ASM_OUTPUT_ALIGNED_COMMON) && !defined(ASM_OUTPUT_ALIGNED_DECL_COMMON) && !defined(ASM_OUTPUT_ALIGNED_BSS)
|
||||||
if ((unsigned HOST_WIDE_INT) DECL_ALIGN (decl) / BITS_PER_UNIT > rounded)
|
if ((unsigned HOST_WIDE_INT) DECL_ALIGN (decl) / BITS_PER_UNIT > rounded)
|
||||||
warning_with_decl
|
warning_with_decl
|
||||||
(decl, "requested alignment for %s is greater than implemented alignment of %d",rounded);
|
(decl, "requested alignment for %s is greater than implemented alignment of %d",rounded);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
asm_emit_uninitialised (decl, name, size, rounded);
|
asm_emit_uninitialised (decl, name, size, rounded);
|
||||||
|
@ -4055,8 +4055,8 @@ output_addressed_constants (exp)
|
||||||
;
|
;
|
||||||
|
|
||||||
if (TREE_CODE_CLASS (TREE_CODE (tem)) == 'c'
|
if (TREE_CODE_CLASS (TREE_CODE (tem)) == 'c'
|
||||||
|| TREE_CODE (tem) == CONSTRUCTOR)
|
|| TREE_CODE (tem) == CONSTRUCTOR)
|
||||||
output_constant_def (tem, 0);
|
output_constant_def (tem, 0);
|
||||||
|
|
||||||
if (TREE_PUBLIC (tem))
|
if (TREE_PUBLIC (tem))
|
||||||
reloc |= 2;
|
reloc |= 2;
|
||||||
|
@ -4805,7 +4805,7 @@ mark_weak (decl)
|
||||||
&& GET_CODE (XEXP (DECL_RTL (decl), 0)) == SYMBOL_REF)
|
&& GET_CODE (XEXP (DECL_RTL (decl), 0)) == SYMBOL_REF)
|
||||||
SYMBOL_REF_WEAK (XEXP (DECL_RTL (decl), 0)) = 1;
|
SYMBOL_REF_WEAK (XEXP (DECL_RTL (decl), 0)) = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Merge weak status between NEWDECL and OLDDECL. */
|
/* Merge weak status between NEWDECL and OLDDECL. */
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -4819,7 +4819,7 @@ merge_weak (newdecl, olddecl)
|
||||||
if (DECL_WEAK (newdecl))
|
if (DECL_WEAK (newdecl))
|
||||||
{
|
{
|
||||||
tree wd;
|
tree wd;
|
||||||
|
|
||||||
/* NEWDECL is weak, but OLDDECL is not. */
|
/* NEWDECL is weak, but OLDDECL is not. */
|
||||||
|
|
||||||
/* If we already output the OLDDECL, we're in trouble; we can't
|
/* If we already output the OLDDECL, we're in trouble; we can't
|
||||||
|
@ -4827,7 +4827,7 @@ merge_weak (newdecl, olddecl)
|
||||||
declare_weak because the NEWDECL and OLDDECL was not yet
|
declare_weak because the NEWDECL and OLDDECL was not yet
|
||||||
been merged; therefore, TREE_ASM_WRITTEN was not set. */
|
been merged; therefore, TREE_ASM_WRITTEN was not set. */
|
||||||
if (TREE_ASM_WRITTEN (olddecl))
|
if (TREE_ASM_WRITTEN (olddecl))
|
||||||
error_with_decl (newdecl,
|
error_with_decl (newdecl,
|
||||||
"weak declaration of `%s' must precede definition");
|
"weak declaration of `%s' must precede definition");
|
||||||
|
|
||||||
/* If we've already generated rtl referencing OLDDECL, we may
|
/* If we've already generated rtl referencing OLDDECL, we may
|
||||||
|
@ -5469,7 +5469,7 @@ default_elf_select_section (decl, reloc, align)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Construct a unique section name based on the decl name and the
|
/* Construct a unique section name based on the decl name and the
|
||||||
categorization performed above. */
|
categorization performed above. */
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
@ -188,8 +188,8 @@ extern void varray_check_failed PARAMS ((varray_type, size_t,
|
||||||
|
|
||||||
/* Push X onto VA. T is the name of the field in varray_data
|
/* Push X onto VA. T is the name of the field in varray_data
|
||||||
corresponding to the type of X. */
|
corresponding to the type of X. */
|
||||||
#define VARRAY_PUSH(VA, T, X) \
|
#define VARRAY_PUSH(VA, T, X) \
|
||||||
do \
|
do \
|
||||||
{ \
|
{ \
|
||||||
if ((VA)->elements_used >= (VA)->num_elements) \
|
if ((VA)->elements_used >= (VA)->num_elements) \
|
||||||
VARRAY_GROW ((VA), 2 * (VA)->num_elements); \
|
VARRAY_GROW ((VA), 2 * (VA)->num_elements); \
|
||||||
|
|
|
@ -190,7 +190,7 @@ typedef struct _DST_SOURCE_CORR
|
||||||
#define DST_K_SOURCE_CORR_HEADER_SIZE 4
|
#define DST_K_SOURCE_CORR_HEADER_SIZE 4
|
||||||
|
|
||||||
/* Source file correlation codes. */
|
/* Source file correlation codes. */
|
||||||
|
|
||||||
#define DST_K_SRC_DECLFILE 1
|
#define DST_K_SRC_DECLFILE 1
|
||||||
#define DST_K_SRC_SETFILE 2
|
#define DST_K_SRC_SETFILE 2
|
||||||
#define DST_K_SRC_SETREC_L 3
|
#define DST_K_SRC_SETREC_L 3
|
||||||
|
@ -251,5 +251,5 @@ typedef struct _DST_PROLOG
|
||||||
unsigned int dst_l_prolog_bkpt_addr;
|
unsigned int dst_l_prolog_bkpt_addr;
|
||||||
} DST_PROLOG;
|
} DST_PROLOG;
|
||||||
#define DST_K_PROLOG_SIZE 8
|
#define DST_K_PROLOG_SIZE 8
|
||||||
|
|
||||||
#endif /* GCC_VMSDBG_H */
|
#endif /* GCC_VMSDBG_H */
|
||||||
|
|
|
@ -449,7 +449,7 @@ restart:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CONST:
|
case CONST:
|
||||||
/* This used to output parentheses around the expression, but that does
|
/* This used to output parentheses around the expression, but that does
|
||||||
not work on the 386 (either ATT or BSD assembler). */
|
not work on the 386 (either ATT or BSD assembler). */
|
||||||
addr_const_to_string (buf1, XEXP (x, 0));
|
addr_const_to_string (buf1, XEXP (x, 0));
|
||||||
strcat (str, buf1);
|
strcat (str, buf1);
|
||||||
|
@ -644,7 +644,7 @@ write_debug_data4 (data4, comment, dosizeonly)
|
||||||
fprintf (asm_out_file, "\t%s %s", ASM_COMMENT_START, comment);
|
fprintf (asm_out_file, "\t%s %s", ASM_COMMENT_START, comment);
|
||||||
fputc ('\n', asm_out_file);
|
fputc ('\n', asm_out_file);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 4;
|
return 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -707,7 +707,7 @@ write_debug_string (string, comment, dosizeonly)
|
||||||
fprintf (asm_out_file, "\t%s %s", ASM_COMMENT_START, comment);
|
fprintf (asm_out_file, "\t%s %s", ASM_COMMENT_START, comment);
|
||||||
fputc ('\n', asm_out_file);
|
fputc ('\n', asm_out_file);
|
||||||
}
|
}
|
||||||
|
|
||||||
return strlen (string);
|
return strlen (string);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -829,7 +829,7 @@ write_rtnbeg (rtnnum, dosizeonly)
|
||||||
/* header size - 1st byte + flag byte + STO_LW size
|
/* header size - 1st byte + flag byte + STO_LW size
|
||||||
+ string count byte + string length */
|
+ string count byte + string length */
|
||||||
header.dst__header_length.dst_w_length
|
header.dst__header_length.dst_w_length
|
||||||
= DST_K_DST_HEADER_SIZE - 1 + 1 + 4 + 1 + strlen (go);
|
= DST_K_DST_HEADER_SIZE - 1 + 1 + 4 + 1 + strlen (go);
|
||||||
header.dst__header_type.dst_w_type = 0x17;
|
header.dst__header_type.dst_w_type = 0x17;
|
||||||
|
|
||||||
totsize += write_debug_header (&header, "transfer", dosizeonly);
|
totsize += write_debug_header (&header, "transfer", dosizeonly);
|
||||||
|
@ -1133,7 +1133,7 @@ write_srccorr (fileid, file_info_entry, dosizeonly)
|
||||||
= DST_K_SOURCE;
|
= DST_K_SOURCE;
|
||||||
|
|
||||||
src_cmdtrlr.dst_b_src_df_libmodname = 0;
|
src_cmdtrlr.dst_b_src_df_libmodname = 0;
|
||||||
|
|
||||||
totsize += write_debug_header (&src_header.dst_a_source_corr_header,
|
totsize += write_debug_header (&src_header.dst_a_source_corr_header,
|
||||||
"source corr", dosizeonly);
|
"source corr", dosizeonly);
|
||||||
totsize += write_debug_data1 (src_command.dst_b_src_command,
|
totsize += write_debug_data1 (src_command.dst_b_src_command,
|
||||||
|
@ -1153,7 +1153,7 @@ write_srccorr (fileid, file_info_entry, dosizeonly)
|
||||||
totsize += write_debug_data8
|
totsize += write_debug_data8
|
||||||
(src_command.dst_a_src_cmd_fields.dst_a_src_decl_src.dst_q_src_df_rms_cdt,
|
(src_command.dst_a_src_cmd_fields.dst_a_src_decl_src.dst_q_src_df_rms_cdt,
|
||||||
"source_corr (creation date)", dosizeonly);
|
"source_corr (creation date)", dosizeonly);
|
||||||
|
|
||||||
totsize += write_debug_data4
|
totsize += write_debug_data4
|
||||||
(src_command.dst_a_src_cmd_fields.dst_a_src_decl_src.dst_l_src_df_rms_ebk,
|
(src_command.dst_a_src_cmd_fields.dst_a_src_decl_src.dst_l_src_df_rms_ebk,
|
||||||
"source_corr (EOF block number)", dosizeonly);
|
"source_corr (EOF block number)", dosizeonly);
|
||||||
|
@ -1273,7 +1273,7 @@ write_srccorrs (dosizeonly)
|
||||||
totsize += write_srccorr (i, file_info_table[i], dosizeonly);
|
totsize += write_srccorr (i, file_info_table[i], dosizeonly);
|
||||||
|
|
||||||
return totsize;
|
return totsize;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Output a marker (i.e. a label) for the beginning of a function, before
|
/* Output a marker (i.e. a label) for the beginning of a function, before
|
||||||
the prologue. */
|
the prologue. */
|
||||||
|
@ -1508,7 +1508,7 @@ lookup_filename (file_name)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Prepare to add a new table entry by making sure there is enough space in
|
/* Prepare to add a new table entry by making sure there is enough space in
|
||||||
the table to do so. If not, expand the current table. */
|
the table to do so. If not, expand the current table. */
|
||||||
if (file_info_table_in_use == file_info_table_allocated)
|
if (file_info_table_in_use == file_info_table_allocated)
|
||||||
{
|
{
|
||||||
|
@ -1560,7 +1560,7 @@ vmsdbgout_source_line (line, filename)
|
||||||
= (dst_line_info_ref) xrealloc (line_info_table,
|
= (dst_line_info_ref) xrealloc (line_info_table,
|
||||||
(line_info_table_allocated
|
(line_info_table_allocated
|
||||||
* sizeof (dst_line_info_entry)));
|
* sizeof (dst_line_info_entry)));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Add the new entry at the end of the line_info_table. */
|
/* Add the new entry at the end of the line_info_table. */
|
||||||
line_info = &line_info_table[line_info_table_in_use++];
|
line_info = &line_info_table[line_info_table_in_use++];
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/* XCOFF definitions. These are needed in dbxout.c, final.c,
|
/* XCOFF definitions. These are needed in dbxout.c, final.c,
|
||||||
and xcoffout.h.
|
and xcoffout.h.
|
||||||
Copyright (C) 1998, 2000 Free Software Foundation, Inc.
|
Copyright (C) 1998, 2000 Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of GCC.
|
This file is part of GCC.
|
||||||
|
@ -107,7 +107,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
|
||||||
if (*_p == '*') \
|
if (*_p == '*') \
|
||||||
fprintf (asmfile, "%s", _p+1); \
|
fprintf (asmfile, "%s", _p+1); \
|
||||||
else \
|
else \
|
||||||
for (; *_p != '[' && *_p; _p++) \
|
for (; *_p != '[' && *_p; _p++) \
|
||||||
fprintf (asmfile, "%c", *_p); \
|
fprintf (asmfile, "%c", *_p); \
|
||||||
} \
|
} \
|
||||||
else if (current_sym_addr) \
|
else if (current_sym_addr) \
|
||||||
|
|
Loading…
Reference in New Issue