This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Jason's calls.c patch and spec2000 performance regression
- From: Jan Hubicka <jh at suse dot cz>
- To: jason at redhat dot com, gcc at gcc dot gnu dot org
- Date: Wed, 2 Jan 2002 14:26:03 +0100
- Subject: 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.
+