diff options
author | Paul Brook <paul@codesourcery.com> | 2006-07-13 18:07:40 +0000 |
---|---|---|
committer | Paul Brook <paul@codesourcery.com> | 2006-07-13 18:07:40 +0000 |
commit | a8b20def26f8819020ace682479bdf978f0cd49a (patch) | |
tree | 681df20e561672c8cdda690cdbc48d509157afa3 /gcc/expr.c | |
parent | 6e53ac993d70b42a4ac831c37ce23ef636c33181 (diff) |
Merge from gcc-4_1-branch revision 114100 (gcc-4_1_1-release)
git-svn-id: https://gcc.gnu.org/svn/gcc/branches/csl/sourcerygxx-4_1@115418 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/expr.c')
-rw-r--r-- | gcc/expr.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/gcc/expr.c b/gcc/expr.c index 9f7e7bb45d2..056461ee0ad 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -1403,6 +1403,8 @@ init_block_move_fn (const char *asmspec) TREE_PUBLIC (fn) = 1; DECL_ARTIFICIAL (fn) = 1; TREE_NOTHROW (fn) = 1; + DECL_VISIBILITY (fn) = VISIBILITY_DEFAULT; + DECL_VISIBILITY_SPECIFIED (fn) = 1; block_move_fn = fn; } @@ -2550,6 +2552,8 @@ init_block_clear_fn (const char *asmspec) TREE_PUBLIC (fn) = 1; DECL_ARTIFICIAL (fn) = 1; TREE_NOTHROW (fn) = 1; + DECL_VISIBILITY (fn) = VISIBILITY_DEFAULT; + DECL_VISIBILITY_SPECIFIED (fn) = 1; block_clear_fn = fn; } @@ -5970,6 +5974,19 @@ safe_from_p (rtx x, tree exp, int top_p) return safe_from_p (x, exp, 0); } } + else if (TREE_CODE (exp) == CONSTRUCTOR) + { + constructor_elt *ce; + unsigned HOST_WIDE_INT idx; + + for (idx = 0; + VEC_iterate (constructor_elt, CONSTRUCTOR_ELTS (exp), idx, ce); + idx++) + if ((ce->index != NULL_TREE && !safe_from_p (x, ce->index, 0)) + || !safe_from_p (x, ce->value, 0)) + return 0; + return 1; + } else if (TREE_CODE (exp) == ERROR_MARK) return 1; /* An already-visited SAVE_EXPR? */ else |