From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 12351 invoked by alias); 13 Apr 2014 07:11:51 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 12328 invoked by uid 89); 13 Apr 2014 07:11:49 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.3 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 X-HELO: mail-qc0-f179.google.com Received: from mail-qc0-f179.google.com (HELO mail-qc0-f179.google.com) (209.85.216.179) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-SHA encrypted) ESMTPS; Sun, 13 Apr 2014 07:11:47 +0000 Received: by mail-qc0-f179.google.com with SMTP id m20so7599171qcx.24 for ; Sun, 13 Apr 2014 00:11:45 -0700 (PDT) MIME-Version: 1.0 X-Received: by 10.224.3.5 with SMTP id 5mr10862648qal.45.1397373105265; Sun, 13 Apr 2014 00:11:45 -0700 (PDT) Received: by 10.140.30.74 with HTTP; Sun, 13 Apr 2014 00:11:45 -0700 (PDT) In-Reply-To: References: Date: Sun, 13 Apr 2014 07:11:00 -0000 Message-ID: Subject: Re: [patch] Fix unused static symbols so they're not dropped by clang From: David Blaikie To: Andrew Pinski Cc: Doug Evans , gdb-patches , Eric Christopher Content-Type: text/plain; charset=ISO-8859-1 X-IsSubscribed: yes X-SW-Source: 2014-04/txt/msg00246.txt.bz2 On Fri, Apr 11, 2014 at 9:00 PM, Andrew Pinski wrote: > On Fri, Apr 11, 2014 at 1:17 PM, David Blaikie wrote: >> On Fri, Apr 11, 2014 at 11:23 AM, Doug Evans wrote: >>> On Thu, Apr 10, 2014 at 11:51 PM, David Blaikie wrote: >>>> Several tests used file-static functions and variables that were not >>>> referenced by the code. Even at -O0, clang omits these entities at the >>>> frontend so the tests fail. >>>> >>>> Since it doesn't look like these tests needed this functionality for >>>> what they were testing, I've modified the variables/functions to >>>> either be non-static, or marked them with __attribute__((used)). >>>> >>>> If it's preferred that I use the attribute more pervasively, rather >>>> than just making the entities non-static, I can provide a patch for >>>> that (or some other preferred solution). There's certainly precedent >>>> for both (non-static entities and __attribute__((used)) in the >>>> testsuite already and much more of the former than the latter). >>>> >>>> I have commit-after-review access, so just looking for sign-off here. >>> >>> Yikes. >>> >>> This is becoming more and more painful (not your fault of course!). >>> I can imagine this being a never ending source of regressions. >>> >>> Does clang perchance have a -O0-and-yes-I-really-mean-O0 option? >> >> Sort of. It does have -femit-all-decls, which, though poorly named, >> causes clang to produce definitions for unused static entities and >> even unused inline functions (which GCC doesn't do). > > By default GCC does not keep unused inline functions but there is an > option for that -fkeep-inline-functions. Ah, good to know. My point was that the GDB test suite passes without enabling that flag for GCC and I think that's somewhat akin to having the suite passable without having to add -femit-all-decls for Clang. I realize, of course, that most GDB developers won't be running the test suite with Clang, but I'm happy to contribute patches when this comes up from time to time. It's certainly not a pervasive habit across the test suite to keep everything static - just this handful of tests happen to do it. But I'm open to whatever you folks think is the best approach - if that means Clang only passes the suite when passing particular flags, so be it. Perhaps there'd be a way we could build that knowledge into the testsuite itself so that GDB developers who want to use Clang don't have to duplicate those details locally. - David