Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:lafenghu
libffi43
pr34043-1.diff
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File pr34043-1.diff of Package libffi43
2008-02-29 Richard Guenther <rguenther@suse.de> * tree-ssa-pre.c (get_sccvn_value): Create missing VNs via vn_lookup_or_add. * tree-ssa-sccnv.c (visit_reference_op_store): Use the rhs value for comparing for a store match. (simplify_unary_expression): Do nothing for SSA_NAMEs. (try_to_simplify): Do not do a full-blown reference lookup. Index: gcc/tree-ssa-sccvn.c =================================================================== --- gcc/tree-ssa-sccvn.c.orig 2009-07-17 14:35:08.000000000 +0200 +++ gcc/tree-ssa-sccvn.c 2009-11-20 13:51:00.000000000 +0100 @@ -1227,6 +1227,8 @@ visit_reference_op_store (tree lhs, tree { if (TREE_CODE (result) == SSA_NAME) result = SSA_VAL (result); + if (TREE_CODE (op) == SSA_NAME) + op = SSA_VAL (op); resultsame = expressions_equal_p (result, op); } @@ -1523,13 +1525,10 @@ simplify_unary_expression (tree rhs) static tree try_to_simplify (tree stmt, tree rhs) { + /* For stores we can end up simplifying a SSA_NAME rhs. Just return + in this case, there is no point in doing extra work. */ if (TREE_CODE (rhs) == SSA_NAME) - { - if (is_gimple_min_invariant (SSA_VAL (rhs))) - return SSA_VAL (rhs); - else if (VN_INFO (rhs)->has_constants) - return VN_INFO (rhs)->expr; - } + return rhs; else { switch (TREE_CODE_CLASS (TREE_CODE (rhs))) @@ -1546,13 +1545,11 @@ try_to_simplify (tree stmt, tree rhs) /* Fallthrough. */ case tcc_reference: - { - tree result = vn_reference_lookup (rhs, - shared_vuses_from_stmt (stmt)); - if (result) - return result; - } - /* Fallthrough for some codes. */ + /* Do not do full-blown reference lookup here. + ??? But like for tcc_declaration, we should simplify + from constant initializers. */ + + /* Fallthrough for some codes that can operate on registers. */ if (!(TREE_CODE (rhs) == REALPART_EXPR || TREE_CODE (rhs) == IMAGPART_EXPR)) break; Index: gcc/tree-ssa-pre.c =================================================================== --- gcc/tree-ssa-pre.c.orig 2008-07-15 14:58:05.000000000 +0200 +++ gcc/tree-ssa-pre.c 2009-11-20 13:51:00.000000000 +0100 @@ -3263,7 +3263,9 @@ get_sccvn_value (tree name) !ZERO_SSA_OPERANDS (defstmt2, SSA_OP_ALL_VIRTUALS)) gcc_assert (defstmt); } - valvh = vn_lookup_or_add_with_stmt (val, defstmt); + /* We lookup with the LHS, so do not use vn_lookup_or_add_with_stmt + here, as that will result in useless reference lookups. */ + valvh = vn_lookup_or_add (val); } if (dump_file && (dump_flags & TDF_DETAILS))
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor