From 04a2ecf7808fe3c8e79141f7dca30eaacc085a8e Mon Sep 17 00:00:00 2001 From: Jason Merrill Date: Wed, 15 Dec 1999 09:18:21 +0000 Subject: [PATCH] cp-tree.def (TEMPLATE_PARM_INDEX): Calculate size using sizeof (struct tree_common). * cp-tree.def (TEMPLATE_PARM_INDEX): Calculate size using sizeof (struct tree_common). From-SVN: r30949 --- gcc/cp/ChangeLog | 5 +++++ gcc/cp/cp-tree.def | 17 ++++++++++------- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 35a56903668..6bb2211b2d6 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +1999-12-15 Jason Merrill + + * cp-tree.def (TEMPLATE_PARM_INDEX): Calculate size using + sizeof (struct tree_common). + 1999-12-14 Jason Merrill * optimize.c (expand_call_inline): Set BLOCK_ABSTRACT_ORIGIN on the diff --git a/gcc/cp/cp-tree.def b/gcc/cp/cp-tree.def index 71c1d8d1ab5..70a41b5aafa 100644 --- a/gcc/cp/cp-tree.def +++ b/gcc/cp/cp-tree.def @@ -1,7 +1,7 @@ /* This file contains the definitions and documentation for the additional tree codes used in the GNU C++ compiler (see tree.def for the standard codes). - Copyright (C) 1987, 1988, 1990, 1993, 1997, 1998 Free Software Foundation, Inc. + Copyright (C) 1987,88,90,93,97-8,1999 Free Software Foundation, Inc. Hacked by Michael Tiemann (tiemann@cygnus.com) This file is part of GNU CC. @@ -125,12 +125,15 @@ DEFTREECODE (TEMPLATE_DECL, "template_decl", 'd', 0) the types of things; the ORIG_LEVEL is the level when we are worrying about instantiating things. */ DEFTREECODE (TEMPLATE_PARM_INDEX, "template_parm_index", 'x', - /* The addition of (sizeof(char*) - 1) in the next - expression is to ensure against the case where - sizeof(char*) does not evenly divide - sizeof(HOST_WIDE_INT). */ - 1 + ((3 * sizeof (HOST_WIDE_INT) + sizeof(char*) - 1) - / sizeof (char*))) + /* The addition of (sizeof(tree) - 1) in the next expression + is to handle the case when padding pushes us past an even + multiple of sizeof(tree). */ + /* We used to try to calculate this using + 1+3*sizeof(HOST_WIDE_INT), but that fails if alignment + makes it bigger. */ + ((sizeof (template_parm_index) - sizeof (struct tree_common)) + + sizeof (tree) - 1) + / sizeof (tree)) /* Index into a template parameter list. This parameter must be a type. The TYPE_FIELDS value will be a TEMPLATE_PARM_INDEX. */ -- 2.30.2