From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 16094 invoked by alias); 8 Aug 2003 00:07:16 -0000 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org Received: (qmail 16087 invoked by uid 48); 8 Aug 2003 00:07:16 -0000 Date: Fri, 08 Aug 2003 00:07:00 -0000 Message-ID: <20030808000716.16086.qmail@sources.redhat.com> From: "hoffman at cray dot com" To: gcc-bugs@gcc.gnu.org In-Reply-To: <20030806010309.11817.hoffman@cray.com> References: <20030806010309.11817.hoffman@cray.com> Reply-To: gcc-bugzilla@gcc.gnu.org Subject: [Bug target/11817] vargs produce 32 bit signed reference with -mcmodel=medium X-Bugzilla-Reason: CC X-SW-Source: 2003-08/txt/msg01091.txt.bz2 List-Id: PLEASE REPLY TO gcc-bugzilla@gcc.gnu.org ONLY, *NOT* gcc-bugs@gcc.gnu.org. http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11817 ------- Additional Comments From hoffman at cray dot com 2003-08-08 00:07 ------- -mcmodel changes the way that all references requiring relocation are coded, causing the assembler to produce the correct code. 'medium' mode introduces an intermediate 64 bit register to store the address the presence of varargs in a function on 64 bit causes a spill of the mmx registers, conditional on another register being nonzero (as defined in the x86_64 abi) this spill is handled by ix86_setup_incoming_varags in gcc/config/i386/i386.c this calls a pseudo-instruction, see_prologue_save_insn in gcc/config/i386/i386.md the generation of the computed target at the end of the jump doesn't follow the game generation rule as normal references, and forces the compiler to issue the signed 32 bit reference, which screws up our link