diff options
author | Richard Henderson <rth@redhat.com> | 2003-08-29 15:07:11 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2003-08-29 15:07:11 -0700 |
commit | 0dcd384087e472506271ad99529e11c1a3f8382d (patch) | |
tree | c1431d486ca4a71e7852d2b7ac47dc79448fbaf8 /gcc | |
parent | 4b1e44bee1cc164e8b6660eae8980a0e52770f06 (diff) | |
download | gcc-0dcd384087e472506271ad99529e11c1a3f8382d.zip gcc-0dcd384087e472506271ad99529e11c1a3f8382d.tar.gz gcc-0dcd384087e472506271ad99529e11c1a3f8382d.tar.bz2 |
builtins.c (expand_builtin_constant_p): Check cse_not_expected here, (fold_builtin_constant_p) ...
* builtins.c (expand_builtin_constant_p): Check cse_not_expected here,
(fold_builtin_constant_p) ... not here.
From-SVN: r70926
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/builtins.c | 15 |
2 files changed, 14 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d96b40a..78b415c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,10 @@ 2003-08-29 Richard Henderson <rth@redhat.com> + * builtins.c (expand_builtin_constant_p): Check cse_not_expected here, + (fold_builtin_constant_p) ... not here. + +2003-08-29 Richard Henderson <rth@redhat.com> + * c-tree.h (C_DECL_FILE_SCOPE): Move ... * tree.h (DECL_FILE_SCOPE_P): ... here, and rename. * c-decl.c, c-objc-common.c, c-typeck.c: Update to match. diff --git a/gcc/builtins.c b/gcc/builtins.c index 73ade93..bdb29ce 100644 --- a/gcc/builtins.c +++ b/gcc/builtins.c @@ -1462,7 +1462,11 @@ expand_builtin_constant_p (tree arglist, enum machine_mode target_mode) /* We have taken care of the easy cases during constant folding. This case is not obvious, so emit (constant_p_rtx (ARGLIST)) and let CSE - get a chance to see if it can deduce whether ARGLIST is constant. */ + get a chance to see if it can deduce whether ARGLIST is constant. + If CSE isn't going to run, of course, don't bother waiting. */ + + if (cse_not_expected) + return const0_rtx; current_function_calls_constant_p = 1; @@ -5470,15 +5474,14 @@ fold_builtin_constant_p (tree arglist) && TREE_CODE (TREE_OPERAND (arglist, 0)) == STRING_CST)) return integer_one_node; - /* If we aren't going to be running CSE or this expression - has side effects, show we don't know it to be a constant. - Likewise if it's a pointer or aggregate type since in those - case we only want literals, since those are only optimized + /* If this expression has side effects, show we don't know it to be a + constant. Likewise if it's a pointer or aggregate type since in + those case we only want literals, since those are only optimized when generating RTL, not later. And finally, if we are compiling an initializer, not code, we need to return a definite result now; there's not going to be any more optimization done. */ - if (TREE_SIDE_EFFECTS (arglist) || cse_not_expected + if (TREE_SIDE_EFFECTS (arglist) || AGGREGATE_TYPE_P (TREE_TYPE (arglist)) || POINTER_TYPE_P (TREE_TYPE (arglist)) || cfun == 0) |