method.c (225736) | method.c (260140) |
---|---|
1/* Handle the hair of processing (but not expanding) inline functions. 2 Also manage function and variable name overloading. 3 Copyright (C) 1987, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 4 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. 5 Contributed by Michael Tiemann (tiemann@cygnus.com) 6 7This file is part of GCC. 8 --- 393 unchanged lines hidden (view full) --- 402 { 403 resolve_unique_section (thunk_fndecl, 0, flag_function_sections); 404 405 /* Output the thunk into the same section as function. */ 406 DECL_SECTION_NAME (thunk_fndecl) = DECL_SECTION_NAME (function); 407 } 408 } 409 | 1/* Handle the hair of processing (but not expanding) inline functions. 2 Also manage function and variable name overloading. 3 Copyright (C) 1987, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 4 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. 5 Contributed by Michael Tiemann (tiemann@cygnus.com) 6 7This file is part of GCC. 8 --- 393 unchanged lines hidden (view full) --- 402 { 403 resolve_unique_section (thunk_fndecl, 0, flag_function_sections); 404 405 /* Output the thunk into the same section as function. */ 406 DECL_SECTION_NAME (thunk_fndecl) = DECL_SECTION_NAME (function); 407 } 408 } 409 |
410 /* The back-end expects DECL_INITIAL to contain a BLOCK, so we 411 create one. */ 412 DECL_INITIAL (thunk_fndecl) = make_node (BLOCK); 413 | |
414 /* Set up cloned argument trees for the thunk. */ 415 t = NULL_TREE; 416 for (a = DECL_ARGUMENTS (function); a; a = TREE_CHAIN (a)) 417 { 418 tree x = copy_node (a); 419 TREE_CHAIN (x) = t; 420 DECL_CONTEXT (x) = thunk_fndecl; 421 SET_DECL_RTL (x, NULL_RTX); 422 DECL_HAS_VALUE_EXPR_P (x) = 0; 423 t = x; 424 } 425 a = nreverse (t); 426 DECL_ARGUMENTS (thunk_fndecl) = a; | 410 /* Set up cloned argument trees for the thunk. */ 411 t = NULL_TREE; 412 for (a = DECL_ARGUMENTS (function); a; a = TREE_CHAIN (a)) 413 { 414 tree x = copy_node (a); 415 TREE_CHAIN (x) = t; 416 DECL_CONTEXT (x) = thunk_fndecl; 417 SET_DECL_RTL (x, NULL_RTX); 418 DECL_HAS_VALUE_EXPR_P (x) = 0; 419 t = x; 420 } 421 a = nreverse (t); 422 DECL_ARGUMENTS (thunk_fndecl) = a; |
427 BLOCK_VARS (DECL_INITIAL (thunk_fndecl)) = a; | |
428 429 if (this_adjusting 430 && targetm.asm_out.can_output_mi_thunk (thunk_fndecl, fixed_offset, 431 virtual_value, alias)) 432 { 433 const char *fnname; | 423 424 if (this_adjusting 425 && targetm.asm_out.can_output_mi_thunk (thunk_fndecl, fixed_offset, 426 virtual_value, alias)) 427 { 428 const char *fnname; |
429 tree fn_block; 430 |
|
434 current_function_decl = thunk_fndecl; 435 DECL_RESULT (thunk_fndecl) 436 = build_decl (RESULT_DECL, 0, integer_type_node); 437 fnname = XSTR (XEXP (DECL_RTL (thunk_fndecl), 0), 0); | 431 current_function_decl = thunk_fndecl; 432 DECL_RESULT (thunk_fndecl) 433 = build_decl (RESULT_DECL, 0, integer_type_node); 434 fnname = XSTR (XEXP (DECL_RTL (thunk_fndecl), 0), 0); |
435 /* The back-end expects DECL_INITIAL to contain a BLOCK, so we 436 create one. */ 437 fn_block = make_node (BLOCK); 438 BLOCK_VARS (fn_block) = a; 439 DECL_INITIAL (thunk_fndecl) = fn_block; |
|
438 init_function_start (thunk_fndecl); 439 current_function_is_thunk = 1; 440 assemble_start_function (thunk_fndecl, fnname); 441 442 targetm.asm_out.output_mi_thunk (asm_out_file, thunk_fndecl, 443 fixed_offset, virtual_value, alias); 444 445 assemble_end_function (thunk_fndecl, fnname); --- 747 unchanged lines hidden --- | 440 init_function_start (thunk_fndecl); 441 current_function_is_thunk = 1; 442 assemble_start_function (thunk_fndecl, fnname); 443 444 targetm.asm_out.output_mi_thunk (asm_out_file, thunk_fndecl, 445 fixed_offset, virtual_value, alias); 446 447 assemble_end_function (thunk_fndecl, fnname); --- 747 unchanged lines hidden --- |