From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 30842 invoked by alias); 14 Apr 2014 15:53:41 -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 30831 invoked by uid 89); 14 Apr 2014 15:53:41 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.7 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 X-HELO: mail-qa0-f54.google.com Received: from mail-qa0-f54.google.com (HELO mail-qa0-f54.google.com) (209.85.216.54) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-SHA encrypted) ESMTPS; Mon, 14 Apr 2014 15:53:39 +0000 Received: by mail-qa0-f54.google.com with SMTP id w8so8292661qac.27 for ; Mon, 14 Apr 2014 08:53:37 -0700 (PDT) MIME-Version: 1.0 X-Received: by 10.140.105.181 with SMTP id c50mr49154236qgf.17.1397490817745; Mon, 14 Apr 2014 08:53:37 -0700 (PDT) Received: by 10.140.102.105 with HTTP; Mon, 14 Apr 2014 08:53:37 -0700 (PDT) In-Reply-To: <20140414131050.GR4250@adacore.com> References: <20140414131050.GR4250@adacore.com> Date: Mon, 14 Apr 2014 15:53:00 -0000 Message-ID: Subject: Re: [patch] [gdb/testsuite] include a use of the definition of a type to cause clang to emit debug info From: Eric Christopher To: Joel Brobecker Cc: David Blaikie , gdb-patches Content-Type: text/plain; charset=UTF-8 X-IsSubscribed: yes X-SW-Source: 2014-04/txt/msg00258.txt.bz2 On Mon, Apr 14, 2014 at 6:10 AM, Joel Brobecker wrote: > On Sat, Apr 12, 2014 at 11:43:40PM -0700, David Blaikie wrote: >> Clang has an optimization that causes a the debug info to only include >> the declaration of a type if the type is referenced but never used in >> a context that requires a definition (eg: pointers are handed around >> but never deferenced). >> >> This patch introduces a variable to one test file to cause clang to >> emit the full definition of the type as well as fixing up a related >> typo in the test message of the associated expect file. >> >> Like the difference between GCC and Clang in the emission of unused >> static entities, I think this case is also a matter of degrees - both >> GCC and Clang implement other similar optimizations* to the one >> outlined here and the GDB test suite has managed to pass without >> disabling those optimizations in GCC and I hope it's suitable to do >> the same for Clang. >> >> Though admittedly I don't have much of the context of the history of >> the testsuite, its priorities/preferences when it comes to >> distinguishing testing compiler behavior versus debugger behavior, >> etc. >> >> * the one I know of involves dynamic types: both GCC and Clang only >> emit the debug info definition of such a type in any translation unit >> that emits the key function. This means in many contexts where a full >> definition is provided in the source only a declaration is provided in >> the debug info. > >> commit 1128f6fb45483d45668d09e0696f4a590334e0c4 >> Author: David Blaikie >> Date: Sat Apr 12 23:27:19 2014 -0700 >> >> Cause clang to emit the definition of a type used only by pointer >> >> gdb/testsuite/ >> * gdb.stabs/gdb11479.c: introduce a variable to cause clang to >> emit the full definition of type required by the test >> * gdb.stabs/gdb11479.exp: correct a typo in a test message > > The gdb11479.exp is obvious and can be pushed. The change to gdb11479.c, > on the other hand, changes the test, and I don't think we want that, > because I disagree with the outcome of Clang's optimization here. > If Clang doesn't want to fix the problem, best to just xfail the test > with Clang, and write a new one that provides the type definition as > Clang wants it. > Could you describe your objection here? In particular, as it relates to Dave's analysis of a similar gcc optimization. (Also a few people have been interested in implementing this same behavior in gcc). -eric