diff options
author | nathan <nathan@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-08-19 10:36:07 +0000 |
---|---|---|
committer | nathan <nathan@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-08-19 10:36:07 +0000 |
commit | 00b76131e87f7da2a6ebf1e13498f5bc9f33f69f (patch) | |
tree | ba738aa254abf741ddc0722884b43575c2331ca6 /gcc/expmed.c | |
parent | d1299313772c832661ffe3c3d4f44a4fd09ac42d (diff) | |
download | gcc-00b76131e87f7da2a6ebf1e13498f5bc9f33f69f.tar.gz |
* tree.h (TYPE_CACHED_VALUES_P): New.
(TYPE_CACHED_VALUES): New.
(TYPE_ORIG_SIZE_TYPE): Adjust.
* tree.def (INTEGER_CST): Update documentation.
* tree.c: Inlcude params.h.
(build_int_cst): Cache small values.
(build_type_copy): Do not copy the value cache.
* c-common.c (c_common_nodes_and_builtins): Add comment, remove
unneeded zeroing.
* c-typeck.c (build_c_cast): Add comment about OVERFLOW setting.
* expmed.c (const_mult_add_overflow_p): Clear type copy's value
cache.
* fold-const.c (force_fit_type): Copy value when setting
overflows.
(int_const_binop): Likewise.
* stor-layout.c: Include params.h
(set_sizetype): Create values cache.
(fixup_unsigned_type): Set UNSIGNED_P before caching any values.
* params.def (PARAM_INTEGER_SHARE_LIMIT): New.
* params.h (INTEGER_SHARE_LIMIT): New.
* Makefile.in (tree.o, stor-layout.o): Depend on PARAMS_H.
* cp/decl.c (finish_enum): Do not copy value node early, copy
later.
* cp/lex.c (cxx_init): Force null_node to be unique.
* java/parse.h (JAVA_RADIX10_FLAG): Rename to ...
(JAVA_NOT_RADIX10_FLAG): ... here. Invert meaning.
* java/lex.c (do_java_lex): Adjust.
(error_if_numeric_overflow): Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@86247 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/expmed.c')
-rw-r--r-- | gcc/expmed.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/gcc/expmed.c b/gcc/expmed.c index b44ba65e28b..bb24504d27c 100644 --- a/gcc/expmed.c +++ b/gcc/expmed.c @@ -4550,7 +4550,8 @@ make_tree (tree type, rtx x) UNSIGNEDP is nonzero to do unsigned multiplication. */ bool -const_mult_add_overflow_p (rtx x, rtx mult, rtx add, enum machine_mode mode, int unsignedp) +const_mult_add_overflow_p (rtx x, rtx mult, rtx add, + enum machine_mode mode, int unsignedp) { tree type, mult_type, add_type, result; @@ -4561,7 +4562,15 @@ const_mult_add_overflow_p (rtx x, rtx mult, rtx add, enum machine_mode mode, int mult_type = type; if (unsignedp) { + /* FIXME:It would be nice if we could step directly from this + type to its sizetype equivalent. */ mult_type = copy_node (type); + if (TYPE_CACHED_VALUES_P (mult_type)) + { + /* Clear any set of cached values it has. */ + TYPE_CACHED_VALUES_P (mult_type) = 0; + TYPE_CACHED_VALUES (mult_type) = NULL_TREE; + } TYPE_IS_SIZETYPE (mult_type) = 1; } |