From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 21078 invoked by alias); 31 May 2002 23:13:00 -0000 Mailing-List: contact gcc-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-owner@gcc.gnu.org Received: (qmail 21070 invoked from network); 31 May 2002 23:13:00 -0000 Received: from unknown (HELO cygnus.com) (205.180.83.203) by sources.redhat.com with SMTP; 31 May 2002 23:13:00 -0000 Received: from greed.delorie.com (cse.sfbay.redhat.com [205.180.230.236]) by runyon.cygnus.com (8.8.7-cygnus/8.8.7) with ESMTP id QAA06876 for ; Fri, 31 May 2002 16:12:58 -0700 (PDT) Received: (from dj@localhost) by greed.delorie.com (8.11.6/8.11.6) id g4VN7O126234; Fri, 31 May 2002 19:07:24 -0400 Date: Fri, 31 May 2002 22:44:00 -0000 Message-Id: <200205312307.g4VN7O126234@greed.delorie.com> From: DJ Delorie To: gcc@gcc.gnu.org Subject: output_func_start_profiler vs __bb_init_func X-SW-Source: 2002-05/txt/msg03053.txt.bz2 It looks like there is an inconsistency in how the call to __bb_init_func is created in profile.c. Note the return mode as if the function returned a GCOV_TYPE_SIZE int: output_func_start_profiler () { enum machine_mode mode = mode_for_size (GCOV_TYPE_SIZE, MODE_INT, 0); ... emit_library_call (gen_rtx_SYMBOL_REF (Pmode, "__bb_init_func"), LCT_NORMAL, mode, 1, table_address, Pmode); } But in libgcc2.c: void __bb_init_func (struct bb *blocks) On targets where 64-bit ints are returned by reference (like big structs), the call to __bb_init_func will be corrupted by the unexpected extra (zeroth) parameter. A simple replacement of mode -> VOIDmode seems to work. Does this sound right?