From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 8971 invoked by alias); 20 Dec 2007 16:41:10 -0000 Received: (qmail 8962 invoked by uid 22791); 20 Dec 2007 16:41:09 -0000 X-Spam-Check-By: sourceware.org Received: from igw2.br.ibm.com (HELO igw2.br.ibm.com) (32.104.18.25) by sourceware.org (qpsmtpd/0.31) with ESMTP; Thu, 20 Dec 2007 16:40:55 +0000 Received: from mailhub3.br.ibm.com (mailhub3 [9.18.232.110]) by igw2.br.ibm.com (Postfix) with ESMTP id 5537317F659 for ; Thu, 20 Dec 2007 14:36:01 -0200 (BRDT) Received: from d24av01.br.ibm.com (d24av01.br.ibm.com [9.18.232.46]) by mailhub3.br.ibm.com (8.13.8/8.13.8/NCO v8.7) with ESMTP id lBKGeqUt4030626 for ; Thu, 20 Dec 2007 14:40:52 -0200 Received: from d24av01.br.ibm.com (loopback [127.0.0.1]) by d24av01.br.ibm.com (8.12.11.20060308/8.13.3) with ESMTP id lBKGepHC026161 for ; Thu, 20 Dec 2007 14:40:51 -0200 Received: from [9.8.15.190] ([9.8.15.190]) by d24av01.br.ibm.com (8.12.11.20060308/8.12.11) with ESMTP id lBKGeocd026137; Thu, 20 Dec 2007 14:40:50 -0200 Subject: Re: [patch 1/2] Recognize DFP types in casts. From: Thiago Jung Bauermann To: Daniel Jacobowitz Cc: gdb-patches@sourceware.org In-Reply-To: <20071220140840.GC7244@caradoc.them.org> References: <20071220054926.148275471@br.ibm.com> <20071220055106.979875076@br.ibm.com> <20071220140840.GC7244@caradoc.them.org> Content-Type: multipart/mixed; boundary="=-Du7ArxCpgWIdcKA5WJRj" Date: Thu, 20 Dec 2007 16:48:00 -0000 Message-Id: <1198168849.28757.4.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.12.2 X-IsSubscribed: yes 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 X-SW-Source: 2007-12/txt/msg00342.txt.bz2 --=-Du7ArxCpgWIdcKA5WJRj Content-Type: text/plain Content-Transfer-Encoding: 7bit Content-length: 808 On Thu, 2007-12-20 at 09:08 -0500, Daniel Jacobowitz wrote: > On Thu, Dec 20, 2007 at 03:49:27AM -0200, Thiago Jung Bauermann wrote: > > This should logically be part of the next patch, but the C parser is > > scary code and I don't feel very confident that this is indeed the > > right way to do it. It works, though, and introduces no regressions. > > Do you need parser changes for this? "unsigned" is a C keyword, and a > bit special (e.g. in combinations with "int"); but doesn't _Decimal32 > act syntactically like a TYPENAME? > > Try following language_lookup_primitive_type_by_name around to > c_language_arch_info (and cplus_language_arch_info). Thanks for the tip. The below implements this approach and works well. -- []'s Thiago Jung Bauermann Software Engineer IBM Linux Technology Center --=-Du7ArxCpgWIdcKA5WJRj Content-Disposition: attachment; filename=decimal-cast-support-alt.diff Content-Type: text/x-patch; name=decimal-cast-support-alt.diff; charset=utf-8 Content-Transfer-Encoding: 7bit Content-length: 3573 2007-12-20 Thiago Jung Bauermann * c-exp.y: Add DECFLOAT_KEYWORD, DECDOUBLE_KEYWORD and DECLONG_KEYWORD for Decimal Floating Point types. Add typebase rule for DECFLOAT_KEYWORD, DECDOUBLE_KEYWORD and DECLONG_KEYWORD. (yylex): Recognize _Decimal32, _Decimal64 and _Decimal128 keywords. * gdbtypes.c (gdbtypes_post_init): Change names of decimal float types to conform to C extension for decimal float. * c-lang.c (enum c_primitive_types): Add entries for Decimal Floating Point types. (enum cplus_primitive_types): Likewise. (c_language_arch_info): Add Decimal Floating Point builtin types to the primitive_type_vector. (cplus_language_arch_info): Likewise. Index: src-git/gdb/gdbtypes.c =================================================================== --- src-git.orig/gdb/gdbtypes.c 2007-12-19 16:23:29.000000000 -0200 +++ src-git/gdb/gdbtypes.c 2007-12-19 16:24:01.000000000 -0200 @@ -3122,15 +3122,15 @@ gdbtypes_post_init (struct gdbarch *gdba builtin_type->builtin_decfloat = init_type (TYPE_CODE_DECFLOAT, 32 / 8, 0, - "decimal float", (struct objfile *) NULL); + "_Decimal32", (struct objfile *) NULL); builtin_type->builtin_decdouble = init_type (TYPE_CODE_DECFLOAT, 64 / 8, 0, - "decimal double", (struct objfile *) NULL); + "_Decimal64", (struct objfile *) NULL); builtin_type->builtin_declong = init_type (TYPE_CODE_DECFLOAT, 128 / 8, 0, - "decimal long double", (struct objfile *) NULL); + "_Decimal128", (struct objfile *) NULL); /* Pointer/Address types. */ Index: src-git/gdb/c-lang.c =================================================================== --- src-git.orig/gdb/c-lang.c 2007-12-20 14:14:49.000000000 -0200 +++ src-git/gdb/c-lang.c 2007-12-20 14:18:28.000000000 -0200 @@ -358,6 +358,9 @@ enum c_primitive_types { c_primitive_type_long_double, c_primitive_type_complex, c_primitive_type_double_complex, + c_primitive_type_decfloat, + c_primitive_type_decdouble, + c_primitive_type_declong, nr_c_primitive_types }; @@ -387,6 +390,9 @@ c_language_arch_info (struct gdbarch *gd lai->primitive_type_vector [c_primitive_type_long_double] = builtin->builtin_long_double; lai->primitive_type_vector [c_primitive_type_complex] = builtin->builtin_complex; lai->primitive_type_vector [c_primitive_type_double_complex] = builtin->builtin_double_complex; + lai->primitive_type_vector [c_primitive_type_decfloat] = builtin->builtin_decfloat; + lai->primitive_type_vector [c_primitive_type_decdouble] = builtin->builtin_decdouble; + lai->primitive_type_vector [c_primitive_type_declong] = builtin->builtin_declong; } const struct language_defn c_language_defn = @@ -442,6 +448,9 @@ enum cplus_primitive_types { cplus_primitive_type_complex, cplus_primitive_type_double_complex, cplus_primitive_type_bool, + cplus_primitive_type_decfloat, + cplus_primitive_type_decdouble, + cplus_primitive_type_declong, nr_cplus_primitive_types }; @@ -490,6 +499,12 @@ cplus_language_arch_info (struct gdbarch = builtin->builtin_double_complex; lai->primitive_type_vector [cplus_primitive_type_bool] = builtin->builtin_bool; + lai->primitive_type_vector [cplus_primitive_type_decfloat] + = builtin->builtin_decfloat; + lai->primitive_type_vector [cplus_primitive_type_decdouble] + = builtin->builtin_decdouble; + lai->primitive_type_vector [cplus_primitive_type_declong] + = builtin->builtin_declong; } const struct language_defn cplus_language_defn = --=-Du7ArxCpgWIdcKA5WJRj--