diff options
| author | bstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-01-29 19:10:25 +0000 |
|---|---|---|
| committer | bstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-01-29 19:10:25 +0000 |
| commit | 1b927e1cb81240f4d6c73eb7cdec45246f6a3c72 (patch) | |
| tree | 56e5cd4a6dc56809fa98da6b09135f74ba2ad785 /gcc/tree-ssa-alias.c | |
| parent | 87e27de18fdbc0c21dcbc3108b52cdea8183acad (diff) | |
| download | gcc-1b927e1cb81240f4d6c73eb7cdec45246f6a3c72.tar.gz | |
2009-01-29 Basile Starynkevitch <basile@starynkevitch.net>
MELT branch merged with trunk r143767
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/melt-branch@143769 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-ssa-alias.c')
| -rw-r--r-- | gcc/tree-ssa-alias.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/gcc/tree-ssa-alias.c b/gcc/tree-ssa-alias.c index 4e9d28bf9eb..3c76fcd2db4 100644 --- a/gcc/tree-ssa-alias.c +++ b/gcc/tree-ssa-alias.c @@ -2483,6 +2483,24 @@ update_alias_info_1 (gimple stmt, struct alias_info *ai) if (addr_taken) bitmap_ior_into (gimple_addressable_vars (cfun), addr_taken); + /* If we have a call or an assignment, see if the lhs contains + a local decl that requires not to be a gimple register. */ + if (gimple_code (stmt) == GIMPLE_ASSIGN + || gimple_code (stmt) == GIMPLE_CALL) + { + tree lhs = gimple_get_lhs (stmt); + /* A plain decl does not need it set. */ + if (lhs && handled_component_p (lhs)) + { + tree var = get_base_address (lhs); + if (DECL_P (var) + /* We are not going to mess with RESULT_DECL anyway. */ + && TREE_CODE (var) != RESULT_DECL + && is_gimple_reg_type (TREE_TYPE (var))) + bitmap_set_bit (gimple_addressable_vars (cfun), DECL_UID (var)); + } + } + /* Process each operand use. For pointers, determine whether they are dereferenced by the statement, or whether their value escapes, etc. */ |
