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
6b093bac
Commit
6b093bac
authored
Aug 01, 2008
by
Eric Botcazou
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Revert incorrect patch.
From-SVN: r138514
parent
8df2e902
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
36 additions
and
37 deletions
+36
-37
gcc/ada/ChangeLog
+0
-7
gcc/ada/gcc-interface/utils.c
+36
-30
No files found.
gcc/ada/ChangeLog
View file @
6b093bac
...
...
@@ -89,13 +89,6 @@
*
par
-
ch3
.
adb
(
P_Type_Declaration
):
Properly
handle
missing
type
keyword
2008
-
08
-
01
Eric
Botcazou
<
ebotcazou
@
adacore
.
com
>
*
gcc
-
interface
/
utils
.
c
(
convert_vms_descriptor
):
Add
gnu_expr_alt_type
parameter
.
Convert
the
expression
to
it
instead
of
changing
its
type
in
place
.
(
build_function_stub
):
Adjust
call
to
above
function
.
2008
-
08
-
01
Robert
Dewar
<
dewar
@
adacore
.
com
>
*
sem_ch6
.
adb
(
Process_PPCs
):
Don
't copy spec PPC to body if not
gcc/ada/gcc-interface/utils.c
View file @
6b093bac
...
...
@@ -3564,45 +3564,54 @@ convert_vms_descriptor32 (tree gnu_type, tree gnu_expr, Entity_Id gnat_subprog)
gcc_unreachable
();
}
/* Convert GNU_EXPR, a pointer to a VMS descriptor, to GNU_TYPE, a regular
pointer or fat pointer type. GNU_EXPR_ALT_TYPE is the alternate (32-bit)
pointer type of GNU_EXPR. GNAT_SUBPROG is the subprogram to which the
VMS descriptor is passed. */
/* Convert GNU_EXPR, a pointer to a VMS descriptor, to GNU_TYPE, a
regular pointer or fat pointer type. GNAT_SUBPROG is the subprogram to
which the VMS descriptor is passed. */
static
tree
convert_vms_descriptor
(
tree
gnu_type
,
tree
gnu_expr
,
tree
gnu_expr_alt_type
,
Entity_Id
gnat_subprog
)
convert_vms_descriptor
(
tree
gnu_type
,
tree
gnu_expr
,
Entity_Id
gnat_subprog
)
{
tree
desc_type
=
TREE_TYPE
(
TREE_TYPE
(
gnu_expr
));
tree
desc
=
build1
(
INDIRECT_REF
,
desc_type
,
gnu_expr
);
tree
mbo
=
TYPE_FIELDS
(
desc_type
);
const
char
*
mbostr
=
IDENTIFIER_POINTER
(
DECL_NAME
(
mbo
));
tree
mbmo
=
TREE_CHAIN
(
TREE_CHAIN
(
TREE_CHAIN
(
mbo
)));
tree
is64bit
,
gnu_expr32
,
gnu_expr64
;
tree
is64bit
;
tree
save_type
=
TREE_TYPE
(
gnu_expr
);
tree
gnu_expr32
,
gnu_expr64
;
/* If the field name is not MBO, it must be 32-bit and no alternate.
Otherwise primary must be 64-bit and alternate 32-bit. */
if
(
strcmp
(
mbostr
,
"MBO"
)
!=
0
)
/* If the field name is not MBO, it must be 32bit and no alternate */
return
convert_vms_descriptor32
(
gnu_type
,
gnu_expr
,
gnat_subprog
);
/* Build the test for 64-bit descriptor. */
/* Otherwise primary must be 64bit and alternate 32bit */
/* Test for 64bit descriptor */
mbo
=
build3
(
COMPONENT_REF
,
TREE_TYPE
(
mbo
),
desc
,
mbo
,
NULL_TREE
);
mbmo
=
build3
(
COMPONENT_REF
,
TREE_TYPE
(
mbmo
),
desc
,
mbmo
,
NULL_TREE
);
is64bit
=
build_binary_op
(
TRUTH_ANDIF_EXPR
,
integer_type_node
,
build_binary_op
(
EQ_EXPR
,
integer_type_node
,
convert
(
integer_type_node
,
mbo
),
integer_one_node
),
build_binary_op
(
EQ_EXPR
,
integer_type_node
,
convert
(
integer_type_node
,
mbmo
),
integer_minus_one_node
));
/* Build the 2 possible end results. */
gnu_expr64
=
convert_vms_descriptor64
(
gnu_type
,
gnu_expr
,
gnat_subprog
);
gnu_expr
=
fold_convert
(
gnu_expr_alt_type
,
gnu_expr
);
gnu_expr32
=
convert_vms_descriptor32
(
gnu_type
,
gnu_expr
,
gnat_subprog
);
return
build3
(
COND_EXPR
,
gnu_type
,
is64bit
,
gnu_expr64
,
gnu_expr32
);
is64bit
=
build_binary_op
(
TRUTH_ANDIF_EXPR
,
integer_type_node
,
build_binary_op
(
EQ_EXPR
,
integer_type_node
,
convert
(
integer_type_node
,
mbo
),
integer_one_node
),
build_binary_op
(
EQ_EXPR
,
integer_type_node
,
convert
(
integer_type_node
,
mbmo
),
integer_minus_one_node
));
gnu_expr64
=
convert_vms_descriptor64
(
gnu_type
,
gnu_expr
,
gnat_subprog
);
/* Convert 32bit alternate. Hack alert ??? */
TREE_TYPE
(
gnu_expr
)
=
DECL_PARM_ALT
(
gnu_expr
);
gnu_expr32
=
convert_vms_descriptor32
(
gnu_type
,
gnu_expr
,
gnat_subprog
);
TREE_TYPE
(
gnu_expr
)
=
save_type
;
if
(
POINTER_TYPE_P
(
gnu_type
))
return
build3
(
COND_EXPR
,
gnu_type
,
is64bit
,
gnu_expr64
,
gnu_expr32
);
else
if
(
TYPE_FAT_POINTER_P
(
gnu_type
))
return
build3
(
COND_EXPR
,
gnu_type
,
is64bit
,
gnu_expr64
,
gnu_expr32
);
else
gcc_unreachable
();
}
/* Build a stub for the subprogram specified by the GCC tree GNU_SUBPROG
...
...
@@ -3633,11 +3642,8 @@ build_function_stub (tree gnu_subprog, Entity_Id gnat_subprog)
gnu_arg_types
=
TREE_CHAIN
(
gnu_arg_types
))
{
if
(
DECL_BY_DESCRIPTOR_P
(
gnu_stub_param
))
gnu_param
=
convert_vms_descriptor
(
TREE_VALUE
(
gnu_arg_types
),
gnu_stub_param
,
DECL_PARM_ALT_TYPE
(
gnu_stub_param
),
gnat_subprog
);
gnu_param
=
convert_vms_descriptor
(
TREE_VALUE
(
gnu_arg_types
),
gnu_stub_param
,
gnat_subprog
);
else
gnu_param
=
gnu_stub_param
;
...
...
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