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
8dd3f57a
Commit
8dd3f57a
authored
25 years ago
by
Mark Mitchell
Committed by
Mark Mitchell
25 years ago
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix incorrect commit on previous change.
From-SVN: r28706
parent
0a818f84
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
46 additions
and
61 deletions
+46
-61
gcc/cp/ChangeLog
+5
-0
gcc/cp/pt.c
+41
-61
No files found.
gcc/cp/ChangeLog
View file @
8dd3f57a
...
...
@@ -6,6 +6,11 @@
tree.c (init_cplus_unsave): New.
(cplus_unsave_expr_now): New.
1999-08-13 Mark Mitchell <mark@codesourcery.com>
* pt.c (tsubst): Back out 1999-08-06 patch. Use fold and
decl_constant_value to simplify array bounds.
1999-08-11 Jason Merrill <jason@yorick.cygnus.com>
* lang-options.h: Add -fms-extensions.
...
...
This diff is collapsed.
Click to expand it.
gcc/cp/pt.c
View file @
8dd3f57a
...
...
@@ -2216,12 +2216,6 @@ check_default_tmpl_args (decl, parms, is_primary, is_partial)
in the template-parameter-list of the definition of a member of a
class template. */
if
(
TREE_CODE
(
DECL_REAL_CONTEXT
(
decl
))
==
FUNCTION_DECL
)
/* You can't have a function template declaration in a local
scope, nor you can you define a member of a class template in a
local scope. */
return
;
if
(
current_class_type
&&
!
TYPE_BEING_DEFINED
(
current_class_type
)
&&
DECL_LANG_SPECIFIC
(
decl
)
...
...
@@ -5063,22 +5057,9 @@ instantiate_class_template (type)
}
}
/* Create the typedef that indicates provides a way of referencing a
class name within the scope of that class. */
build_self_reference
();
/* Don't replace enum constants here. */
for
(
t
=
TYPE_FIELDS
(
pattern
);
t
;
t
=
TREE_CHAIN
(
t
))
/* If this is the implicit self-reference typedef, skip it, as we
have handled it above. Note that the usual tsubst machinery
doesn't work here, since the resulting declaration must have a
different name than the one it was given originally. */
if
(
TREE_CODE
(
t
)
==
TYPE_DECL
&&
TREE_TYPE
(
t
)
==
pattern
&&
DECL_NAME
(
t
)
==
constructor_name
(
t
)
&&
DECL_ARTIFICIAL
(
t
))
continue
;
else
if
(
TREE_CODE
(
t
)
!=
CONST_DECL
)
if
(
TREE_CODE
(
t
)
!=
CONST_DECL
)
{
tree
r
;
...
...
@@ -5897,24 +5878,18 @@ tsubst_decl (t, args, type, in_decl)
break
;
case
VAR_DECL
:
case
TYPE_DECL
:
{
tree
argvec
;
tree
gen_tmpl
;
tree
spec
;
tree
tmpl
;
tree
ctx
;
if
(
!
DECL_LANG_SPECIFIC
(
t
)
||
!
DECL_TEMPLATE_INFO
(
t
))
return
t
;
if
(
TYPE_P
(
DECL_CONTEXT
(
t
)))
ctx
=
tsubst_aggr_type
(
DECL_CONTEXT
(
t
),
args
,
/*complain=*/
1
,
in_decl
,
/*entering_scope=*/
1
);
else
/* Subsequent calls to pushdecl will fill this in. */
ctx
=
NULL_TREE
;
tree
ctx
=
tsubst_aggr_type
(
DECL_CONTEXT
(
t
),
args
,
/*complain=*/
1
,
in_decl
,
/*entering_scope=*/
1
);
/* Nobody should be tsubst'ing into non-template variables. */
my_friendly_assert
(
DECL_LANG_SPECIFIC
(
t
)
&&
DECL_TEMPLATE_INFO
(
t
)
!=
NULL_TREE
,
0
);
/* Check to see if we already have this specialization. */
tmpl
=
DECL_TI_TEMPLATE
(
t
);
...
...
@@ -5928,13 +5903,7 @@ tsubst_decl (t, args, type, in_decl)
break
;
}
/* This declaration is going to have to be around for a while,
so me make sure it is on a saveable obstack. */
push_obstacks_nochange
();
saveable_allocation
();
r
=
copy_node
(
t
);
pop_obstacks
();
TREE_TYPE
(
r
)
=
type
;
c_apply_type_quals_to_decl
(
CP_TYPE_QUALS
(
type
),
r
);
DECL_CONTEXT
(
r
)
=
ctx
;
...
...
@@ -5947,16 +5916,10 @@ tsubst_decl (t, args, type, in_decl)
copy_lang_decl
(
r
);
DECL_CLASS_CONTEXT
(
r
)
=
DECL_CONTEXT
(
r
);
/* Even if the original location is out of scope, the newly
substituted one is not. */
if
(
TREE_CODE
(
r
)
==
VAR_DECL
)
DECL_DEAD_FOR_LOCAL
(
r
)
=
0
;
/* A static data member declaration is always marked external
when it is declared in-class, even if an initializer is
present. We mimic the non-template processing here. */
if
(
ctx
)
DECL_EXTERNAL
(
r
)
=
1
;
DECL_EXTERNAL
(
r
)
=
1
;
DECL_TEMPLATE_INFO
(
r
)
=
perm_tree_cons
(
tmpl
,
argvec
,
NULL_TREE
);
SET_DECL_IMPLICIT_INSTANTIATION
(
r
);
...
...
@@ -5968,6 +5931,18 @@ tsubst_decl (t, args, type, in_decl)
}
break
;
case
TYPE_DECL
:
if
(
t
==
TYPE_NAME
(
TREE_TYPE
(
t
)))
r
=
TYPE_NAME
(
type
);
else
{
r
=
copy_node
(
t
);
TREE_TYPE
(
r
)
=
type
;
DECL_CONTEXT
(
r
)
=
current_class_type
;
TREE_CHAIN
(
r
)
=
NULL_TREE
;
}
break
;
default
:
my_friendly_abort
(
0
);
}
...
...
@@ -6043,7 +6018,7 @@ tsubst_function_type (t, args, complain, in_decl)
tree
arg_types
;
tree
fntype
;
/* The TYPE_CONEXT is not used for function/method types. */
/* The TYPE_CON
T
EXT is not used for function/method types. */
my_friendly_assert
(
TYPE_CONTEXT
(
t
)
==
NULL_TREE
,
0
);
/* Substitue the return type. */
...
...
@@ -6210,6 +6185,11 @@ tsubst (t, args, complain, in_decl)
if
(
max
==
error_mark_node
)
return
error_mark_node
;
/* See if we can reduce this expression to something simpler. */
max
=
maybe_fold_nontype_arg
(
max
);
if
(
!
processing_template_decl
&&
TREE_READONLY_DECL_P
(
max
))
max
=
decl_constant_value
(
max
);
if
(
processing_template_decl
/* When providing explicit arguments to a template
function, but leaving some arguments for subsequent
...
...
@@ -6217,8 +6197,11 @@ tsubst (t, args, complain, in_decl)
not PROCESSING_TEMPLATE_DECL. */
||
TREE_CODE
(
max
)
!=
INTEGER_CST
)
{
return
build_index_type
(
build_min
(
MINUS_EXPR
,
sizetype
,
max
,
integer_one_node
));
tree
itype
=
make_node
(
INTEGER_TYPE
);
TYPE_MIN_VALUE
(
itype
)
=
size_zero_node
;
TYPE_MAX_VALUE
(
itype
)
=
build_min
(
MINUS_EXPR
,
sizetype
,
max
,
integer_one_node
);
return
itype
;
}
if
(
integer_zerop
(
omax
))
...
...
@@ -7124,22 +7107,19 @@ tsubst_expr (t, args, complain, in_decl)
case
DECL_STMT
:
{
int
i
=
suspend_momentary
();
tree
d
e
cl
,
init
;
tree
dcl
,
init
;
lineno
=
STMT_LINENO
(
t
);
emit_line_note
(
input_filename
,
lineno
);
decl
=
DECL_STMT_DECL
(
t
);
init
=
DECL_INITIAL
(
decl
);
decl
=
tsubst
(
decl
,
args
,
complain
,
in_decl
);
init
=
tsubst_expr
(
init
,
args
,
complain
,
in_decl
);
DECL_INITIAL
(
decl
)
=
init
;
maybe_push_decl
(
decl
);
if
(
TREE_CODE
(
decl
)
==
VAR_DECL
)
DECL_TEMPLATE_INSTANTIATED
(
decl
)
=
1
;
start_decl_1
(
decl
);
cp_finish_decl
(
decl
,
init
,
NULL_TREE
,
0
,
0
);
dcl
=
start_decl
(
tsubst
(
TREE_OPERAND
(
t
,
0
),
args
,
complain
,
in_decl
),
tsubst
(
TREE_OPERAND
(
t
,
1
),
args
,
complain
,
in_decl
),
TREE_OPERAND
(
t
,
2
)
!=
0
,
NULL_TREE
,
NULL_TREE
);
init
=
tsubst_expr
(
TREE_OPERAND
(
t
,
2
),
args
,
complain
,
in_decl
);
cp_finish_decl
(
dcl
,
init
,
NULL_TREE
,
1
,
/*init ? LOOKUP_ONLYCONVERTING :*/
0
);
resume_momentary
(
i
);
return
d
e
cl
;
return
dcl
;
}
case
FOR_STMT
:
...
...
This diff is collapsed.
Click to expand it.
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