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
de6a431b
Commit
de6a431b
authored
Jan 15, 1992
by
Richard Kenner
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
*** empty log message ***
From-SVN: r189
parent
e1c8bbf4
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
31 additions
and
12 deletions
+31
-12
gcc/genoutput.c
+7
-7
gcc/genrecog.c
+24
-5
No files found.
gcc/genoutput.c
View file @
de6a431b
/* Generate code from to output assembler insns as recognized from rtl.
Copyright (C) 1987
-
1991 Free Software Foundation, Inc.
Copyright (C) 1987
, 1988,
1991 Free Software Foundation, Inc.
This file is part of GNU CC.
...
...
@@ -424,12 +424,12 @@ scan_operands (part, this_address_p, this_strict_low)
max_opno
=
opno
;
if
(
max_opno
>=
MAX_MAX_OPERANDS
)
{
error
(
"Too many operands (%d) in
instruction patter
n %d.
\n
"
,
error
(
"Too many operands (%d) in
definitio
n %d.
\n
"
,
max_opno
+
1
,
next_index_number
);
return
;
}
if
(
seen
[
opno
])
error
(
"
Insn patter
n %d specified operand number %d more than once.
\n
"
,
error
(
"
Definitio
n %d specified operand number %d more than once.
\n
"
,
next_index_number
,
opno
);
seen
[
opno
]
=
1
;
modes
[
opno
]
=
GET_MODE
(
part
);
...
...
@@ -450,12 +450,12 @@ scan_operands (part, this_address_p, this_strict_low)
max_opno
=
opno
;
if
(
max_opno
>=
MAX_MAX_OPERANDS
)
{
error
(
"Too many operands (%d) in
instruction patter
n %d.
\n
"
,
error
(
"Too many operands (%d) in
definitio
n %d.
\n
"
,
max_opno
+
1
,
next_index_number
);
return
;
}
if
(
seen
[
opno
])
error
(
"
Insn patter
n %d specified operand number %d more than once.
\n
"
,
error
(
"
Definitio
n %d specified operand number %d more than once.
\n
"
,
next_index_number
,
opno
);
seen
[
opno
]
=
1
;
modes
[
opno
]
=
GET_MODE
(
part
);
...
...
@@ -477,12 +477,12 @@ scan_operands (part, this_address_p, this_strict_low)
max_opno
=
opno
;
if
(
max_opno
>=
MAX_MAX_OPERANDS
)
{
error
(
"Too many operands (%d) in
instruction patter
n %d.
\n
"
,
error
(
"Too many operands (%d) in
definitio
n %d.
\n
"
,
max_opno
+
1
,
next_index_number
);
return
;
}
if
(
seen
[
opno
])
error
(
"
Insn patter
n %d specified operand number %d more than once.
\n
"
,
error
(
"
Definitio
n %d specified operand number %d more than once.
\n
"
,
next_index_number
,
opno
);
seen
[
opno
]
=
1
;
modes
[
opno
]
=
GET_MODE
(
part
);
...
...
gcc/genrecog.c
View file @
de6a431b
/* Generate code from machine description to recognize rtl as insns.
Copyright (C) 1987
-
1991 Free Software Foundation, Inc.
Copyright (C) 1987
, 1988,
1991 Free Software Foundation, Inc.
This file is part of GNU CC.
...
...
@@ -81,7 +81,7 @@ struct decision
int
test_elt_zero_int
;
/* Nonzero if should test XINT (rtl, 0) */
int
elt_zero_int
;
/* Required value for XINT (rtl, 0) */
int
test_elt_one_int
;
/* Nonzero if should test XINT (rtl, 1) */
int
elt_one_int
;
/* Required value for XINT (rtl,
2
) */
int
elt_one_int
;
/* Required value for XINT (rtl,
1
) */
char
*
tests
;
/* If nonzero predicate to call */
int
pred
;
/* `preds' index of predicate or -1 */
char
*
c_test
;
/* Additional test to perform */
...
...
@@ -824,11 +824,30 @@ merge_trees (oldh, addh)
}
}
old
->
success
=
merge_trees
(
old
->
success
,
add
->
success
);
if
(
old
->
insn_code_number
>=
0
&&
add
->
insn_code_number
>=
0
)
fatal
(
"Two actions at one point in tree"
);
{
/* If one node is for a normal insn and the second is
for the base insn with clobbers stripped off, the
second node should be ignored. */
if
(
old
->
num_clobbers_to_add
==
0
&&
add
->
num_clobbers_to_add
>
0
)
/* Nothing to do here. */
;
else
if
(
old
->
num_clobbers_to_add
>
0
&&
add
->
num_clobbers_to_add
==
0
)
{
/* In this case, replace OLD with ADD. */
old
->
insn_code_number
=
add
->
insn_code_number
;
old
->
num_clobbers_to_add
=
0
;
}
else
fatal
(
"Two actions at one point in tree"
);
}
if
(
old
->
insn_code_number
==
-
1
)
old
->
insn_code_number
=
add
->
insn_code_number
;
old
->
success
=
merge_trees
(
old
->
success
,
add
->
success
);
add
=
0
;
break
;
}
...
...
@@ -1609,7 +1628,7 @@ fatal (s, a1, a2)
fprintf
(
stderr
,
"genrecog: "
);
fprintf
(
stderr
,
s
,
a1
,
a2
);
fprintf
(
stderr
,
"
\n
"
);
fprintf
(
stderr
,
"after %d
instruction
definitions
\n
"
,
next_index
);
fprintf
(
stderr
,
"after %d definitions
\n
"
,
next_index
);
exit
(
FATAL_EXIT_CODE
);
}
...
...
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