From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 1416 invoked by alias); 17 Feb 2014 13:28:06 -0000 Mailing-List: contact gcc-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-owner@gcc.gnu.org Received: (qmail 1403 invoked by uid 89); 17 Feb 2014 13:28:05 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 X-HELO: mail-wg0-f42.google.com Received: from mail-wg0-f42.google.com (HELO mail-wg0-f42.google.com) (74.125.82.42) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-SHA encrypted) ESMTPS; Mon, 17 Feb 2014 13:28:04 +0000 Received: by mail-wg0-f42.google.com with SMTP id k14so2127940wgh.3 for ; Mon, 17 Feb 2014 05:28:01 -0800 (PST) MIME-Version: 1.0 X-Received: by 10.195.12.200 with SMTP id es8mr1657745wjd.77.1392643681372; Mon, 17 Feb 2014 05:28:01 -0800 (PST) Received: by 10.194.62.111 with HTTP; Mon, 17 Feb 2014 05:28:01 -0800 (PST) In-Reply-To: <20140217121542.GA17780@linux.vnet.ibm.com> References: <20140214085908.GA5228@linux.vnet.ibm.com> <20140217121542.GA17780@linux.vnet.ibm.com> Date: Mon, 17 Feb 2014 13:28:00 -0000 Message-ID: Subject: Re: Need help: Is a VAR_DECL type builtin or not? From: Richard Biener To: vogt@linux.vnet.ibm.com Cc: GCC Development Content-Type: text/plain; charset=ISO-8859-1 X-IsSubscribed: yes X-SW-Source: 2014-02/txt/msg00253.txt.bz2 On Mon, Feb 17, 2014 at 1:15 PM, Dominik Vogt wrote: > On Fri, Feb 14, 2014 at 02:40:44PM +0100, Richard Biener wrote: >> On Fri, Feb 14, 2014 at 9:59 AM, Dominik Vogt wrote: >> > Given a specific VAR_DECL tree node, I need to find out whether >> > its type is built in or not. Up to now I have >> > >> > tree tn = TYPE_NAME (TREE_TYPE (var_decl)); >> > if (tn != NULL_TREE && TREE_CODE (tn) == TYPE_DECL && DECL_NAME (tn)) >> > { >> > ... >> > } >> > >> > This if-condition is true for both, >> > >> > int x; >> > const int x; >> > ... >> > >> > and >> > >> > typedef int i_t; >> > i_t x; >> > const i_t x; >> > ... >> > >> > I need to weed out the class of VAR_DECLs that directly use built >> > in types. >> >> Try DECL_IS_BUILTIN. But I question how you define "builtin" here? > > Well, actually I'm working on the variable output function in > godump.c. At the moment, if the code comes across > > typedef char c_t > chat c1; > c_t c2; > > it emits > > type _c_t byte > var c1 byte > var c2 byte > > This is fine for c1, but for c2 it should really use the type: > > var c2 _c_t > > So the rule I'm trying to implement is: > > Given a Tree node that is a VAR_DECL, if its type is an "alias" > (defined with typedef/union/struct/class etc.), use the name of > the alias, otherwise resolve the type recursively until only > types built into the language are left. > > It's really only about the underlying data types (int, float, > _Complex etc.), not about storage classes, pointers, attributes, > qualifiers etc. > > Well, since godump.c already caches all declarations it has come > across, I could assume that these declarations are not built-in > and use that in the "rule" above. Not sure what GO presents us as location info, but DECL_IS_BUILTIN looks if the line the type was declared is sth "impossible" (reserved and supposed to be used for all types that do not have to be declared). Richard. > Ciao > > Dominik ^_^ ^_^ > > -- > > Dominik Vogt > IBM Germany >