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
13bd191d
Commit
13bd191d
authored
May 22, 1999
by
Philip Blundell
Committed by
Nick Clifton
May 22, 1999
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Apply patch from Philip Blundell <pb@nexus.co.uk> to fix PIC support for
constant tables. From-SVN: r27100
parent
ed4e4c74
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
44 additions
and
12 deletions
+44
-12
gcc/ChangeLog
+10
-0
gcc/config/arm/arm.c
+4
-1
gcc/config/arm/arm.h
+27
-10
gcc/config/arm/arm.md
+3
-1
No files found.
gcc/ChangeLog
View file @
13bd191d
Thu May 13 09:35:51 1999 Philip Blundell <pb@nexus.co.uk>
Based on patch by Scott Bambrough and Pat Beirne:
* config/arm/arm.c (making_const_table): New variable.
* config/arm/arm.h (making_const_table): Declare.
(OUTPUT_INT_ADDR_CONST): Mark symbols as position independent if
appropriate.
* config/arm/arm.md (consttable_4, consttable_8, consttable_end):
Keep track of when we are building the constant table.
Tue May 18 17:44:22 1999 Philip Blundell <pb@nexus.co.uk>
* config/arm/arm.c (arm_override_options): Fix erroneous warning
...
...
gcc/config/arm/arm.c
View file @
13bd191d
...
...
@@ -70,6 +70,9 @@ static void emit_sfm PROTO ((int, int));
static
enum
arm_cond_code
get_arm_condition_code
PROTO
((
rtx
));
static
int
const_ok_for_op
RTX_CODE_PROTO
((
Hint
,
Rcode
));
/* True if we are currently building a constant table. */
int
making_const_table
;
/* Define the information needed to generate branch insns. This is
stored from the compare operation. */
rtx
arm_compare_op0
,
arm_compare_op1
;
...
...
@@ -277,7 +280,7 @@ arm_override_options ()
if
(
ptr
->
string
!=
NULL
&&
ptr
->
string
[
0
]
!=
'\0'
)
{
struct
processors
*
sel
;
const
struct
processors
*
sel
;
for
(
sel
=
ptr
->
processors
;
sel
->
name
!=
NULL
;
sel
++
)
if
(
streq
(
ptr
->
string
,
sel
->
name
))
...
...
gcc/config/arm/arm.h
View file @
13bd191d
...
...
@@ -1800,7 +1800,11 @@ extern int arm_pic_register;
(! symbol_mentioned_p (X) \
&& (! CONSTANT_POOL_ADDRESS_P (X) \
|| ! symbol_mentioned_p (get_pool_constant (X))))
/* We need to know when we are making a constant pool; this determines
whether data needs to be in the GOT or can be referenced via a GOT
offset. */
extern
int
making_const_table
;
/* Condition code information. */
...
...
@@ -2019,20 +2023,33 @@ extern struct rtx_def *arm_compare_op0, *arm_compare_op1;
GET_CODE (X) == POST_DEC ? "-" : "", \
GET_MODE_SIZE (output_memory_reference_mode)); \
} \
else output_addr_const(STREAM, X); \
else output_addr_const (STREAM, X); \
\
/* Mark symbols as position independent. We only do this in the \
.text segment, not in the .data segment. */
\
if (NEED_PLT_GOT && flag_pic && making_const_table && \
(GET_CODE (X) == SYMBOL_REF || GET_CODE (X) == LABEL_REF)) \
{ \
if (GET_CODE (X) == SYMBOL_REF && CONSTANT_POOL_ADDRESS_P (X)) \
fprintf (STREAM, "(GOTOFF)"); \
else if (GET_CODE (X) == LABEL_REF) \
fprintf (STREAM, "(GOTOFF)"); \
else \
fprintf (STREAM, "(GOT)"); \
} \
}
/* Handles PIC addr specially */
#define OUTPUT_INT_ADDR_CONST(STREAM,X) \
#define OUTPUT_INT_ADDR_CONST(STREAM,X)
\
{ \
if (flag_pic && GET_CODE
(X) == CONST && is_pic(X))
\
if (flag_pic && GET_CODE
(X) == CONST && is_pic (X))
\
{ \
output_addr_const(STREAM, XEXP (XEXP (XEXP (X, 0), 0), 0)); \
fputs(" - (", STREAM); \
output_addr_const(STREAM, XEXP (XEXP (XEXP (X, 0), 1), 0)); \
fputs(")", STREAM); \
output_addr_const
(STREAM, XEXP (XEXP (XEXP (X, 0), 0), 0)); \
fputs
(" - (", STREAM); \
output_addr_const
(STREAM, XEXP (XEXP (XEXP (X, 0), 1), 0)); \
fputs
(")", STREAM); \
} \
else output_addr_const(STREAM, X); \
else output_addr_const
(STREAM, X); \
}
/* Output code to add DELTA to the first argument, and then jump to FUNCTION.
...
...
@@ -2042,7 +2059,7 @@ do { \
int mi_delta = (DELTA); \
char *mi_op = mi_delta < 0 ? "sub" : "add"; \
int shift = 0; \
int this_regno = (aggregate_value_p (TREE_TYPE (TREE_TYPE (FUNCTION)))
\
int this_regno = (aggregate_value_p (TREE_TYPE (TREE_TYPE (FUNCTION)))\
? 1 : 0); \
if (mi_delta < 0) mi_delta = -mi_delta; \
while (mi_delta != 0) \
...
...
gcc/config/arm/arm.md
View file @
13bd191d
...
...
@@ -6216,6 +6216,7 @@
""
"
*
{
making_const_table = TRUE;
switch (GET_MODE_CLASS (GET_MODE (operands
[
0
]
)))
{
case MODE_FLOAT:
...
...
@@ -6238,6 +6239,7 @@
""
"
*
{
making_const_table = TRUE;
switch (GET_MODE_CLASS (GET_MODE (operands
[
0
]
)))
{
case MODE_FLOAT:
...
...
@@ -6259,7 +6261,7 @@
[
(unspec_volatile [(const_int 0)
]
4)]
""
"
*
/
* Nothing to do (currently). *
/
making_const_table = FALSE;
return
\"\"
;
")
...
...
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