mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-02-05 23:01:18 +08:00
combine.c (make_extraction): Avoid reference outside object.
2005-08-26 Ian Lance Taylor <ian@airs.com> * combine.c (make_extraction): Avoid reference outside object. From-SVN: r103537
This commit is contained in:
parent
277d42e27f
commit
8f34bde689
@ -1,3 +1,7 @@
|
||||
2005-08-26 Ian Lance Taylor <ian@airs.com>
|
||||
|
||||
* combine.c (make_extraction): Avoid reference outside object.
|
||||
|
||||
2005-08-26 J"orn Rennecke <joern.rennecke@st.com>
|
||||
|
||||
* stor-layout.c (finalize_type_size): Restore behaviour for
|
||||
|
@ -6484,11 +6484,13 @@ make_extraction (enum machine_mode mode, rtx inner, HOST_WIDE_INT pos,
|
||||
&& GET_MODE_SIZE (inner_mode) < GET_MODE_SIZE (is_mode))
|
||||
offset -= GET_MODE_SIZE (is_mode) - GET_MODE_SIZE (inner_mode);
|
||||
|
||||
/* If this is a constant position, we can move to the desired byte. */
|
||||
/* If this is a constant position, we can move to the desired byte.
|
||||
Be careful not to go beyond the original object. */
|
||||
if (pos_rtx == 0)
|
||||
{
|
||||
offset += pos / BITS_PER_UNIT;
|
||||
pos %= GET_MODE_BITSIZE (wanted_inner_mode);
|
||||
enum machine_mode bfmode = smallest_mode_for_size (len, MODE_INT);
|
||||
offset += pos / GET_MODE_BITSIZE (bfmode);
|
||||
pos %= GET_MODE_BITSIZE (bfmode);
|
||||
}
|
||||
|
||||
if (BYTES_BIG_ENDIAN != BITS_BIG_ENDIAN
|
||||
|
Loading…
Reference in New Issue
Block a user