Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
R
riscv-gcc-1
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
riscv-gcc-1
Commits
dc478a5d
Commit
dc478a5d
authored
Aug 29, 2000
by
Kazu Hirata
Committed by
Jeff Law
Aug 29, 2000
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
* tree.c: Fix formatting.
From-SVN: r36036
parent
abf9af02
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
105 additions
and
100 deletions
+105
-100
gcc/ChangeLog
+2
-0
gcc/tree.c
+103
-100
No files found.
gcc/ChangeLog
View file @
dc478a5d
2000-08-28 Kazu Hirata <kazu@hxi.com>
2000-08-28 Kazu Hirata <kazu@hxi.com>
* tree.c: Fix formatting.
* xcoffout.c: Fix formatting.
* xcoffout.c: Fix formatting.
2000-08-28 Jason Merrill <jason@redhat.com>
2000-08-28 Jason Merrill <jason@redhat.com>
...
...
gcc/tree.c
View file @
dc478a5d
...
@@ -19,7 +19,6 @@ along with GNU CC; see the file COPYING. If not, write to
...
@@ -19,7 +19,6 @@ along with GNU CC; see the file COPYING. If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330,
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
Boston, MA 02111-1307, USA. */
/* This file contains the low level primitives for operating on tree nodes,
/* This file contains the low level primitives for operating on tree nodes,
including allocation, list operations, interning of identifiers,
including allocation, list operations, interning of identifiers,
construction of data type nodes and statement nodes,
construction of data type nodes and statement nodes,
...
@@ -48,7 +47,7 @@ Boston, MA 02111-1307, USA. */
...
@@ -48,7 +47,7 @@ Boston, MA 02111-1307, USA. */
#define obstack_chunk_alloc xmalloc
#define obstack_chunk_alloc xmalloc
#define obstack_chunk_free free
#define obstack_chunk_free free
/* obstack.[ch] explicitly declined to prototype this. */
/* obstack.[ch] explicitly declined to prototype this.
*/
extern
int
_obstack_allocated_p
PARAMS
((
struct
obstack
*
h
,
PTR
obj
));
extern
int
_obstack_allocated_p
PARAMS
((
struct
obstack
*
h
,
PTR
obj
));
static
void
unsave_expr_now_r
PARAMS
((
tree
));
static
void
unsave_expr_now_r
PARAMS
((
tree
));
...
@@ -146,7 +145,7 @@ char *momentary_function_firstobj;
...
@@ -146,7 +145,7 @@ char *momentary_function_firstobj;
int
all_types_permanent
;
int
all_types_permanent
;
/* Stack of places to restore the momentary obstack back to. */
/* Stack of places to restore the momentary obstack back to. */
struct
momentary_level
struct
momentary_level
{
{
/* Pointer back to previous such level. */
/* Pointer back to previous such level. */
...
@@ -211,8 +210,8 @@ typedef enum
...
@@ -211,8 +210,8 @@ typedef enum
all_kinds
all_kinds
}
tree_node_kind
;
}
tree_node_kind
;
int
tree_node_counts
[(
int
)
all_kinds
];
int
tree_node_counts
[(
int
)
all_kinds
];
int
tree_node_sizes
[(
int
)
all_kinds
];
int
tree_node_sizes
[(
int
)
all_kinds
];
int
id_string_size
=
0
;
int
id_string_size
=
0
;
static
const
char
*
const
tree_node_kind_names
[]
=
{
static
const
char
*
const
tree_node_kind_names
[]
=
{
...
@@ -259,7 +258,7 @@ struct type_hash
...
@@ -259,7 +258,7 @@ struct type_hash
tree
type
;
tree
type
;
};
};
/* Initial size of the hash table (rounded to next prime). */
/* Initial size of the hash table (rounded to next prime).
*/
#define TYPE_HASH_INITIAL_SIZE 1000
#define TYPE_HASH_INITIAL_SIZE 1000
/* Now here is the hash table. When recording a type, it is added to
/* Now here is the hash table. When recording a type, it is added to
...
@@ -329,7 +328,7 @@ init_obstacks ()
...
@@ -329,7 +328,7 @@ init_obstacks ()
ggc_add_tree_root
(
hash_table
,
sizeof
hash_table
/
sizeof
(
tree
));
ggc_add_tree_root
(
hash_table
,
sizeof
hash_table
/
sizeof
(
tree
));
/* Initialize the hash table of types. */
/* Initialize the hash table of types. */
type_hash_table
=
htab_create
(
TYPE_HASH_INITIAL_SIZE
,
type_hash_hash
,
type_hash_table
=
htab_create
(
TYPE_HASH_INITIAL_SIZE
,
type_hash_hash
,
type_hash_eq
,
0
);
type_hash_eq
,
0
);
ggc_add_root
(
&
type_hash_table
,
1
,
sizeof
type_hash_table
,
mark_type_hash
);
ggc_add_root
(
&
type_hash_table
,
1
,
sizeof
type_hash_table
,
mark_type_hash
);
ggc_add_tree_root
(
global_trees
,
TI_MAX
);
ggc_add_tree_root
(
global_trees
,
TI_MAX
);
...
@@ -522,7 +521,7 @@ void
...
@@ -522,7 +521,7 @@ void
push_obstacks_nochange
()
push_obstacks_nochange
()
{
{
struct
obstack_stack
*
p
;
struct
obstack_stack
*
p
;
p
=
(
struct
obstack_stack
*
)
obstack_alloc
(
&
obstack_stack_obstack
,
p
=
(
struct
obstack_stack
*
)
obstack_alloc
(
&
obstack_stack_obstack
,
(
sizeof
(
struct
obstack_stack
)));
(
sizeof
(
struct
obstack_stack
)));
...
@@ -934,7 +933,7 @@ make_node (code)
...
@@ -934,7 +933,7 @@ make_node (code)
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 languages 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.
See comment in restore_tree_status for why we can't put this
See comment in restore_tree_status for why we can't put this
in function_obstack. */
in function_obstack. */
...
@@ -1047,8 +1046,8 @@ make_node (code)
...
@@ -1047,8 +1046,8 @@ make_node (code)
memset
((
PTR
)
t
,
0
,
length
);
memset
((
PTR
)
t
,
0
,
length
);
#ifdef GATHER_STATISTICS
#ifdef GATHER_STATISTICS
tree_node_counts
[(
int
)
kind
]
++
;
tree_node_counts
[(
int
)
kind
]
++
;
tree_node_sizes
[(
int
)
kind
]
+=
length
;
tree_node_sizes
[(
int
)
kind
]
+=
length
;
#endif
#endif
TREE_SET_CODE
(
t
,
code
);
TREE_SET_CODE
(
t
,
code
);
...
@@ -1067,7 +1066,7 @@ make_node (code)
...
@@ -1067,7 +1066,7 @@ make_node (code)
DECL_USER_ALIGN
(
t
)
=
0
;
DECL_USER_ALIGN
(
t
)
=
0
;
DECL_IN_SYSTEM_HEADER
(
t
)
=
in_system_header
;
DECL_IN_SYSTEM_HEADER
(
t
)
=
in_system_header
;
DECL_SOURCE_LINE
(
t
)
=
lineno
;
DECL_SOURCE_LINE
(
t
)
=
lineno
;
DECL_SOURCE_FILE
(
t
)
=
DECL_SOURCE_FILE
(
t
)
=
(
input_filename
)
?
input_filename
:
built_in_filename
;
(
input_filename
)
?
input_filename
:
built_in_filename
;
DECL_UID
(
t
)
=
next_decl_uid
++
;
DECL_UID
(
t
)
=
next_decl_uid
++
;
/* Note that we have not yet computed the alias set for this
/* Note that we have not yet computed the alias set for this
...
@@ -1109,7 +1108,7 @@ make_node (code)
...
@@ -1109,7 +1108,7 @@ make_node (code)
operands are. */
operands are. */
TREE_SIDE_EFFECTS
(
t
)
=
1
;
TREE_SIDE_EFFECTS
(
t
)
=
1
;
break
;
break
;
default
:
default
:
break
;
break
;
}
}
...
@@ -1127,7 +1126,7 @@ tree (*make_lang_type_fn) PARAMS ((enum tree_code)) = make_node;
...
@@ -1127,7 +1126,7 @@ tree (*make_lang_type_fn) PARAMS ((enum tree_code)) = make_node;
/* Return a new type (with the indicated CODE), doing whatever
/* Return a new type (with the indicated CODE), doing whatever
language-specific processing is required. */
language-specific processing is required. */
tree
tree
make_lang_type
(
code
)
make_lang_type
(
code
)
enum
tree_code
code
;
enum
tree_code
code
;
{
{
...
@@ -1278,15 +1277,16 @@ get_identifier (text)
...
@@ -1278,15 +1277,16 @@ get_identifier (text)
hi
&=
(
1
<<
HASHBITS
)
-
1
;
hi
&=
(
1
<<
HASHBITS
)
-
1
;
hi
%=
MAX_HASH_TABLE
;
hi
%=
MAX_HASH_TABLE
;
/* Search table for identifier */
/* Search table for identifier
.
*/
for
(
idp
=
hash_table
[
hi
];
idp
;
idp
=
TREE_CHAIN
(
idp
))
for
(
idp
=
hash_table
[
hi
];
idp
;
idp
=
TREE_CHAIN
(
idp
))
if
(
IDENTIFIER_LENGTH
(
idp
)
==
len
if
(
IDENTIFIER_LENGTH
(
idp
)
==
len
&&
IDENTIFIER_POINTER
(
idp
)[
0
]
==
text
[
0
]
&&
IDENTIFIER_POINTER
(
idp
)[
0
]
==
text
[
0
]
&&
!
bcmp
(
IDENTIFIER_POINTER
(
idp
),
text
,
len
))
&&
!
bcmp
(
IDENTIFIER_POINTER
(
idp
),
text
,
len
))
return
idp
;
/* <-- return if found */
/* Return if found. */
return
idp
;
/* Not found; optionally warn about a similar identifier */
/* Not found; optionally warn about a similar identifier
.
*/
if
(
warn_id_clash
&&
do_identifier_warnings
&&
len
>=
id_clash_len
)
if
(
warn_id_clash
&&
do_identifier_warnings
&&
len
>=
id_clash_len
)
for
(
idp
=
hash_table
[
hi
];
idp
;
idp
=
TREE_CHAIN
(
idp
))
for
(
idp
=
hash_table
[
hi
];
idp
;
idp
=
TREE_CHAIN
(
idp
))
if
(
!
strncmp
(
IDENTIFIER_POINTER
(
idp
),
text
,
id_clash_len
))
if
(
!
strncmp
(
IDENTIFIER_POINTER
(
idp
),
text
,
id_clash_len
))
...
@@ -1344,8 +1344,8 @@ maybe_get_identifier (text)
...
@@ -1344,8 +1344,8 @@ maybe_get_identifier (text)
hi
&=
(
1
<<
HASHBITS
)
-
1
;
hi
&=
(
1
<<
HASHBITS
)
-
1
;
hi
%=
MAX_HASH_TABLE
;
hi
%=
MAX_HASH_TABLE
;
/* Search table for identifier */
/* Search table for identifier
.
*/
for
(
idp
=
hash_table
[
hi
];
idp
;
idp
=
TREE_CHAIN
(
idp
))
for
(
idp
=
hash_table
[
hi
];
idp
;
idp
=
TREE_CHAIN
(
idp
))
if
(
IDENTIFIER_LENGTH
(
idp
)
==
len
if
(
IDENTIFIER_LENGTH
(
idp
)
==
len
&&
IDENTIFIER_POINTER
(
idp
)[
0
]
==
text
[
0
]
&&
IDENTIFIER_POINTER
(
idp
)[
0
]
==
text
[
0
]
...
@@ -1379,7 +1379,7 @@ set_identifier_size (size)
...
@@ -1379,7 +1379,7 @@ set_identifier_size (size)
/* Return a newly constructed INTEGER_CST node whose constant value
/* Return a newly constructed INTEGER_CST node whose constant value
is specified by the two ints LOW and HI.
is specified by the two ints LOW and HI.
The TREE_TYPE is set to `int'.
The TREE_TYPE is set to `int'.
This function should be used via the `build_int_2' macro. */
This function should be used via the `build_int_2' macro. */
...
@@ -1448,11 +1448,11 @@ real_value_from_int_cst (type, i)
...
@@ -1448,11 +1448,11 @@ real_value_from_int_cst (type, i)
{
{
REAL_VALUE_TYPE
e
;
REAL_VALUE_TYPE
e
;
d
=
(
double
)
(
~
TREE_INT_CST_HIGH
(
i
));
d
=
(
double
)
(
~
TREE_INT_CST_HIGH
(
i
));
e
=
((
double
)
((
HOST_WIDE_INT
)
1
<<
(
HOST_BITS_PER_WIDE_INT
/
2
))
e
=
((
double
)
((
HOST_WIDE_INT
)
1
<<
(
HOST_BITS_PER_WIDE_INT
/
2
))
*
(
double
)
((
HOST_WIDE_INT
)
1
<<
(
HOST_BITS_PER_WIDE_INT
/
2
)));
*
(
double
)
((
HOST_WIDE_INT
)
1
<<
(
HOST_BITS_PER_WIDE_INT
/
2
)));
d
*=
e
;
d
*=
e
;
e
=
(
double
)
(
~
TREE_INT_CST_LOW
(
i
));
e
=
(
double
)
(
~
TREE_INT_CST_LOW
(
i
));
d
+=
e
;
d
+=
e
;
d
=
(
-
d
-
1
.
0
);
d
=
(
-
d
-
1
.
0
);
}
}
...
@@ -1462,7 +1462,7 @@ real_value_from_int_cst (type, i)
...
@@ -1462,7 +1462,7 @@ real_value_from_int_cst (type, i)
d
=
(
double
)
(
unsigned
HOST_WIDE_INT
)
TREE_INT_CST_HIGH
(
i
);
d
=
(
double
)
(
unsigned
HOST_WIDE_INT
)
TREE_INT_CST_HIGH
(
i
);
e
=
((
double
)
((
HOST_WIDE_INT
)
1
<<
(
HOST_BITS_PER_WIDE_INT
/
2
))
e
=
((
double
)
((
HOST_WIDE_INT
)
1
<<
(
HOST_BITS_PER_WIDE_INT
/
2
))
*
(
double
)
((
HOST_WIDE_INT
)
1
<<
(
HOST_BITS_PER_WIDE_INT
/
2
)));
*
(
double
)
((
HOST_WIDE_INT
)
1
<<
(
HOST_BITS_PER_WIDE_INT
/
2
)));
d
*=
e
;
d
*=
e
;
e
=
(
double
)
TREE_INT_CST_LOW
(
i
);
e
=
(
double
)
TREE_INT_CST_LOW
(
i
);
d
+=
e
;
d
+=
e
;
...
@@ -1475,9 +1475,9 @@ real_value_from_int_cst (type, i)
...
@@ -1475,9 +1475,9 @@ real_value_from_int_cst (type, i)
struct
brfic_args
struct
brfic_args
{
{
tree
type
;
/* Input: type to conver to. */
tree
type
;
/* Input: type to conver to.
*/
tree
i
;
/* Input: operand to convert */
tree
i
;
/* Input: operand to convert
.
*/
REAL_VALUE_TYPE
d
;
/* Output: floating point value. */
REAL_VALUE_TYPE
d
;
/* Output: floating point value.
*/
};
};
/* Convert an integer to a floating point value while protected by a floating
/* Convert an integer to a floating point value while protected by a floating
...
@@ -1485,10 +1485,10 @@ struct brfic_args
...
@@ -1485,10 +1485,10 @@ struct brfic_args
static
void
static
void
build_real_from_int_cst_1
(
data
)
build_real_from_int_cst_1
(
data
)
PTR
data
;
PTR
data
;
{
{
struct
brfic_args
*
args
=
(
struct
brfic_args
*
)
data
;
struct
brfic_args
*
args
=
(
struct
brfic_args
*
)
data
;
#ifdef REAL_ARITHMETIC
#ifdef REAL_ARITHMETIC
args
->
d
=
real_value_from_int_cst
(
args
->
type
,
args
->
i
);
args
->
d
=
real_value_from_int_cst
(
args
->
type
,
args
->
i
);
#else
#else
...
@@ -1529,7 +1529,7 @@ build_real_from_int_cst (type, i)
...
@@ -1529,7 +1529,7 @@ build_real_from_int_cst (type, i)
d
=
dconst0
;
d
=
dconst0
;
overflow
=
1
;
overflow
=
1
;
}
}
/* Check for valid float value for this type on this target machine. */
/* Check for valid float value for this type on this target machine. */
#ifdef CHECK_FLOAT_VALUE
#ifdef CHECK_FLOAT_VALUE
...
@@ -1675,7 +1675,7 @@ integer_all_onesp (expr)
...
@@ -1675,7 +1675,7 @@ integer_all_onesp (expr)
uns
=
TREE_UNSIGNED
(
TREE_TYPE
(
expr
));
uns
=
TREE_UNSIGNED
(
TREE_TYPE
(
expr
));
if
(
!
uns
)
if
(
!
uns
)
return
(
TREE_INT_CST_LOW
(
expr
)
==
~
(
unsigned
HOST_WIDE_INT
)
0
return
(
TREE_INT_CST_LOW
(
expr
)
==
~
(
unsigned
HOST_WIDE_INT
)
0
&&
TREE_INT_CST_HIGH
(
expr
)
==
-
1
);
&&
TREE_INT_CST_HIGH
(
expr
)
==
-
1
);
/* Note that using TYPE_PRECISION here is wrong. We care about the
/* Note that using TYPE_PRECISION here is wrong. We care about the
...
@@ -1698,7 +1698,7 @@ integer_all_onesp (expr)
...
@@ -1698,7 +1698,7 @@ integer_all_onesp (expr)
else
else
high_value
=
((
HOST_WIDE_INT
)
1
<<
shift_amount
)
-
1
;
high_value
=
((
HOST_WIDE_INT
)
1
<<
shift_amount
)
-
1
;
return
(
TREE_INT_CST_LOW
(
expr
)
==
~
(
unsigned
HOST_WIDE_INT
)
0
return
(
TREE_INT_CST_LOW
(
expr
)
==
~
(
unsigned
HOST_WIDE_INT
)
0
&&
TREE_INT_CST_HIGH
(
expr
)
==
high_value
);
&&
TREE_INT_CST_HIGH
(
expr
)
==
high_value
);
}
}
else
else
...
@@ -1787,7 +1787,7 @@ tree_log2 (expr)
...
@@ -1787,7 +1787,7 @@ tree_log2 (expr)
}
}
return
(
high
!=
0
?
HOST_BITS_PER_WIDE_INT
+
exact_log2
(
high
)
return
(
high
!=
0
?
HOST_BITS_PER_WIDE_INT
+
exact_log2
(
high
)
:
exact_log2
(
low
));
:
exact_log2
(
low
));
}
}
/* Similar, but return the largest integer Y such that 2 ** Y is less
/* Similar, but return the largest integer Y such that 2 ** Y is less
...
@@ -1879,7 +1879,7 @@ real_twop (expr)
...
@@ -1879,7 +1879,7 @@ real_twop (expr)
}
}
/* Nonzero if EXP is a constant or a cast of a constant. */
/* Nonzero if EXP is a constant or a cast of a constant. */
int
int
really_constant_p
(
exp
)
really_constant_p
(
exp
)
tree
exp
;
tree
exp
;
...
@@ -2050,7 +2050,8 @@ chainon (op1, op2)
...
@@ -2050,7 +2050,8 @@ chainon (op1, op2)
#endif
#endif
return
op1
;
return
op1
;
}
}
else
return
op2
;
else
return
op2
;
}
}
/* Return the last node in a chain of nodes (chained through TREE_CHAIN). */
/* Return the last node in a chain of nodes (chained through TREE_CHAIN). */
...
@@ -2516,7 +2517,7 @@ save_expr (expr)
...
@@ -2516,7 +2517,7 @@ save_expr (expr)
/* If the tree evaluates to a constant, then we don't want to hide that
/* If the tree evaluates to a constant, then we don't want to hide that
fact (i.e. this allows further folding, and direct checks for constants).
fact (i.e. this allows further folding, and direct checks for constants).
However, a read-only object that has side effects cannot be bypassed.
However, a read-only object that has side effects cannot be bypassed.
Since it is no problem to reevaluate literals, we just return the
Since it is no problem to reevaluate literals, we just return the
literal node. */
literal node. */
if
(
TREE_CONSTANT
(
t
)
||
(
TREE_READONLY
(
t
)
&&
!
TREE_SIDE_EFFECTS
(
t
))
if
(
TREE_CONSTANT
(
t
)
||
(
TREE_READONLY
(
t
)
&&
!
TREE_SIDE_EFFECTS
(
t
))
...
@@ -2614,7 +2615,7 @@ unsave_expr_1 (expr)
...
@@ -2614,7 +2615,7 @@ unsave_expr_1 (expr)
TREE_OPERAND
(
expr
,
1
)
=
TREE_OPERAND
(
expr
,
3
);
TREE_OPERAND
(
expr
,
1
)
=
TREE_OPERAND
(
expr
,
3
);
TREE_OPERAND
(
expr
,
3
)
=
NULL_TREE
;
TREE_OPERAND
(
expr
,
3
)
=
NULL_TREE
;
break
;
break
;
case
RTL_EXPR
:
case
RTL_EXPR
:
/* I don't yet know how to emit a sequence multiple times. */
/* I don't yet know how to emit a sequence multiple times. */
if
(
RTL_EXPR_SEQUENCE
(
expr
)
!=
0
)
if
(
RTL_EXPR_SEQUENCE
(
expr
)
!=
0
)
...
@@ -2671,7 +2672,7 @@ unsave_expr_now_r (expr)
...
@@ -2671,7 +2672,7 @@ unsave_expr_now_r (expr)
case
'1'
:
/* a unary arithmetic expression */
case
'1'
:
/* a unary arithmetic expression */
{
{
int
i
;
int
i
;
for
(
i
=
first_rtl_op
(
code
)
-
1
;
i
>=
0
;
i
--
)
for
(
i
=
first_rtl_op
(
code
)
-
1
;
i
>=
0
;
i
--
)
unsave_expr_now_r
(
TREE_OPERAND
(
expr
,
i
));
unsave_expr_now_r
(
TREE_OPERAND
(
expr
,
i
));
}
}
...
@@ -2699,7 +2700,7 @@ unsave_expr_now (expr)
...
@@ -2699,7 +2700,7 @@ unsave_expr_now (expr)
/* Return 0 if it is safe to evaluate EXPR multiple times,
/* Return 0 if it is safe to evaluate EXPR multiple times,
return 1 if it is safe if EXPR is unsaved afterward, or
return 1 if it is safe if EXPR is unsaved afterward, or
return 2 if it is completely unsafe.
return 2 if it is completely unsafe.
This assumes that CALL_EXPRs and TARGET_EXPRs are never replicated in
This assumes that CALL_EXPRs and TARGET_EXPRs are never replicated in
an expression tree, so that it safe to unsave them and the surrounding
an expression tree, so that it safe to unsave them and the surrounding
...
@@ -2710,7 +2711,7 @@ unsave_expr_now (expr)
...
@@ -2710,7 +2711,7 @@ unsave_expr_now (expr)
safe to unsave a SAVE_EXPR if you know that all occurrences appear
safe to unsave a SAVE_EXPR if you know that all occurrences appear
below the UNSAVE_EXPR.
below the UNSAVE_EXPR.
RTL_EXPRs consume their rtl during evaluation. It is therefore
RTL_EXPRs consume their rtl during evaluation. It is therefore
never possible to unsave them. */
never possible to unsave them. */
int
int
...
@@ -2817,14 +2818,14 @@ contains_placeholder_p (exp)
...
@@ -2817,14 +2818,14 @@ contains_placeholder_p (exp)
||
(
TREE_CHAIN
(
exp
)
!=
0
||
(
TREE_CHAIN
(
exp
)
!=
0
&&
contains_placeholder_p
(
TREE_CHAIN
(
exp
))));
&&
contains_placeholder_p
(
TREE_CHAIN
(
exp
))));
break
;
break
;
case
'1'
:
case
'1'
:
case
'2'
:
case
'<'
:
case
'2'
:
case
'<'
:
case
'e'
:
case
'e'
:
switch
(
code
)
switch
(
code
)
{
{
case
COMPOUND_EXPR
:
case
COMPOUND_EXPR
:
/* Ignoring the first operand isn't quite right, but works best. */
/* Ignoring the first operand isn't quite right, but works best.
*/
return
contains_placeholder_p
(
TREE_OPERAND
(
exp
,
1
));
return
contains_placeholder_p
(
TREE_OPERAND
(
exp
,
1
));
case
RTL_EXPR
:
case
RTL_EXPR
:
...
@@ -2982,7 +2983,7 @@ substitute_in_expr (exp, f, r)
...
@@ -2982,7 +2983,7 @@ substitute_in_expr (exp, f, r)
op0
=
substitute_in_expr
(
TREE_OPERAND
(
exp
,
0
),
f
,
r
);
op0
=
substitute_in_expr
(
TREE_OPERAND
(
exp
,
0
),
f
,
r
);
if
(
op0
==
TREE_OPERAND
(
exp
,
0
))
if
(
op0
==
TREE_OPERAND
(
exp
,
0
))
return
exp
;
return
exp
;
new
=
fold
(
build1
(
code
,
TREE_TYPE
(
exp
),
op0
));
new
=
fold
(
build1
(
code
,
TREE_TYPE
(
exp
),
op0
));
break
;
break
;
...
@@ -3051,7 +3052,7 @@ substitute_in_expr (exp, f, r)
...
@@ -3051,7 +3052,7 @@ substitute_in_expr (exp, f, r)
&&
TREE_OPERAND
(
exp
,
1
)
==
f
)
&&
TREE_OPERAND
(
exp
,
1
)
==
f
)
return
r
;
return
r
;
/* If this expression hasn't been completed let, leave it
/* If this expression hasn't been completed let, leave it
alone. */
alone. */
if
(
TREE_CODE
(
inner
)
==
PLACEHOLDER_EXPR
if
(
TREE_CODE
(
inner
)
==
PLACEHOLDER_EXPR
&&
TREE_TYPE
(
inner
)
==
0
)
&&
TREE_TYPE
(
inner
)
==
0
)
...
@@ -3089,7 +3090,7 @@ substitute_in_expr (exp, f, r)
...
@@ -3089,7 +3090,7 @@ substitute_in_expr (exp, f, r)
abort
();
abort
();
}
}
break
;
break
;
default
:
default
:
abort
();
abort
();
}
}
...
@@ -3168,7 +3169,6 @@ stabilize_reference (ref)
...
@@ -3168,7 +3169,6 @@ stabilize_reference (ref)
ref
)));
ref
)));
break
;
break
;
/* If arg isn't a kind of lvalue we recognize, make no change.
/* If arg isn't a kind of lvalue we recognize, make no change.
Caller should recognize the error for an invalid lvalue. */
Caller should recognize the error for an invalid lvalue. */
default
:
default
:
...
@@ -3236,7 +3236,7 @@ stabilize_reference_1 (e)
...
@@ -3236,7 +3236,7 @@ stabilize_reference_1 (e)
/* Constants need no processing. In fact, we should never reach
/* Constants need no processing. In fact, we should never reach
here. */
here. */
return
e
;
return
e
;
case
'2'
:
case
'2'
:
/* Division is slow and tends to be compiled with jumps,
/* Division is slow and tends to be compiled with jumps,
especially the division by powers of 2 that is often
especially the division by powers of 2 that is often
...
@@ -3259,7 +3259,7 @@ stabilize_reference_1 (e)
...
@@ -3259,7 +3259,7 @@ stabilize_reference_1 (e)
default
:
default
:
abort
();
abort
();
}
}
TREE_TYPE
(
result
)
=
TREE_TYPE
(
e
);
TREE_TYPE
(
result
)
=
TREE_TYPE
(
e
);
TREE_READONLY
(
result
)
=
TREE_READONLY
(
e
);
TREE_READONLY
(
result
)
=
TREE_READONLY
(
e
);
TREE_SIDE_EFFECTS
(
result
)
=
TREE_SIDE_EFFECTS
(
e
);
TREE_SIDE_EFFECTS
(
result
)
=
TREE_SIDE_EFFECTS
(
e
);
...
@@ -3388,8 +3388,8 @@ build1 (code, type, node)
...
@@ -3388,8 +3388,8 @@ build1 (code, type, node)
memset
((
PTR
)
t
,
0
,
sizeof
(
struct
tree_common
));
memset
((
PTR
)
t
,
0
,
sizeof
(
struct
tree_common
));
#ifdef GATHER_STATISTICS
#ifdef GATHER_STATISTICS
tree_node_counts
[(
int
)
kind
]
++
;
tree_node_counts
[(
int
)
kind
]
++
;
tree_node_sizes
[(
int
)
kind
]
+=
length
;
tree_node_sizes
[(
int
)
kind
]
+=
length
;
#endif
#endif
TREE_SET_CODE
(
t
,
code
);
TREE_SET_CODE
(
t
,
code
);
...
@@ -3415,7 +3415,7 @@ build1 (code, type, node)
...
@@ -3415,7 +3415,7 @@ build1 (code, type, node)
operands are. */
operands are. */
TREE_SIDE_EFFECTS
(
t
)
=
1
;
TREE_SIDE_EFFECTS
(
t
)
=
1
;
break
;
break
;
default
:
default
:
break
;
break
;
}
}
...
@@ -3627,7 +3627,7 @@ build_type_attribute_variant (ttype, attribute)
...
@@ -3627,7 +3627,7 @@ build_type_attribute_variant (ttype, attribute)
+
attribute_hash_list
(
attribute
));
+
attribute_hash_list
(
attribute
));
switch
(
TREE_CODE
(
ntype
))
switch
(
TREE_CODE
(
ntype
))
{
{
case
FUNCTION_TYPE
:
case
FUNCTION_TYPE
:
hashcode
+=
TYPE_HASH
(
TYPE_ARG_TYPES
(
ntype
));
hashcode
+=
TYPE_HASH
(
TYPE_ARG_TYPES
(
ntype
));
break
;
break
;
...
@@ -3642,7 +3642,7 @@ build_type_attribute_variant (ttype, attribute)
...
@@ -3642,7 +3642,7 @@ build_type_attribute_variant (ttype, attribute)
break
;
break
;
default
:
default
:
break
;
break
;
}
}
ntype
=
type_hash_canon
(
hashcode
,
ntype
);
ntype
=
type_hash_canon
(
hashcode
,
ntype
);
ttype
=
build_qualified_type
(
ntype
,
TYPE_QUALS
(
ttype
));
ttype
=
build_qualified_type
(
ntype
,
TYPE_QUALS
(
ttype
));
...
@@ -3700,7 +3700,8 @@ valid_machine_attribute (attr_name, attr_args, decl, type)
...
@@ -3700,7 +3700,8 @@ valid_machine_attribute (attr_name, attr_args, decl, type)
#ifdef VALID_MACHINE_TYPE_ATTRIBUTE
#ifdef VALID_MACHINE_TYPE_ATTRIBUTE
if
(
validated
)
if
(
validated
)
/* Don't apply the attribute to both the decl and the type. */
;
/* Don't apply the attribute to both the decl and the type. */
;
else
if
(
VALID_MACHINE_TYPE_ATTRIBUTE
(
type
,
type_attr_list
,
attr_name
,
else
if
(
VALID_MACHINE_TYPE_ATTRIBUTE
(
type
,
type_attr_list
,
attr_name
,
attr_args
))
attr_args
))
{
{
...
@@ -3718,7 +3719,7 @@ valid_machine_attribute (attr_name, attr_args, decl, type)
...
@@ -3718,7 +3719,7 @@ valid_machine_attribute (attr_name, attr_args, decl, type)
else
else
{
{
/* If this is part of a declaration, create a type variant,
/* If this is part of a declaration, create a type variant,
otherwise, this is part of a type definition, so add it
otherwise, this is part of a type definition, so add it
to the base type. */
to the base type. */
type_attr_list
=
tree_cons
(
attr_name
,
attr_args
,
type_attr_list
);
type_attr_list
=
tree_cons
(
attr_name
,
attr_args
,
type_attr_list
);
if
(
decl
!=
0
)
if
(
decl
!=
0
)
...
@@ -3858,27 +3859,27 @@ merge_attributes (a1, a2)
...
@@ -3858,27 +3859,27 @@ merge_attributes (a1, a2)
/* One that completely contains the other? Take it. */
/* One that completely contains the other? Take it. */
else
if
(
a2
!=
0
&&
!
attribute_list_contained
(
a1
,
a2
))
else
if
(
a2
!=
0
&&
!
attribute_list_contained
(
a1
,
a2
))
{
{
if
(
attribute_list_contained
(
a2
,
a1
))
if
(
attribute_list_contained
(
a2
,
a1
))
attributes
=
a2
;
attributes
=
a2
;
else
else
{
{
/* Pick the longest list, and hang on the other list. */
/* Pick the longest list, and hang on the other list. */
/* ??? For the moment we punt on the issue of attrs with args. */
/* ??? For the moment we punt on the issue of attrs with args. */
if
(
list_length
(
a1
)
<
list_length
(
a2
))
if
(
list_length
(
a1
)
<
list_length
(
a2
))
attributes
=
a2
,
a2
=
a1
;
attributes
=
a2
,
a2
=
a1
;
for
(;
a2
!=
0
;
a2
=
TREE_CHAIN
(
a2
))
for
(;
a2
!=
0
;
a2
=
TREE_CHAIN
(
a2
))
if
(
lookup_attribute
(
IDENTIFIER_POINTER
(
TREE_PURPOSE
(
a2
)),
if
(
lookup_attribute
(
IDENTIFIER_POINTER
(
TREE_PURPOSE
(
a2
)),
attributes
)
==
NULL_TREE
)
attributes
)
==
NULL_TREE
)
{
{
a1
=
copy_node
(
a2
);
a1
=
copy_node
(
a2
);
TREE_CHAIN
(
a1
)
=
attributes
;
TREE_CHAIN
(
a1
)
=
attributes
;
attributes
=
a1
;
attributes
=
a1
;
}
}
}
}
}
}
return
attributes
;
return
attributes
;
}
}
...
@@ -3918,7 +3919,7 @@ merge_machine_decl_attributes (olddecl, newdecl)
...
@@ -3918,7 +3919,7 @@ merge_machine_decl_attributes (olddecl, newdecl)
static
void
static
void
set_type_quals
(
type
,
type_quals
)
set_type_quals
(
type
,
type_quals
)
tree
type
;
tree
type
;
int
type_quals
;
int
type_quals
;
{
{
TYPE_READONLY
(
type
)
=
(
type_quals
&
TYPE_QUAL_CONST
)
!=
0
;
TYPE_READONLY
(
type
)
=
(
type_quals
&
TYPE_QUAL_CONST
)
!=
0
;
TYPE_VOLATILE
(
type
)
=
(
type_quals
&
TYPE_QUAL_VOLATILE
)
!=
0
;
TYPE_VOLATILE
(
type
)
=
(
type_quals
&
TYPE_QUAL_VOLATILE
)
!=
0
;
...
@@ -3938,7 +3939,7 @@ build_qualified_type (type, type_quals)
...
@@ -3938,7 +3939,7 @@ build_qualified_type (type, type_quals)
int
type_quals
;
int
type_quals
;
{
{
register
tree
t
;
register
tree
t
;
/* Search the chain of variants to see if there is already one there just
/* Search the chain of variants to see if there is already one there just
like the one we need to have. If so, use that existing one. We must
like the one we need to have. If so, use that existing one. We must
preserve the TYPE_NAME, since there is code that depends on this. */
preserve the TYPE_NAME, since there is code that depends on this. */
...
@@ -4037,7 +4038,7 @@ static unsigned int
...
@@ -4037,7 +4038,7 @@ static unsigned int
type_hash_hash
(
item
)
type_hash_hash
(
item
)
const
void
*
item
;
const
void
*
item
;
{
{
return
((
const
struct
type_hash
*
)
item
)
->
hash
;
return
((
const
struct
type_hash
*
)
item
)
->
hash
;
}
}
/* Look in the type hash table for a type isomorphic to TYPE.
/* Look in the type hash table for a type isomorphic to TYPE.
...
@@ -4051,7 +4052,7 @@ type_hash_lookup (hashcode, type)
...
@@ -4051,7 +4052,7 @@ type_hash_lookup (hashcode, type)
struct
type_hash
*
h
,
in
;
struct
type_hash
*
h
,
in
;
/* The TYPE_ALIGN field of a type is set by layout_type(), so we
/* The TYPE_ALIGN field of a type is set by layout_type(), so we
must call that routine before comparing TYPE_ALIGNs. */
must call that routine before comparing TYPE_ALIGNs.
*/
layout_type
(
type
);
layout_type
(
type
);
in
.
hash
=
hashcode
;
in
.
hash
=
hashcode
;
...
@@ -4078,7 +4079,7 @@ type_hash_add (hashcode, type)
...
@@ -4078,7 +4079,7 @@ type_hash_add (hashcode, type)
h
->
hash
=
hashcode
;
h
->
hash
=
hashcode
;
h
->
type
=
type
;
h
->
type
=
type
;
loc
=
htab_find_slot_with_hash
(
type_hash_table
,
h
,
hashcode
,
INSERT
);
loc
=
htab_find_slot_with_hash
(
type_hash_table
,
h
,
hashcode
,
INSERT
);
*
(
struct
type_hash
**
)
loc
=
h
;
*
(
struct
type_hash
**
)
loc
=
h
;
}
}
/* Given TYPE, and HASHCODE its hash code, return the canonical
/* Given TYPE, and HASHCODE its hash code, return the canonical
...
@@ -4132,7 +4133,7 @@ mark_hash_entry (entry, param)
...
@@ -4132,7 +4133,7 @@ mark_hash_entry (entry, param)
void
**
entry
;
void
**
entry
;
void
*
param
ATTRIBUTE_UNUSED
;
void
*
param
ATTRIBUTE_UNUSED
;
{
{
struct
type_hash
*
p
=
*
(
struct
type_hash
**
)
entry
;
struct
type_hash
*
p
=
*
(
struct
type_hash
**
)
entry
;
ggc_mark_tree
(
p
->
type
);
ggc_mark_tree
(
p
->
type
);
...
@@ -4204,7 +4205,7 @@ attribute_list_contained (l1, l2)
...
@@ -4204,7 +4205,7 @@ attribute_list_contained (l1, l2)
/* First check the obvious, maybe the lists are identical. */
/* First check the obvious, maybe the lists are identical. */
if
(
l1
==
l2
)
if
(
l1
==
l2
)
return
1
;
return
1
;
/* Maybe the lists are similar. */
/* Maybe the lists are similar. */
for
(
t1
=
l1
,
t2
=
l2
;
for
(
t1
=
l1
,
t2
=
l2
;
...
@@ -4323,7 +4324,7 @@ tree_low_cst (t, pos)
...
@@ -4323,7 +4324,7 @@ tree_low_cst (t, pos)
return
TREE_INT_CST_LOW
(
t
);
return
TREE_INT_CST_LOW
(
t
);
else
else
abort
();
abort
();
}
}
/* Return the most significant bit of the integer constant T. */
/* Return the most significant bit of the integer constant T. */
...
@@ -4341,7 +4342,7 @@ tree_int_cst_msb (t)
...
@@ -4341,7 +4342,7 @@ tree_int_cst_msb (t)
rshift_double
(
TREE_INT_CST_LOW
(
t
),
TREE_INT_CST_HIGH
(
t
),
prec
,
rshift_double
(
TREE_INT_CST_LOW
(
t
),
TREE_INT_CST_HIGH
(
t
),
prec
,
2
*
HOST_BITS_PER_WIDE_INT
,
&
l
,
&
h
,
0
);
2
*
HOST_BITS_PER_WIDE_INT
,
&
l
,
&
h
,
0
);
return
(
l
&
1
)
==
1
;
return
(
l
&
1
)
==
1
;
}
}
/* Return an indication of the sign of the integer constant T.
/* Return an indication of the sign of the integer constant T.
The return value is -1 if T < 0, 0 if T == 0, and 1 if T > 0.
The return value is -1 if T < 0, 0 if T == 0, and 1 if T > 0.
...
@@ -4486,7 +4487,7 @@ simple_cst_equal (t1, t2)
...
@@ -4486,7 +4487,7 @@ simple_cst_equal (t1, t2)
case
CONST_DECL
:
case
CONST_DECL
:
case
FUNCTION_DECL
:
case
FUNCTION_DECL
:
return
0
;
return
0
;
default
:
default
:
break
;
break
;
}
}
...
@@ -4942,7 +4943,7 @@ build_complex_type (component_type)
...
@@ -4942,7 +4943,7 @@ build_complex_type (component_type)
OP must have integer, real or enumeral type. Pointers are not allowed!
OP must have integer, real or enumeral type. Pointers are not allowed!
There are some cases where the obvious value we could return
There are some cases where the obvious value we could return
would regenerate to OP if converted to OP's type,
would regenerate to OP if converted to OP's type,
but would not extend like OP to wider types.
but would not extend like OP to wider types.
If FOR_TYPE indicates such extension is contemplated, we eschew such values.
If FOR_TYPE indicates such extension is contemplated, we eschew such values.
For example, if OP is (unsigned short)(signed char)-1,
For example, if OP is (unsigned short)(signed char)-1,
...
@@ -5191,7 +5192,7 @@ decl_function_context (decl)
...
@@ -5191,7 +5192,7 @@ decl_function_context (decl)
{
{
if
(
TREE_CODE
(
context
)
==
BLOCK
)
if
(
TREE_CODE
(
context
)
==
BLOCK
)
context
=
BLOCK_SUPERCONTEXT
(
context
);
context
=
BLOCK_SUPERCONTEXT
(
context
);
else
else
context
=
get_containing_scope
(
context
);
context
=
get_containing_scope
(
context
);
}
}
...
@@ -5230,7 +5231,7 @@ decl_type_context (decl)
...
@@ -5230,7 +5231,7 @@ decl_type_context (decl)
}
}
/* CALL is a CALL_EXPR. Return the declaration for the function
/* CALL is a CALL_EXPR. Return the declaration for the function
called, or NULL_TREE if the called function cannot be
called, or NULL_TREE if the called function cannot be
determined. */
determined. */
tree
tree
...
@@ -5394,15 +5395,15 @@ clean_symbol_name (p)
...
@@ -5394,15 +5395,15 @@ clean_symbol_name (p)
char
*
p
;
char
*
p
;
{
{
for
(;
*
p
;
p
++
)
for
(;
*
p
;
p
++
)
if
(
!
(
ISDIGIT
(
*
p
)
if
(
!
(
ISDIGIT
(
*
p
)
#ifndef NO_DOLLAR_IN_LABEL
/* this for `$'; unlikely, but... -- kr */
#ifndef NO_DOLLAR_IN_LABEL
/* this for `$'; unlikely, but... -- kr */
||
*
p
==
'$'
||
*
p
==
'$'
#endif
#endif
#ifndef NO_DOT_IN_LABEL
/* this for `.'; unlikely, but... */
#ifndef NO_DOT_IN_LABEL
/* this for `.'; unlikely, but... */
||
*
p
==
'.'
||
*
p
==
'.'
#endif
#endif
||
ISUPPER
(
*
p
)
||
ISUPPER
(
*
p
)
||
ISLOWER
(
*
p
)))
||
ISLOWER
(
*
p
)))
*
p
=
'_'
;
*
p
=
'_'
;
}
}
...
@@ -5443,7 +5444,7 @@ get_file_function_name_long (type)
...
@@ -5443,7 +5444,7 @@ get_file_function_name_long (type)
buf
=
(
char
*
)
alloca
(
sizeof
(
FILE_FUNCTION_FORMAT
)
+
strlen
(
p
)
buf
=
(
char
*
)
alloca
(
sizeof
(
FILE_FUNCTION_FORMAT
)
+
strlen
(
p
)
+
strlen
(
type
));
+
strlen
(
type
));
/* Set up the name of the file-level functions we may need.
/* Set up the name of the file-level functions we may need.
Use a global object (which is already required to be unique over
Use a global object (which is already required to be unique over
the program) rather than the file name (which imposes extra
the program) rather than the file name (which imposes extra
constraints). */
constraints). */
...
@@ -5492,7 +5493,7 @@ get_set_constructor_bits (init, buffer, bit_size)
...
@@ -5492,7 +5493,7 @@ get_set_constructor_bits (init, buffer, bit_size)
for
(
i
=
0
;
i
<
bit_size
;
i
++
)
for
(
i
=
0
;
i
<
bit_size
;
i
++
)
buffer
[
i
]
=
0
;
buffer
[
i
]
=
0
;
for
(
vals
=
TREE_OPERAND
(
init
,
1
);
for
(
vals
=
TREE_OPERAND
(
init
,
1
);
vals
!=
NULL_TREE
;
vals
=
TREE_CHAIN
(
vals
))
vals
!=
NULL_TREE
;
vals
=
TREE_CHAIN
(
vals
))
{
{
if
(
TREE_CODE
(
TREE_VALUE
(
vals
))
!=
INTEGER_CST
if
(
TREE_CODE
(
TREE_VALUE
(
vals
))
!=
INTEGER_CST
...
@@ -5509,9 +5510,9 @@ get_set_constructor_bits (init, buffer, bit_size)
...
@@ -5509,9 +5510,9 @@ get_set_constructor_bits (init, buffer, bit_size)
=
TREE_INT_CST_LOW
(
TREE_VALUE
(
vals
))
-
domain_min
;
=
TREE_INT_CST_LOW
(
TREE_VALUE
(
vals
))
-
domain_min
;
if
(
lo_index
<
0
||
lo_index
>=
bit_size
if
(
lo_index
<
0
||
lo_index
>=
bit_size
||
hi_index
<
0
||
hi_index
>=
bit_size
)
||
hi_index
<
0
||
hi_index
>=
bit_size
)
abort
();
abort
();
for
(
;
lo_index
<=
hi_index
;
lo_index
++
)
for
(;
lo_index
<=
hi_index
;
lo_index
++
)
buffer
[
lo_index
]
=
1
;
buffer
[
lo_index
]
=
1
;
}
}
else
else
...
@@ -5546,7 +5547,7 @@ get_set_constructor_bytes (init, buffer, wd_size)
...
@@ -5546,7 +5547,7 @@ get_set_constructor_bytes (init, buffer, wd_size)
int
bit_size
=
wd_size
*
set_word_size
;
int
bit_size
=
wd_size
*
set_word_size
;
int
bit_pos
=
0
;
int
bit_pos
=
0
;
unsigned
char
*
bytep
=
buffer
;
unsigned
char
*
bytep
=
buffer
;
char
*
bit_buffer
=
(
char
*
)
alloca
(
bit_size
);
char
*
bit_buffer
=
(
char
*
)
alloca
(
bit_size
);
tree
non_const_bits
=
get_set_constructor_bits
(
init
,
bit_buffer
,
bit_size
);
tree
non_const_bits
=
get_set_constructor_bits
(
init
,
bit_buffer
,
bit_size
);
for
(
i
=
0
;
i
<
wd_size
;
i
++
)
for
(
i
=
0
;
i
<
wd_size
;
i
++
)
...
@@ -5571,6 +5572,7 @@ get_set_constructor_bytes (init, buffer, wd_size)
...
@@ -5571,6 +5572,7 @@ get_set_constructor_bytes (init, buffer, wd_size)
#if defined ENABLE_TREE_CHECKING && (GCC_VERSION >= 2007)
#if defined ENABLE_TREE_CHECKING && (GCC_VERSION >= 2007)
/* Complain that the tree code of NODE does not match the expected CODE.
/* Complain that the tree code of NODE does not match the expected CODE.
FILE, LINE, and FUNCTION are of the caller. */
FILE, LINE, and FUNCTION are of the caller. */
void
void
tree_check_failed
(
node
,
code
,
file
,
line
,
function
)
tree_check_failed
(
node
,
code
,
file
,
line
,
function
)
const
tree
node
;
const
tree
node
;
...
@@ -5586,6 +5588,7 @@ tree_check_failed (node, code, file, line, function)
...
@@ -5586,6 +5588,7 @@ tree_check_failed (node, code, file, line, function)
/* Similar to above, except that we check for a class of tree
/* Similar to above, except that we check for a class of tree
code, given in CL. */
code, given in CL. */
void
void
tree_class_check_failed
(
node
,
cl
,
file
,
line
,
function
)
tree_class_check_failed
(
node
,
cl
,
file
,
line
,
function
)
const
tree
node
;
const
tree
node
;
...
@@ -5601,10 +5604,10 @@ tree_class_check_failed (node, cl, file, line, function)
...
@@ -5601,10 +5604,10 @@ tree_class_check_failed (node, cl, file, line, function)
}
}
#endif
/* ENABLE_TREE_CHECKING */
#endif
/* ENABLE_TREE_CHECKING */
/* For a new vector type node T, build the information necessary for
/* For a new vector type node T, build the information necessary for
debuggint output. */
debuggint output. */
static
void
static
void
finish_vector_type
(
t
)
finish_vector_type
(
t
)
tree
t
;
tree
t
;
...
@@ -5664,7 +5667,7 @@ finish_vector_type (t)
...
@@ -5664,7 +5667,7 @@ finish_vector_type (t)
/* Create nodes for all integer types (and error_mark_node) using the sizes
/* Create nodes for all integer types (and error_mark_node) using the sizes
of C datatypes. The caller should call set_sizetype soon after calling
of C datatypes. The caller should call set_sizetype soon after calling
this function to select one of the types as sizetype. */
this function to select one of the types as sizetype. */
void
void
build_common_tree_nodes
(
signed_char
)
build_common_tree_nodes
(
signed_char
)
int
signed_char
;
int
signed_char
;
...
@@ -5776,7 +5779,7 @@ build_common_tree_nodes_2 (short_double)
...
@@ -5776,7 +5779,7 @@ build_common_tree_nodes_2 (short_double)
layout_type
(
complex_long_double_type_node
);
layout_type
(
complex_long_double_type_node
);
#ifdef BUILD_VA_LIST_TYPE
#ifdef BUILD_VA_LIST_TYPE
BUILD_VA_LIST_TYPE
(
va_list_type_node
);
BUILD_VA_LIST_TYPE
(
va_list_type_node
);
#else
#else
va_list_type_node
=
ptr_type_node
;
va_list_type_node
=
ptr_type_node
;
#endif
#endif
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment