This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Jason's calls.c patch and spec2000 performance regression


Jason,
I am just looking at the purpose of spec2000 perofrmance regression,
M
one of possible purposes is your patch:
+ 2001-12-18  Jason Merrill  <jason@redhat.com>
+
+ 	C++ ABI change: destroy value arguments in caller.
+ 	* calls.c (initialize_argument_information): Pass the address of
+ 	the TARGET_EXPR temporary rather than storing it into another.

I am not sure what perofmrance indications it do have, as I don't understand
fully the issue, but it looks wrong anyway:

+ 	  else if (TREE_CODE (args[i].tree_value) == TARGET_EXPR)
+ 	    {
+ 	      /* In the V3 C++ ABI, parameters are destroyed in the caller.
+ 		 We implement this by passing the address of the temporary
+ 	         rather than expanding it into another allocated slot.  */
+ 	      args[i].tree_value = build1 (ADDR_EXPR,
+ 					   build_pointer_type (type),
+ 					   args[i].tree_value);
+ 	      type = build_pointer_type (type);
+ 	    }

Should not this remove the ECF_CONST/ECF_PURE/ECF_LIBCALL_BLOCK as the
function is allowed (and will) modify it's argument?

The original code does it.

Honza

Other patches installed in the same run as regression occured:
+ Tue Dec 18 17:02:06 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
+
+ 	* emit-rtl.c (widen_memory_access): Only call compare_tree_int
+ 	on an INTEGER_CST.
+
+ 2001-12-18  David Edelsohn  <edelsohn@gnu.org>
+
+ 	* rs6000.c (rs6000_override_options): Only use DI ops when
+ 	TARGET_64BIT.  Fix typo.
+
+ Tue Dec 18 16:39:46 CET 2001  Jan Hubicka  <jh@suse.cz>
+
+ 	* att.h (ASM_FILE_START): Use asm_dialect.
+ 	* linux.h (ASM_FILE_START): Likewise.
+ 	* gas.h (ASM_FILE_START): Likewise.
+ 	* i386.c (ix86_debug_arg_string, ix86_debug_addr_string,
+ 	ix86_asm_string, ix86_asm_dialect): New.
+ 	(override_options): Set asm_dialect.
+ 	* i386.h (MASK_MIX_SSE_I387, MASK_INTEL_SYNTAX, MASK_DEBUG_ARG,
+ 	MASK_DEBUG_ADDR): Kill.
+ 	(MASK_64BIT, MASK_NO_RED_ZONE): renumber.
+ 	(TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Use string.
+ 	(ASSEMBLER_DIALECT): Use asm_dialect.
+ 	(TARGET_SWITCHES): Undocument deprecated items; deprecate intel-syntax;
+ 	remove debug-addr and debug-arg.
+ 	(TARGET_OPTIONS): Add debug-arg, debug-addr, asm.
+ 	(asm_dialect): New enum.
+ 	(ix86_debug_arg_string, ix86_debug_addr_string,
+ 	ix86_asm_string, ix86_asm_dialect): Declare.
+ 	* invoke.texi (-mintel-syntax): Remove.
+ 	(-masm): Document.
+
+ Tue Dec 18 16:37:42 CET 2001  Jan Hubicka  <jh@suse.cz>
+
+ 	* libgcc2.c (__bb_exit_func): Kill -ax dumping code.
+
+ 2001-12-18  Jason Merrill  <jason@redhat.com>
+
+ 	C++ ABI change: destroy value arguments in caller.
+ 	* calls.c (initialize_argument_information): Pass the address of
+ 	the TARGET_EXPR temporary rather than storing it into another.
+
+ Tue Dec 18 07:09:06 2001  Douglas B. Rupp  <rupp@gnat.com>
+
+ 	* config/alpha/xm-vms.h (INCLUDE_DEFAULTS): Add /gnu/include.
+ 	* config/alpha/vms.h (STACK_CHECK_BUILTIN): #define 0 for VMS.
+
+ 2001-12-18  Jakub Jelinek  <jakub@redhat.com>
+
+ 	* config/linux.h (PREFERRED_DEBUGGING_TYPE): Remove.
+ 	* config/sparc/linux.h (PREFERRED_DEBUGGING_TYPE): Remove.
+ 	* config/sparc/linux64.h (PREFERRED_DEBUGGING_TYPE): Remove.
+ 	(CC1_SPEC): Don't default to -gstabs+ if -m32.
+
+ 2001-12-05  David O'Brien  <obrien@FreeBSD.org>
+
+ 	* elfos.h (PREFERRED_DEBUGGING_TYPE): Change to DWARF2_DEBUG.
+
+ 2001-12-18  Joseph S. Myers  <jsm28@cam.ac.uk>
+
+ 	* po/gcc.pot: Regenerate.
+
+ 2001-12-18  Kazu Hirata  <kazu@hxi.com>
+
+ 	* config/h8300/h8300.c: Fix comment typos.
+ 	* config/h8300/h8300.h: Fix comment formatting.
+
+ 2001-12-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+ 	* machmode.h (mode_name, mode_class, mode_size, mode_unit_size,
+ 	mode_bitsize, mode_mask_array, mode_wider_mode): Set array size in
+ 	declaration to NUM_MACHINE_MODES.
+ 	(mode_size, mode_unit_size): Set array type to unsigned char.
+ 	(mode_bitsize): Set array type to unsigned short.
+
+ 	* rtl.c (rtx_length): Set array type to unsigned char.
+ 	(rtx_length, rtx_name, rtx_format, rtx_class): Set array size to
+ 	NUM_RTX_CODE.
+ 	(mode_bitsize): Set array type to unsigned short.
+ 	(mode_size, mode_unit_size): Set array type to unsigned char.
+ 	(mode_name, mode_class, mode_bitsize, mode_size, mode_unit_size,
+ 	mode_wider_mode, mode_mask_array): Set array size to
+ 	NUM_MACHINE_MODES.
+
+ 	* rtl.h (rtx_length, rtx_name, rtx_format, rtx_class): Set array
+ 	size in declaration to NUM_RTX_CODE.
+


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]