]>
Commit | Line | Data |
---|---|---|
d405059b | 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 |