This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
ABI breakage in 3.2.1, 3.3 and mainline
- From: Gerald Pfeifer <pfeifer at dbai dot tuwien dot ac dot at>
- To: gcc at gcc dot gnu dot org, Jan Hubicka <jh at suse dot cz>
- Cc: Gabriel Dos Reis <gdr at integrable-solutions dot net>, Alexander Kabaev <ak03 at gte dot com>, "David O'Brien" <obrien at freebsd dot org>
- Date: Thu, 30 Jan 2003 15:00:20 +0100 (CET)
- Subject: ABI breakage in 3.2.1, 3.3 and mainline
Jan,
unless I am completely mistaken, the following patch is responsible for an
ABI change I am seeing on FreeBSD (and apparently also Cygwin, Interix,
OpenBSD, NetBSD) on i386 platforms for GCC 3.2.1 as well as the 3.3 branch
and mainline:
Thu Oct 31 18:08:00 CET 2002 Jan Hubicka <jh@suse.cz>
* i386.c (override_options): Set defaults for flag_omit_frame_pointer,
flag_asynchronous_unwind_tables, flag_pcc_struct_return.
* i386.c (optimization_options): Set flag_omit_frame_pointer,
flag_asynchronous_unwind_tables, flag_pcc_struct_return to 2.
Do not clear -momit-leaf-frame-pointer when profiling.
(ix86_frame_pointer_required): Frame pointer is always required when
profiling.
http://gcc.gnu.org/ml/gcc-patches/2002-10/msg01887.html
What I believe is wrong with this patch is that it _completely_ ignores
DEFAULT_PCC_STRUCT_RETURN when setting flag_pcc_struct_return:
gcc/config/i386% grep DEFAULT_PCC_STRUCT_RETURN *.h | wc -l
19
gcc/config/i386% grep DEFAULT_PCC_STRUCT_RETURN i386.c | wc -l
0
This is most critical, and I believe this is a showstopper for GCC 3.2.2
(where I believe we ought to restore the ABI of GCC 3.2).
I created PR/9506 which also has a small testcase.
Gerald
--
Gerald "Jerry" pfeifer@dbai.tuwien.ac.at http://www.pfeifer.com/gerald/