aboutsummaryrefslogtreecommitdiff
path: root/gcc/stor-layout.c
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2001-12-03 16:22:47 +0100
committerJan Hubicka <hubicka@gcc.gnu.org>2001-12-03 15:22:47 +0000
commit9cd56be1b9ade7f19bf2a295b6d3302db0bbb84d (patch)
treef50e6822ef00b12e31e63af407c46260d2f638b7 /gcc/stor-layout.c
parent63658a9aaa0e8e7a16548f505c4c6ebd21a56c1d (diff)
downloadgcc-9cd56be1b9ade7f19bf2a295b6d3302db0bbb84d.zip
gcc-9cd56be1b9ade7f19bf2a295b6d3302db0bbb84d.tar.gz
gcc-9cd56be1b9ade7f19bf2a295b6d3302db0bbb84d.tar.bz2
gcse.c (delete_null_pointer_checks_1): Do not use delelete_list; call purge_dead_edges after removing.
* gcse.c (delete_null_pointer_checks_1): Do not use delelete_list; call purge_dead_edges after removing. (delete_null_pointer_checks): Do not handle delete_list. * cfgbuild.c (inside_basic_block_p, control_flow_insn_p): Break out from ... (count_basic_blocks): ... here. (find_basic_blocks, find_bb_boundaries): Cleanup. * stor-layout.c (fixup_signed_type, fixup_unsigned_type): Avoid overflow for types greater then 2 * HOST_WIDE_INT. * reload.c (find_reloads): Update the duplicates after swapingg. From-SVN: r47551
Diffstat (limited to 'gcc/stor-layout.c')
-rw-r--r--gcc/stor-layout.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/gcc/stor-layout.c b/gcc/stor-layout.c
index e4d8744..a3d122f 100644
--- a/gcc/stor-layout.c
+++ b/gcc/stor-layout.c
@@ -1755,6 +1755,12 @@ fixup_signed_type (type)
{
int precision = TYPE_PRECISION (type);
+ /* We can not represent properly constants greater then
+ 2 * HOST_BITS_PER_WIDE_INT, still we need the types
+ as they are used by i386 vector extensions and friends. */
+ if (precision > HOST_BITS_PER_WIDE_INT * 2)
+ precision = HOST_BITS_PER_WIDE_INT * 2;
+
TYPE_MIN_VALUE (type)
= build_int_2 ((precision - HOST_BITS_PER_WIDE_INT > 0
? 0 : (HOST_WIDE_INT) (-1) << (precision - 1)),
@@ -1787,6 +1793,12 @@ fixup_unsigned_type (type)
{
int precision = TYPE_PRECISION (type);
+ /* We can not represent properly constants greater then
+ 2 * HOST_BITS_PER_WIDE_INT, still we need the types
+ as they are used by i386 vector extensions and friends. */
+ if (precision > HOST_BITS_PER_WIDE_INT * 2)
+ precision = HOST_BITS_PER_WIDE_INT * 2;
+
TYPE_MIN_VALUE (type) = build_int_2 (0, 0);
TYPE_MAX_VALUE (type)
= build_int_2 (precision - HOST_BITS_PER_WIDE_INT >= 0