Mercurial > hg > CbC > CbC_gcc
changeset 86:12b3180c7d07
modify calls.c.
author | Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 15 Dec 2011 02:37:13 +0900 |
parents | 32380d8cb035 |
children | f214c1d5b862 |
files | gcc/c-parser.c gcc/calls.c gcc/calls.c~ |
diffstat | 3 files changed, 9 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/gcc/c-parser.c Sun Nov 13 16:24:42 2011 +0900 +++ b/gcc/c-parser.c Thu Dec 15 02:37:13 2011 +0900 @@ -6741,7 +6741,10 @@ tree decl_cond = build_decl (location, VAR_DECL, get_identifier ("retval"), TREE_TYPE (TREE_TYPE (current_function_decl))); + /* use thread-local */ + // DECL_TLS_MODEL (decl_cond) = decl_default_tls_model (decl_cond); TREE_STATIC (decl_cond) = 1; + DECL_ARTIFICIAL (decl_cond) = 1; pushdecl (decl_cond);
--- a/gcc/calls.c Sun Nov 13 16:24:42 2011 +0900 +++ b/gcc/calls.c Thu Dec 15 02:37:13 2011 +0900 @@ -2335,12 +2335,7 @@ #endif /* Check whether the target is able to optimize the call into a sibcall. */ -#ifndef noCbC - || (!targetm.function_ok_for_sibcall (fndecl, exp) - && (!fndecl || !CbC_IS_CODE_SEGMENT (TREE_TYPE (fndecl)))) -#else || !targetm.function_ok_for_sibcall (fndecl, exp) -#endif /* Functions that do not return exactly once may not be sibcall optimized. */ || (flags & (ECF_RETURNS_TWICE | ECF_NORETURN)) @@ -2353,14 +2348,8 @@ function, we cannot change it into a sibling call. crtl->args.pretend_args_size is not part of the stack allocated by our caller. */ -#ifndef noCbC - || (args_size.constant > (crtl->args.size - - crtl->args.pretend_args_size) - && (!fndecl || !CbC_IS_CODE_SEGMENT (TREE_TYPE (fndecl)))) -#else || args_size.constant > (crtl->args.size - crtl->args.pretend_args_size) -#endif /* If the callee pops its own arguments, then it must pop exactly the same number of arguments as the current function. */ || (targetm.calls.return_pops_args (fndecl, funtype, args_size.constant)
--- a/gcc/calls.c~ Sun Nov 13 16:24:42 2011 +0900 +++ b/gcc/calls.c~ Thu Dec 15 02:37:13 2011 +0900 @@ -2353,8 +2353,14 @@ function, we cannot change it into a sibling call. crtl->args.pretend_args_size is not part of the stack allocated by our caller. */ +#ifndef noCbC + || (args_size.constant > (crtl->args.size + - crtl->args.pretend_args_size) + && (!fndecl || !CbC_IS_CODE_SEGMENT (TREE_TYPE (fndecl)))) +#else || args_size.constant > (crtl->args.size - crtl->args.pretend_args_size) +#endif /* If the callee pops its own arguments, then it must pop exactly the same number of arguments as the current function. */ || (targetm.calls.return_pops_args (fndecl, funtype, args_size.constant)