From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 32587 invoked by alias); 24 Jul 2002 12:17:25 -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 32580 invoked from network); 24 Jul 2002 12:17:22 -0000 Received: from unknown (HELO Cantor.suse.de) (213.95.15.193) by sources.redhat.com with SMTP; 24 Jul 2002 12:17:22 -0000 Received: from Hermes.suse.de (Charybdis.suse.de [213.95.15.201]) by Cantor.suse.de (Postfix) with ESMTP id E2DB314530; Wed, 24 Jul 2002 14:17:18 +0200 (MEST) X-Authentication-Warning: sykes.suse.de: schwab set sender to schwab@suse.de using -f To: Momchil Velikov Cc: gcc@gcc.gnu.org Subject: Re: PROMOTE_PROTOTYPES nonstandard ? References: <87n0shs7sa.fsf@fadata.bg> X-Yow: Now I'm being INVOLUNTARILY shuffled closer to the CLAM DIP with the BROKEN PLASTIC FORKS in it!! From: Andreas Schwab Date: Wed, 24 Jul 2002 12:16:00 -0000 In-Reply-To: <87n0shs7sa.fsf@fadata.bg> (Momchil Velikov's message of "24 Jul 2002 14:08:05 +0300") Message-ID: User-Agent: Gnus/5.090006 (Oort Gnus v0.06) Emacs/21.3.50 (ia64-suse-linux) MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-SW-Source: 2002-07/txt/msg01156.txt.bz2 Momchil Velikov writes: |> ISO/IEC 9899:1999 - 6.5.2.2 Function calls |> |> [#7] If the expression that denotes the called function has |> a type that does include a prototype, the arguments are |> implicitly converted, as if by assignment, to the types of |> the corresponding parameters, taking the type of each |> parameter to be the unqualified version of its declared |> type. The ellipsis notation in a function prototype |> declarator causes argument type conversion to stop after the |> last declared parameter. The default argument promotions |> are performed on trailing arguments. |> |> [#8] No other conversions are performed implicitly; |> |> gccint.texi |> `PROMOTE_PROTOTYPES' |> A C expression whose value is nonzero if an argument declared in a |> prototype as an integral type smaller than `int' should actually |> be passed as an `int'. |> |> Does that mean that targets, which #define PROMOTE_PROTOTYPES 1 |> (almost all) are non iso9899:1999 compliant ? No, because strictly compliant code cannot tell the difference. Andreas. -- Andreas Schwab, SuSE Labs, schwab@suse.de SuSE Linux AG, Deutschherrnstr. 15-19, D-90429 Nürnberg Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different."