From patchwork Sun Apr 19 23:45:00 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick Palka X-Patchwork-Id: 462653 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id C767D14012F for ; Mon, 20 Apr 2015 09:45:22 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=pass reason="1024-bit key; unprotected key" header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b=F9xwq08x; dkim-adsp=none (unprotected policy); dkim-atps=neutral DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:cc:subject:date:message-id; q=dns; s=default; b=SQe/84vgTc6n D2SCV51VfFAiAY+AxdRhAq8NQZ0UV7BJo8wT3fUtoyYG9xKdeGYralfu0p3wRKYk Sa7b4mHKxJricaTI9ugCtZVyeI7dvhpLsENXwZVgSaalSN7owjBJP7qzipV+o2bD 0M9piY0MiBRq6WXAC+GKVCLoXkWPBdo= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:cc:subject:date:message-id; s=default; bh=gJ8BG3icCwYiiGvmAO Iik2FvXag=; b=F9xwq08xbq9+81q3UL4m26rC8Kkc5QO+wqn5GftaE9bJK6+7gx JMRFU12YQQ10VAucpPhM5JuRADY5Rrw24tWaHqbdr0rzIkqQtxF1hf+wUJ9K4lsW JWjYLEG7BZoKBm8x913Dm6+sWmFo0QbyvzyWwVPRpNP0HDexxnM+YWWmw= Received: (qmail 82008 invoked by alias); 19 Apr 2015 23:45:15 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 81992 invoked by uid 89); 19 Apr 2015 23:45:14 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.0 required=5.0 tests=AWL, BAYES_00, KAM_LAZY_DOMAIN_SECURITY, RCVD_IN_DNSWL_LOW autolearn=no version=3.3.2 X-HELO: mail-qk0-f173.google.com Received: from mail-qk0-f173.google.com (HELO mail-qk0-f173.google.com) (209.85.220.173) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Sun, 19 Apr 2015 23:45:13 +0000 Received: by qku63 with SMTP id 63so181732862qku.3 for ; Sun, 19 Apr 2015 16:45:11 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=KdONScKBj8+oCr3t2gwQVDI27QoqHpNHh5Nk/9pbR1E=; b=cjsIDYT7/I+ZPeFAXJn/ZWsiCP5xIdOLbtwyNOYsb7XCjfuwxyJerrr3SAkoAn3HEP Mso6WWhkYzpEobZmfO6Vx3YizSnCQPT4eqNcrth3de3iWoXgg/RU3nqhK/FDLJ2fCnXR ZBwLIlb6G8wVYgLYcO8YsucRKJquiH6Tat1tkndKJPLtaADOiTlozwws+PgLvzklOKq9 oR4KYkLhAXWlXQXLajj3fY1ebXOSVVyKf1fvzkv7AADRiSJRYvxGhwfObxf7X4hMOGbz x8rwrvZByBqH01hx1AziT95czv9ZzAIVzOUtZLRisFXBxUVCix9rquHlTMEjs/RE4m5D Ubxw== X-Gm-Message-State: ALoCoQlOjD9XRmCW8+hBSbIy1GRbSnqFhMdbFnb4lh62q3aiSDVd3nSnCJm4GVJY9+hqxCNOM+Go X-Received: by 10.140.20.150 with SMTP id 22mr14863809qgj.26.1429487111464; Sun, 19 Apr 2015 16:45:11 -0700 (PDT) Received: from localhost.localdomain (ool-4353acd8.dyn.optonline.net. [67.83.172.216]) by mx.google.com with ESMTPSA id 8sm13226523qhs.5.2015.04.19.16.45.09 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sun, 19 Apr 2015 16:45:10 -0700 (PDT) From: Patrick Palka To: gcc-patches@gcc.gnu.org Cc: jason@redhat.com, Patrick Palka Subject: [PATCH] Fix check for whether a function is a variadic function Date: Sun, 19 Apr 2015 19:45:00 -0400 Message-Id: <1429487100-12607-1-git-send-email-patrick@parcs.ath.cx> stdarg_p() apparently returns false for a variadic function that has no concrete parameters, e.g. "void foo (...);". This patch fixes this issue by removing the predicate's seemingly bogus "n != NULL_TREE" test. (Zero-parameter functions like "void bar (void);" will always have a void_type_node sentinel in their fntype's argument list.) OK to commit after testing? gcc/ChangeLog: * tree.c (stdarg_p): Return true for variadic functions with no concrete parameters. gcc/testsuite/ChangeLog: * g++.dg/variadic-main.C: New test. --- gcc/testsuite/g++.dg/variadic-main.C | 7 +++++++ gcc/tree.c | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/g++.dg/variadic-main.C diff --git a/gcc/testsuite/g++.dg/variadic-main.C b/gcc/testsuite/g++.dg/variadic-main.C new file mode 100644 index 0000000..b262bfd --- /dev/null +++ b/gcc/testsuite/g++.dg/variadic-main.C @@ -0,0 +1,7 @@ +/* { dg-options "-Wpedantic" } */ + +int +main (...) /* { dg-warning "declared as variadic function" } */ +{ + return 0; +} diff --git a/gcc/tree.c b/gcc/tree.c index 01860af..d388a1c 100644 --- a/gcc/tree.c +++ b/gcc/tree.c @@ -11518,7 +11518,7 @@ stdarg_p (const_tree fntype) n = t; } - return n != NULL_TREE && n != void_type_node; + return n != void_type_node; } /* Return true if TYPE has a prototype. */