aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2003-08-29 15:07:11 -0700
committerRichard Henderson <rth@gcc.gnu.org>2003-08-29 15:07:11 -0700
commit0dcd384087e472506271ad99529e11c1a3f8382d (patch)
treec1431d486ca4a71e7852d2b7ac47dc79448fbaf8 /gcc
parent4b1e44bee1cc164e8b6660eae8980a0e52770f06 (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--gcc/builtins.c15
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)