]> git.pld-linux.org Git - packages/gcc.git/blob - gcc-g++-is-tree.patch
- release 15.
[packages/gcc.git] / gcc-g++-is-tree.patch
1 # DP: Work around memory corruption (just for 2.95.1)
2 # DP:  by Daniel Jacobowitz <dan@debian.org>
3
4 diff -rcp ../egcs/for-unstable/gcc-2.95/gcc/cp/cp-tree.h gcc-2.95/gcc/cp/cp-tree.h
5 *** ../egcs/for-unstable/gcc-2.95/gcc/cp/cp-tree.h      Thu Jun 24 09:16:17 1999
6 --- gcc-2.95/gcc/cp/cp-tree.h   Fri Aug  6 17:41:45 1999
7 *************** Boston, MA 02111-1307, USA.  */
8 *** 52,58 ****
9      4: BINFO_NEW_VTABLE_MARKED.
10         TREE_HAS_CONSTRUCTOR (in INDIRECT_REF, SAVE_EXPR, CONSTRUCTOR,
11             or FIELD_DECL).
12 !    5: Not used.
13      6: Not used.
14   
15      Usage of TYPE_LANG_FLAG_?:
16 --- 52,58 ----
17      4: BINFO_NEW_VTABLE_MARKED.
18         TREE_HAS_CONSTRUCTOR (in INDIRECT_REF, SAVE_EXPR, CONSTRUCTOR,
19             or FIELD_DECL).
20 !    5: CALL_EXPR_RTL_IS_TREE.
21      6: Not used.
22   
23      Usage of TYPE_LANG_FLAG_?:
24 *************** extern int flag_new_for_scope;
25 *** 1614,1619 ****
26 --- 1614,1622 ----
27   
28   /* Nonzero for _TYPE means that the _TYPE defines a destructor.  */
29   #define TYPE_HAS_DESTRUCTOR(NODE) (TYPE_LANG_FLAG_2(NODE))
30
31 + /* Nonzero for CALL_EXPR means that operands[2] is a cv_qualifier tree */
32 + #define CALL_EXPR_RTL_IS_TREE(NODE) (TREE_LANG_FLAG_5(NODE))
33   
34   #if 0
35   /* Nonzero for _TYPE node means that creating an object of this type
36 diff -rcp ../egcs/for-unstable/gcc-2.95/gcc/cp/lex.c gcc-2.95/gcc/cp/lex.c
37 *** ../egcs/for-unstable/gcc-2.95/gcc/cp/lex.c  Thu Jun 24 09:16:26 1999
38 --- gcc-2.95/gcc/cp/lex.c       Fri Aug  6 16:14:25 1999
39 *************** make_call_declarator (target, parms, cv_
40 *** 226,231 ****
41 --- 226,233 ----
42        tree target, parms, cv_qualifiers, exception_specification;
43   {
44     target = build_parse_node (CALL_EXPR, target, parms, cv_qualifiers);
45 +   if (cv_qualifiers != NULL_TREE)
46 +     CALL_EXPR_RTL_IS_TREE (target) = 1;
47     TREE_TYPE (target) = exception_specification;
48     return target;
49   }
50 *************** set_quals_and_spec (call_declarator, cv_
51 *** 235,240 ****
52 --- 237,246 ----
53        tree call_declarator, cv_qualifiers, exception_specification;
54   {
55     TREE_OPERAND (call_declarator, 2) = cv_qualifiers;
56 +   if (cv_qualifiers != NULL_TREE)
57 +     CALL_EXPR_RTL_IS_TREE (call_declarator) = 1;
58 +   else
59 +     CALL_EXPR_RTL_IS_TREE (call_declarator) = 0;
60     TREE_TYPE (call_declarator) = exception_specification;
61   }
62   \f
63 diff -rcp ../egcs/for-unstable/gcc-2.95/gcc/cp/tree.c gcc-2.95/gcc/cp/tree.c
64 *** ../egcs/for-unstable/gcc-2.95/gcc/cp/tree.c Thu Jun 24 09:16:27 1999
65 --- gcc-2.95/gcc/cp/tree.c      Fri Aug  6 16:08:20 1999
66 *************** mapcar (t, func)
67 *** 1887,1892 ****
68 --- 1887,1893 ----
69         /* tree.def says that operand two is RTL, but
70          make_call_declarator puts trees in there.  */
71         if (TREE_OPERAND (t, 2)
72 +         && CALL_EXPR_RTL_IS_TREE (t)
73           && TREE_CODE (TREE_OPERAND (t, 2)) == TREE_LIST)
74         TREE_OPERAND (t, 2) = mapcar (TREE_OPERAND (t, 2), func);
75         else
76
77 --bp/iNruPH9dso1Pn--
78
79
80 --  
81 To UNSUBSCRIBE, email to debian-toolchain-request@lists.debian.org
82 with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
This page took 0.05039 seconds and 3 git commands to generate.