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
c0d87ff6
Commit
c0d87ff6
authored
Mar 08, 1999
by
Per Bothner
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
*** empty log message ***
From-SVN: r25640
parent
78dd9906
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
30 additions
and
74 deletions
+30
-74
gcc/java/parse.c
+15
-37
gcc/java/parse.y
+15
-37
No files found.
gcc/java/parse.c
View file @
c0d87ff6
...
...
@@ -5139,20 +5139,24 @@ find_expr_with_wfl (node)
switch
(
TREE_CODE
(
node
))
{
case
BLOCK
:
return
find_expr_with_wfl
(
BLOCK_EXPR_BODY
(
node
));
node
=
BLOCK_EXPR_BODY
(
node
);
continue
;
case
COMPOUND_EXPR
:
to_return
=
find_expr_with_wfl
(
TREE_OPERAND
(
node
,
0
));
if
(
to_return
)
return
to_return
;
to_return
=
find_expr_with_wfl
(
TREE_OPERAND
(
node
,
1
)
);
return
to_return
;
node
=
TREE_OPERAND
(
node
,
1
);
continue
;
case
LOOP_EXPR
:
return
find_expr_with_wfl
(
TREE_OPERAND
(
node
,
0
));
node
=
TREE_OPERAND
(
node
,
0
);
continue
;
case
LABELED_BLOCK_EXPR
:
return
find_expr_with_wfl
(
TREE_OPERAND
(
node
,
1
));
node
=
TREE_OPERAND
(
node
,
1
);
continue
;
default
:
code
=
TREE_CODE_CLASS
(
TREE_CODE
(
node
));
if
(((
code
==
'1'
)
||
(
code
==
'2'
)
||
(
code
==
'e'
))
...
...
@@ -5286,7 +5290,7 @@ build_array_from_name (type, type_wfl, name, ret_name)
/* If we have, then craft a new type for this variable */
if
(
more_dims
)
{
name
=
get_identifier
(
&
more_dims
[
string
]);
name
=
get_identifier
(
&
string
[
more_dims
]);
/* If we have a pointer, use its type */
if
(
TREE_CODE
(
type
)
==
POINTER_TYPE
)
...
...
@@ -5762,11 +5766,6 @@ register_fields (flags, type, variable_list)
if
(
must_chain
)
register_incomplete_type
(
JDEP_FIELD
,
wfl
,
field_decl
,
type
);
/* Default value of a static field is 0 and it is considered
initialized. */
if
(
flags
&
ACC_STATIC
)
INITIALIZED_P
(
field_decl
)
=
1
;
/* If we have an initialization value tied to the field */
if
(
init
)
{
...
...
@@ -5793,7 +5792,6 @@ register_fields (flags, type, variable_list)
TREE_CHAIN
(
init
)
=
ctxp
->
non_static_initialized
;
ctxp
->
non_static_initialized
=
init
;
}
INITIALIZED_P
(
field_decl
)
=
1
;
MODIFY_EXPR_FROM_INITIALIZATION_P
(
init
)
=
1
;
}
}
...
...
@@ -5935,7 +5933,7 @@ method_header (flags, type, mdecl, throws)
/* Method declared within the scope of an interface are implicitly
abstract and public. Conflicts with other erroneously provided
modifiers are check right after. */
modifiers are check
ed
right after. */
if
(
CLASS_INTERFACE
(
TYPE_NAME
(
this_class
)))
{
...
...
@@ -8059,7 +8057,6 @@ expand_start_java_method (fndecl)
DECL_ARG_TYPE
(
tem
)
=
type
;
layout_decl
(
tem
,
0
);
pushdecl
(
tem
);
INITIALIZED_P
(
tem
)
=
1
;
/* Parms are initialized */
*
ptr
=
tem
;
ptr
=
&
TREE_CHAIN
(
tem
);
tem
=
next
;
...
...
@@ -10153,7 +10150,6 @@ java_complete_lhs (node)
{
DECL_CONTEXT
(
cn
)
=
current_function_decl
;
IDENTIFIER_LOCAL_VALUE
(
DECL_NAME
(
cn
))
=
cn
;
INITIALIZED_P
(
cn
)
=
0
;
}
if
(
BLOCK_EXPR_BODY
(
node
)
==
NULL_TREE
)
CAN_COMPLETE_NORMALLY
(
node
)
=
1
;
...
...
@@ -10537,25 +10533,8 @@ java_complete_lhs (node)
else
nn
=
java_complete_tree
(
TREE_OPERAND
(
node
,
1
));
/* There are cases where the type of RHS is fixed. In those
cases, if the evaluation of the RHS fails, we further the
evaluation of the assignment to detect more errors. */
if
(
nn
==
error_mark_node
)
{
/* It's hopeless, but we can further things on to discover
an error during the assignment. In any cases, the
assignment operation fails. */
if
(
TREE_CODE
(
TREE_OPERAND
(
node
,
1
))
!=
EXPR_WITH_FILE_LOCATION
&&
TREE_CODE
(
TREE_OPERAND
(
node
,
1
))
!=
NEW_ARRAY_INIT
&&
TREE_TYPE
(
TREE_OPERAND
(
node
,
1
))
!=
error_mark_node
)
patch_assignment
(
node
,
wfl_op1
,
wfl_op2
);
/* Now, we still mark the lhs as initialized */
if
(
JDECL_P
(
TREE_OPERAND
(
node
,
0
)))
INITIALIZED_P
(
TREE_OPERAND
(
node
,
0
))
=
1
;
return
error_mark_node
;
}
return
error_mark_node
;
TREE_OPERAND
(
node
,
1
)
=
nn
;
/* In case we're handling = with a String as a RHS, we need to
...
...
@@ -11050,7 +11029,6 @@ patch_assignment (node, wfl_op1, wfl_op2)
/* Lhs can be a named variable */
if
(
JDECL_P
(
lvalue
))
{
INITIALIZED_P
(
lvalue
)
=
1
;
lhs_type
=
TREE_TYPE
(
lvalue
);
}
/* Or Lhs can be a array acccess. Should that be lvalue ? FIXME +
...
...
@@ -11988,13 +11966,13 @@ build_string_concatenation (op1, op2)
if
((
result
=
string_constant_concatenation
(
op1
,
op2
)))
return
result
;
/* Discard
null constants on either sides
of the expression */
if
(
TREE_CODE
(
op1
)
==
STRING_CST
&&
!
TREE_STRING_LENGTH
(
op1
)
)
/* Discard
empty strings on either side
of the expression */
if
(
TREE_CODE
(
op1
)
==
STRING_CST
&&
TREE_STRING_LENGTH
(
op1
)
==
0
)
{
op1
=
op2
;
op2
=
NULL_TREE
;
}
else
if
(
TREE_CODE
(
op2
)
==
STRING_CST
&&
!
TREE_STRING_LENGTH
(
op2
)
)
else
if
(
TREE_CODE
(
op2
)
==
STRING_CST
&&
TREE_STRING_LENGTH
(
op2
)
==
0
)
op2
=
NULL_TREE
;
/* If operands are string constant, turn then into object references */
...
...
gcc/java/parse.y
View file @
c0d87ff6
...
...
@@ -2537,20 +2537,24 @@ find_expr_with_wfl (node)
switch (TREE_CODE (node))
{
case BLOCK:
return find_expr_with_wfl (BLOCK_EXPR_BODY (node));
node = BLOCK_EXPR_BODY (node);
continue;
case COMPOUND_EXPR:
to_return = find_expr_with_wfl (TREE_OPERAND (node, 0));
if (to_return)
return to_return;
to_return = find_expr_with_wfl (TREE_OPERAND (node, 1)
);
return to_return
;
node = TREE_OPERAND (node, 1
);
continue
;
case LOOP_EXPR:
return find_expr_with_wfl (TREE_OPERAND (node, 0));
node = TREE_OPERAND (node, 0);
continue;
case LABELED_BLOCK_EXPR:
return find_expr_with_wfl (TREE_OPERAND (node, 1));
node = TREE_OPERAND (node, 1);
continue;
default:
code = TREE_CODE_CLASS (TREE_CODE (node));
if (((code == '
1
') || (code == '
2
') || (code == '
e
'))
...
...
@@ -2684,7 +2688,7 @@ build_array_from_name (type, type_wfl, name, ret_name)
/* If we have, then craft a new type for this variable */
if (more_dims)
{
name = get_identifier (&
more_dims [string
]);
name = get_identifier (&
string [more_dims
]);
/* If we have a pointer, use its type */
if (TREE_CODE (type) == POINTER_TYPE)
...
...
@@ -3160,11 +3164,6 @@ register_fields (flags, type, variable_list)
if (must_chain)
register_incomplete_type (JDEP_FIELD, wfl, field_decl, type);
/* Default value of a static field is 0 and it is considered
initialized. */
if (flags & ACC_STATIC)
INITIALIZED_P (field_decl) = 1;
/* If we have an initialization value tied to the field */
if (init)
{
...
...
@@ -3191,7 +3190,6 @@ register_fields (flags, type, variable_list)
TREE_CHAIN (init) = ctxp->non_static_initialized;
ctxp->non_static_initialized = init;
}
INITIALIZED_P (field_decl) = 1;
MODIFY_EXPR_FROM_INITIALIZATION_P (init) = 1;
}
}
...
...
@@ -3333,7 +3331,7 @@ method_header (flags, type, mdecl, throws)
/*
Method
declared
within
the
scope
of
an
interface
are
implicitly
abstract
and
public
.
Conflicts
with
other
erroneously
provided
modifiers
are
check
right
after
.
*/
modifiers
are
check
ed
right
after
.
*/
if
(
CLASS_INTERFACE
(
TYPE_NAME
(
this_class
)))
{
...
...
@@ -5457,7 +5455,6 @@ expand_start_java_method (fndecl)
DECL_ARG_TYPE
(
tem
)
=
type
;
layout_decl
(
tem
,
0
);
pushdecl
(
tem
);
INITIALIZED_P
(
tem
)
=
1
;
/*
Parms
are
initialized
*/
*
ptr
=
tem
;
ptr
=
&
TREE_CHAIN
(
tem
);
tem
=
next
;
...
...
@@ -7551,7 +7548,6 @@ java_complete_lhs (node)
{
DECL_CONTEXT (cn) = current_function_decl;
IDENTIFIER_LOCAL_VALUE (DECL_NAME (cn)) = cn;
INITIALIZED_P (cn) = 0;
}
if (BLOCK_EXPR_BODY (node) == NULL_TREE)
CAN_COMPLETE_NORMALLY (node) = 1;
...
...
@@ -7935,25 +7931,8 @@ java_complete_lhs (node)
else
nn = java_complete_tree (TREE_OPERAND (node, 1));
/* There are cases where the type of RHS is fixed. In those
cases, if the evaluation of the RHS fails, we further the
evaluation of the assignment to detect more errors. */
if (nn == error_mark_node)
{
/* It'
s
hopeless
,
but
we
can
further
things
on
to
discover
an
error
during
the
assignment
.
In
any
cases
,
the
assignment
operation
fails
.
*/
if
(
TREE_CODE
(
TREE_OPERAND
(
node
,
1
))
!= EXPR_WITH_FILE_LOCATION
&&
TREE_CODE
(
TREE_OPERAND
(
node
,
1
))
!= NEW_ARRAY_INIT
&&
TREE_TYPE
(
TREE_OPERAND
(
node
,
1
))
!= error_mark_node)
patch_assignment
(
node
,
wfl_op1
,
wfl_op2
);
/*
Now
,
we
still
mark
the
lhs
as
initialized
*/
if
(
JDECL_P
(
TREE_OPERAND
(
node
,
0
)))
INITIALIZED_P
(
TREE_OPERAND
(
node
,
0
))
=
1
;
return
error_mark_node
;
}
return error_mark_node;
TREE_OPERAND (node, 1) = nn;
/* In case we'
re
handling
=
with
a
String
as
a
RHS
,
we
need
to
...
...
@@ -8448,7 +8427,6 @@ patch_assignment (node, wfl_op1, wfl_op2)
/* Lhs can be a named variable */
if (JDECL_P (lvalue))
{
INITIALIZED_P
(
lvalue
)
=
1
;
lhs_type = TREE_TYPE (lvalue);
}
/* Or Lhs can be a array acccess. Should that be lvalue ? FIXME +
...
...
@@ -9386,13 +9364,13 @@ build_string_concatenation (op1, op2)
if ((result = string_constant_concatenation (op1, op2)))
return result;
/* Discard
null constants on either sides
of the expression */
if (TREE_CODE (op1) == STRING_CST &&
!TREE_STRING_LENGTH (op1)
)
/* Discard
empty strings on either side
of the expression */
if (TREE_CODE (op1) == STRING_CST &&
TREE_STRING_LENGTH (op1) == 0
)
{
op1 = op2;
op2 = NULL_TREE;
}
else if (TREE_CODE (op2) == STRING_CST &&
!TREE_STRING_LENGTH (op2)
)
else if (TREE_CODE (op2) == STRING_CST &&
TREE_STRING_LENGTH (op2) == 0
)
op2 = NULL_TREE;
/* If operands are string constant, turn then into object references */
...
...
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