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
47c95231
Commit
47c95231
authored
Mar 28, 1992
by
Richard Stallman
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
*** empty log message ***
From-SVN: r613
parent
88fe15a1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
22 additions
and
19 deletions
+22
-19
gcc/config/ns32k/ns32k.h
+22
-19
No files found.
gcc/config/ns32k/ns32k.h
View file @
47c95231
...
@@ -826,32 +826,25 @@ __transfer_from_trampoline () \
...
@@ -826,32 +826,25 @@ __transfer_from_trampoline () \
&& REG_OK_FOR_BASE_P (XEXP (X, 0)) \
&& REG_OK_FOR_BASE_P (XEXP (X, 0)) \
&& CONSTANT_ADDRESS_P (XEXP (X, 1))))
&& CONSTANT_ADDRESS_P (XEXP (X, 1))))
/* Check for frame pointer or stack pointer. */
#define MEM_REG(X) \
#define MEM_REG(X) \
((GET_CODE (X) == REG && (REGNO (X) ^ 16) < 2) \
(GET_CODE (X) == REG && (REGNO (X) ^ 16) < 2)
|| (TARGET_SB && CONSTANT_ADDRESS_P (X)))
/* A memory ref whose address is the FP or SP, with optional integer offset,
or (on certain machines) a constant address. */
#define INDIRECTABLE_2_ADDRESS_P(X) \
#define INDIRECTABLE_2_ADDRESS_P(X) \
(GET_CODE (X) == MEM \
(GET_CODE (X) == MEM \
&& (((xfoo0 = XEXP (X, 0), MEM_REG (xfoo0)) \
&& (((xfoo0 = XEXP (X, 0), MEM_REG (xfoo0)) \
|| (GET_CODE (xfoo0) == PLUS \
|| (GET_CODE (xfoo0) == PLUS \
&& GET_CODE (XEXP (xfoo0, 0)) == REG \
&& MEM_REG (XEXP (xfoo0, 0)) \
&& MEM_REG (XEXP (xfoo0, 0)) \
&& CONSTANT_ADDRESS_NO_LABEL_P (XEXP (xfoo0, 1)))) \
&& CONSTANT_ADDRESS_NO_LABEL_P (XEXP (xfoo0, 1)))) \
|| (TARGET_SB && CONSTANT_ADDRESS_P (xfoo0))))
|| (TARGET_SB && CONSTANT_ADDRESS_P (xfoo0))))
#define INDIRECTABLE_ADDRESS_P(X) \
(INDIRECTABLE_1_ADDRESS_P(X) \
|| INDIRECTABLE_2_ADDRESS_P (X) \
|| (GET_CODE (X) == PLUS \
&& CONSTANT_ADDRESS_NO_LABEL_P (XEXP (X, 1)) \
&& INDIRECTABLE_2_ADDRESS_P (XEXP (X, 0))))
/* Go to ADDR if X is a valid address not using indexing.
/* Go to ADDR if X is a valid address not using indexing.
(This much is the easy part.) */
(This much is the easy part.) */
#define GO_IF_NONINDEXED_ADDRESS(X, ADDR) \
#define GO_IF_NONINDEXED_ADDRESS(X, ADDR) \
{ register rtx xfoob = (X); \
{ register rtx xfoob = (X); \
if (GET_CODE (xfoob) == REG && REG_OK_FOR_BASE_P (xfoob)) goto ADDR; \
if (INDIRECTABLE_1_ADDRESS_P (X)) goto ADDR; \
if (INDIRECTABLE_1_ADDRESS_P(X)) goto ADDR; \
if (INDIRECTABLE_2_ADDRESS_P (X)) goto ADDR; \
if (INDIRECTABLE_2_ADDRESS_P (X)) goto ADDR; \
if (GET_CODE (X) == PLUS) \
if (GET_CODE (X) == PLUS) \
if (CONSTANT_ADDRESS_NO_LABEL_P (XEXP (X, 1))) \
if (CONSTANT_ADDRESS_NO_LABEL_P (XEXP (X, 1))) \
...
@@ -859,6 +852,20 @@ __transfer_from_trampoline () \
...
@@ -859,6 +852,20 @@ __transfer_from_trampoline () \
goto ADDR; \
goto ADDR; \
}
}
/* Go to ADDR if X is a valid address not using indexing.
(This much is the easy part.) */
#define GO_IF_INDEXING(X, ADDR) \
{ register rtx xfoob = (X); \
if (GET_CODE (xfoob) == PLUS && INDEX_TERM_P (XEXP (xfoob, 0))) \
GO_IF_INDEXABLE_ADDRESS (XEXP (xfoob, 1), ADDR); \
if (GET_CODE (xfoob) == PLUS && INDEX_TERM_P (XEXP (xfoob, 1))) \
GO_IF_INDEXABLE_ADDRESS (XEXP (xfoob, 0), ADDR); } \
#define GO_IF_INDEXABLE_ADDRESS(X, ADDR) \
{ if (GET_CODE (X) == REG && REG_OK_FOR_BASE_P (X)) goto ADDR; \
if (INDIRECTABLE_2_ADDRESS_P (X)) goto ADDR; \
}
/* 1 if PROD is either a reg times size of mode MODE
/* 1 if PROD is either a reg times size of mode MODE
or just a reg, if MODE is just one byte. Actually, on the ns32k,
or just a reg, if MODE is just one byte. Actually, on the ns32k,
since the index mode is independent of the operand size,
since the index mode is independent of the operand size,
...
@@ -879,8 +886,9 @@ __transfer_from_trampoline () \
...
@@ -879,8 +886,9 @@ __transfer_from_trampoline () \
((xfoo2 = (unsigned)(X)-1), \
((xfoo2 = (unsigned)(X)-1), \
((xfoo2 < 4 && xfoo2 != 2) || xfoo2 == 7))
((xfoo2 < 4 && xfoo2 != 2) || xfoo2 == 7))
/* Note that xfoo0, xfoo1, xfoo2 are used in some of the submacros above. */
#define GO_IF_LEGITIMATE_ADDRESS(MODE, X, ADDR) \
#define GO_IF_LEGITIMATE_ADDRESS(MODE, X, ADDR) \
{ register rtx xfooy, xfoo
z, xfoo0, xfoo1;
\
{ register rtx xfooy, xfoo
0, xfoo1;
\
unsigned xfoo2; \
unsigned xfoo2; \
xfooy = X; \
xfooy = X; \
GO_IF_NONINDEXED_ADDRESS (xfooy, ADDR); \
GO_IF_NONINDEXED_ADDRESS (xfooy, ADDR); \
...
@@ -892,12 +900,7 @@ __transfer_from_trampoline () \
...
@@ -892,12 +900,7 @@ __transfer_from_trampoline () \
else if (CONSTANT_ADDRESS_NO_LABEL_P (XEXP (xfooy, 0)) \
else if (CONSTANT_ADDRESS_NO_LABEL_P (XEXP (xfooy, 0)) \
&& GET_CODE (XEXP (xfooy, 1)) == PLUS) \
&& GET_CODE (XEXP (xfooy, 1)) == PLUS) \
xfooy = XEXP (xfooy, 1); \
xfooy = XEXP (xfooy, 1); \
xfooz = XEXP (xfooy, 1); \
GO_IF_INDEXING (xfooy, ADDR); \
if (INDEX_TERM_P (xfooz, MODE)) \
{ rtx t = XEXP (xfooy, 0); GO_IF_NONINDEXED_ADDRESS (t, ADDR); }\
xfooz = XEXP (xfooy, 0); \
if (INDEX_TERM_P (xfooz, MODE)) \
{ rtx t = XEXP (xfooy, 1); GO_IF_NONINDEXED_ADDRESS (t, ADDR); }\
} \
} \
else if (INDEX_TERM_P (xfooy, MODE)) \
else if (INDEX_TERM_P (xfooy, MODE)) \
goto ADDR; \
goto ADDR; \
...
...
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