From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 7047 invoked by alias); 3 Oct 2007 21:12:22 -0000 Received: (qmail 7037 invoked by uid 22791); 3 Oct 2007 21:12:21 -0000 X-Spam-Check-By: sourceware.org Received: from sibelius.xs4all.nl (HELO brahms.sibelius.xs4all.nl) (82.92.89.47) by sourceware.org (qpsmtpd/0.31) with ESMTP; Wed, 03 Oct 2007 21:12:17 +0000 Received: from brahms.sibelius.xs4all.nl (kettenis@localhost.sibelius.xs4all.nl [127.0.0.1]) by brahms.sibelius.xs4all.nl (8.14.1/8.14.0) with ESMTP id l93LCB0a021207; Wed, 3 Oct 2007 23:12:11 +0200 (CEST) Received: (from kettenis@localhost) by brahms.sibelius.xs4all.nl (8.14.1/8.14.1/Submit) id l93LCA5w001163; Wed, 3 Oct 2007 23:12:11 +0200 (CEST) Date: Wed, 03 Oct 2007 21:12:00 -0000 Message-Id: <200710032112.l93LCA5w001163@brahms.sibelius.xs4all.nl> From: Mark Kettenis To: drow@false.org CC: gdb-patches@sourceware.org In-reply-to: <20071003204110.GA29601@caradoc.them.org> (message from Daniel Jacobowitz on Wed, 3 Oct 2007 16:41:10 -0400) Subject: Re: [commit] Avoid builtin_type_int during type construction References: <20071003204110.GA29601@caradoc.them.org> 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-10/txt/msg00038.txt.bz2 > Date: Wed, 3 Oct 2007 16:41:10 -0400 > From: Daniel Jacobowitz > > I wanted to construct a new type during gdbarch initialization and > ran into two problems caused by the use of builtin_type_int, which > is now a macro referencing current_gdbarch. > > Every range type created uses builtin_type_int as the type of its > fields (which hold the range's endpoints). There's an unclear > FIXME here. The use of int isn't necessary; nothing ever looks at the > types of these fields, and the comments in gdbtypes.h suggest that > their types are unused. > > And every vector type is an array using int as its index type. Since > vectors are small arrays of constant size, there's no worry about this > type; int32 works just as well. > > Tested on x86_64-linux and committed. > > -- > Daniel Jacobowitz > CodeSourcery > > 2007-10-03 Daniel Jacobowitz > > * gdbtypes.c (create_range_type): Do not set TYPE_FIELD_TYPE for the > bounds. > (init_vector_type): Use builtin_type_int32. This must be wrong somehow; int isn't necessarily a 32-bit type. > Index: gdbtypes.c > =================================================================== > RCS file: /cvs/src/src/gdb/gdbtypes.c,v > retrieving revision 1.134 > diff -u -p -r1.134 gdbtypes.c > --- gdbtypes.c 5 Sep 2007 00:51:48 -0000 1.134 > +++ gdbtypes.c 3 Oct 2007 20:36:41 -0000 > @@ -705,8 +705,6 @@ create_range_type (struct type *result_t > memset (TYPE_FIELDS (result_type), 0, 2 * sizeof (struct field)); > TYPE_FIELD_BITPOS (result_type, 0) = low_bound; > TYPE_FIELD_BITPOS (result_type, 1) = high_bound; > - TYPE_FIELD_TYPE (result_type, 0) = builtin_type_int; /* FIXME */ > - TYPE_FIELD_TYPE (result_type, 1) = builtin_type_int; /* FIXME */ > > if (low_bound >= 0) > TYPE_FLAGS (result_type) |= TYPE_FLAG_UNSIGNED; > @@ -950,7 +948,7 @@ init_vector_type (struct type *elt_type, > > array_type = create_array_type (0, elt_type, > create_range_type (0, > - builtin_type_int, > + builtin_type_int32, > 0, n-1)); > make_vector_type (array_type); > return array_type; >