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
cdf5b885
Commit
cdf5b885
authored
Apr 05, 1996
by
Mike Stump
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
86th Cygnus<->FSF quick merge
From-SVN: r11672
parent
97c5ec1d
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
66 additions
and
125 deletions
+66
-125
gcc/cp/ChangeLog
+28
-0
gcc/cp/call.c
+12
-105
gcc/cp/decl.c
+3
-1
gcc/cp/rtti.c
+8
-9
gcc/cp/typeck.c
+15
-10
No files found.
gcc/cp/ChangeLog
View file @
cdf5b885
Thu Apr 4 13:33:10 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
* typeck.c (mark_addressable, convert_for_assignment,
convert_for_initialization, pointer_int_sum, pointer_diff,
unary_complex_lvalue): Add prototypes wrapped by PROTO.
(convert_sequence): #if 0 fn decl, since definition also is.
Thu Apr 4 11:00:53 1996 Mike Stump <mrs@cygnus.com>
* rtti.c (build_dynamic_cast): Make sure we strip qualifiers on
cast to pointer types for type searching.
Wed Apr 3 17:10:57 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
* typeck.c (get_delta_difference): Use cp_error, not error, in the
case where BINFO == 0.
Wed Apr 3 12:01:02 1996 Mike Stump <mrs@cygnus.com>
* call.c (build_method_call): Fix wording of error messages so
constructors come out right.
Tue Apr 2 16:06:59 1996 Bob Manson <manson@charmed.cygnus.com>
* decl.c (push_overloaded_decl): Don't warn about hidden
constructors when both the type and the function are declared
in a system header file.
Mon Apr 1 09:03:13 1996 Bob Manson <manson@charmed.cygnus.com>
Mon Apr 1 09:03:13 1996 Bob Manson <manson@charmed.cygnus.com>
* class.c (finish_struct_1): Propagate the TYPE_PACKED
* class.c (finish_struct_1): Propagate the TYPE_PACKED
...
...
gcc/cp/call.c
View file @
cdf5b885
...
@@ -433,13 +433,6 @@ convert_harshness (type, parmtype, parm)
...
@@ -433,13 +433,6 @@ convert_harshness (type, parmtype, parm)
==
TYPE_MAIN_VARIANT
(
type_promotes_to
(
parmtype
)))
==
TYPE_MAIN_VARIANT
(
type_promotes_to
(
parmtype
)))
{
{
h
.
code
=
PROMO_CODE
;
h
.
code
=
PROMO_CODE
;
#if 0 /* What purpose does this serve? -jason */
/* A char, short, wchar_t, etc., should promote to an int if
it can handle it, otherwise to an unsigned. So we'll make
an unsigned. */
if (type != integer_type_node)
h.int_penalty = 1;
#endif
}
}
else
else
h
.
code
=
STD_CODE
;
h
.
code
=
STD_CODE
;
...
@@ -475,10 +468,6 @@ convert_harshness (type, parmtype, parm)
...
@@ -475,10 +468,6 @@ convert_harshness (type, parmtype, parm)
}
}
/* Convert arrays which have not previously been converted. */
/* Convert arrays which have not previously been converted. */
#if 0
if (codel == ARRAY_TYPE)
codel = POINTER_TYPE;
#endif
if
(
coder
==
ARRAY_TYPE
)
if
(
coder
==
ARRAY_TYPE
)
{
{
coder
=
POINTER_TYPE
;
coder
=
POINTER_TYPE
;
...
@@ -1104,36 +1093,9 @@ ideal_candidate (candidates, n_candidates, len)
...
@@ -1104,36 +1093,9 @@ ideal_candidate (candidates, n_candidates, len)
list for the last argument is the intersection of all the best-liked
list for the last argument is the intersection of all the best-liked
functions. */
functions. */
#if 0
for (i = 0; i < len; i++)
{
qsort (candidates, n_candidates, sizeof (struct candidate),
rank_for_overload);
best_code = cp[-1].h.code;
/* To find out functions that are worse than that represented
by BEST_CODE, we can't just do a comparison like h.code>best_code.
The total harshness for the "best" fn may be 8|8 for two args, and
the harshness for the next-best may be 8|2. If we just compared,
that would be checking 8>10, which would lead to the next-best
being disqualified. What we actually want to do is get rid
of functions that are definitely worse than that represented
by best_code, i.e. those which have bits set higher than the
highest in best_code. Sooooo, what we do is clear out everything
represented by best_code, and see if we still come up with something
higher. If so (e.g., 8|8 vs 8|16), it'll disqualify it properly. */
for (j = n_candidates-2; j >= 0; j--)
if ((candidates[j].h.code & ~best_code) > best_code)
candidates[j].h.code = EVIL_CODE;
}
if (cp[-1].h.code & EVIL_CODE)
return NULL;
#else
qsort
(
candidates
,
n_candidates
,
sizeof
(
struct
candidate
),
qsort
(
candidates
,
n_candidates
,
sizeof
(
struct
candidate
),
rank_for_overload
);
rank_for_overload
);
best_code
=
cp
[
-
1
].
h
.
code
;
best_code
=
cp
[
-
1
].
h
.
code
;
#endif
/* If they're at least as good as each other, do an arg-by-arg check. */
/* If they're at least as good as each other, do an arg-by-arg check. */
if
(
!
strictly_better
(
cp
[
-
1
].
h
.
code
,
cp
[
-
2
].
h
.
code
))
if
(
!
strictly_better
(
cp
[
-
1
].
h
.
code
,
cp
[
-
2
].
h
.
code
))
...
@@ -1608,9 +1570,6 @@ build_method_call (instance, name, parms, basetype_path, flags)
...
@@ -1608,9 +1570,6 @@ build_method_call (instance, name, parms, basetype_path, flags)
register
tree
function
,
fntype
,
value_type
;
register
tree
function
,
fntype
,
value_type
;
register
tree
basetype
,
save_basetype
;
register
tree
basetype
,
save_basetype
;
register
tree
baselink
,
result
,
parmtypes
,
parm
;
register
tree
baselink
,
result
,
parmtypes
,
parm
;
#if 0
register tree method_name;
#endif
tree
last
;
tree
last
;
int
pass
;
int
pass
;
tree
access
=
access_public_node
;
tree
access
=
access_public_node
;
...
@@ -1620,6 +1579,7 @@ build_method_call (instance, name, parms, basetype_path, flags)
...
@@ -1620,6 +1579,7 @@ build_method_call (instance, name, parms, basetype_path, flags)
enum
vtable_needs
need_vtbl
=
not_needed
;
enum
vtable_needs
need_vtbl
=
not_needed
;
char
*
name_kind
;
char
*
name_kind
;
tree
save_name
=
name
;
int
ever_seen
=
0
;
int
ever_seen
=
0
;
tree
instance_ptr
=
NULL_TREE
;
tree
instance_ptr
=
NULL_TREE
;
int
all_virtual
=
flag_all_virtual
;
int
all_virtual
=
flag_all_virtual
;
...
@@ -1747,7 +1707,7 @@ build_method_call (instance, name, parms, basetype_path, flags)
...
@@ -1747,7 +1707,7 @@ build_method_call (instance, name, parms, basetype_path, flags)
else
if
(
basetype_path
)
else
if
(
basetype_path
)
{
{
basetype
=
BINFO_TYPE
(
basetype_path
);
basetype
=
BINFO_TYPE
(
basetype_path
);
if
(
name
==
DECL_NAME
(
TYPE_NAME
(
basetype
)
))
if
(
name
==
TYPE_IDENTIFIER
(
basetype
))
name
=
ctor_identifier
;
name
=
ctor_identifier
;
}
}
else
if
(
IDENTIFIER_HAS_TYPE_VALUE
(
name
))
else
if
(
IDENTIFIER_HAS_TYPE_VALUE
(
name
))
...
@@ -1961,6 +1921,9 @@ build_method_call (instance, name, parms, basetype_path, flags)
...
@@ -1961,6 +1921,9 @@ build_method_call (instance, name, parms, basetype_path, flags)
}
}
}
}
if
(
save_name
==
ctor_identifier
)
save_name
=
TYPE_IDENTIFIER
(
basetype
);
if
(
TYPE_SIZE
(
complete_type
(
basetype
))
==
0
)
if
(
TYPE_SIZE
(
complete_type
(
basetype
))
==
0
)
{
{
/* This is worth complaining about, I think. */
/* This is worth complaining about, I think. */
...
@@ -1970,15 +1933,6 @@ build_method_call (instance, name, parms, basetype_path, flags)
...
@@ -1970,15 +1933,6 @@ build_method_call (instance, name, parms, basetype_path, flags)
save_basetype
=
TYPE_MAIN_VARIANT
(
basetype
);
save_basetype
=
TYPE_MAIN_VARIANT
(
basetype
);
#if 0
if (all_virtual == 1
&& (! strncmp (IDENTIFIER_POINTER (name), OPERATOR_METHOD_FORMAT,
OPERATOR_METHOD_LENGTH)
|| instance_ptr == NULL_TREE
|| (TYPE_OVERLOADS_METHOD_CALL_EXPR (basetype) == 0)))
all_virtual = 0;
#endif
last
=
NULL_TREE
;
last
=
NULL_TREE
;
for
(
parmtypes
=
NULL_TREE
,
parm
=
parms
;
parm
;
parm
=
TREE_CHAIN
(
parm
))
for
(
parmtypes
=
NULL_TREE
,
parm
=
parms
;
parm
;
parm
=
TREE_CHAIN
(
parm
))
{
{
...
@@ -2187,12 +2141,6 @@ build_method_call (instance, name, parms, basetype_path, flags)
...
@@ -2187,12 +2141,6 @@ build_method_call (instance, name, parms, basetype_path, flags)
&&
!
DECL_STATIC_FUNCTION_P
(
function
))
&&
!
DECL_STATIC_FUNCTION_P
(
function
))
continue
;
continue
;
#if 0
if (pass == 0
&& DECL_ASSEMBLER_NAME (function) == method_name)
goto found;
#endif
if
(
pass
>
0
)
if
(
pass
>
0
)
{
{
tree
these_parms
=
parms
;
tree
these_parms
=
parms
;
...
@@ -2254,10 +2202,10 @@ build_method_call (instance, name, parms, basetype_path, flags)
...
@@ -2254,10 +2202,10 @@ build_method_call (instance, name, parms, basetype_path, flags)
TREE_CHAIN
(
last
)
=
void_list_node
;
TREE_CHAIN
(
last
)
=
void_list_node
;
if
(
flags
&
LOOKUP_GLOBAL
)
if
(
flags
&
LOOKUP_GLOBAL
)
cp_error
(
"no global or member function `%D(%A)' defined"
,
cp_error
(
"no global or member function `%D(%A)' defined"
,
name
,
parmtypes
);
save_
name
,
parmtypes
);
else
else
cp_error
(
"no member function `%T::%D(%A)' defined"
,
cp_error
(
"no member function `%T::%D(%A)' defined"
,
save_basetype
,
name
,
TREE_CHAIN
(
parmtypes
));
save_basetype
,
save_
name
,
TREE_CHAIN
(
parmtypes
));
return
error_mark_node
;
return
error_mark_node
;
}
}
continue
;
continue
;
...
@@ -2282,7 +2230,7 @@ build_method_call (instance, name, parms, basetype_path, flags)
...
@@ -2282,7 +2230,7 @@ build_method_call (instance, name, parms, basetype_path, flags)
{
{
TREE_CHAIN
(
last
)
=
void_list_node
;
TREE_CHAIN
(
last
)
=
void_list_node
;
cp_error
(
"call of overloaded %s `%D(%A)' is ambiguous"
,
cp_error
(
"call of overloaded %s `%D(%A)' is ambiguous"
,
name_kind
,
name
,
TREE_CHAIN
(
parmtypes
));
name_kind
,
save_
name
,
TREE_CHAIN
(
parmtypes
));
print_n_candidates
(
candidates
,
n_candidates
);
print_n_candidates
(
candidates
,
n_candidates
);
}
}
return
error_mark_node
;
return
error_mark_node
;
...
@@ -2304,7 +2252,7 @@ build_method_call (instance, name, parms, basetype_path, flags)
...
@@ -2304,7 +2252,7 @@ build_method_call (instance, name, parms, basetype_path, flags)
{
{
if
(
flags
&
LOOKUP_COMPLAIN
)
if
(
flags
&
LOOKUP_COMPLAIN
)
cp_error
(
"ambiguous type conversion requested for %s `%D'"
,
cp_error
(
"ambiguous type conversion requested for %s `%D'"
,
name_kind
,
name
);
name_kind
,
save_
name
);
return
error_mark_node
;
return
error_mark_node
;
}
}
else
else
...
@@ -2349,7 +2297,7 @@ build_method_call (instance, name, parms, basetype_path, flags)
...
@@ -2349,7 +2297,7 @@ build_method_call (instance, name, parms, basetype_path, flags)
TREE_CHAIN
(
last
)
=
void_list_node
;
TREE_CHAIN
(
last
)
=
void_list_node
;
cp_error
(
"no matching function for call to `%T::%D (%A)%V'"
,
cp_error
(
"no matching function for call to `%T::%D (%A)%V'"
,
TYPE_MAIN_VARIANT
(
TREE_TYPE
(
TREE_TYPE
(
instance_ptr
))),
TYPE_MAIN_VARIANT
(
TREE_TYPE
(
TREE_TYPE
(
instance_ptr
))),
name
,
TREE_CHAIN
(
parmtypes
),
save_
name
,
TREE_CHAIN
(
parmtypes
),
TREE_TYPE
(
TREE_TYPE
(
instance_ptr
)));
TREE_TYPE
(
TREE_TYPE
(
instance_ptr
)));
TREE_CHAIN
(
last
)
=
NULL_TREE
;
TREE_CHAIN
(
last
)
=
NULL_TREE
;
print_candidates
(
found_fns
);
print_candidates
(
found_fns
);
...
@@ -2362,7 +2310,7 @@ build_method_call (instance, name, parms, basetype_path, flags)
...
@@ -2362,7 +2310,7 @@ build_method_call (instance, name, parms, basetype_path, flags)
if
((
flags
&
(
LOOKUP_SPECULATIVELY
|
LOOKUP_COMPLAIN
))
if
((
flags
&
(
LOOKUP_SPECULATIVELY
|
LOOKUP_COMPLAIN
))
==
LOOKUP_COMPLAIN
)
==
LOOKUP_COMPLAIN
)
{
{
cp_error
(
"%T has no method named %D"
,
save_basetype
,
name
);
cp_error
(
"%T has no method named %D"
,
save_basetype
,
save_
name
);
return
error_mark_node
;
return
error_mark_node
;
}
}
return
NULL_TREE
;
return
NULL_TREE
;
...
@@ -2428,7 +2376,7 @@ build_method_call (instance, name, parms, basetype_path, flags)
...
@@ -2428,7 +2376,7 @@ build_method_call (instance, name, parms, basetype_path, flags)
if
(
IS_SIGNATURE
(
basetype
)
&&
static_call_context
)
if
(
IS_SIGNATURE
(
basetype
)
&&
static_call_context
)
{
{
cp_error
(
"cannot call signature member function `%T::%D' without signature pointer/reference"
,
cp_error
(
"cannot call signature member function `%T::%D' without signature pointer/reference"
,
basetype
,
name
);
basetype
,
save_
name
);
return
error_mark_node
;
return
error_mark_node
;
}
}
else
if
(
IS_SIGNATURE
(
basetype
))
else
if
(
IS_SIGNATURE
(
basetype
))
...
@@ -2575,47 +2523,6 @@ build_method_call (instance, name, parms, basetype_path, flags)
...
@@ -2575,47 +2523,6 @@ build_method_call (instance, name, parms, basetype_path, flags)
convert_arguments
(
NULL_TREE
,
TREE_CHAIN
(
TYPE_ARG_TYPES
(
fntype
)),
TREE_CHAIN
(
parms
),
function
,
LOOKUP_NORMAL
));
convert_arguments
(
NULL_TREE
,
TREE_CHAIN
(
TYPE_ARG_TYPES
(
fntype
)),
TREE_CHAIN
(
parms
),
function
,
LOOKUP_NORMAL
));
}
}
#if 0
/* Constructors do not overload method calls. */
else if (TYPE_OVERLOADS_METHOD_CALL_EXPR (basetype)
&& name != TYPE_IDENTIFIER (basetype)
&& (TREE_CODE (function) != FUNCTION_DECL
|| strncmp (IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (function)),
OPERATOR_METHOD_FORMAT,
OPERATOR_METHOD_LENGTH))
&& (may_be_remote (basetype) || instance != C_C_D))
{
tree fn_as_int;
parms = TREE_CHAIN (parms);
if (!all_virtual && TREE_CODE (function) == FUNCTION_DECL)
fn_as_int = build_unary_op (ADDR_EXPR, function, 0);
else
fn_as_int = convert (TREE_TYPE (default_conversion (function)), DECL_VINDEX (function));
if (all_virtual == 1)
fn_as_int = convert (integer_type_node, fn_as_int);
result = build_opfncall (METHOD_CALL_EXPR, LOOKUP_NORMAL, instance, fn_as_int, parms);
if (result == NULL_TREE)
{
compiler_error ("could not overload `operator->()(...)'");
return error_mark_node;
}
else if (result == error_mark_node)
return error_mark_node;
#if 0
/* Do this if we want the result of operator->() to inherit
the type of the function it is subbing for. */
TREE_TYPE (result) = value_type;
#endif
return result;
}
#endif
if
(
parms
==
error_mark_node
if
(
parms
==
error_mark_node
||
(
parms
&&
TREE_CHAIN
(
parms
)
==
error_mark_node
))
||
(
parms
&&
TREE_CHAIN
(
parms
)
==
error_mark_node
))
return
error_mark_node
;
return
error_mark_node
;
...
...
gcc/cp/decl.c
View file @
cdf5b885
...
@@ -3605,7 +3605,9 @@ push_overloaded_decl (decl, forgettable)
...
@@ -3605,7 +3605,9 @@ push_overloaded_decl (decl, forgettable)
if
(
TREE_CODE
(
old
)
==
TYPE_DECL
&&
DECL_ARTIFICIAL
(
old
))
if
(
TREE_CODE
(
old
)
==
TYPE_DECL
&&
DECL_ARTIFICIAL
(
old
))
{
{
tree
t
=
TREE_TYPE
(
old
);
tree
t
=
TREE_TYPE
(
old
);
if
(
IS_AGGR_TYPE
(
t
)
&&
warn_shadow
)
if
(
IS_AGGR_TYPE
(
t
)
&&
warn_shadow
&&
(
!
DECL_IN_SYSTEM_HEADER
(
decl
)
||
!
DECL_IN_SYSTEM_HEADER
(
old
)))
cp_warning
(
"`%#D' hides constructor for `%#T'"
,
decl
,
t
);
cp_warning
(
"`%#D' hides constructor for `%#T'"
,
decl
,
t
);
old
=
NULL_TREE
;
old
=
NULL_TREE
;
}
}
...
...
gcc/cp/rtti.c
View file @
cdf5b885
...
@@ -196,7 +196,7 @@ build_dynamic_cast (type, expr)
...
@@ -196,7 +196,7 @@ build_dynamic_cast (type, expr)
goto
fail
;
goto
fail
;
if
(
TREE_CODE
(
TREE_TYPE
(
exprtype
))
!=
RECORD_TYPE
)
if
(
TREE_CODE
(
TREE_TYPE
(
exprtype
))
!=
RECORD_TYPE
)
goto
fail
;
goto
fail
;
if
(
TYPE_SIZE
(
TREE_TYPE
(
exprtype
))
==
0
)
if
(
TYPE_SIZE
(
TREE_TYPE
(
exprtype
))
==
NULL_TREE
)
goto
fail
;
goto
fail
;
if
(
TREE_READONLY
(
TREE_TYPE
(
exprtype
))
&&
if
(
TREE_READONLY
(
TREE_TYPE
(
exprtype
))
&&
!
TYPE_READONLY
(
TREE_TYPE
(
type
)))
!
TYPE_READONLY
(
TREE_TYPE
(
type
)))
...
@@ -205,9 +205,11 @@ build_dynamic_cast (type, expr)
...
@@ -205,9 +205,11 @@ build_dynamic_cast (type, expr)
break
;
break
;
/* else fall through */
/* else fall through */
case
REFERENCE_TYPE
:
case
REFERENCE_TYPE
:
if
(
TREE_CODE
(
TREE_TYPE
(
type
))
==
RECORD_TYPE
if
(
TREE_CODE
(
TREE_TYPE
(
type
))
!=
RECORD_TYPE
)
&&
TYPE_SIZE
(
TREE_TYPE
(
type
))
!=
NULL_TREE
)
goto
fail
;
break
;
if
(
TYPE_SIZE
(
TREE_TYPE
(
type
))
==
NULL_TREE
)
goto
fail
;
break
;
/* else fall through */
/* else fall through */
default
:
default
:
goto
fail
;
goto
fail
;
...
@@ -230,7 +232,7 @@ build_dynamic_cast (type, expr)
...
@@ -230,7 +232,7 @@ build_dynamic_cast (type, expr)
goto
fail
;
goto
fail
;
if
(
TREE_CODE
(
TREE_TYPE
(
exprtype
))
!=
RECORD_TYPE
)
if
(
TREE_CODE
(
TREE_TYPE
(
exprtype
))
!=
RECORD_TYPE
)
goto
fail
;
goto
fail
;
if
(
TYPE_SIZE
(
TREE_TYPE
(
exprtype
))
==
0
)
if
(
TYPE_SIZE
(
TREE_TYPE
(
exprtype
))
==
NULL_TREE
)
goto
fail
;
goto
fail
;
if
(
TREE_READONLY
(
TREE_TYPE
(
exprtype
))
&&
if
(
TREE_READONLY
(
TREE_TYPE
(
exprtype
))
&&
!
TYPE_READONLY
(
TREE_TYPE
(
type
)))
!
TYPE_READONLY
(
TREE_TYPE
(
type
)))
...
@@ -308,10 +310,7 @@ build_dynamic_cast (type, expr)
...
@@ -308,10 +310,7 @@ build_dynamic_cast (type, expr)
else
else
td1
=
build_typeid
(
expr
);
td1
=
build_typeid
(
expr
);
if
(
tc
==
POINTER_TYPE
)
td2
=
get_typeid
(
TYPE_MAIN_VARIANT
(
TREE_TYPE
(
type
)));
td2
=
get_typeid
(
TREE_TYPE
(
type
));
else
td2
=
get_typeid
(
TYPE_MAIN_VARIANT
(
TREE_TYPE
(
type
)));
elems
=
tree_cons
(
NULL_TREE
,
td2
,
elems
=
tree_cons
(
NULL_TREE
,
td2
,
tree_cons
(
NULL_TREE
,
build_int_2
(
1
,
0
),
tree_cons
(
NULL_TREE
,
build_int_2
(
1
,
0
),
...
...
gcc/cp/typeck.c
View file @
cdf5b885
...
@@ -40,15 +40,17 @@ extern void warning ();
...
@@ -40,15 +40,17 @@ extern void warning ();
#include "flags.h"
#include "flags.h"
#include "output.h"
#include "output.h"
int
mark_addressable
(
);
int
mark_addressable
PROTO
((
tree
)
);
static
tree
convert_for_assignment
(
);
static
tree
convert_for_assignment
PROTO
((
tree
,
tree
,
char
*
,
tree
,
int
)
);
/* static */
tree
convert_for_initialization
(
);
/* static */
tree
convert_for_initialization
PROTO
((
tree
,
tree
,
tree
,
int
,
char
*
,
tree
,
int
)
);
extern
tree
shorten_compare
();
extern
tree
shorten_compare
();
extern
void
binary_op_error
();
extern
void
binary_op_error
();
static
tree
pointer_int_sum
();
static
tree
pointer_int_sum
PROTO
((
enum
tree_code
,
register
tree
,
register
tree
));
static
tree
pointer_diff
();
static
tree
pointer_diff
PROTO
((
register
tree
,
register
tree
));
#if 0
static tree convert_sequence ();
static tree convert_sequence ();
/* static */
tree
unary_complex_lvalue
();
#endif
/* static */
tree
unary_complex_lvalue
PROTO
((
enum
tree_code
,
tree
));
static
tree
get_delta_difference
PROTO
((
tree
,
tree
,
int
));
static
tree
get_delta_difference
PROTO
((
tree
,
tree
,
int
));
extern
rtx
original_result_rtx
;
extern
rtx
original_result_rtx
;
...
@@ -5065,13 +5067,15 @@ build_compound_expr (list)
...
@@ -5065,13 +5067,15 @@ build_compound_expr (list)
break_out_cleanups
(
TREE_VALUE
(
list
)),
rest
);
break_out_cleanups
(
TREE_VALUE
(
list
)),
rest
);
}
}
tree
build_static_cast
(
type
,
expr
)
tree
build_static_cast
(
type
,
expr
)
tree
type
,
expr
;
tree
type
,
expr
;
{
{
return
build_c_cast
(
type
,
expr
,
0
);
return
build_c_cast
(
type
,
expr
,
0
);
}
}
tree
build_reinterpret_cast
(
type
,
expr
)
tree
build_reinterpret_cast
(
type
,
expr
)
tree
type
,
expr
;
tree
type
,
expr
;
{
{
tree
intype
=
TREE_TYPE
(
expr
);
tree
intype
=
TREE_TYPE
(
expr
);
...
@@ -5117,7 +5121,8 @@ tree build_reinterpret_cast (type, expr)
...
@@ -5117,7 +5121,8 @@ tree build_reinterpret_cast (type, expr)
return
build_c_cast
(
type
,
expr
,
0
);
return
build_c_cast
(
type
,
expr
,
0
);
}
}
tree
build_const_cast
(
type
,
expr
)
tree
build_const_cast
(
type
,
expr
)
tree
type
,
expr
;
tree
type
,
expr
;
{
{
tree
intype
=
TREE_TYPE
(
expr
);
tree
intype
=
TREE_TYPE
(
expr
);
...
@@ -5948,7 +5953,7 @@ get_delta_difference (from, to, force)
...
@@ -5948,7 +5953,7 @@ get_delta_difference (from, to, force)
}
}
if
(
binfo
==
0
)
if
(
binfo
==
0
)
{
{
error
(
"cannot convert pointer to member of type %T to unrelated pointer to member of type %T"
,
from
,
to
);
cp_
error
(
"cannot convert pointer to member of type %T to unrelated pointer to member of type %T"
,
from
,
to
);
return
delta
;
return
delta
;
}
}
if
(
TREE_VIA_VIRTUAL
(
binfo
))
if
(
TREE_VIA_VIRTUAL
(
binfo
))
...
...
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