diff options
author | Richard Guenther <rguenther@suse.de> | 2008-08-09 17:28:39 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2008-08-09 17:28:39 +0000 |
commit | 7c9577becf922e261c901a1108ee0cb58aa73d58 (patch) | |
tree | e96c21c1520a969a3ed3dd84fdd1dadfb5821f86 /gcc/cfgexpand.c | |
parent | 6cccc200142d9a9d1dbafa0d0a1d8ec2cb0b2c14 (diff) | |
download | gcc-7c9577becf922e261c901a1108ee0cb58aa73d58.zip gcc-7c9577becf922e261c901a1108ee0cb58aa73d58.tar.gz gcc-7c9577becf922e261c901a1108ee0cb58aa73d58.tar.bz2 |
gimple.c (gimple_build_call_1): Deal with FUNCTION_DECL fn.
2008-08-09 Richard Guenther <rguenther@suse.de>
* gimple.c (gimple_build_call_1): Deal with FUNCTION_DECL fn.
* gimple.h (gimple_call_fn): Adjust comment.
(gimple_call_set_fndecl): New function.
(gimple_call_fndecl): Adjust for GIMPLE_CALL no
longer having bare FUNCTION_DECL operand.
(gimple_call_return_type): Likewise.
* tree-cfg.c (verify_stmt): Verify function operand of a GIMPLE_CALL.
* value-prof.c (gimple_divmod_fixed_value): Do not emit labels.
(gimple_mod_pow2): Likewise.
(gimple_mod_subtract): Likewise.
(gimple_ic): Likewise.
(gimple_stringop_fixed_value): Likewise.
(gimple_indirect_call_to_profile): Fix for GIMPLE_CALL no
longer having bare FUNCTION_DECL operand.
* ipa-cp.c (ipcp_update_callgraph): Use gimple_call_set_fndecl.
* omp-low.c (optimize_omp_library_calls): Likewise.
* cgraphunit.c (update_call_expr): Likewise.
* tree-ssa-math-opts.c (execute_cse_reciprocals): Likewise.
(execute_convert_to_rsqrt): Likewise.
* cfgexpand.c (gimple_to_tree): Simplify.
(release_stmt_tree): Fix for GIMPLE_CALL no longer having
bare FUNCTION_DECL operand.
* tree-nested.c (init_tmp_var_with_call): Use gimple_call_return_type.
(convert_gimple_call): Use gimple_call_fndecl.
* c-common.c (c_warn_unused_result): Likewise.
* gcc.dg/tree-ssa/inline-2.c: New testcase.
From-SVN: r138907
Diffstat (limited to 'gcc/cfgexpand.c')
-rw-r--r-- | gcc/cfgexpand.c | 18 |
1 files changed, 4 insertions, 14 deletions
diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c index 296d748..ac228f9 100644 --- a/gcc/cfgexpand.c +++ b/gcc/cfgexpand.c @@ -216,16 +216,8 @@ gimple_to_tree (gimple stmt) t = build_vl_exp (CALL_EXPR, gimple_call_num_args (stmt) + 3); - fn = gimple_call_fn (stmt); - if (TREE_CODE (fn) == FUNCTION_DECL) - CALL_EXPR_FN (t) = build1 (ADDR_EXPR, - build_pointer_type (TREE_TYPE (fn)), - fn); - else - CALL_EXPR_FN (t) = fn; - + CALL_EXPR_FN (t) = gimple_call_fn (stmt); TREE_TYPE (t) = gimple_call_return_type (stmt); - CALL_EXPR_STATIC_CHAIN (t) = gimple_call_chain (stmt); for (i = 0; i < gimple_call_num_args (stmt); i++) @@ -253,7 +245,9 @@ gimple_to_tree (gimple stmt) /* Record the original call statement, as it may be used to retrieve profile information during expansion. */ - if (TREE_CODE (fn) == FUNCTION_DECL && DECL_BUILT_IN (fn)) + + if ((fn = gimple_call_fndecl (stmt)) != NULL_TREE + && DECL_BUILT_IN (fn)) { ann = get_tree_common_ann (t); ann->stmt = stmt; @@ -368,15 +362,11 @@ release_stmt_tree (gimple stmt, tree stmt_tree) case GIMPLE_CALL: if (gimple_call_lhs (stmt)) { - if (TREE_CODE (gimple_call_fn (stmt)) == FUNCTION_DECL) - ggc_free (CALL_EXPR_FN (TREE_OPERAND (stmt_tree, 1))); ann = tree_common_ann (TREE_OPERAND (stmt_tree, 1)); if (ann) ggc_free (ann); ggc_free (TREE_OPERAND (stmt_tree, 1)); } - else if (TREE_CODE (gimple_call_fn (stmt)) == FUNCTION_DECL) - ggc_free (CALL_EXPR_FN (stmt_tree)); break; default: break; |