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
4c81e946
Commit
4c81e946
authored
Nov 11, 2003
by
Fariborz Jahanian
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Misc. fixes for -mpowerpc64 vesion darwin.
Reviewed by David Edelsohn. From-SVN: r73438
parent
84083f51
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
26 additions
and
2 deletions
+26
-2
gcc/config/rs6000/rs6000.c
+23
-2
gcc/config/rs6000/rs6000.h
+3
-0
No files found.
gcc/config/rs6000/rs6000.c
View file @
4c81e946
...
@@ -235,6 +235,7 @@ static bool legitimate_small_data_p (enum machine_mode, rtx);
...
@@ -235,6 +235,7 @@ static bool legitimate_small_data_p (enum machine_mode, rtx);
static
bool
legitimate_offset_address_p
(
enum
machine_mode
,
rtx
,
int
);
static
bool
legitimate_offset_address_p
(
enum
machine_mode
,
rtx
,
int
);
static
bool
legitimate_indexed_address_p
(
rtx
,
int
);
static
bool
legitimate_indexed_address_p
(
rtx
,
int
);
static
bool
legitimate_indirect_address_p
(
rtx
,
int
);
static
bool
legitimate_indirect_address_p
(
rtx
,
int
);
static
bool
macho_lo_sum_memory_operand
(
rtx
x
,
enum
machine_mode
mode
);
static
bool
legitimate_lo_sum_address_p
(
enum
machine_mode
,
rtx
,
int
);
static
bool
legitimate_lo_sum_address_p
(
enum
machine_mode
,
rtx
,
int
);
static
struct
machine_function
*
rs6000_init_machine_status
(
void
);
static
struct
machine_function
*
rs6000_init_machine_status
(
void
);
static
bool
rs6000_assemble_integer
(
rtx
,
unsigned
int
,
int
);
static
bool
rs6000_assemble_integer
(
rtx
,
unsigned
int
,
int
);
...
@@ -2145,6 +2146,7 @@ reg_or_mem_operand (rtx op, enum machine_mode mode)
...
@@ -2145,6 +2146,7 @@ reg_or_mem_operand (rtx op, enum machine_mode mode)
{
{
return
(
gpc_reg_operand
(
op
,
mode
)
return
(
gpc_reg_operand
(
op
,
mode
)
||
memory_operand
(
op
,
mode
)
||
memory_operand
(
op
,
mode
)
||
macho_lo_sum_memory_operand
(
op
,
mode
)
||
volatile_mem_operand
(
op
,
mode
));
||
volatile_mem_operand
(
op
,
mode
));
}
}
...
@@ -2487,6 +2489,25 @@ legitimate_indirect_address_p (rtx x, int strict)
...
@@ -2487,6 +2489,25 @@ legitimate_indirect_address_p (rtx x, int strict)
}
}
static
bool
static
bool
macho_lo_sum_memory_operand
(
rtx
x
,
enum
machine_mode
mode
)
{
if
(
!
TARGET_MACHO
||
!
flag_pic
||
mode
!=
SImode
||
GET_CODE
(
x
)
!=
MEM
)
return
false
;
x
=
XEXP
(
x
,
0
);
if
(
GET_CODE
(
x
)
!=
LO_SUM
)
return
false
;
if
(
GET_CODE
(
XEXP
(
x
,
0
))
!=
REG
)
return
false
;
if
(
!
INT_REG_OK_FOR_BASE_P
(
XEXP
(
x
,
0
),
0
))
return
false
;
x
=
XEXP
(
x
,
1
);
return
CONSTANT_P
(
x
);
}
static
bool
legitimate_lo_sum_address_p
(
enum
machine_mode
mode
,
rtx
x
,
int
strict
)
legitimate_lo_sum_address_p
(
enum
machine_mode
mode
,
rtx
x
,
int
strict
)
{
{
if
(
GET_CODE
(
x
)
!=
LO_SUM
)
if
(
GET_CODE
(
x
)
!=
LO_SUM
)
...
@@ -3211,12 +3232,12 @@ rs6000_emit_set_long_const (rtx dest, HOST_WIDE_INT c1, HOST_WIDE_INT c2)
...
@@ -3211,12 +3232,12 @@ rs6000_emit_set_long_const (rtx dest, HOST_WIDE_INT c1, HOST_WIDE_INT c2)
HOST_WIDE_INT
ud1
,
ud2
,
ud3
,
ud4
;
HOST_WIDE_INT
ud1
,
ud2
,
ud3
,
ud4
;
ud1
=
c1
&
0xffff
;
ud1
=
c1
&
0xffff
;
ud2
=
(
c1
&
0xffff0000
)
>>
16
;
ud2
=
(
unsigned
HOST_WIDE_INT
)(
c1
&
0xffff0000
)
>>
16
;
#if HOST_BITS_PER_WIDE_INT >= 64
#if HOST_BITS_PER_WIDE_INT >= 64
c2
=
c1
>>
32
;
c2
=
c1
>>
32
;
#endif
#endif
ud3
=
c2
&
0xffff
;
ud3
=
c2
&
0xffff
;
ud4
=
(
c2
&
0xffff0000
)
>>
16
;
ud4
=
(
unsigned
HOST_WIDE_INT
)(
c2
&
0xffff0000
)
>>
16
;
if
((
ud4
==
0xffff
&&
ud3
==
0xffff
&&
ud2
==
0xffff
&&
(
ud1
&
0x8000
))
if
((
ud4
==
0xffff
&&
ud3
==
0xffff
&&
ud2
==
0xffff
&&
(
ud1
&
0x8000
))
||
(
ud4
==
0
&&
ud3
==
0
&&
ud2
==
0
&&
!
(
ud1
&
0x8000
)))
||
(
ud4
==
0
&&
ud3
==
0
&&
ud2
==
0
&&
!
(
ud1
&
0x8000
)))
...
...
gcc/config/rs6000/rs6000.h
View file @
4c81e946
...
@@ -2276,6 +2276,9 @@ do { \
...
@@ -2276,6 +2276,9 @@ do { \
between pointers and any other objects of this machine mode. */
between pointers and any other objects of this machine mode. */
#define Pmode (TARGET_32BIT ? SImode : DImode)
#define Pmode (TARGET_32BIT ? SImode : DImode)
/* Supply definition of STACK_SIZE_MODE for allocate_dynamic_stack_space. */
#define STACK_SIZE_MODE (TARGET_32BIT ? SImode : DImode)
/* Mode of a function address in a call instruction (for indexing purposes).
/* Mode of a function address in a call instruction (for indexing purposes).
Doesn't matter on RS/6000. */
Doesn't matter on RS/6000. */
#define FUNCTION_MODE SImode
#define FUNCTION_MODE SImode
...
...
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