From: Paul Wögerer Date: Mon, 7 Mar 2011 15:28:50 +0000 (+0000) Subject: gimplify.c (gimplify_function_tree): Fix building calls to __builtin_return_address. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=59527282380bdf54087204235cc7330cd44b067a;p=gcc.git gimplify.c (gimplify_function_tree): Fix building calls to __builtin_return_address. gcc/ * gimplify.c (gimplify_function_tree): Fix building calls to __builtin_return_address. gcc/testsuite/ * gcc.dg/20001117-1.c: Abort on NULL call_sites. Co-Authored-By: Nathan Froyd From-SVN: r170738 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0918f7a60fa..5b7a188e11f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2011-03-07 Paul Wögerer + + * gimplify.c (gimplify_function_tree): Fix building calls + to __builtin_return_address. + 2011-03-07 Alan Modra * config/rs6000/linux.h (TARGET_ASM_FILE_END): Don't define. diff --git a/gcc/gimplify.c b/gcc/gimplify.c index cf9495c9198..400493fa4fe 100644 --- a/gcc/gimplify.c +++ b/gcc/gimplify.c @@ -7868,7 +7868,7 @@ gimplify_function_tree (tree fndecl) gimple call; x = implicit_built_in_decls[BUILT_IN_RETURN_ADDRESS]; - call = gimple_build_call (x, 0); + call = gimple_build_call (x, 1, integer_zero_node); tmp_var = create_tmp_var (ptr_type_node, "return_addr"); gimple_call_set_lhs (call, tmp_var); gimplify_seq_add_stmt (&cleanup, call); @@ -7880,7 +7880,7 @@ gimplify_function_tree (tree fndecl) tf = gimple_build_try (seq, cleanup, GIMPLE_TRY_FINALLY); x = implicit_built_in_decls[BUILT_IN_RETURN_ADDRESS]; - call = gimple_build_call (x, 0); + call = gimple_build_call (x, 1, integer_zero_node); tmp_var = create_tmp_var (ptr_type_node, "return_addr"); gimple_call_set_lhs (call, tmp_var); gimplify_seq_add_stmt (&body, call); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 8e5f44c204b..9642dfec795 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2011-03-07 Paul Wögerer + Nathan Froyd + + * gcc.dg/20001117-1.c: Abort on NULL call_sites. + 2011-03-06 Mark Mitchell * README.QMTEST: Remove. diff --git a/gcc/testsuite/gcc.dg/20001117-1.c b/gcc/testsuite/gcc.dg/20001117-1.c index baf06919317..a9de496e276 100644 --- a/gcc/testsuite/gcc.dg/20001117-1.c +++ b/gcc/testsuite/gcc.dg/20001117-1.c @@ -24,5 +24,19 @@ int main () exit (0); } -void __attribute__((no_instrument_function)) __cyg_profile_func_enter(void *this_fn, void *call_site) { } -void __attribute__((no_instrument_function)) __cyg_profile_func_exit(void *this_fn, void *call_site) { } +/* Abort on non-NULL CALL_SITE to ensure that __builtin_return_address + was expanded properly. */ +void __attribute__((no_instrument_function)) +__cyg_profile_func_enter(void *this_fn, void *call_site) +{ + if (call_site == (void *)0) + abort (); +} + +void __attribute__((no_instrument_function)) +__cyg_profile_func_exit(void *this_fn, void *call_site) +{ + if (call_site == (void *)0) + abort (); +} +