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
b6a524cb
Commit
b6a524cb
authored
Jun 13, 1993
by
Richard Stallman
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
(gen_lowpart_common): Use those macros if REAL_ARITHMETIC.
From-SVN: r4672
parent
543758c6
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
34 additions
and
2 deletions
+34
-2
gcc/emit-rtl.c
+34
-2
No files found.
gcc/emit-rtl.c
View file @
b6a524cb
...
...
@@ -594,13 +594,23 @@ gen_lowpart_common (mode, x)
&&
GET_MODE_SIZE
(
mode
)
==
UNITS_PER_WORD
&&
GET_CODE
(
x
)
==
CONST_INT
&&
sizeof
(
float
)
*
HOST_BITS_PER_CHAR
==
HOST_BITS_PER_WIDE_INT
)
#ifdef REAL_ARITHMETIC
{
REAL_VALUE_TYPE
r
;
HOST_WIDE_INT
i
;
i
=
INTVAL
(
x
);
r
=
REAL_VALUE_FROM_TARGET_SINGLE
(
i
);
return
immed_real_const_1
(
r
,
mode
);
}
#else
{
union
{
HOST_WIDE_INT
i
;
float
d
;
}
u
;
u
.
i
=
INTVAL
(
x
);
return
immed_real_const_1
(
u
.
d
,
mode
);
}
#endif
else
if
(((
HOST_FLOAT_FORMAT
==
TARGET_FLOAT_FORMAT
&&
HOST_BITS_PER_WIDE_INT
==
BITS_PER_WORD
)
||
flag_pretend_float
)
...
...
@@ -610,6 +620,28 @@ gen_lowpart_common (mode, x)
&&
GET_MODE
(
x
)
==
VOIDmode
&&
(
sizeof
(
double
)
*
HOST_BITS_PER_CHAR
==
2
*
HOST_BITS_PER_WIDE_INT
))
#ifdef REAL_ARITHMETIC
{
REAL_VALUE_TYPE
r
;
HOST_WIDE_INT
i
[
2
];
HOST_WIDE_INT
low
,
high
;
if
(
GET_CODE
(
x
)
==
CONST_INT
)
low
=
INTVAL
(
x
),
high
=
low
>>
(
HOST_BITS_PER_WIDE_INT
-
1
);
else
low
=
CONST_DOUBLE_LOW
(
x
),
high
=
CONST_DOUBLE_HIGH
(
x
);
/* TARGET_DOUBLE takes the addressing order of the target machine. */
#ifdef WORDS_BIG_ENDIAN
i
[
0
]
=
high
,
i
[
1
]
=
low
;
#else
i
[
0
]
=
low
,
i
[
1
]
=
high
;
#endif
r
=
REAL_VALUE_FROM_TARGET_DOUBLE
(
i
);
return
immed_real_const_1
(
r
,
mode
);
}
#else
{
union
{
HOST_WIDE_INT
i
[
2
];
double
d
;
}
u
;
HOST_WIDE_INT
low
,
high
;
...
...
@@ -627,7 +659,7 @@ gen_lowpart_common (mode, x)
return
immed_real_const_1
(
u
.
d
,
mode
);
}
#endif
/* Similarly, if this is converting a floating-point value into a
single-word integer. Only do this is the host and target parameters are
compatible. */
...
...
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