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
4adf63f9
Commit
4adf63f9
authored
May 23, 2014
by
Eric Botcazou
Committed by
Eric Botcazou
May 23, 2014
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
* varasm.c (output_constructor_bitfield): Fix thinkos in latest change.
From-SVN: r210856
parent
0aadce73
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
24 additions
and
18 deletions
+24
-18
gcc/ChangeLog
+4
-0
gcc/varasm.c
+20
-18
No files found.
gcc/ChangeLog
View file @
4adf63f9
2014-05-23 Eric Botcazou <ebotcazou@adacore.com>
* varasm.c (output_constructor_bitfield): Fix thinkos in latest change.
2014-05-23 Thomas Schwinge <thomas@codesourcery.com>
* gimple.h (enum gf_mask): Add and use GF_OMP_FOR_SIMD.
...
...
gcc/varasm.c
View file @
4adf63f9
...
...
@@ -5082,24 +5082,27 @@ output_constructor_bitfield (oc_local_state *local, unsigned int bit_offset)
this_time
=
MIN
(
end_offset
-
next_offset
,
BITS_PER_UNIT
-
next_bit
);
if
(
BYTES_BIG_ENDIAN
)
{
/* On big-endian machine, take the most significant bits
first (of the bits that are significant)
and put them into bytes from
the most significant end. */
/* On big-endian machine, take the most significant bits
(of the
bits that are significant) first and put them into bytes from
the most significant end. */
shift
=
end_offset
-
next_offset
-
this_time
;
/* Don't try to take a bunch of bits that cross
the word boundary in the INTEGER_CST. We can
only select bits from the LOW or HIGH part
not from both. */
the word boundary in the INTEGER_CST. We can
only select bits from one element. */
if
((
shift
/
HOST_BITS_PER_WIDE_INT
)
!=
((
shift
+
this_time
)
/
HOST_BITS_PER_WIDE_INT
))
this_time
=
(
shift
+
this_time
)
&
(
HOST_BITS_PER_WIDE_INT
-
1
);
!=
((
shift
+
this_time
-
1
)
/
HOST_BITS_PER_WIDE_INT
))
{
const
int
end
=
shift
+
this_time
-
1
;
shift
=
end
&
-
HOST_BITS_PER_WIDE_INT
;
this_time
=
end
-
shift
+
1
;
}
/* Now get the bits from the appropriate constant word. */
value
=
TREE_INT_CST_ELT
(
local
->
val
,
shift
/
HOST_BITS_PER_WIDE_INT
);
shift
=
shift
&
(
HOST_BITS_PER_WIDE_INT
-
1
);
/* Get the result. This works only when:
/* Get the result.
This works only when:
1 <= this_time <= HOST_BITS_PER_WIDE_INT. */
local
->
byte
|=
(((
value
>>
shift
)
&
(((
HOST_WIDE_INT
)
2
<<
(
this_time
-
1
))
-
1
))
...
...
@@ -5107,25 +5110,24 @@ output_constructor_bitfield (oc_local_state *local, unsigned int bit_offset)
}
else
{
/* On little-endian machines,
take first the least significant bits of the value
and pack them starting at the least significant
/* On little-endian machines, take the least significant bits of
the value first and pack them starting at the least significant
bits of the bytes. */
shift
=
next_offset
-
byte_relative_ebitpos
;
/* Don't try to take a bunch of bits that cross
the word boundary in the INTEGER_CST. We can
only select bits from the LOW or HIGH part
not from both. */
the word boundary in the INTEGER_CST. We can
only select bits from one element. */
if
((
shift
/
HOST_BITS_PER_WIDE_INT
)
!=
((
shift
+
this_time
)
/
HOST_BITS_PER_WIDE_INT
))
this_time
=
(
HOST_BITS_PER_WIDE_INT
-
shift
);
!=
((
shift
+
this_time
-
1
)
/
HOST_BITS_PER_WIDE_INT
))
this_time
=
HOST_BITS_PER_WIDE_INT
-
(
shift
&
(
HOST_BITS_PER_WIDE_INT
-
1
));
/* Now get the bits from the appropriate constant word. */
value
=
TREE_INT_CST_ELT
(
local
->
val
,
shift
/
HOST_BITS_PER_WIDE_INT
);
shift
=
shift
&
(
HOST_BITS_PER_WIDE_INT
-
1
);
/* Get the result. This works only when:
/* Get the result.
This works only when:
1 <= this_time <= HOST_BITS_PER_WIDE_INT. */
local
->
byte
|=
(((
value
>>
shift
)
&
(((
HOST_WIDE_INT
)
2
<<
(
this_time
-
1
))
-
1
))
...
...
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