|
|
1.1 ! root 1: Thu Nov 17 10:56:50 1994 Jason Merrill <[email protected]> ! 2: ! 3: * typeck2.c (build_m_component_ref): Check the basetype of the ! 4: member pointer against the main variant of the object type. ! 5: ! 6: Mon Nov 14 14:21:52 1994 Jason Merrill <[email protected]> ! 7: ! 8: * cvt.c (convert_to_reference): Make sure that the original expr ! 9: gets its type back when converting a reference. ! 10: ! 11: * method.c (build_overload_name): Clear numeric_outputed_need_bar here. ! 12: (build_decl_overload): Instead of here. ! 13: ! 14: Tue Nov 8 17:11:24 1994 Jason Merrill <[email protected]> ! 15: ! 16: * cvt.c (cp_convert): Don't build a TARGET_EXPR if we're not in a ! 17: function. ! 18: ! 19: * typeck.c (convert_for_initialization): Handle initialization from ! 20: a TARGET_EXPR. ! 21: ! 22: Sun Nov 6 01:34:24 1994 Jason Merrill ([email protected]) ! 23: ! 24: * pt.c (lookup_nested_type_by_name): Fix list-walking logic. ! 25: (tsubst): When replacing a TEMPLATE_TYPE_PARM, propagate ! 26: TYPE_READONLY and TYPE_VOLATILE from the argument. ! 27: (unify): When unifying with a TEMPLATE_TYPE_PARM, remove cv-quals ! 28: present in parm from arg. ! 29: (type_unification): Strip REFERENCE_TYPE from the argument type. ! 30: (unify): Don't strip REFERENCE_TYPE from the argument type. ! 31: ! 32: Sat Nov 5 22:42:15 1994 Greg McGary ([email protected]) ! 33: ! 34: * pt.c (do_type_instantiation): Check to see if there's a ! 35: IDENTIFIER_TEMPLATE on a class before calling ! 36: instantiate_member_templates(). ! 37: ! 38: Thu Nov 3 18:48:19 1994 Paul Eggert <[email protected]> ! 39: ! 40: * Makefile.in (spew.o, lex.o, pt.o): ! 41: Depend on $(srcdir)/parse.h, not parse.h. ! 42: ! 43: Sat Oct 29 07:18:52 1994 Richard Kenner ([email protected]) ! 44: ! 45: * g++.c (main): Cast arg to bzero to avoid warning. ! 46: ! 47: Tue Oct 25 13:37:41 1994 Jason Merrill ([email protected]) ! 48: ! 49: * call.c (convert_harshness): Check for TREE_UNSIGNED differences ! 50: after checking for integral conversions. ! 51: ! 52: Sun Oct 23 13:19:55 1994 Jason Merrill ([email protected]) ! 53: ! 54: * decl2.c: Declare flag_access_control. ! 55: (struct lang_f_options): Add access-control. ! 56: * expr.c (cplus_expand_expr, NEW_EXPR): Unset flag_access_control ! 57: for the call to expand_aggr_init to copy the object out of the ! 58: pcc_struct_return slot. ! 59: * search.c (compute_access): if (!flag_access_control) return ! 60: access_public. ! 61: ! 62: Fri Oct 21 00:32:54 1994 Jason Merrill ([email protected]) ! 63: ! 64: * decl.c (init_decl_processing): Use __pure_virtual for abort_fndecl ! 65: instead of abort, since the OSF/1 dynamic linker doesn't like to see ! 66: relocation entries for abort. ! 67: ! 68: * tree.c (array_type_nelts_total): Use sizetype, not ! 69: integer_type_node. ! 70: (array_type_nelts_top): Ditto. ! 71: ! 72: Mon Oct 17 18:03:15 1994 Jason Merrill ([email protected]) ! 73: ! 74: * decl.c (init_decl_processing): Make alloca a builtin. ! 75: ! 76: Mon Oct 17 15:56:11 1994 Mike Stump <[email protected]> ! 77: ! 78: * except.c (expand_start_catch_block): Make sure the false label ! 79: gets onto the permanent obstack, as it is used for the exception ! 80: table. ! 81: ! 82: Fri Oct 14 18:54:48 1994 Mike Stump <[email protected]> ! 83: ! 84: * class.c (modify_one_vtable): Since the DECL_CONTEXT of fndecl can ! 85: be set just below, use current_fndecl instead. ! 86: ! 87: Thu Oct 13 17:44:55 1994 Jason Merrill ([email protected]) ! 88: ! 89: * method.c (build_decl_overload): Set numeric_outputed_need_bar to 0. ! 90: ! 91: Wed Oct 12 13:27:57 1994 Jason Merrill ([email protected]) ! 92: ! 93: * lex.c (real_yylex): Use HOST_BITS_PER_WIDE_INT to determine the ! 94: bitmask for lexing character constants. ! 95: ! 96: * call.c (build_method_call): Disable code that tries to do tricky ! 97: stuff with a default parameter that is a constructor call, but ! 98: actually does other tricky stuff that breaks things. ! 99: ! 100: Wed Oct 12 16:14:01 1994 Benoit Belley <[email protected]> ! 101: ! 102: * decl.c (finish_enum): Disable code which forces enums to be signed, ! 103: since this conflicts with their use as bitfields. type_promotes_to ! 104: handles promotion of enums of underlying unsigned types to signed ! 105: integer types. ! 106: ! 107: Wed Oct 12 13:24:03 1994 Jason Merrill ([email protected]) ! 108: ! 109: * cvt.c (type_promotes_to): Also promote enums to long if ! 110: appropriate. ! 111: ! 112: * typeck.c (default_conversion): Don't expect type_promotes_to to ! 113: return a main variant. ! 114: ! 115: Wed Oct 12 12:19:45 1994 Jason Merrill ([email protected]) ! 116: ! 117: * call.c (build_scoped_method_call): Don't lose side effects in the ! 118: object expression when calling a non-existent destructor. ! 119: ! 120: Fri Sep 2 19:05:21 1994 Rohan Lenard ([email protected]) ! 121: ! 122: * call.c (build_scoped_method_call): Remove erroneous error message ! 123: when destructor call is written as a scoped call. ! 124: ! 125: Tue Oct 11 23:48:31 1994 Jason Merrill ([email protected]) ! 126: ! 127: * various: Cast pointer arguments to bzero and bcopy to char *. ! 128: ! 129: Tue Oct 11 19:34:32 1994 Mike Stump <[email protected]> ! 130: ! 131: * class.c (get_derived_offset): Added a type parameter to limit how ! 132: far up the CLASSTYPE_VFIELD_PARENT chain we search. ! 133: * class.c (modify_one_vtable, fixup_vtable_deltas): When forming the ! 134: offset to put into the vtable for the this parameter, make sure we ! 135: don't offset from a parent of the DECL_CONTEXT of the function. ! 136: ! 137: Mon Oct 10 00:56:53 1994 Jason Merrill ([email protected]) ! 138: ! 139: * lex.c (cons_up_default_function): Mark methods in a template class ! 140: as template instances. Store the values of interface_unknown and ! 141: interface_only for do_pending_inlines. ! 142: (do_pending_inlines): Use them. ! 143: ! 144: Sun Oct 9 02:42:29 1994 Jason Merrill ([email protected]) ! 145: ! 146: * method.c (do_build_copy_constructor): Handle anonymous unions. ! 147: (do_build_assign_ref): Ditto. ! 148: (largest_union_member): Move from lex.c. ! 149: ! 150: Wed Oct 5 13:44:41 1994 Jason Merrill ([email protected]) ! 151: ! 152: * call.c (build_overload_call_real): Don't immediately do ! 153: array->pointer conversion. ! 154: ! 155: * pt.c (type_unification): If not passing to a reference, strip ! 156: cv-quals. Also handle array->pointer conversion. ! 157: ! 158: Tue Oct 4 17:45:37 1994 Jason Merrill ([email protected]) ! 159: ! 160: * decl.c (grokdeclarator): Don't warn about applying const to a ! 161: const typedef or template type parameter. ! 162: ! 163: Mon Oct 3 15:02:41 1994 Jason Merrill ([email protected]) ! 164: ! 165: * decl.c (shadow_tag): Remove obsolete code for pushing tags and ! 166: dealing with exceptions. ! 167: ! 168: Sat Oct 1 21:42:18 1994 Jason Merrill ([email protected]) ! 169: ! 170: * init.c (resolve_offset_ref): Fix types used in resolving .* ! 171: expressions. ! 172: ! 173: Thu Sep 29 16:15:36 1994 Michael I Bushnell <[email protected]> ! 174: ! 175: * g++.c: Rework last change so it's done like collect.c (and ! 176: gcc.c). ! 177: ! 178: Wed Sep 28 19:19:01 1994 Brendan Kehoe ([email protected]) ! 179: ! 180: * except.c (register_exception_table): Use Pmode, not PTRmode. ! 181: ! 182: Wed Sep 14 10:17:27 1994 Michael I Bushnell <[email protected]> ! 183: ! 184: * g++.c: Include <sys/errno.h> in case `errno' is a macro ! 185: as permitted by ANSI C. ! 186: ! 187: Thu Sep 29 16:58:52 1994 Mike Stump <[email protected]> ! 188: ! 189: * typeck.c (c_expand_return): Use magic so the backend can fixup the ! 190: assignment into the return register, so cleanups won't clobber it. ! 191: ! 192: Thu Sep 29 13:08:50 1994 Jason Merrill ([email protected]) ! 193: ! 194: * method.c (hack_identifier): Don't call assemble_external for ! 195: template decls. ! 196: ! 197: * decl.c (finish_decl): Also end temporary allocation if the decl in ! 198: question has a type of error_mark_node. ! 199: ! 200: Wed Sep 28 21:45:00 1994 Mike Stump ([email protected]) ! 201: ! 202: * typeck.c (build_modify_expr): When optimizing ?: on lhs, make sure ! 203: that if the ?: was a reference type, that the subparts will be also. ! 204: ! 205: Wed Sep 28 16:14:04 1994 Brendan Kehoe ([email protected]) ! 206: ! 207: * except.c (register_exception_table): Use Pmode, not PTRmode. ! 208: ! 209: Fri Sep 23 13:54:27 1994 Jason Merrill ([email protected]) ! 210: ! 211: * lex.c (do_pending_inlines): Do method synthesis after the ! 212: pending_inlines have been reversed. ! 213: ! 214: Thu Sep 22 12:53:03 1994 Per Bothner ([email protected]) ! 215: ! 216: * decl2.c (finish_file): Fix Brendan's fix: Only call ! 217: register_exception_table if there is a non-empty exception table. ! 218: ! 219: Thu Sep 22 12:03:46 1994 Brendan Kehoe ([email protected]) ! 220: ! 221: * decl2.c (finish_file): Only do register_exception_table if ! 222: -fhandle-exceptions is being used. ! 223: ! 224: Wed Sep 21 19:01:51 1994 Per Bothner ([email protected]) ! 225: ! 226: * except.c (output_exception_table_entry): Simplify ! 227: by using assemble_integer. ! 228: (build_exception_table): Change to return a count. ! 229: Cleanup to use standard macros, instead of hard-wired ! 230: sparc asm format. Don't make __EXCEPTION_TABLE__ global. ! 231: (register_exception_table): New function. Generate call to builtin. ! 232: * decl2.c (finish_file): Call register_exception_table. ! 233: * cp-tree.h (build_exception_table): Fix prototype. ! 234: ! 235: Wed Sep 21 13:20:42 1994 Brendan Kehoe ([email protected]) ! 236: ! 237: * tree.c (break_out_calls): Don't try to duplicate the DECL_INITIAL. ! 238: ! 239: * decl2.c (delete_sanity): Give an error at trying to delete a ! 240: function. ! 241: ! 242: Wed Sep 21 11:47:10 1994 Jason Merrill ([email protected]) ! 243: ! 244: * lex.c (cons_up_default_function): Mark synthesized destructors ! 245: inline. ! 246: ! 247: * decl.c (duplicate_decls): Ignore redeclarations of wchar_t as ! 248: something other than __wchar_t, complaining if -pedantic and not in ! 249: a system header. ! 250: ! 251: Tue Sep 20 09:43:28 1994 Jason Merrill ([email protected]) ! 252: ! 253: * decl.c (xref_tag): Set up BINFO_INHERITANCE_CHAIN on base binfos ! 254: here. ! 255: ! 256: * typeck.c (build_modify_expr): Require complete type after checking ! 257: for error_mark_node. ! 258: ! 259: * call.c (build_method_call): Print parmtypes when complaining of ! 260: ambiguous call. ! 261: ! 262: * typeck.c (build_modify_expr): Handle assignment to array from ! 263: non-array. ! 264: ! 265: * decl.c (lookup_name_real): Deal with got_scope == error_mark_node. ! 266: ! 267: * call.c (build_method_call): Don't bother with the exact match. ! 268: ! 269: Mon Sep 19 00:51:39 1994 Jason Merrill ([email protected]) ! 270: ! 271: * init.c (expand_aggr_init): If we munge the type of the variable, ! 272: also munge the type of the initializer. ! 273: ! 274: * decl.c (grokdeclarator): Use <= when comparing to RID_LAST_MODIFIER. ! 275: (init_decl_processing): Push artificial declaration of wchar_t so ! 276: people don't have to declare it before they can use it. ! 277: ! 278: * error.c (cp_line_of): return lineno in lieu of 0. ! 279: ! 280: * typeck.c (convert_for_assignment): Handle conversion of pmfs to ! 281: int and bool. ! 282: (build_component_ref): Fold the COMPONENT_REF in case it can be ! 283: reduced. ! 284: ! 285: * typeck2.c (store_init_value): Don't pedwarn about non-constant ! 286: bracketed initializers for automatic variables. ! 287: ! 288: Sun Sep 18 10:12:12 1994 Jason Merrill ([email protected]) ! 289: ! 290: * error.c (dump_decl): Don't say `typedef enum foo foo'. ! 291: ! 292: * decl.c (start_decl): Don't set TREE_PUBLIC on template decls just ! 293: because they're affected by #pragma i/i. We'll deal with that when ! 294: they get instantiated. ! 295: ! 296: * typeck.c (build_unary_op): Clean up cruft in ADDR_EXPR case. ! 297: ! 298: * class.c (instantiate_type): Set TREE_CONSTANT on instantiated ! 299: ADDR_EXPRs if appropriate. ! 300: ! 301: * decl.c (build_ptrmemfunc_type): Unset IS_AGGR_TYPE on pmf types. ! 302: ! 303: * typeck.c (build_ptrmemfunc): Handle &overloaded_method as an ! 304: initializer properly. ! 305: * typeck2.c (digest_init): Ditto. ! 306: ! 307: * tree.c (cp_build_type_variant): Like c_build_type_variant, except ! 308: it uses build_cplus_array_type. ! 309: * *.c: Use cp_build_type_variant instead of c_build_type_variant. ! 310: ! 311: * pt.c (do_type_instantiation): Don't try to instantiate nested ! 312: enums. ! 313: ! 314: Tue Sep 13 10:56:58 1994 Jason Merrill ([email protected]) ! 315: ! 316: * cvt.c (build_up_reference): Handle preincrement and predecrement ! 317: properly. ! 318: ! 319: Tue Sep 13 09:51:59 1994 Brendan Kehoe ([email protected]) ! 320: ! 321: * decl.c (finish_decl): Only lay out the rtl for DECL if it is, in ! 322: fact, static. ! 323: ! 324: Mon Sep 12 14:40:30 1994 Brendan Kehoe ([email protected]) ! 325: ! 326: * decl.c (finish_decl): Lay out the rtl for DECL before doing ! 327: grok_reference_init, in case it's static. ! 328: ! 329: Mon Sep 12 12:45:38 1994 Jason Merrill ([email protected]) ! 330: ! 331: * class.c (finish_struct): Don't synthesize constructors if the ! 332: class has a field with the same name as the class. Don't die on ! 333: classes with no constructors or destructors. Don't die if the head ! 334: and tail of the class are in different files. ! 335: ! 336: * decl.c (grokdeclarator): Don't treat a function pointer field ! 337: with the same name as the class as a constructor. ! 338: ! 339: Fri Sep 9 13:17:00 1994 Jason Merrill ([email protected]) ! 340: ! 341: * typeck.c (build_c_cast): Pull constant values out of their ! 342: variables here. ! 343: ! 344: * decl.c (duplicate_decls): Only propagate DECL_CHAIN in ! 345: FUNCTION_DECLs and TEMPLATE_DECLs. ! 346: ! 347: Thu Sep 8 10:07:48 1994 Jason Merrill ([email protected]) ! 348: ! 349: * decl.c (duplicate_decls): Propagate DECL_CHAIN in all DECLs that ! 350: have it. ! 351: ! 352: * pt.c (unify): REALs and INTEGERs only unify with their own genus. ! 353: (instantiate_member_templates): Don't muck with DECL_EXTERNAL and ! 354: TREE_PUBLIC unless -fexternal-templates. ! 355: ! 356: Wed Sep 7 13:17:10 1994 Jason Merrill ([email protected]) ! 357: ! 358: * pt.c (do_type_instantiation): Call instantiate_member_templates. ! 359: Deal with specializations. ! 360: (tsubst): Don't stick the mangled name in DECL_NAME for function ! 361: instantiations. Don't push them, either. ! 362: ! 363: * decl2.c (grokfield): Move code for generating the ! 364: DECL_ASSEMBLER_NAME for static members from here. ! 365: * method.c (build_static_name): To here. ! 366: * decl.c (grokvardecl): Call build_static_name. ! 367: (duplicate_decls): Keep old DECL_ASSEMBLER_NAME. ! 368: ! 369: Mon Sep 5 12:49:18 1994 Jason Merrill ([email protected]) ! 370: ! 371: * call.c (build_method_call): if -Wsynth, warn when selecting ! 372: synthesized op= over user-supplied one cfront would select. ! 373: * decl2.c (lang_decode_option): Handle -Wsynth. ! 374: ! 375: Fri Sep 2 15:11:59 1994 Jason Merrill ([email protected]) ! 376: ! 377: * decl.c (finish_enum): Overhaul to fix several bugs. ! 378: (start_enum): Disable useless code. ! 379: ! 380: Thu Sep 1 16:04:54 1994 Jason Merrill ([email protected]) ! 381: ! 382: * typeck.c (c_expand_return): Warn about returning a reference to a ! 383: temporary. ! 384: (convert_arguments): Increment argument counter when using default ! 385: arguments, too. ! 386: ! 387: Wed Aug 31 14:29:22 1994 Jason Merrill ([email protected]) ! 388: ! 389: * decl.c (finish_decl): If the type of decl is error_mark_node, ! 390: don't bother trying to do anything. ! 391: ! 392: * typeck.c (convert_for_initialization): If the rhs contains a ! 393: constructor call, pretend the lhs type needs to be constructed. ! 394: ! 395: * init.c (expand_default_init): If we stick the object inside the ! 396: initializer, mark the initializer used. ! 397: ! 398: Tue Aug 30 13:50:18 1994 Jason Merrill ([email protected]) ! 399: ! 400: * method.c (build_assign_ref): return *this; ! 401: (build_assign_ref): Fix base assignment order. ! 402: (build_copy_constructor): Fix member init order. ! 403: ! 404: Mon Aug 29 13:54:39 1994 Brendan Kehoe ([email protected]) ! 405: ! 406: * g++.c (main): Remember to clear out SAW_SPECLANG after we see ! 407: its argument. ! 408: ! 409: Sat Aug 27 09:36:03 1994 Jason Merrill ([email protected]) ! 410: ! 411: * method.c (build_copy_constructor): Also copy virtual bases. ! 412: ! 413: Fri Aug 26 17:05:15 1994 Jason Merrill ([email protected]) ! 414: ! 415: * lex.c (do_pending_inlines): Clear out pending_inlines before doing ! 416: any synthesis. Also first set deja_vu on all pending_inlines. ! 417: ! 418: * method.c (build_assign_ref): Use build_member_call to invoke base ! 419: operator=, rather than build_modify_expr. And use ! 420: build_reference_type instead of TYPE_REFERENCE_TO. ! 421: (build_copy_constructor): Use TYPE_NESTED_NAME to identify the ! 422: basetype. ! 423: ! 424: * decl2.c (grokfield): Don't complain about undefined local class ! 425: methods. ! 426: ! 427: * class.c (finish_struct): Don't try to synthesize methods here. ! 428: * lex.c (do_pending_inlines): Instead, synthesize them here. ! 429: (init_lex): Initialize synth_obstack. ! 430: (cons_up_default_function): Stick synthesis request on ! 431: pending_inlines. ! 432: ! 433: Fri Aug 26 12:24:14 1994 Brendan Kehoe ([email protected]) ! 434: ! 435: * call.c (build_method_call) [PCC_STATIC_STRUCT_RETURN]: Also ! 436: accept an RTL_EXPR in what we're about to use for the instance, ! 437: since anything which would end up with pcc_struct_return set ! 438: inside cplus_expand_expr. ! 439: ! 440: * cp-tree.h (cons_up_default_function): Note change of prototype. ! 441: ! 442: Thu Aug 25 23:05:30 1994 Gerald Baumgartner ([email protected]) ! 443: ! 444: * class.c (finish_struct): Undid change from Aug 21 testing ! 445: CLASSTYPE_INTERFACE and CLASSTYPE_VTABLE_NEEDS_WRITING. ! 446: * parse.y (left_curly): Ditto, undid change from Aug 21. ! 447: * decl.c (xref_tag): Undid change from Aug 21, set ! 448: CLASSTYPE_INTERFACE correctly, and added comments. ! 449: ! 450: Thu Aug 25 00:36:31 1994 Jason Merrill ([email protected]) ! 451: ! 452: Rework approach to synthesized methods; don't go through the parser ! 453: anymore. ! 454: * class.c (finish_struct): Use new synthesis approach. ! 455: * lex.c (cons_up_default_function): Now just creates declaration, ! 456: not code. ! 457: (largest_union_member): #if 0 out. ! 458: (default_assign_ref_body): Ditto. ! 459: (default_copy_constructor_body): Ditto. ! 460: * method.c (build_default_constructor): New function to synthesize X(). ! 461: (build_copy_constructor): Synthesize X(X&). ! 462: (build_assign_ref): Synthesize X::operator=(X&). ! 463: (build_dtor): Synthesize ~X(). ! 464: ! 465: * error.c (cp_line_of): If we're dealing with an artificial ! 466: TYPE_DECL, look at the type instead. ! 467: ! 468: Wed Aug 24 11:11:50 1994 Jason Merrill ([email protected]) ! 469: ! 470: * init.c (sort_member_init): Check warn_reorder. ! 471: * decl2.c (lang_decode_option): Handle -W{no-,}reorder. ! 472: ! 473: * cp-tree.h (CLASSTYPE_SOURCE_LINE): New macro. ! 474: * error.c (cp_line_of): Use CLASSTYPE_SOURCE_LINE for aggregates. ! 475: * class.c (finish_struct): Set CLASSTYPE_SOURCE_LINE. ! 476: ! 477: Tue Aug 23 09:28:35 1994 Mike Stump ([email protected]) ! 478: ! 479: * error.c (dump_decl): Improve wording, so that error messages ! 480: dont't read template<, class foo>... ! 481: ! 482: Mon Aug 22 15:30:51 1994 Brendan Kehoe ([email protected]) ! 483: ! 484: * parse.y (label_colon): Also match a TYPENAME as a label name, ! 485: since they may have declared a class by that name but have also ! 486: tried to have a local label under the same name. ! 487: ! 488: * pt.c (coerce_template_parms): Call cp_error, not cp_error_at, ! 489: for the message so they know at what point it was instantiated. ! 490: ! 491: Sun Aug 21 23:07:35 1994 Gerald Baumgartner ([email protected]) ! 492: ! 493: * class.c (finish_struct): Move setting of CLASSTYPE_INTERFACE and ! 494: CLASSTYPE_VTABLE_NEEDS_WRITING for signatures up to left_curly time. ! 495: * decl.c (xref_tag): Move setting of CLASSTYPE_INTERFACE and ! 496: CLASSTYPE_VTABLE_NEEDS_WRITING for signatures down to left_curly time. ! 497: * parse.y (left_curly): New final resting place for setting ! 498: CLASSTYPE_INTERFACE and CLASSTYPE_VTABLE_NEEDS_WRITING for signatures. ! 499: ! 500: * class.c (finish_struct): Don't test for function/field name ! 501: conflicts in signatures, since all the fields are compiler-constructed. ! 502: ! 503: Fri Aug 19 14:04:47 1994 Kung Hsu ([email protected]) ! 504: ! 505: * method.c (build_overload_nested_name): in qualified name ! 506: mangling, the template with value instantiation will have numeric ! 507: at end and may mixed with the name length of next nested level. ! 508: Add a '_' in between. ! 509: * method.c (build_overload_name): ditto. ! 510: * method.c (build_overload_identifier): ditto. ! 511: ! 512: Thu Aug 18 16:24:43 1994 Mike Stump ([email protected]) ! 513: ! 514: * error.c (dump_decl): Handle NULL args. ! 515: ! 516: Thu Aug 18 12:48:09 1994 Mike Stump ([email protected]) ! 517: ! 518: * class.c (finish_struct): Move setting of CLASSTYPE_INTERFACE and ! 519: CLASSTYPE_VTABLE_NEEDS_WRITING up to left_curly time. ! 520: * decl.c (xref_tag): Move setting of CLASSTYPE_INTERFACE and ! 521: CLASSTYPE_VTABLE_NEEDS_WRITING down to left_curly time. ! 522: * parse.y (left_curly): New final resting place for setting ! 523: CLASSTYPE_INTERFACE and CLASSTYPE_VTABLE_NEEDS_WRITING. ! 524: ! 525: Thu Aug 11 11:32:42 1994 H.J. Lu ([email protected]) ! 526: ! 527: * g++.c (main): Only decrement "added" and set "library" to ! 528: NULL when "library" != NULL. ! 529: ! 530: Sat Aug 13 00:14:52 1994 Jason Merrill ([email protected]) ! 531: ! 532: * decl.c (grokdeclarator): Don't set TREE_PUBLIC on a function decl ! 533: just because its class has a known interface. ! 534: (decls_match): Deal with new format of template parms. ! 535: ! 536: * lex.c (cons_up_default_function): Don't play with TREE_PUBLIC and ! 537: DECL_EXTERNAL here. ! 538: ! 539: Fri Aug 12 01:55:15 1994 Jason Merrill ([email protected]) ! 540: ! 541: * decl.c (pushtag): SET_DECL_ARTIFICIAL on gratuitous typedefs. ! 542: (xref_defn_tag): Ditto. ! 543: (pushdecl): Only allow artificial typedefs to be shadowed. ! 544: ! 545: * init.c (emit_base_init): Pass the right binfos to ! 546: expand_aggr_init_1. ! 547: ! 548: * class.c (delete_duplicate_fields_1): Make it work right. ! 549: (finish_struct): Catch function/field name conflict. ! 550: ! 551: * decl2.c (check_classfn): Pass the function to cp_error, not just ! 552: the name. ! 553: ! 554: * init.c (sort_member_init): Warn when order of member initializers ! 555: does not match order of member declarations. ! 556: (emit_base_init): Call expand_aggr_init_1 with LOOKUP_PROTECT. ! 557: ! 558: * error.c (dump_expr): Handle lists of functions. ! 559: ! 560: * decl.c (start_function): #pragma interface only affects functions ! 561: that would otherwise be static. ! 562: (finish_decl): Don't warn about an unused variable if it has both ! 563: constructor and destructor, since the 'resource allocation is ! 564: initialization' idiom is relatively common. ! 565: ! 566: * typeck.c (comp_target_types): Don't handle TEMPLATE_TYPE_PARMs. ! 567: (comp_target_parms): Ditto. ! 568: (compparms): Never consider default parms. ! 569: (common_base_type): Don't choose a virtual baseclass if there is a ! 570: more derived class in common. ! 571: (build_conditional_expr): If pedantic, pedwarn about conversion to ! 572: common base in conditional expr. ! 573: ! 574: * class.c (instantiate_type): Handle template instantiation better. ! 575: ! 576: * typeck.c (convert_arguments): Don't try to get tricky and convert ! 577: to int directly when PROMOTE_PROTOTYPES is set, as it breaks ! 578: user-defined conversions. ! 579: ! 580: * lex.c (check_for_missing_semicolon): Also give error at end of ! 581: file. ! 582: ! 583: * call.c (build_method_call): Don't promote arrays to pointers here. ! 584: ! 585: * typeck.c (convert_arguments): Don't require the actual parameter ! 586: to be of a complete type if the formal parameter is a reference. ! 587: ! 588: Thu Aug 11 15:21:40 1994 Jason Merrill ([email protected]) ! 589: ! 590: * decl.c (grokdeclarator): Soften 'static' on member function error ! 591: to pedwarn. ! 592: ! 593: * init.c (build_new): Don't automatically save rval. ! 594: (build_offset_ref): Do field lookup with proper basetype_path. ! 595: ! 596: Thu Aug 11 12:46:54 1994 Brendan Kehoe ([email protected]) ! 597: ! 598: * errfn.c (cp_silent): Declare to mark when we should avoid ! 599: emitting warnings and errors. ! 600: (cp_error): Check it. ! 601: (cp_warning): Likewise. ! 602: (cp_pedwarn): Likewise. ! 603: (cp_compiler_error): Likewise. ! 604: (cp_error_at): Likewise. ! 605: (cp_warning_at): Likewise. ! 606: (cp_pedwarn_at): Likewise. ! 607: * call.c (compute_conversion_costs): Set CP_SILENT when we start ! 608: out, and make sure we turn it off before we leave. ! 609: ! 610: Thu Aug 11 00:02:54 1994 Jason Merrill ([email protected]) ! 611: ! 612: * decl2.c (grok_array_decl): Try computing *(A+B) if neither ! 613: argument is obviously an array. ! 614: ! 615: Wed Aug 10 15:32:04 1994 Jason Merrill ([email protected]) ! 616: ! 617: * typeck.c (c_expand_start_case): Do cleanups here. ! 618: ! 619: * parse.y (xcond): Do bool conversion here, too. ! 620: (simple_stmt, SWITCH case): Don't do cleanups here. ! 621: ! 622: * decl.c (duplicate_decls): Don't treat builtins that have been ! 623: explicitly declared specially. ! 624: ! 625: Tue Aug 9 01:16:09 1994 Jason Merrill ([email protected]) ! 626: ! 627: * tree.c (make_deep_copy): Support copying pointer, reference, ! 628: function, array, offset and method types. ! 629: ! 630: * decl.c (init_decl_processing): Mark exit and abort as ! 631: BUILT_IN_NONANSI so that duplicate_decls is kinder about ! 632: redeclaration. ! 633: (duplicate_decls): Don't give two errors for redeclaring a C ! 634: function with the same parms but a different return type. ! 635: ! 636: * parse.y (paren_cond_or_null): Do cleanup and bool conversion here. ! 637: (condition): Instead of here. ! 638: (simple_stmt, SWITCH case): Also do cleanup here. ! 639: ! 640: * decl2.c (finish_anon_union): Only break out FIELD_DECLs. ! 641: ! 642: * call.c (build_method_call): Don't throw away the side effects of ! 643: the object in a call to a non-existent constructor. ! 644: * parse.y (primary): Ditto. ! 645: ! 646: * method.c (build_decl_overload): Oop. ! 647: ! 648: * decl2.c (lang_decode_option): Deal with flag_no_nonansi_builtin, ! 649: warn about uselessness of specifying -fansi-overloading. ! 650: ! 651: * method.c (build_decl_overload): Treat any non-member new with one ! 652: parameter as __builtin_new. ! 653: ! 654: * decl.c (init_decl_processing): Setup built-in meanings of exit, ! 655: _exit and abort. ! 656: ! 657: Mon Aug 8 15:03:30 1994 Jason Merrill ([email protected]) ! 658: ! 659: * error.c (dump_readonly_or_volatile): Put a space between const and ! 660: volatile if both apply. ! 661: ! 662: * init.c (perform_member_init): Clean up after this initialization. ! 663: (emit_base_init): Clean up after each base init, not after all have ! 664: been done. ! 665: (expand_aggr_vbase_init_1): Clean up after this init. ! 666: ! 667: Sun Aug 7 14:55:05 1994 Jason Merrill ([email protected]) ! 668: ! 669: * call.c (build_method_call): Deal with destroying references. ! 670: ! 671: * parse.y (condition): Do bool_truthvalue_conversion here. ! 672: (paren_expr_or_null): And here. ! 673: (simple_if): Not here. ! 674: (simple_stmt): Or here. ! 675: ! 676: Sat Aug 6 22:29:45 1994 Jason Merrill ([email protected]) ! 677: ! 678: * parse.y (paren_expr_or_null): Wrap the expression in a ! 679: CLEANUP_POINT_EXPR. ! 680: (condition): Ditto. ! 681: ! 682: Sat Aug 6 19:46:37 1994 Rohan Lenard ([email protected]) ! 683: ! 684: * call.c (build_scoped_method_call): Fix error message when ! 685: destructor call refers to a nonexistent type. ! 686: ! 687: Sat Apr 16 22:43:30 1993 Gerald Baumgartner ([email protected]) ! 688: ! 689: * lex.h (rid): Deleted RID_RAISES, it's never used. ! 690: Moved RID_PUBLIC, RID_PRIVATE, RID_PROTECTED, RID_EXCEPTION, ! 691: RID_TEMPLATE and RID_SIGNATURE to the end of the enumeration, ! 692: they don't need to be touched in `grokdeclarator.' ! 693: (RID_LAST_MODIFIER): Defined macro to be RID_MUTABLE. ! 694: ! 695: * decl.c (grokdeclarator): Use RID_LAST_MODIFIER instead of ! 696: RID_MAX as loop limit for finding declaration specifiers. ! 697: ! 698: Sat Apr 3 21:59:07 1993 Gerald Baumgartner ([email protected]) ! 699: ! 700: * lex.c (debug_yytranslate): Moved to parse.y since it needs to ! 701: access `yytname,' which is static in parse.c. ! 702: ! 703: Fri Apr 2 23:36:57 1993 Gerald Baumgarnter ([email protected]) ! 704: ! 705: * cp-tree.h (GNU_xref_ref): Fixed typo in extern declaration, it ! 706: was `GNU_xref_def' instead of `GNU_xref_ref.' ! 707: ! 708: Fri Aug 5 14:20:16 1994 Jason Merrill ([email protected]) ! 709: ! 710: * pt.c (do_function_instantiation): Don't set TREE_PUBLIC and ! 711: DECL_EXTERNAL on 'extern' instantiations; wait until EOF to do that. ! 712: (do_type_instantiation): Ditto. ! 713: ! 714: * decl2.c (import_export_inline): Decides at EOF what an inline's ! 715: linkage should be. ! 716: (finish_file): Call it. ! 717: ! 718: * decl.c (start_function): Don't rely on the settings of TREE_PUBLIC ! 719: and DECL_EXTERNAL from do_*_instantiation. Only set ! 720: DECL_DEFER_OUTPUT on inlines whose linkage might actually change. ! 721: (finish_function): Use DECL_DEFER_OUTPUT to decide which inlines to ! 722: mark for later consideration, rather than DECL_FUNCTION_MEMBER_P. ! 723: ! 724: Fri Aug 5 01:12:20 1994 Mike Stump ([email protected]) ! 725: ! 726: * class.c (get_class_offset_1, get_class_offset): New routine to ! 727: find the offset of the class where a virtual function is defined, ! 728: from the complete type. ! 729: * class.c (modify_one_vtable, fixup_vtable_deltas): Use ! 730: get_class_offset instead of virtual_offset as get_class_offset will ! 731: always provide the right answer. ! 732: * tree.c (virtual_offset): Remove. It only ever worked some of the ! 733: time. ! 734: ! 735: Tue Aug 2 12:44:21 1994 Jason Merrill ([email protected]) ! 736: ! 737: * call.c (build_method_call): Put back unary_complex_lvalue call ! 738: that I thought was redundant. ! 739: ! 740: * typeck.c (c_expand_return): Fix a case I missed before. ! 741: ! 742: Sun Jul 31 17:54:02 1994 Jason Merrill ([email protected]) ! 743: ! 744: * pt.c (unify): Strip cv-quals from template type arguments (when ! 745: 'const T*' is matched to 'const char*', that does not mean that T is ! 746: 'const char'). ! 747: ! 748: Fri Jul 29 01:03:06 1994 Jason Merrill ([email protected]) ! 749: ! 750: * pt.c (do_type_instantiation): Instantiate nested TAGS, not ! 751: typedefs. Third time's the charm? ! 752: ! 753: * parse.y (template_parm): Support default template parms. ! 754: * pt.c (process_template_parm): Ditto. ! 755: (end_template_parm_list): Ditto. ! 756: (coerce_template_parms): Ditto. ! 757: (mangle_class_name_for_template): Ditto. ! 758: (push_template_decls): Ditto. ! 759: (unify): Ditto. ! 760: * method.c (build_overload_identifier): Ditto. ! 761: * error.c (dump_decl): Ditto. ! 762: ! 763: Wed Jul 27 17:47:00 1994 Jason Merrill ([email protected]) ! 764: ! 765: * pt.c (do_type_instantiation): Only instantiate nested *classes*. ! 766: ! 767: Tue Jul 26 13:22:40 1994 Jason Merrill ([email protected]) ! 768: ! 769: * search.c (note_debug_info_needed): Also emit debugging information ! 770: for the types of fields. ! 771: ! 772: Mon Jul 25 00:34:44 1994 Jason Merrill ([email protected]) ! 773: ! 774: * pt.c (lookup_template_class): Pass 'template' to ! 775: coerce_template_parms instead of 'in_decl', since it's a more ! 776: meaningful context. ! 777: ! 778: * typeck.c (c_expand_return): Make sure any cleanups for the return ! 779: expression get run. ! 780: (build_c_cast): Use CONVERT_EXPR for conversion to void. ! 781: ! 782: * pt.c (do_type_instantiation): Also instantiate nested types. ! 783: ! 784: * typeck.c (convert_for_assignment): Don't die when comparing ! 785: pointers with different levels of indirection. ! 786: ! 787: * decl.c (grokdeclarator): The sub-call to grokdeclarator for ! 788: class-local typedefs sets DECL_ARGUMENTS, so we need to clear it ! 789: out. ! 790: ! 791: * decl2.c (finish_anon_union): Don't die if the union has no ! 792: members. ! 793: ! 794: * decl.c (grokdeclarator): Undo changes to declspecs when we're done ! 795: so that 'typedef int foo, bar;' will work. ! 796: ! 797: * decl2.c (finish_file): Don't call expand_aggr_init for ! 798: non-aggregates. ! 799: ! 800: Mon Jul 25 00:03:10 1994 Teemu Torma ([email protected]) ! 801: ! 802: * decl.c (finish_function): We can't inline constructors and ! 803: destructors under some conditions with -fpic, but don't unset ! 804: DECL_INLINE. ! 805: ! 806: Mon Jul 25 00:03:10 1994 Jason Merrill ([email protected]) ! 807: ! 808: * typeck.c (build_object_ref): Make sure 'datum' is a valid object. ! 809: ! 810: Sun Jul 24 14:19:31 1994 Jason Merrill ([email protected]) ! 811: ! 812: * class.c (finish_struct): Don't set DECL_FIELD_BITPOS on ! 813: non-fields. ! 814: (finish_struct_methods): Use copy_assignment_arg_p. ! 815: ! 816: * cvt.c (cp_convert): If expr is an OFFSET_REF, resolve it instead ! 817: of giving an error. ! 818: ! 819: * typeck.c (build_binary_op_nodefault): Don't set result_type if we ! 820: don't know how to compare the operands. ! 821: ! 822: * decl.c (grokdeclarator): Avoid seg fault when someone uses '__op' ! 823: as a declarator-id in their program. Like the Linux headers do. ! 824: Arrgh. ! 825: ! 826: * tree.c (lvalue_p): Treat calls to functions returning objects by ! 827: value as lvalues again. ! 828: ! 829: * typeck.c (build_component_addr): Use convert_force to convert the ! 830: pointer in case the component type is also a private base class. ! 831: ! 832: * search.c (get_matching_virtual): Fix bogus warning of overloaded ! 833: virtual. ! 834: ! 835: * pt.c (overload_template_name): Set DECL_ARTIFICIAL on the created ! 836: TYPE_DECL to fix bogus shadowing warnings. ! 837: ! 838: Fri Jul 22 01:15:32 1994 Jason Merrill ([email protected]) ! 839: ! 840: * init.c (expand_aggr_init_1): const and volatile mismatches do not ! 841: prevent a TARGET_EXPR from initializing an object directly. ! 842: ! 843: Tue Jul 19 17:55:37 1994 Jason Merrill ([email protected]) ! 844: ! 845: * cvt.c (build_up_reference): Allow building up references to ! 846: `this', don't warn about making references to artificial variables ! 847: (like `this'). ! 848: ! 849: * tree.c (lvalue_p): `this' is not an lvalue. ! 850: ! 851: * call.c (build_method_call): Accept using a typedef name (or ! 852: template type parameter) for explicit destructor calls. ! 853: ! 854: Wed Jul 13 03:57:54 1994 Jason Merrill ([email protected]) ! 855: ! 856: * method.c (hack_identifier): Put back old code so lists of ! 857: non-functions will be handled properly. ! 858: ! 859: * cp-tree.h (TYPE_NEEDS_CONSTRUCTING): #if 0 out; this macro is now ! 860: defined in the language-independent tree.h. ! 861: ! 862: * tree.c (count_functions): Avoid bogus warning when compiling this ! 863: function. ! 864: ! 865: Mon Jul 11 18:37:20 1994 Jason Merrill ([email protected]) ! 866: ! 867: * decl.c (grok_reference_init): Always save the initializer of a ! 868: reference. ! 869: ! 870: Fri Jul 8 17:41:46 1994 Mike Stump ([email protected]) ! 871: ! 872: * decl.c (cplus_expand_expr_stmt): Wrap statement expressions inside ! 873: CLEANUP_POINT_EXPRs so that the stack slots can be reused. ! 874: (disabled for now) ! 875: ! 876: Fri Jul 8 12:59:38 1994 Jason Merrill ([email protected]) ! 877: ! 878: * method.c (hack_identifier): Fix for new overloading. ! 879: ! 880: * typeck.c (build_binary_op_nodefault): Don't mess with division by ! 881: zero. ! 882: ! 883: Fri Jul 8 13:20:28 1994 Gerald Baumgartner ([email protected]) ! 884: ! 885: * decl2.c (finish_file): Only call walk_sigtables, if ! 886: flag_handle_signatures is turned on, don't waste time otherwise. ! 887: ! 888: Fri Jul 8 02:27:41 1994 Jason Merrill ([email protected]) ! 889: ! 890: * decl.c (push_overloaded_decl): Don't create overloads of one when ! 891: shadowing a class type. ! 892: * typeck.c (build_x_function_call): Complain about overloads of one. ! 893: ! 894: * decl.c (grokdeclarator): Don't try to treat a char* as a tree. ! 895: (grokdeclarator): Fix setting of TREE_STATIC. ! 896: (start_decl): Clear DECL_IN_AGGR_P after calling duplicate_decls. ! 897: ! 898: Thu Jul 7 22:20:46 1994 Gerald Baumgartner ([email protected]) ! 899: ! 900: * cp-tree.h (walk_sigtables): Created extern declaration. ! 901: * decl2.c (walk_sigtables): Created function, patterned after ! 902: walk_vtables, even though we only need it to write out sigtables. ! 903: (finish_sigtable_vardecl): Created function. ! 904: (finish_vtable_vardecl): Changed 0 to NULL_PTR. ! 905: (finish_file): Call walk_sigtables. ! 906: ! 907: * sig.c (build_signature_table_constructor): Mark class member ! 908: function pointed to from signature table entry as addressable. ! 909: ! 910: Thu Jul 7 13:39:37 1994 Jason Merrill ([email protected]) ! 911: ! 912: * decl.c (start_decl): Check new decl of static member variable ! 913: against the declaration in the class here. ! 914: (grokvardecl): Instead of here. ! 915: ! 916: * class.c (prepare_fresh_vtable): Call import_export_vtable if not ! 917: -fvtable-thunks. ! 918: (build_vtable): Ditto. ! 919: ! 920: * decl2.c (import_export_vtable): Move logic for deciding the ! 921: interface of a template class from here. ! 922: (import_export_template): To here. ! 923: (finish_vtable_vardecl): Call import_export_template before ! 924: import_export_vtable. ! 925: ! 926: Wed Jul 6 20:25:48 1994 Mike Stump ([email protected]) ! 927: ! 928: * except.c (init_exception_processing): Setup interim_eh_hook to ! 929: call lang_interim_eh. ! 930: * except.c (do_unwind): Propagate throw object value across ! 931: stack unwinding. ! 932: * except.c (saved_throw_value): Used to hold the value of the object ! 933: being thrown. It is always a reference to the real value. ! 934: * except.c (expand_start_catch_block): Add handling for the ! 935: value of the exception object. ! 936: * except.c (expand_start_catch_block): Add handler for the handler, ! 937: so that throws inside the handler go to the outer block. ! 938: * except.c (expand_end_catch_block): Ditto. ! 939: * parse.y (handler_args): Use parm instead, as the other doesn't yet ! 940: handle references correctly. ! 941: ! 942: Wed Jul 6 17:55:32 1994 Per Bothner ([email protected]) ! 943: ! 944: * decl2.c (mark_vtable_entries): If -ftable-thunks, set the ! 945: vtable entry properly to abort. ! 946: ! 947: Tue Jul 5 14:07:54 1994 Jason Merrill ([email protected]) ! 948: ! 949: * typeck.c (build_binary_op_nodefault): Downgrade division by zero ! 950: errors to warnings. ! 951: ! 952: * call.c (build_overload_call_real): Handle fnname being a list of ! 953: functions. ! 954: * typeck.c (build_x_function_call): Pass list of functions to ! 955: build_overload_call, not just the name. ! 956: * tree.c (count_functions): Complain when called for invalid ! 957: argument. ! 958: ! 959: * decl.c (grokdeclarator): Fix settings of TREE_STATIC, TREE_PUBLIC ! 960: and DECL_EXTERNAL on static members and initialized const members. ! 961: * decl2.c (grokfield): Reflect this change. ! 962: ! 963: Fri Jul 1 09:35:51 1994 Jason Merrill ([email protected]) ! 964: ! 965: * parse.y (init): ANSI C++ does not forbid { }. ! 966: ! 967: Thu Jun 30 00:35:22 1994 Jason Merrill ([email protected]) ! 968: ! 969: * decl2.c (lang_decode_option): Set warn_nonvdtor along with -Wall. ! 970: warn_nonvdtor defaults to off. ! 971: ! 972: * class.c (instantiate_type): Use comptypes rather than relying on ! 973: types to satisfy ==. ! 974: ! 975: * decl.c (start_function): Set DECL_DEFER_OUTPUT on all inlines that ! 976: might be static. ! 977: ! 978: * tree.c (build_cplus_new): Never build WITH_CLEANUP_EXPRs. ! 979: ! 980: * decl.c (grok_reference_init): Deal with ADDR_EXPRs of TARGET_EXPRs. ! 981: ! 982: * cvt.c (cp_convert): Pass 0 to with_cleanup_p arg of ! 983: build_cplus_new. ! 984: ! 985: Wed Jun 29 22:31:09 1994 Jason Merrill ([email protected]) ! 986: ! 987: * decl2.c (finish_file): Maybe consider static inlines multiple ! 988: times, in case they reference each other. ! 989: ! 990: Tue Jun 28 11:58:38 1994 Gerald Baumgartner ([email protected]) ! 991: ! 992: * class.c (finish_struct): Don't `cons_up_default_function's ! 993: for signatures. ! 994: (finish_struct): Handle an empty method_vec correctly. ! 995: ! 996: * decl.c (grokdeclarator): Don't warn about a signature being ! 997: empty in a signature pointer declaration if we only saw a ! 998: forward declaration of the signature. Changed `warning's into ! 999: `cp_warning's. ! 1000: ! 1001: * sig.c (build_sigtable): Don't die if a null signature table ! 1002: constructor is returned. ! 1003: (build_signature_pointer_constructor): If the signature table ! 1004: constructor is null, the _sptr field is set to a null pointer ! 1005: and cast to the appropriate type. Make copies of all null ! 1006: pointers so that the type null_pointer_node doesn't get changed. ! 1007: (build_signature_table_constructor): Added comments. ! 1008: ! 1009: * sig.c (build_signature_pointer_constructor): Complain if we ! 1010: try to assign to/initialize a signature pointer/reference of ! 1011: an undefined signature. ! 1012: ! 1013: Mon Jun 27 14:05:16 1994 Gerald Baumgartner ([email protected]) ! 1014: ! 1015: * typeck2.c (store_init_value): Don't be pedantic about ! 1016: non-constant initializers of signature tables/pointers/references. ! 1017: ! 1018: Fri Jun 24 16:49:41 1994 Gerald Baumgartner ([email protected]) ! 1019: ! 1020: * decl.c (grokdeclarator): If we are grokking an opaque typedef ! 1021: in a signature, don't complain about it begin static. ! 1022: ! 1023: Wed Jun 29 16:44:45 1994 Mike Stump ([email protected]) ! 1024: ! 1025: Fixes a problem of the this pointer being wrong in virtual calls to ! 1026: methods that are not overridden in more derived classes. ! 1027: ! 1028: * class.c (fixup_vtable_delta): New routine. It will fixup the ! 1029: delta entries in vtables, wheever they need updating. ! 1030: * class.c (finish_struct): Call the new routine for all virtual ! 1031: bases, as they can have different offsets, than those used in base ! 1032: classes that we derive our vtable from. ! 1033: ! 1034: Tue Jun 28 23:49:28 1994 Jason Merrill ([email protected]) ! 1035: ! 1036: * typeck.c (build_binary_op): Use the types before default ! 1037: conversions in the error message. ! 1038: ! 1039: * *.c: Use c_build_type_variant instead of build_type_variant where ! 1040: the type might be an array. ! 1041: ! 1042: * call.c (build_method_call): Call build_type_variant and ! 1043: build_reference_type in the right order. ! 1044: * decl.c (record_builtin_type): Ditto. ! 1045: ! 1046: Wed Jun 29 16:58:53 1994 Jason Merrill ([email protected]) ! 1047: ! 1048: * call.c (build_method_call): Call build_type_variant and ! 1049: build_reference_type in the right order. ! 1050: * decl.c (record_builtin_type): Ditto. ! 1051: ! 1052: Tue Jun 28 23:49:28 1994 Jason Merrill ([email protected]) ! 1053: ! 1054: * typeck.c (build_binary_op): Use the types before default ! 1055: conversions in the error message. ! 1056: ! 1057: * *.c: Use c_build_type_variant instead of build_type_variant where ! 1058: the type might be an array. ! 1059: ! 1060: Sat Jun 25 11:50:54 1994 Jason Merrill ([email protected]) ! 1061: ! 1062: * cvt.c (convert_to_reference): Try UDC's before doing the ! 1063: reinterpret_cast thang, though. ! 1064: ! 1065: Fri Jun 24 01:24:01 1994 Jason Merrill ([email protected]) ! 1066: ! 1067: * typeck.c (c_expand_return): Don't USE the return value location ! 1068: after we've expanded the jump. ! 1069: ! 1070: * decl2.c (finish_file): Make sure DECL_SAVED_INSNS is not 0 before ! 1071: trying to write out an inline. ! 1072: ! 1073: * cvt.c (build_up_reference): Also do address adjustment when the ! 1074: target type uses MI. ! 1075: (convert_to_reference): Try UDCs only after built-in conversions. ! 1076: (build_type_conversion_1): Don't play games with the argument to the ! 1077: method. ! 1078: (build_type_conversion): #if 0 out code for binding to reference. ! 1079: ! 1080: Thu Jun 23 00:22:28 1994 Jason Merrill ([email protected]) ! 1081: ! 1082: * decl2.c (finish_file): Use TREE_SYMBOL_REFERENCED to decide ! 1083: whether to emit inlines. ! 1084: ! 1085: * decl.c (grokdeclarator): Set explicit_int for decls that just ! 1086: specify, say, 'long'. ! 1087: ! 1088: * init.c (do_friend): Do overload C functions (or call pushdecl, ! 1089: anyaway). ! 1090: ! 1091: Wed Jun 22 13:40:49 1994 Jason Merrill ([email protected]) ! 1092: ! 1093: * cvt.c (build_up_reference): Don't call readonly_error. ! 1094: (convert_to_reference): Propagate const and volatile from expr to ! 1095: its type. ! 1096: ! 1097: * tree.c (lvalue_p): Random CALL_EXPRs are not lvalues. ! 1098: ! 1099: * cvt.c (build_up_reference): Break out WITH_CLEANUP_EXPR when ! 1100: creating a temporary. ! 1101: (convert_to_reference): Lose excessive and incorrect trickiness. ! 1102: (cp_convert): Call build_cplus_new with with_cleanup_p set. ! 1103: ! 1104: * typeck2.c (build_functional_cast): Ditto. ! 1105: ! 1106: Tue Jun 21 17:38:38 1994 Jason Merrill ([email protected]) ! 1107: ! 1108: * decl.c (grokdeclarator): signed, unsigned, long and short all ! 1109: imply 'int'. ! 1110: ! 1111: * decl.c (grokdeclarator): Allow "this is a type" syntax. ! 1112: (grok_reference_init): Simplify and fix. ! 1113: ! 1114: Sun Jun 19 17:08:48 1994 Jason Merrill ([email protected]) ! 1115: ! 1116: * decl.c (grokdeclarator): pedwarn about a typedef that specifies no ! 1117: type. ! 1118: ! 1119: Sat Jun 18 04:16:50 1994 Jason Merrill ([email protected]) ! 1120: ! 1121: * decl.c (start_function): Move TREE_PUBLIC and DECL_EXTERNAL ! 1122: tinkering to after call to pushdecl. ! 1123: ! 1124: Fri Jun 17 14:48:28 1994 Jason Merrill ([email protected]) ! 1125: ! 1126: * call.c (build_method_call): Handle destructors for non-aggregate ! 1127: types properly. ! 1128: ! 1129: Thu Jun 16 16:48:05 1994 Jason Merrill ([email protected]) ! 1130: ! 1131: * call.c (build_method_call): Make sure that the name given for the ! 1132: destructor matches the constructor_name of the instance. ! 1133: ! 1134: * pt.c (do_function_instantiation): A non-extern instantiation ! 1135: overrides a later extern one. ! 1136: (do_type_instantiation): Ditto. ! 1137: ! 1138: Wed Jun 15 19:34:54 1994 Jason Merrill ([email protected]) ! 1139: ! 1140: * init.c (expand_aggr_init): Use TYPE_MAIN_VARIANT to get the ! 1141: unqualified array type. ! 1142: ! 1143: * cp-tree.h (EMPTY_CONSTRUCTOR_P): Tests whether NODE is a ! 1144: CONSTRUCTOR with no elements. ! 1145: ! 1146: * decl.c (various): Lose empty_init_node. ! 1147: (finish_decl): Use EMPTY_CONSTRUCTOR_P, do the empty CONSTRUCTOR ! 1148: thing depending on the value of DECL_COMMON instead of ! 1149: flag_conserve_space, do the empty CONSTRUCTOR thing for types that ! 1150: don't have constructors, don't treat a real empty CONSTRUCTOR ! 1151: specially. ! 1152: ! 1153: * typeck2.c (process_init_constructor): Don't treat empty_init_node ! 1154: specially. ! 1155: ! 1156: Wed Jun 15 19:05:25 1994 Mike Stump ([email protected]) ! 1157: ! 1158: * class.c (override_one_vtable): Don't forget to merge in an old ! 1159: overrider when we wanted to reuse a vtable, but couldn't. ! 1160: ! 1161: Wed Jun 15 15:03:16 1994 Jason Merrill ([email protected]) ! 1162: ! 1163: * decl.c (start_decl): Put statics in common again. ! 1164: ! 1165: * decl.c (grokdeclarator): Return NULL_TREE for an error rather than ! 1166: setting the type to error_mark_node. ! 1167: ! 1168: * typeck.c (build_modify_expr): Build up a COMPOUND_EXPR for enum ! 1169: bitfield assignments. ! 1170: ! 1171: Tue Jun 14 12:23:38 1994 Jason Merrill ([email protected]) ! 1172: ! 1173: * decl.c (grok_op_properties): Const objects can be passed by value. ! 1174: ! 1175: Mon Jun 13 03:10:59 1994 Jason Merrill ([email protected]) ! 1176: ! 1177: * decl2.c (import_export_vtable): Force implicit instantiations to ! 1178: be interface_only when -fno-implicit-templates. ! 1179: ! 1180: * decl.c (duplicate_decls): Redeclaring a class template name is an ! 1181: error. ! 1182: ! 1183: * pt.c (end_template_decl): Call GNU_xref_decl for class templates. ! 1184: * xref.c (GNU_xref_decl): Support templates. ! 1185: ! 1186: Sat Jun 11 17:09:05 1994 Jason Merrill ([email protected]) ! 1187: ! 1188: * decl.c (grok_op_properties): Split out checking for whether this ! 1189: function should suppress the default assignment operator. ! 1190: * decl2.c (grok_function_init): Ditto. ! 1191: (copy_assignment_arg_p): New function do do just that. ! 1192: Now considers virtual assignment operators that take a base as an ! 1193: argument to count as copy assignment operators. ! 1194: ! 1195: * search.c (dfs_debug_mark): Lose checks for DWARF_DEBUG and ! 1196: TREE_ASM_WRITTEN, as they are redundant. ! 1197: ! 1198: * pt.c (end_template_decl): Don't try to set DECL_CLASS_CONTEXT on a ! 1199: decl that has no LANG_SPECIFIC part. ! 1200: (do_type_instantiation): Force the debugging information for this ! 1201: type to be emitted. ! 1202: ! 1203: * decl.c (start_decl): Clear up uses of various types of templates ! 1204: (say sorry for static data members, rather than "invalid template"). ! 1205: (expand_static_init): Fix initialization of static data members of ! 1206: template classes. ! 1207: ! 1208: Fri Jun 10 00:41:19 1994 Jason Merrill ([email protected]) ! 1209: ! 1210: * decl.c (grokdeclarator): Set DECL_CONTEXT on static data members. ! 1211: ! 1212: * g++.c (main): Use -xc++-cpp-output for .i files. ! 1213: ! 1214: * pt.c (tsubst): Give meaningful error about declaring template for ! 1215: a copy constructor which was not declared in the class template. ! 1216: (do_type_instantiation): Explicit instantiation before the class ! 1217: template is an error. ! 1218: (instantiate_template): Don't die if tsubst returns error_mark_node. ! 1219: ! 1220: Thu Jun 9 19:04:59 1994 Jason Merrill ([email protected]) ! 1221: ! 1222: Don't synthesize the copy assignment operator if the one in a base ! 1223: class is pure virtual. ! 1224: * cp-tree.h (TYPE_HAS_ABSTRACT_ASSIGN_REF): New macro to indicate ! 1225: whether the type has a pure virtual copy assignment operator. ! 1226: * class.c (finish_base_struct): Don't generate the copy assignment ! 1227: operator if a base class has a pure virtual one. ! 1228: * decl.c (grok_op_properties): Add disabled code to set ! 1229: TYPE_HAS_ABSTRACT_ASSIGN_REF with comment pointing to where it is ! 1230: actually set. ! 1231: * decl2.c (grok_function_init): Set TYPE_HAS_ABSTRACT_ASSIGN_REF. ! 1232: ! 1233: * decl2.c (import_export_vtable): Always treat template ! 1234: instantiations as if write_virtuals >= 2, and treat implicit ! 1235: instantiations as external if -fno-implicit-templates. ! 1236: (finish_file): Output all pending inlines if ! 1237: flag_keep_inline_functions. ! 1238: ! 1239: Wed Jun 8 20:48:02 1994 Mike Stump ([email protected]) ! 1240: ! 1241: * tree.c (layout_vbasetypes): Align virtual base classes inside ! 1242: complete objects, so that we don't core dump on machines such as ! 1243: SPARCs when we access members that require larger than normal ! 1244: alignments, such as a double. Also, we bump up the total alignment ! 1245: on the complete type, as necessary. ! 1246: ! 1247: Wed Jun 8 16:18:14 1994 Jason Merrill ([email protected]) ! 1248: ! 1249: * gxxint.texi (Free Store): New section with code for examining ! 1250: cookie. ! 1251: (Limitations of g++): Remove operator delete entry, since it is no ! 1252: longer accurate. Fix access control entry. ! 1253: ! 1254: * typeck.c (build_unary_op): Pedwarn about taking the address of or ! 1255: incrementing a cast to non-reference type. ! 1256: (build_modify_expr): Use convert instead of convert_force again. ! 1257: ! 1258: * search.c (get_base_distance): Use IS_AGGR_TYPE_CODE to check for ! 1259: class type, not == RECORD_TYPE. ! 1260: ! 1261: * decl.c (grokdeclarator): Cope with grokfndecl returning NULL_TREE. ! 1262: ! 1263: * typeck2.c (report_case_error): #if 0 out. ! 1264: * lex.c (real_yylex): Lose RANGE. ! 1265: * parse.y: Ditto. ! 1266: ! 1267: Tue Jun 7 18:17:35 1994 Jason Merrill ([email protected]) ! 1268: ! 1269: * parse.y (simple_stmt, case ranges): Use ELLIPSIS instead of RANGE. ! 1270: ! 1271: Mon Jun 6 19:39:57 1994 Jason Merrill ([email protected]) ! 1272: ! 1273: * typeck.c (build_c_cast): Don't shortcut conversions to the same ! 1274: type. Don't replace consts with their values here, since that's now ! 1275: done in cp_convert. ! 1276: ! 1277: * cvt.c (cp_convert): When converting to bool, take ! 1278: integer_zero_node to false_node and all other INTEGER_CSTs to ! 1279: true_node. ! 1280: (build_type_conversion): Don't complain about multiple conversions ! 1281: to float if we're not really converting. ! 1282: ! 1283: Fri Jun 3 02:10:56 1994 Jason Merrill ([email protected]) ! 1284: ! 1285: Implement 'extern template class A<int>;' syntax for suppressing ! 1286: specific implicit instantiations. ! 1287: * cp-tree.h: Update prototypes for do_*_instantiation. ! 1288: * pt.c (do_pending_expansions): Don't compile 'extern' explicit ! 1289: instantiations. ! 1290: (do_function_instantiation): Set DECL_EXTERNAL on 'extern' explicit ! 1291: instantiations. ! 1292: (do_type_instantiation): Ditto. ! 1293: * parse.y (explicit_instantiation): Support 'extern template class ! 1294: A<int>;' syntax. ! 1295: * decl.c (start_function): Don't modify the settings of TREE_PUBLIC ! 1296: and DECL_EXTERNAL on explicit instantiations. ! 1297: ! 1298: * cvt.c (cp_convert): Replace constants with their values before ! 1299: converting. ! 1300: (cp_convert): Consistently use 'e' instead of 'expr'. ! 1301: ! 1302: Thu Jun 2 03:53:30 1994 Jason Merrill ([email protected]) ! 1303: ! 1304: * typeck2.c (build_x_arrow): Resolve OFFSET_REFs first. ! 1305: ! 1306: Wed Jun 1 18:57:35 1994 Jason Merrill ([email protected]) ! 1307: ! 1308: * typeck2.c (digest_init): Handle initializing a pmf with an ! 1309: overloaded method. ! 1310: * typeck.c (build_ptrmemfunc): Handle overloaded methods. ! 1311: ! 1312: * decl.c (pushtag): Use build_decl to make TYPE_DECLs. ! 1313: (xref_defn_tag): Ditto. ! 1314: * pt.c (process_template_parm): Ditto. ! 1315: (lookup_template_class): Ditto. ! 1316: (push_template_decls): Ditto. ! 1317: (instantiate_class_template): Ditto. ! 1318: (create_nested_upt): Ditto. ! 1319: * class.c (finish_struct): Don't try to set DECL_CLASS_CONTEXT on ! 1320: TYPE_DECLs. ! 1321: ! 1322: * typeck.c (convert_arguments): Make sure type is not NULL before ! 1323: checking its TREE_CODE. ! 1324: ! 1325: Wed Jun 1 17:40:39 1994 Mike Stump ([email protected]) ! 1326: ! 1327: * class.c (get_derived_offset): New routine. ! 1328: * class.c (finish_base_struct): Make sure we set BINFO_VTABLE and ! 1329: BINFO_VIRTUALS when we choose a new base class to inherit from. ! 1330: * class.c (modify_one_vtable): Use get_derived_offset to get the ! 1331: offset to the most base class subobject that we derived this binfo ! 1332: from. ! 1333: * class.c (finish_struct): Move code to calculate the ! 1334: DECL_FIELD_BITPOS of the vfield up, as we need might need it for ! 1335: new calls to get_derived_offset in modify_one_vtable. ! 1336: ! 1337: Wed Jun 1 16:50:59 1994 Jason Merrill ([email protected]) ! 1338: ! 1339: * init.c (build_member_call): Use build_pointer_type instead of ! 1340: TYPE_POINTER_TO. ! 1341: ! 1342: Wed Jun 1 11:11:15 1994 Brendan Kehoe ([email protected]) ! 1343: ! 1344: * decl.c (grokdeclarator): Make sure we have a DNAME set before we ! 1345: try to use it in an error. ! 1346: ! 1347: Wed Jun 1 09:48:49 1994 Mike Stump ([email protected]) ! 1348: ! 1349: * typeck.c (convert_arguments, convert_for_initialization): Don't ! 1350: strip NOP_EXPRs, when we are converting to a reference. ! 1351: ! 1352: Wed Jun 1 01:11:38 1994 Jason Merrill ([email protected]) ! 1353: ! 1354: * typeck.c (build_modify_expr): Don't dereference references when ! 1355: initializing them. ! 1356: ! 1357: * decl2.c (grokfield): Don't check for grokdeclarator returning ! 1358: error_mark_node any more. ! 1359: ! 1360: * decl.c (grokfndecl): Return NULL_TREE instead of error_mark_node. ! 1361: (start_method): Return void_type_node instead of error_mark_node. ! 1362: ! 1363: * typeck.c (build_modify_expr): Resolve offset refs earlier. ! 1364: ! 1365: Tue May 31 16:06:58 1994 Jason Merrill ([email protected]) ! 1366: ! 1367: * call.c (build_method_call): Resolve OFFSET_REFs in the object. ! 1368: ! 1369: * typeck.c (build_modify_expr): Dereference references before trying ! 1370: to assign to them. ! 1371: ! 1372: * call.c (build_method_call): Don't confuse type conversion ! 1373: operators with constructors. ! 1374: * typeck2.c (build_functional_cast): Just call build_c_cast if there ! 1375: was only one parameter. ! 1376: * method.c (build_typename_overload): Don't set ! 1377: IDENTIFIER_GLOBAL_VALUE on these identifiers. ! 1378: * decl.c (grok_op_properties): Warn about defining a type conversion ! 1379: operator that converts to a base class (or reference to it). ! 1380: * cvt.c (cp_convert): Don't try to use a type conversion operator ! 1381: when converting to a base class. ! 1382: (build_type_conversion_1): Don't call constructor_name_full on an ! 1383: identifier. ! 1384: * cp-tree.h (DERIVED_FROM_P): Should be self-explanatory. ! 1385: ! 1386: * decl.c (start_decl): Don't complain that error_mark_node is an ! 1387: incomplete type. ! 1388: (finish_decl): Check for type == error_mark_node. ! 1389: ! 1390: Mon May 30 23:38:55 1994 Jason Merrill ([email protected]) ! 1391: ! 1392: * decl.c (start_function): Set DECL_DEFER_OUTPUT on implicit ! 1393: instantiations and inline members. ! 1394: ! 1395: * spew.c (yylex): Set looking_for_template if the next token is a '<'. ! 1396: ! 1397: * lex.h: Declare looking_for_template. ! 1398: ! 1399: * decl.c (lookup_name_real): Use looking_for_template to arbitrate ! 1400: between type and template interpretations of an identifier. ! 1401: ! 1402: Sat May 28 04:07:40 1994 Jason Merrill ([email protected]) ! 1403: ! 1404: * pt.c (instantiate_template): Zero out p if we found a ! 1405: specialization. ! 1406: ! 1407: * decl.c (grokdeclarator): Elucidate warning. ! 1408: (grokdeclarator): If pedantic AND -ansi, complain about long long. ! 1409: ! 1410: Make explicit instantiation work reasonably. It is now appropriate ! 1411: to deprecate the use of -fexternal-templates. ! 1412: * pt.c (instantiate_template): Set DECL_TEMPLATE_SPECIALIZATION or ! 1413: DECL_IMPLICIT_INSTANTIATION on fndecl as appropriate. ! 1414: (end_template_instantiation): Reflect changes in USE_TEMPLATE ! 1415: semantics. ! 1416: (do_pending_expansions): if (!flag_implicit_templates) DECIDE(0); ! 1417: (do_function_instantiation): Don't set EXPLICIT_INST if ! 1418: flag_external_templates is set. Do set TREE_PUBLIC and DECL_EXTERN ! 1419: appropriately otherwise. ! 1420: (do_type_instantiation): Set interface info for class. Set ! 1421: TREE_PUBLIC and DECL_EXTERN for methods. Do none of this if ! 1422: flag_external_templates is set. ! 1423: * parse.y: Reflect changes in USE_TEMPLATE semantics. ! 1424: * decl2.c: New flag flag_implicit_templates determines whether or ! 1425: not implicit instantiations get emitted. This flag currently ! 1426: defaults to true, and must be true for -fexternal-templates to work. ! 1427: (finish_file): Consider flag_implement_inlines when ! 1428: setting DECL_EXTERNAL. Consider flag_implicit_templates when ! 1429: deciding whether or not to emit a static copy. ! 1430: * decl.c (start_function): Set TREE_PUBLIC and DECL_EXTERNAL ! 1431: properly for template instantiations. ! 1432: (start_method): Set DECL_IMPLICIT_INSTANTIATION on methods of a ! 1433: template class. ! 1434: * cp-tree.h (CLASSTYPE_USE_TEMPLATE): Change semantics. ! 1435: (DECL_USE_TEMPLATE): Parallel macro for FUNCTION and VAR_DECLs. ! 1436: (various others): Accessor macros for the above. ! 1437: ! 1438: Fri May 27 13:57:40 1994 Jason Merrill ([email protected]) ! 1439: ! 1440: * typeck.c (build_binary_op_nodefault): Division by constant zero is ! 1441: an error. ! 1442: ! 1443: Fri May 27 13:50:15 1994 Mike Stump ([email protected]) ! 1444: ! 1445: * class.c (override_one_vtable): Don't modify things we don't own. ! 1446: ! 1447: Fri May 27 01:42:58 1994 Jason Merrill ([email protected]) ! 1448: ! 1449: * decl.c (finish_decl): Don't postpone processing the initializer of ! 1450: a decl with DECL_EXTERNAL set, and do call rest_of_compilation for a ! 1451: PUBLIC const at toplevel. ! 1452: (grokdeclarator): pedwarn about initializing non-const or ! 1453: non-integral statics in the class body. ! 1454: ! 1455: * decl.c (pushtag): Don't try to set DECL_CLASS_CONTEXT on a ! 1456: TYPE_DECL. ! 1457: ! 1458: * call.c (convert_harshness): Dereference reference on rhs before ! 1459: proceeding, properly grok passing const things to non-const ! 1460: references. ! 1461: ! 1462: * typeck.c (build_unary_op): Soften error about taking the address ! 1463: of main() to a pedwarn. ! 1464: ! 1465: * lex.c (default_copy_constructor_body): Unambiguously specify base ! 1466: classes (i.e. A((const class ::A&)_ctor_arg) ). ! 1467: (default_assign_ref_body): Ditto. ! 1468: ! 1469: Thu May 26 13:13:55 1994 Gerald Baumgartner ([email protected]) ! 1470: ! 1471: * decl2.c (grokfield): Don't complain about local signature ! 1472: method declaration without definition. ! 1473: ! 1474: * call.c (convert_harshness): If `type' is a signature pointer ! 1475: and `parmtype' is a pointer to a signature, just return 0. We ! 1476: don't really convert in this case; it's a result of making the ! 1477: `this' parameter of a signature method a signature pointer. ! 1478: ! 1479: * call.c (build_method_call): Distinguish calling the default copy ! 1480: constructor of a signature pointer/reference from a signature ! 1481: member function call. ! 1482: ! 1483: Thu May 26 12:56:25 1994 Jason Merrill ([email protected]) ! 1484: ! 1485: * decl2.c (grokfield): Don't set TREE_PUBLIC on member function ! 1486: declarations. ! 1487: ! 1488: * decl.c (duplicate_decls): A previous function declaration as ! 1489: static overrides a subsequent non-static definition. ! 1490: (grokdeclarator): Don't set TREE_PUBLIC on inline method ! 1491: declarations. ! 1492: ! 1493: Wed May 25 14:36:38 1994 Jason Merrill ([email protected]) ! 1494: ! 1495: * decl.c (grokdeclarator): Handle initialization of static const ! 1496: members. ! 1497: (finish_decl): Ditto. ! 1498: ! 1499: * decl2.c (grokfield): Allow initialization of static const members ! 1500: even when pedantic. ! 1501: ! 1502: * decl2.c (grokfield): Deal with grokdeclarator returning ! 1503: error_mark_node. ! 1504: ! 1505: * decl.c (grok_ctor_properties): Return 0 for A(A) constructor. ! 1506: (grokfndecl): Check the return value of grok_ctor_properties. ! 1507: (start_method): Ditto. ! 1508: ! 1509: * parse.y (absdcl): Expand type_quals inline. ! 1510: ! 1511: Tue May 24 19:10:32 1994 Jason Merrill ([email protected]) ! 1512: ! 1513: * decl.c (pushtag): Use IS_AGGR_TYPE rather than checking for a ! 1514: RECORD_TYPE. ! 1515: ! 1516: Tue May 24 18:09:16 1994 Per Bothner ([email protected]) ! 1517: ! 1518: * cp-tree.h (VTABLE_NAME_FORMAT): If flag_vtable_thunks, ! 1519: always use "__vt_%s". ! 1520: * decl2.c (finish_vtable_vardecl): Don't consider abstract virtuals ! 1521: when looking for a "sentinal" method (to decide on emitting vtables). ! 1522: * decl2.c (finish_file): Scan all decls for thunks that need ! 1523: to be emitted. ! 1524: * decl2.c (finish_vtable_vardecl): Don't bother calling emit_thunk. ! 1525: * method.c (make_thunk): Use a more meaningful label. If there ! 1526: exists a matching top-level THUNK_DECL re-use it; otherwise ! 1527: create a new THUNK_DECL (and declare it). ! 1528: * method.c (emit_thunk): Make thunk external/public depending ! 1529: on the underlying method. ! 1530: ! 1531: Tue May 24 00:22:04 1994 Jason Merrill ([email protected]) ! 1532: ! 1533: * pt.c (tsubst): Use lookup_name_nonclass to find guiding decls, not ! 1534: lookup_name. ! 1535: ! 1536: * call.c (build_overload_call_real): Don't immediately pick a ! 1537: function which matches perfectly. ! 1538: ! 1539: * decl.c (grokdeclarator): Use c_build_type_variant for arrays. ! 1540: (grokdeclarator): Warn about, and throw away, cv-quals attached to a ! 1541: reference (like 'int &const j'). ! 1542: ! 1543: * typeck.c (convert_arguments): Don't mess with i for methods. ! 1544: * call.c (build_method_call): Pass the function decl to ! 1545: convert_arguments. ! 1546: ! 1547: * typeck.c (comp_ptr_ttypes_real): New function. Implements the ! 1548: checking for which multi-level pointer conversions are allowed. ! 1549: (comp_target_types): Call it. ! 1550: (convert_for_assignment): Check const parity on the ultimate target ! 1551: type, too. And make those warnings pedwarns. ! 1552: ! 1553: Mon May 23 14:11:24 1994 Jason Merrill ([email protected]) ! 1554: ! 1555: * error.c (dump_char): Use TARGET_* for character constants. ! 1556: ! 1557: Mon May 23 13:03:03 1994 Brendan Kehoe ([email protected]) ! 1558: ! 1559: * tree.c (debug_no_list_hash): Make static. ! 1560: ! 1561: * decl.c (decls_match): Say the types don't match if newdecl ends up ! 1562: with a null type, after we've checked if olddecl does. ! 1563: (pushdecl): Check if the decls themselves match before looking for ! 1564: an extern redeclared as static, to avoid inappropriate and incorrect ! 1565: warnings. ! 1566: ! 1567: Fri May 20 14:04:34 1994 Jason Merrill ([email protected]) ! 1568: ! 1569: * decl.c (grokdeclarator): Make warning about duplicate short, etc. ! 1570: a pedwarn. ! 1571: ! 1572: * typeck.c (build_c_cast): Casting to function or method type is an ! 1573: error. ! 1574: ! 1575: * class.c (finish_struct): Make warning for anonymous class with no ! 1576: instances a pedwarn. ! 1577: ! 1578: * Makefile.in (stamp-parse): Expect a s/r conflict. ! 1579: ! 1580: * typeck.c (build_modify_expr): pedwarn about using a non-lvalue ! 1581: cast as an lvalue. ! 1582: ! 1583: Thu May 19 12:08:48 1994 Jason Merrill ([email protected]) ! 1584: ! 1585: * cvt.c (type_promotes_to): Make sure bool promotes to int rather ! 1586: than unsigned on platforms where sizeof(char)==sizeof(int). ! 1587: ! 1588: Wed May 18 14:27:06 1994 Jason Merrill ([email protected]) ! 1589: ! 1590: * typeck.c (build_c_cast): Tack on a NOP_EXPR when casting to ! 1591: another variant. ! 1592: (build_modify_expr): Don't strip NOP_EXPRs, and don't get tricky ! 1593: and treat them as lvalues. ! 1594: ! 1595: * decl.c (shadow_tag): Do complain about forward declarations of ! 1596: enums and empty declarations. ! 1597: * parse.y: Don't complain about forward declarations of enums and ! 1598: empty declarations. ! 1599: ! 1600: * typeck.c (convert_for_assignment): Complain about changing ! 1601: the signedness of a pointer's target type. ! 1602: ! 1603: * parse.y (stmt): Move duplicated code for checking case values from ! 1604: here. ! 1605: * decl2.c (check_cp_case_value): To here. And add a call to ! 1606: constant_expression_warning. ! 1607: ! 1608: * typeck.c (convert_for_assignment): Don't complain about assigning ! 1609: a negative value to bool. ! 1610: ! 1611: * decl.c (init_decl_processing): Make bool unsigned. ! 1612: ! 1613: * class.c (finish_struct): Allow bool bitfields. ! 1614: ! 1615: Wed May 18 12:35:27 1994 Ian Lance Taylor ([email protected]) ! 1616: ! 1617: * Make-lang.in (c++.install-man): Get g++.1 from $(srcdir)/cp. ! 1618: ! 1619: Wed May 18 03:28:35 1994 Jason Merrill ([email protected]) ! 1620: ! 1621: * cvt.c (build_type_conversion): Lose special handling of ! 1622: truthvalues. ! 1623: ! 1624: * search.c (dfs_pushdecls): Improve shadowing warning. ! 1625: ! 1626: Tue May 17 13:34:46 1994 Jason Merrill ([email protected]) ! 1627: ! 1628: * init.c (build_delete): Throw away const and volatile on `this'. ! 1629: ! 1630: * decl.c (finish_enum): Put the constants in TYPE_VALUES again, ! 1631: rather than the enumerators. ! 1632: (pushtag): s/cdecl/c_decl/g ! 1633: ! 1634: Mon May 16 23:04:01 1994 Stephen R. van den Berg ([email protected]) ! 1635: ! 1636: * cp/typeck.c (common_type): Attribute merging. ! 1637: (comp_types): Utilise COMP_TYPE_ATTRIBUTES macro. ! 1638: ! 1639: * cp/parse.y: Revamp attribute parsing. ! 1640: ! 1641: Mon May 16 01:40:34 1994 Jason Merrill ([email protected]) ! 1642: ! 1643: * decl.c (shadow_tag): Also check for inappropriate use of auto and ! 1644: register. ! 1645: ! 1646: * method.c (build_overload_name): Clarify that the illegal case is a ! 1647: pointer or reference to array of unknown bound. ! 1648: ! 1649: * error.c (dump_type_prefix): Print references to arrays properly. ! 1650: ! 1651: * typeck.c (various): Be more helpful in pointer ! 1652: comparison diagnostics. ! 1653: ! 1654: * tree.c (lvalue_p): MODIFY_EXPRs are lvalues again. Isn't this ! 1655: fun? ! 1656: ! 1657: * parse.y: Also catch an error after valid stmts. ! 1658: ! 1659: * search.c (dfs_init_vbase_pointers): Don't abort because `this' is ! 1660: const. ! 1661: ! 1662: * typeck.c (convert_for_initialization): If call to ! 1663: convert_to_reference generated a diagnostic, print out the parm ! 1664: number and function decl if any. ! 1665: ! 1666: * errfn.c (cp_thing): Check atarg1 to determine whether or not we're ! 1667: specifying a line, not atarg. ! 1668: ! 1669: * tree.c (build_cplus_method_type): Always make `this' const. ! 1670: ! 1671: * decl2.c (grokclassfn): If -fthis-is-variable and this function is ! 1672: a constructor or destructor, make `this' non-const. ! 1673: ! 1674: * typeck.c (build_modify_expr): Don't warn specially about ! 1675: assignment to `this' here anymore, since it will be caught by the ! 1676: usual machinery. ! 1677: ! 1678: * various: Disallow specific GNU extensions (variable-size arrays, ! 1679: etc.) when flag_ansi is set, not necessarily when pedantic is set, ! 1680: so that people can compile with -pedantic-errors for tighter const ! 1681: checking and such without losing desirable extensions. ! 1682: ! 1683: * typeck2.c (build_functional_cast): Call build_method_call with ! 1684: LOOKUP_PROTECT. ! 1685: (process_init_constructor): Only process FIELD_DECLs. ! 1686: ! 1687: * decl.c (finish_decl): Also force static consts with no explicit ! 1688: initializer that need constructing into the data segment. ! 1689: ! 1690: * init.c (build_delete): Undo last patch, as it interferes with ! 1691: automatic cleanups. ! 1692: ! 1693: Sat May 14 01:59:31 1994 Jason Merrill ([email protected]) ! 1694: ! 1695: * call.c, class.h, cp-tree.h, cvt.c, decl2.c: Lose old overloading ! 1696: code. ! 1697: ! 1698: * init.c (build_delete): pedwarn about using plain delete to delete ! 1699: an array. ! 1700: ! 1701: Fri May 13 16:45:07 1994 Jason Merrill ([email protected]) ! 1702: ! 1703: * typeck.c (comp_target_types): Be more helpful in contravariance ! 1704: warnings, and make them pedwarns. ! 1705: ! 1706: * decl.c (grokdeclarator): Use decl_context to decide whether or not ! 1707: this is an access declaration. ! 1708: ! 1709: * class.c (finish_struct_bits): Set TYPE_HAS_INT_CONVERSION if it ! 1710: has a conversion to enum or bool, too. ! 1711: ! 1712: Fri May 13 16:31:27 1994 Mike Stump ([email protected]) ! 1713: ! 1714: * method.c (emit_thunk): Make declaration for ! 1715: current_call_is_indirect local (needed for hppa). ! 1716: ! 1717: Fri May 13 16:16:37 1994 Jason Merrill ([email protected]) ! 1718: ! 1719: * pt.c (uses_template_parms): Grok BOOLEAN_TYPE. ! 1720: (tsubst): Ditto. ! 1721: ! 1722: Fri May 13 16:23:32 1994 Mike Stump ([email protected]) ! 1723: ! 1724: * pt.c (tsubst): If there is already a function for this expansion, ! 1725: use it. ! 1726: * pt.c (instantiate_template): Ditto. ! 1727: ! 1728: Fri May 13 10:30:42 1994 Brendan Kehoe ([email protected]) ! 1729: ! 1730: * parse.y (implicitly_scoped_stmt, simple_stmt case): Use ! 1731: kept_level_p for MARK_ENDS argument to expand_end_bindings, to avoid ! 1732: generating debug info for unemitted symbols on some systems. ! 1733: ! 1734: * cp-tree.h (build_static_cast, build_reinterpret_cast, ! 1735: build_const_cast): Add declarations. ! 1736: ! 1737: Fri May 13 09:50:31 1994 Mike Stump ([email protected]) ! 1738: ! 1739: * search.c (expand_indirect_vtbls_init): Fix breakage from Apr 27 ! 1740: fix. We now try get_binfo, and if that doesn't find what we want, ! 1741: we go back to the old method, which still sometimes fails. ! 1742: ! 1743: Fri May 13 01:43:18 1994 Jason Merrill ([email protected]) ! 1744: ! 1745: * parse.y (initdcl): Call cplus_decl_attributes on the right ! 1746: variable. ! 1747: * decl2.c (cplus_decl_attributes): Don't call decl_attributes for ! 1748: void_type_node. ! 1749: ! 1750: * typeck.c (build_binary_op_nodefault): Change result_type for ! 1751: comparison ops to bool. ! 1752: (build_binary_op): Convert args of && and || to bool. ! 1753: * cvt.c (build_default_binary_type_conversion): Convert args of && ! 1754: and || to bool. ! 1755: (build_default_unary_type_conversion): Convert arg of ! to bool. ! 1756: (type_promotes_to): bool promotes to int. ! 1757: ! 1758: Fri May 13 01:43:18 1994 Mike Stump ([email protected]) ! 1759: ! 1760: Implement the new builtin `bool' type. ! 1761: * typeck.c (build_binary_op_nodefault): Convert args of && and || to ! 1762: bool. ! 1763: (build_unary_op): Convert arg of ! to bool. ! 1764: * parse.y: Know true and false. Use bool_truthvalue_conversion. ! 1765: * method.c (build_overload_value): Know bool. ! 1766: (build_overload_name): Ditto. ! 1767: * lex.c (init_lex): Set up RID_BOOL. ! 1768: * gxx.gperf: Add bool, true, false. ! 1769: * error.c (*): Know bool. ! 1770: * decl.c (init_decl_processing): Set up bool, true, false. ! 1771: * cvt.c (cp_convert): Handle conversion to bool. ! 1772: (build_type_conversion): Ditto. ! 1773: * *.c: Accept bool where integers and enums are accepted (use ! 1774: INTEGRAL_CODE_P macro). ! 1775: ! 1776: Thu May 12 19:13:54 1994 Richard Earnshaw ([email protected]) ! 1777: ! 1778: * g++.c: Use #ifdef for __MSDOS__, not #if. ! 1779: ! 1780: Thu May 12 18:05:18 1994 Mike Stump ([email protected]) ! 1781: ! 1782: * decl2.c (lang_f_options): Handle -fshort-temps. -fshort-temps ! 1783: gives old behavior , and destroys temporaries earlier. Default ! 1784: behavior now conforms to the ANSI working paper. ! 1785: ! 1786: Thu May 12 14:45:35 1994 Jason Merrill ([email protected]) ! 1787: ! 1788: * typeck.c (build_modify_expr): Understand MODIFY_EXPR as an lvalue. ! 1789: Use convert_force to convert the result of a recursive call when we ! 1790: are dealing with a NOP_EXPR. Don't automatically wrap MODIFY_EXPRs ! 1791: in COMPOUND_EXPRs any more. ! 1792: (various): Lose pedantic_lvalue_warning. ! 1793: (unary_complex_lvalue): Understand MODIFY_EXPR. ! 1794: ! 1795: * cvt.c (convert_to_reference): Allow DECL to be error_mark_node if ! 1796: we don't know what we're initializing. ! 1797: ! 1798: Wed May 11 01:59:36 1994 Jason Merrill ([email protected]) ! 1799: ! 1800: * cvt.c (convert_to_reference): Modify to use convtype parameter. ! 1801: Only create temporaries when initializing a reference, not when ! 1802: casting. ! 1803: (cp_convert): New main function. ! 1804: (convert): Call cp_convert. ! 1805: * cvt.c, decl.c, typeck.c: Fix calls to convert_to_reference. ! 1806: * cp-tree.h (CONV_*): New constants used by conversion code for ! 1807: selecting conversions to perform. ! 1808: ! 1809: * tree.c (lvalue_p): MODIFY_EXPRs are no longer lvalues. ! 1810: ! 1811: * typeck.c (build_{static,reinterpret,const_cast): Stubs that just ! 1812: call build_c_cast. ! 1813: * parse.y: Add {static,reinterpret,const}_cast. ! 1814: * gxx.gperf: Ditto. ! 1815: ! 1816: * typeck.c (common_type): Allow methods with basetypes of different ! 1817: UPTs. ! 1818: (comptypes): Deal with UPTs. ! 1819: (build_modify_expr): Wrap all MODIFY_EXPRs in a COMPOUND_EXPR. ! 1820: ! 1821: * pt.c (end_template_decl): Check for multiple definitions of member ! 1822: templates. ! 1823: ! 1824: * call.c (build_method_call): Complain about calling an abstract ! 1825: virtual from a constructor. ! 1826: ! 1827: * typeck.c (pointer_int_sum): Check for the integer operand being 0 ! 1828: after checking the validity of the pointer operand. ! 1829: ! 1830: * typeck2.c (digest_init): Pedwarn about string initializer being ! 1831: too long. ! 1832: ! 1833: Tue May 10 12:10:28 1994 Jason Merrill ([email protected]) ! 1834: ! 1835: * decl.c (push_overloaded_decl): Only throw away a builtin if the ! 1836: decl in question is the artificial one. ! 1837: ! 1838: * parse.y (simple_stmt, switch): Use implicitly_scoped_stmt because ! 1839: expand_{start,end}_case cannot happen in the middle of a block. ! 1840: ! 1841: * cvt.c (build_type_conversion_1): Use convert again. ! 1842: ! 1843: Tue May 10 11:52:04 1994 Brendan Kehoe ([email protected]) ! 1844: ! 1845: * typeck2.c (digest_init): Make sure we check for signed and ! 1846: unsigned chars as well when warning about string initializers. ! 1847: ! 1848: * init.c (emit_base_init): Check if there's a DECL_NAME on the ! 1849: member before trying to do an initialization for it. ! 1850: ! 1851: Tue May 10 11:34:37 1994 Mike Stump ([email protected]) ! 1852: ! 1853: * except.c: Don't do anything useful when cross compiling. ! 1854: ! 1855: Tue May 10 03:04:13 1994 Jason Merrill ([email protected]) ! 1856: ! 1857: * decl.c (duplicate_decls): Fix up handling of builtins yet again. ! 1858: (push_overloaded_decl): Ditto. ! 1859: ! 1860: * cvt.c (convert): Don't look for void type conversion. ! 1861: ! 1862: Mon May 9 18:05:41 1994 Jason Merrill ([email protected]) ! 1863: ! 1864: * init.c (do_friend): Only do a pushdecl for friends, not ! 1865: pushdecl_top_level. ! 1866: ! 1867: Mon May 9 13:36:34 1994 Jim Wilson ([email protected]) ! 1868: ! 1869: * decl.c (lookup_name_current_level): Put empty statement after ! 1870: the label OUT to make the code valid C. ! 1871: ! 1872: Mon May 9 12:20:57 1994 Jason Merrill ([email protected]) ! 1873: ! 1874: * typeck.c (build_binary_op_nodefault): Only complain about ! 1875: comparing void * and a function pointer if void * is smaller. ! 1876: ! 1877: Sun May 8 01:29:13 1994 Jason Merrill ([email protected]) ! 1878: ! 1879: * decl.c (lookup_name_current_level): Move through temporary binding ! 1880: levels. ! 1881: ! 1882: * parse.y (already_scoped_stmt): Revive. ! 1883: (simple_stmt): Use it again. ! 1884: ! 1885: * decl.c (poplevel): Always call poplevel recursively if we're ! 1886: dealing with a temporary binding level. ! 1887: ! 1888: Sat May 7 10:52:28 1994 Mike Stump ([email protected]) ! 1889: ! 1890: * decl.c (finish_decl): Make sure we run cleanups for initial values ! 1891: of decls. Cures memory leak. ! 1892: * decl.c (expand_static_init): Ditto for static variables. ! 1893: * decl2.c (finish_file): Ditto for globals. ! 1894: ! 1895: Sat May 7 03:57:44 1994 Jason Merrill ([email protected]) ! 1896: ! 1897: * typeck.c (commonparms): Don't complain about redefining default ! 1898: args. ! 1899: ! 1900: * decl.c (duplicate_decls): Don't complain twice about conflicting ! 1901: function decls. ! 1902: (decls_match): Don't look at default args. ! 1903: (redeclaration_error_message): Complain about redefining default ! 1904: args. ! 1905: ! 1906: * call.c (build_overload_call_real): Also deal with guiding ! 1907: declarations coming BEFORE the template decl. ! 1908: ! 1909: * pt.c (unify): Allow different parms to have different ! 1910: cv-qualifiers. ! 1911: (unify): Allow trivial conversions on non-template parms. ! 1912: ! 1913: Fri May 6 03:53:23 1994 Jason Merrill ([email protected]) ! 1914: ! 1915: * pt.c (tsubst): Support OFFSET_TYPEs. ! 1916: (unify): Ditto. ! 1917: ! 1918: * decl2.c (finish_decl_parsing): Call push_nested_class with a type. ! 1919: ! 1920: * init.c (build_offset_ref): Fix error message. ! 1921: * search.c (lookup_field): Ditto. ! 1922: ! 1923: * call.c (build_scoped_method_call): Pass binfo to ! 1924: build_method_call. ! 1925: * typeck.c (build_object_ref): Ditto. ! 1926: ! 1927: * typeck2.c (binfo_or_else): Don't return a _TYPE. ! 1928: ! 1929: * class.c (finish_struct): Don't complain about re-use of inherited ! 1930: names or shadowing of type decls. ! 1931: * decl.c (pushdecl_class_level): Ditto. ! 1932: ! 1933: * decl.c (finish_enum): Set the type of all the enums. ! 1934: ! 1935: * class.c (finish_struct): Don't get confused by access decls. ! 1936: ! 1937: * cp-tree.h (TYPE_MAIN_DECL): New macro to get the _DECL for a ! 1938: _TYPE. You can stop using TYPE_NAME for that now. ! 1939: ! 1940: * parse.y: Lose doing_explicit (check $0 instead). ! 1941: * gxx.gperf: 'template' now has a RID. ! 1942: * lex.h (rid): Ditto. ! 1943: * lex.c (init_lex): Set up the RID for 'template'. ! 1944: ! 1945: * parse.y (type_specifier_seq): typed_typespecs or ! 1946: nonempty_type_quals. Use it. ! 1947: (handler_args): Fix bogus syntax. ! 1948: (raise_identifier{,s}, optional_identifier): Lose. ! 1949: * except.c (expand_start_catch_block): Use grokdeclarator to parse ! 1950: the catch variable. ! 1951: (init_exception_processing): The second argument to ! 1952: __throw_type_match is ptr_type_node. ! 1953: ! 1954: Fri May 6 07:18:54 1994 Chip Salzenberg (chip@fin) ! 1955: ! 1956: [ change propagated from c-decl.c of snapshot 940429 ] ! 1957: * cp/decl.c (finish_decl): Setting asmspec_tree should not ! 1958: zero out the old RTL. ! 1959: ! 1960: Fri May 6 01:25:38 1994 Mike Stump ([email protected]) ! 1961: ! 1962: Add alpha exception handling support to the compiler. ! 1963: Quick and dirty backend in except.c. ! 1964: ! 1965: * cp/*: Remove most remnants of old exception handling support. ! 1966: * decl.c (finish_function): Call expand_exception_blocks to put ! 1967: the exception hanlding blocks at the end of the function. ! 1968: * dec.c (hack_incomplete_structures): Make sure expand_decl_cleanup ! 1969: comes after expand_decl_init. ! 1970: * except.c: Reimplementation. ! 1971: * expr.c (cplus_expand_expr): Handle THROW_EXPRs. ! 1972: * lex.c (init_lex): Always have catch, try and throw be reserved ! 1973: words, so that we may always parse exception handling. ! 1974: * parse.y: Cleanup to support new interface into exception handling. ! 1975: * tree.def (THROW_EXPR): Add. ! 1976: ! 1977: Thu May 5 17:35:37 1994 Jason Merrill ([email protected]) ! 1978: ! 1979: * parse.y (simple_stmt, for loops): Use implicitly_scoped_stmt. ! 1980: (various): Lose .kindof_pushlevel and partially_scoped_stmt. ! 1981: ! 1982: Thu May 5 16:17:27 1994 Kung Hsu ([email protected]) ! 1983: ! 1984: * parse.y (already_scoped_stmt): move expand_end_binding() to ! 1985: fix the unmatched LBB/LBE in stabs. ! 1986: ! 1987: Thu May 5 14:36:17 1994 Jason Merrill ([email protected]) ! 1988: ! 1989: * decl.c (set_nested_typename): Set TREE_MANGLED on the new ! 1990: identifiers. ! 1991: (pushdecl): Check TREE_MANGLED. ! 1992: (xref_tag): Ditto. ! 1993: * cp-tree.h (TREE_MANGLED): This identifier is a ! 1994: DECL_NESTED_TYPENAME (named to allow for future use to denote ! 1995: mangled function names as well). ! 1996: ! 1997: Implement inconsistency checking specified in [class.scope0]. ! 1998: * decl.c (lookup_name_real): Don't set ICV here after all. ! 1999: (finish_enum): Also set the type of the enumerators themselves. ! 2000: (build_enumerator): Put the CONST_DECL in the list instead of its ! 2001: initial value. ! 2002: (pushdecl_class_level): Check inconsistent use of a name in the ! 2003: class body. ! 2004: * class.c (finish_struct): Check inconsistent use of a name in the ! 2005: class body. Don't set DECL_CONTEXT on types here anymore. ! 2006: * parse.y (qualified_type_name): Note that the identifier has now ! 2007: been used (as a type) in the class body. ! 2008: * lex.c (do_identifier): Note that the identifier has now been used ! 2009: (as a constant) in the class body. ! 2010: * error.c (dump_decl): Print type and enum decls better. ! 2011: ! 2012: Thu May 5 09:35:35 1994 Brendan Kehoe ([email protected]) ! 2013: ! 2014: * typeck.c (build_modify_expr): Warn about assignment to `this'. ! 2015: ! 2016: Wed May 4 15:55:49 1994 Jason Merrill ([email protected]) ! 2017: ! 2018: * init.c (build_delete): Use the global operator delete when ! 2019: requested. ! 2020: ! 2021: * decl.c (lookup_name_real): If we find the type we're looking in a ! 2022: base class while defining a class, set IDENTIFIER_CLASS_VALUE for ! 2023: the type. ! 2024: ! 2025: * class.c (finish_struct): Remove a couple of dependencies on ! 2026: language linkage. ! 2027: ! 2028: * decl.c (pushtag): Classes do nest in extern "C" blocks. ! 2029: (pushdecl): Only set DECL_NESTED_TYPENAME on the canonical one for ! 2030: the type. ! 2031: (pushtag): Remove another dependency on the language linkage. ! 2032: ! 2033: * lex.c (cons_up_default_function): Don't set DECL_CLASS_CONTEXT to ! 2034: a const-qualified type. ! 2035: ! 2036: * decl.c (push_overloaded_decl): Throw away built-in decls here. ! 2037: (duplicate_decls): Instead of here. ! 2038: ! 2039: Wed May 4 15:27:40 1994 Per Bothner ([email protected]) ! 2040: ! 2041: * typeck.c (get_member_function_from_ptrfunc): Do The Right ! 2042: Thing (I hope) if we're using thunks. ! 2043: ! 2044: Wed May 4 13:52:38 1994 Jason Merrill ([email protected]) ! 2045: ! 2046: * parse.y (specialization): aggr template_type_name ';'. ! 2047: (named_class_head_sans_basetype): Use it. ! 2048: (explicit_instantiation): Ditto. ! 2049: (tmpl.2): Revert. ! 2050: ! 2051: * cvt.c (build_type_conversion_1): Use convert_for_initialization, ! 2052: rather than convert, to do conversions after the UDC. ! 2053: ! 2054: * cp-tree.h (SHARED_MEMBER_P): This member is shared between all ! 2055: instances of the class. ! 2056: ! 2057: * search.c (lookup_field): If the entity found by two routes is the ! 2058: same, it's not ambiguous. ! 2059: ! 2060: Wed May 4 12:10:00 1994 Per Bothner ([email protected]) ! 2061: ! 2062: * decl.c (lookup_name_real): Check for a NULL TREE_VALUE, ! 2063: to prevent the compiler from crashing ... ! 2064: ! 2065: Wed May 4 11:19:45 1994 Jason Merrill ([email protected]) ! 2066: ! 2067: * call.c (build_method_call): If we don't have an object, check ! 2068: basetype_path to figure out where to look up the function. ! 2069: ! 2070: * typeck.c (convert_for_initialization): Pass TYPE_BINFO (type) to ! 2071: build_method_call in case exp is NULL_TREE. ! 2072: ! 2073: Tue May 3 16:02:53 1994 Per Bothner ([email protected]) ! 2074: ! 2075: Give a vtable entries a unique named type, for the sake of gdb. ! 2076: * class.c (build_vtable_entry): The addres of a thunk now has ! 2077: type vtable_entry_type, not ptr_type_node. ! 2078: * method.c (make_thunk): Fix type of THUNK_DECL. ! 2079: * class.c (add_virtual_function, override_one_vtable): Use ! 2080: vfunc_ptr_type_node, instead of ptr_type_node. ! 2081: * cp-tree.h (vfunc_ptr_type_node): New macro. ! 2082: * decl.c (init_decl_processing): Make vtable_entry_type ! 2083: be a unique type of pointer to a unique function type. ! 2084: ! 2085: Tue May 3 09:20:44 1994 Jason Merrill ([email protected]) ! 2086: ! 2087: * parse.y (do_explicit): Sets doing_explicit to 1. ! 2088: (explicit_instantiation): Use do_explicit rather than TEMPLATE ! 2089: directly, add "do_explicit error" rule. ! 2090: (datadef): Set doing_explicit to 0 after an explicit instantiation. ! 2091: (tmpl.2): Don't instantiate if we see a ';' unless we're doing an ! 2092: explicit instantiation. ! 2093: (named_class_head_sans_basetype): Remove aggr template_type_name ! 2094: ';' again. ! 2095: ! 2096: Mon May 2 23:17:21 1994 Jason Merrill ([email protected]) ! 2097: ! 2098: * search.c (lookup_nested_tag): Lose. ! 2099: ! 2100: * decl2.c (grokfield): Set DECL_CONTEXT on TYPE_DECLs. ! 2101: (lookup_name_nonclass): Lose. ! 2102: ! 2103: * decl.c (poplevel_class): Add force parameter. ! 2104: (lookup_name_real): Fix handling of explicit scoping which specifies ! 2105: a class currently being defined. Add 'nonclass' argument. ! 2106: (lookup_name, lookup_name_nonclass): Shells for lookup_name_real. ! 2107: ! 2108: * class.c (finish_struct): Don't unset IDENTIFIER_CLASS_VALUEs here. ! 2109: (popclass): Force clearing of IDENTIFIER_CLASS_VALUEs if we're being ! 2110: called from finish_struct. ! 2111: ! 2112: Mon May 2 19:06:21 1994 Per Bothner ([email protected]) ! 2113: ! 2114: * decl.c (init_decl_processing), cp-tree.h: Removed memptr_type. ! 2115: (It seeems redundant, given build_ptrmemfunc_type.) ! 2116: * typeck.c (get_member_function_from_ptrfunc), gc.c (build_headof, ! 2117: build_classof): Use vtable_entry_type instead of memptr_type. ! 2118: * method.c (emit_thunk): Call poplevel with functionbody==0 ! 2119: to prevent DECL_INITIAL being set to a BLOCK. ! 2120: ! 2121: Mon May 2 15:02:11 1994 Jason Merrill ([email protected]) ! 2122: ! 2123: * parse.y (named_class_head_sans_basetype): Add "aggr ! 2124: template_type_name ';'" rule for forward declaration of ! 2125: specializations. ! 2126: ! 2127: Mon May 2 15:02:11 1994 Jason Merrill ([email protected]) ! 2128: ! 2129: * class.c (instantiate_type): Deal with pmf's. ! 2130: ! 2131: * Make-lang.in (cc1plus): Don't depend on OBJS or BC_OBJS, since ! 2132: stamp-objlist does. ! 2133: ! 2134: * Makefile.in (../cc1plus): Depend on OBJDEPS. ! 2135: (OBJDEPS): Dependency version of OBJS. ! 2136: ! 2137: Mon May 2 12:51:31 1994 Kung Hsu ([email protected]) ! 2138: ! 2139: * search.c (dfs_debug_mark): unmark TYPE_DECL_SUPPRESS_DEBUG, not ! 2140: DECL_IGNORED_P. ! 2141: ! 2142: Fri Apr 29 12:29:56 1994 Jason Merrill ([email protected]) ! 2143: ! 2144: * class.c (finish_struct): Clear out memory of local tags. And ! 2145: typedefs. ! 2146: ! 2147: * decl2.c (grokclassfn): Don't set DECL_CONTEXT to a cv-qualified ! 2148: type. ! 2149: * search.c (get_matching_virtual): Be more helpful in error message. ! 2150: ! 2151: * *: Use DECL_ARTIFICIAL (renamed from DECL_SYNTHESIZED). ! 2152: ! 2153: * lex.c (default_assign_ref_body): Expect TYPE_NESTED_NAME to work. ! 2154: (default_copy_constructor_body): Ditto. ! 2155: ! 2156: * class.c (finish_struct): Don't gratuitously create multiple decls ! 2157: for nested classes. ! 2158: ! 2159: Thu Apr 28 23:39:38 1994 Jason Merrill ([email protected]) ! 2160: ! 2161: Avoid clobbering the arg types of other functions when reverting ! 2162: static member functions. ! 2163: * decl.c (revert_static_member_fn): Rearrange arguments, don't ! 2164: require values for 'fn' and 'argtypes', add warning to comment ! 2165: above. ! 2166: (decls_match): Rearrange arguments in call to rsmf. ! 2167: (grok_op_properties): Don't pass values for fn and argtypes. ! 2168: * pt.c (instantiate_template): Don't pass values for fn and argtypes. ! 2169: ! 2170: Thu Apr 28 16:29:11 1994 Doug Evans ([email protected]) ! 2171: ! 2172: * Make-lang.in (cc1plus): Depend on stamp-objlist. ! 2173: * Makefile.in (BC_OBJS): Delete. ! 2174: (OBJS): Cat ../stamp-objlist to get language independent files. ! 2175: Include ../c-common.o. ! 2176: (../cc1plus): Delete reference to BC_OBJS. ! 2177: ! 2178: Thu Apr 28 02:12:08 1994 Jason Merrill ([email protected]) ! 2179: ! 2180: * search.c (compute_access): No really, deal with static members ! 2181: properly. Would I lie to you? ! 2182: ! 2183: Implement lexical hiding of function declarations. ! 2184: * pt.c (tsubst): Use lookup_name to look for function decls to guide ! 2185: instantiation. ! 2186: * method.c (build_opfncall): Use lookup_name_nonclass to look for ! 2187: non-member functions. ! 2188: * init.c (do_friend): Use lookup_name_nonclass to look for ! 2189: functions. ! 2190: * error.c (ident_fndecl): Use lookup_name to look for functions. ! 2191: * decl2.c (lookup_name_nonclass): New function, skips over ! 2192: CLASS_VALUE. ! 2193: * decl.c (struct binding_level): Lose overloads_shadowed field. ! 2194: (poplevel): Don't deal with overloads_shadowed. ! 2195: (push_overloaded_decl): Do lexical hiding for functions. ! 2196: * class.c (instantiate_type): Don't check non-members if we have ! 2197: members with the same name. ! 2198: * call.c (build_method_call): Use lookup_name_nonclass instead of ! 2199: IDENTIFIER_GLOBAL_VALUE to check for non-member functions. ! 2200: (build_overload_call_real): Ditto. ! 2201: ! 2202: * decl.c (duplicate_decls): Check for ambiguous overloads here. ! 2203: (push_overloaded_decl): Instead of here. ! 2204: ! 2205: * decl.c (pushdecl): Back out Chip's last change. ! 2206: ! 2207: * decl.c (grok_op_properties): operators cannot be static members. ! 2208: ! 2209: * cp-tree.h (DECL_SYNTHESIZED): DECL_SOURCE_LINE == 0 ! 2210: (SET_DECL_SYNTHESIZED): DECL_SOURCE_LINE = 0 ! 2211: * lex.c (cons_up_default_function): Use SET_DECL_SYNTHESIZED. ! 2212: ! 2213: * method.c (do_inline_function_hair): Don't put friends of local ! 2214: classes into global scope, either. ! 2215: ! 2216: * typeck2.c (build_functional_cast): Don't look for a function call ! 2217: interpretation. ! 2218: ! 2219: Thu Apr 28 15:19:46 1994 Mike Stump ([email protected]) ! 2220: ! 2221: * cp-tree.h: disable use of backend EH. ! 2222: ! 2223: Wed Apr 27 21:01:24 1994 Doug Evans ([email protected]) ! 2224: ! 2225: * Make-lang.in (c++.distdir): mkdir tmp/cp first. ! 2226: * Makefile.in (INCLUDES): Move definition to same place as ! 2227: parent makefile. ! 2228: (ALLOCA): Define. ! 2229: (OLDAR_FLAGS): Delete. ! 2230: (OLDCC): Define. ! 2231: (DIR): Delete. ! 2232: (CLIB): Define. ! 2233: (####site): Delete. ! 2234: (SUBDIR_USE_ALLOCA): Don't use ALLOCA if compiling with gcc. ! 2235: ! 2236: Wed Apr 27 19:10:04 1994 Kung Hsu ([email protected]) ! 2237: ! 2238: * decl.c (xref_tag): not to use strstr(), it's not available on ! 2239: all platforms. ! 2240: ! 2241: Wed Apr 27 18:10:12 1994 Jason Merrill ([email protected]) ! 2242: ! 2243: * class.c (finish_struct): Resolve yet another class/pmf confusion. ! 2244: ! 2245: * call.c (build_overload_call_real): Don't take the single-function ! 2246: shortcut if we're dealing with an overloaded operator. ! 2247: ! 2248: Wed Apr 27 17:35:37 1994 Mike Stump ([email protected]) ! 2249: ! 2250: * search.c (get_base_distance): Search the virtual base class ! 2251: binfos, incase someone wants to convert to a real virtual base ! 2252: class. ! 2253: * search.c (expand_indirect_vtbls_init): Use convert_pointer_to_real ! 2254: instead of convert_pointer_to, as it now will work. ! 2255: ! 2256: Wed Apr 27 15:36:49 1994 Jason Merrill ([email protected]) ! 2257: ! 2258: * cvt.c (convert_to_reference): Don't complain about casting away ! 2259: const and volatile. ! 2260: ! 2261: * typeck.c (build_unary_op): References are too lvalues. ! 2262: ! 2263: Wed Apr 27 13:58:05 1994 Mike Stump ([email protected]) ! 2264: ! 2265: * class.c (override_one_vtable): We have to prepare_fresh_vtable ! 2266: before we modify it, not after, also, we cannot reuse an old vtable, ! 2267: once we commit to a new vtable. Implement ambiguous overrides in ! 2268: virtual bases as abstract. Hack until we make the class ! 2269: ill-formed. ! 2270: ! 2271: Wed Apr 27 01:17:08 1994 Jason Merrill ([email protected]) ! 2272: ! 2273: * parse.y (unary_expr): Expand new_placement[opt] and ! 2274: new_initializer[opt] inline. ! 2275: ! 2276: * search.c (lookup_fnfields): Don't throw away the inheritance ! 2277: information here, either. ! 2278: (compute_access): Handle static members properly. ! 2279: ! 2280: * init.c (build_member_call): Always set basetype_path, and pass it ! 2281: to lookup_fnfields. ! 2282: ! 2283: * search.c (lookup_field): Deal properly with the case where ! 2284: xbasetype is a chain of binfos; don't throw away the inheritance ! 2285: information. ! 2286: (compute_access): protected_ok always starts out at 0. ! 2287: ! 2288: * init.c (resolve_offset_ref): Don't cast `this' to the base type ! 2289: until we've got our basetype_path. ! 2290: ! 2291: * cp-tree.h (IS_OVERLOAD_TYPE): aggregate or enum. ! 2292: ! 2293: * cvt.c (build_up_reference): Use build_pointer_type rather than ! 2294: TYPE_POINTER_TO. ! 2295: ! 2296: * call.c (convert_harshness_ansi): Call type_promotes_to for reals ! 2297: as well. ! 2298: ! 2299: * cvt.c (type_promotes_to): Retain const and volatile, add ! 2300: float->double promotion. ! 2301: ! 2302: * decl.c (grokdeclarator): Don't bash references to arrays into ! 2303: references to pointers in function parms. Use type_promotes_to. ! 2304: ! 2305: Tue Apr 26 23:44:36 1994 Mike Stump ([email protected]) ! 2306: ! 2307: Finish off Apr 19th work. ! 2308: ! 2309: * class.c (finish_struct_bits): Rename has_abstract_virtuals to ! 2310: might_have_abstract_virtuals. ! 2311: * class.c (strictly_overrides, override_one_vtable, ! 2312: merge_overrides): New routines to handle virtual base overrides. ! 2313: * class.c (finish_struct): Call merge_overrides to handle overrides ! 2314: in virtual bases. ! 2315: ! 2316: Tue Apr 26 12:45:53 1994 Jason Merrill ([email protected]) ! 2317: ! 2318: * typeck.c (build_function_call): Call build_function_call_real with ! 2319: LOOKUP_NORMAL. ! 2320: ! 2321: * *: Don't deal with TYPE_EXPRs. ! 2322: ! 2323: * tree.c (lvalue_p): If the type of the expression is a reference, ! 2324: it's an lvalue. ! 2325: ! 2326: * cvt.c (convert_to_reference): Complain about passing const ! 2327: lvalues to non-const references. ! 2328: (convert_from_reference): Don't arbitrarily throw away const and ! 2329: volatile on the target type. ! 2330: ! 2331: * parse.y: Simplify and fix rules for `new'. ! 2332: ! 2333: * decl.c (grok_op_properties): operator void is illegal. ! 2334: ! 2335: Mon Apr 25 02:36:28 1994 Jason Merrill ([email protected]) ! 2336: ! 2337: * parse.y (components): Anonymous bitfields can still have declspecs. ! 2338: ! 2339: * decl.c (pushdecl): Postpone handling of function templates like we ! 2340: do C functions. ! 2341: ! 2342: * search.c (expand_indirect_vtbls_init): Fix infinite loop when ! 2343: convert_pointer_to fails. ! 2344: ! 2345: * call.c (compute_conversion_costs_ansi): A user-defined conversion ! 2346: by itself is better than that UDC followed by standard conversions. ! 2347: Don't treat integers and reals specially. ! 2348: ! 2349: * cp-tree.h: Declare flag_ansi. ! 2350: ! 2351: * typeck.c (c_expand_return): pedwarn on return in void function ! 2352: even if the expression is of type void. ! 2353: (build_c_cast): Don't do as much checking for casts to void. ! 2354: (build_modify_expr): pedwarn about array assignment if this code ! 2355: wasn't generated by the compiler. ! 2356: ! 2357: * tree.c (lvalue_p): A comma expression is an lvalue if its second ! 2358: operand is. ! 2359: ! 2360: * typeck.c (default_conversion): Move code for promoting enums and ! 2361: ints from here. ! 2362: * cvt.c (type_promotes_to): To here. ! 2363: * call.c (convert_harshness_ansi): Use type_promotes_to. Also fix ! 2364: promotion semantics for reals. ! 2365: ! 2366: Sun Apr 24 16:52:51 1994 Doug Evans ([email protected]) ! 2367: ! 2368: * Make-lang.in (c++.install-common): Check for g++-cross. ! 2369: * Makefile.in: Remove Cygnus cruft. ! 2370: (config.status): Delete. ! 2371: (RTL_H): Define. ! 2372: (TREE_H): Use complete pathname, some native makes have minimal ! 2373: VPATH support. ! 2374: (*.o): Use complete pathname to headers in parent dir. ! 2375: (doc, info, dvi): Delete. ! 2376: ! 2377: Sun Apr 24 16:52:51 1994 Doug Evans ([email protected]) ! 2378: ! 2379: * Make-lang.in (c++.install-common): Check for g++-cross. ! 2380: * Makefile.in: Remove Cygnus cruft. ! 2381: (config.status): Delete. ! 2382: (RTL_H): Define. ! 2383: (TREE_H): Use complete pathname, some native makes have minimal ! 2384: VPATH support. ! 2385: (*.o): Use complete pathname to headers in parent dir. ! 2386: (doc, info, dvi): Delete. ! 2387: ! 2388: Sun Apr 24 00:47:49 1994 Jason Merrill ([email protected]) ! 2389: ! 2390: * decl.c (pushdecl): Avoid redundant warning on redeclaring function ! 2391: with different return type. ! 2392: (decls_match): Compare return types strictly. ! 2393: ! 2394: Fri Apr 22 12:55:42 1994 Jason Merrill ([email protected]) ! 2395: ! 2396: * cvt.c (build_type_conversion): Do try to convert through other ! 2397: pointers. This will fail if the class defines multiple pointer ! 2398: conversions. ! 2399: ! 2400: * error.c (dump_type_prefix): Print out pointers to arrays properly. ! 2401: (dump_type_suffix): Ditto. (was 'int *[]', now 'int (*)[]') ! 2402: ! 2403: * typeck.c (build_unary_op): Disallow ++/-- on pointers to ! 2404: incomplete type. ! 2405: ! 2406: * decl.c (duplicate_decls): Check mismatched TREE_CODES after ! 2407: checking for shadowing a builtin. If we're redeclaring a builtin ! 2408: function, bash the old decl to avoid an ambiguous overload. ! 2409: ! 2410: * cvt.c (convert_to_reference): Don't force arrays to decay here. ! 2411: ! 2412: * tree.c (lvalue_p): A MODIFY_EXPR is an lvalue. ! 2413: ! 2414: * decl.c (duplicate_decls): Don't assume that the decls will have ! 2415: types. ! 2416: ! 2417: Mon Apr 18 11:35:32 1994 Chip Salzenberg ([email protected]) ! 2418: ! 2419: [ cp/* changes propagated from c-* changes in 940318 snapshot ] ! 2420: * c-decl.c (pushdecl): Warn if type mismatch with another external decl ! 2421: in a global scope. ! 2422: ! 2423: Fri Apr 22 06:38:56 1994 Chip Salzenberg ([email protected]) ! 2424: ! 2425: * cp/typeck2.c (signature_error): Use cp_error for "%T". ! 2426: ! 2427: Mon Apr 18 11:59:59 1994 Chip Salzenberg ([email protected]) ! 2428: ! 2429: [ cp/* changes propagated from c-* changes in 940415 snapshot ] ! 2430: * cp/decl.c (duplicate_decls, pushdecl, builtin_function): ! 2431: Use DECL_FUNCTION_CODE instead of DECL_SET_FUNCTION_CODE. ! 2432: ! 2433: Mon Apr 18 11:55:18 1994 Chip Salzenberg ([email protected]) ! 2434: ! 2435: [ cp/* changes propagated from c-* changes in 940409 snapshot ] ! 2436: * cp/decl.c (duplicate_decls): Put new type in same obstack as ! 2437: old ones, or permanent if old ones in different obstacks. ! 2438: ! 2439: Mon Apr 18 11:48:49 1994 Chip Salzenberg ([email protected]) ! 2440: ! 2441: [ cp/* changes propagated from c-* changes in 940401 snapshot ] ! 2442: * cp/parse.y (attrib): Handle string args as expressions, ! 2443: merging the two rules. `mode' attribute now takes a string arg. ! 2444: Delete the rule for an identifier as arg. ! 2445: ! 2446: Mon Apr 18 11:24:00 1994 Chip Salzenberg ([email protected]) ! 2447: ! 2448: [ cp/* changes propagated from c-* changes in 940312 snapshot ] ! 2449: * cp/typeck.c (pointer_int_sum): Multiplication should be done signed. ! 2450: (pointer_diff): Likewise the division. ! 2451: ! 2452: Sun Mar 6 19:43:39 1994 Chip Salzenberg ([email protected]) ! 2453: ! 2454: [ cp/* changes propagated from c-* changes in 940304 snapshot ] ! 2455: * cp/decl.c (finish_decl): Issue warning for large objects, ! 2456: if requested. ! 2457: ! 2458: Sat Feb 19 22:20:32 1994 Chip Salzenberg ([email protected]) ! 2459: ! 2460: [ cp/* changes propagated from c-* changes in 940218 snapshot ] ! 2461: * cp/parse.y (attrib): Handle attribute ((section ("string"))). ! 2462: * cp/decl.c (duplicate_decls): Merge section name into new decl. ! 2463: ! 2464: Tue Feb 8 09:49:17 1994 Chip Salzenberg ([email protected]) ! 2465: ! 2466: [ cp/* changes propagated from c-* changes in 940206 snapshot ] ! 2467: * cp/typeck.c (signed_or_unsigned_type): Check for any ! 2468: INTEGRAL_TYPE_P not just INTEGER_TYPE. ! 2469: ! 2470: Mon Dec 6 13:35:31 1993 Norbert Kiesel ([email protected]) ! 2471: ! 2472: * cp/decl.c (finish_enum): Start from 0 when determining precision ! 2473: for short enums. ! 2474: ! 2475: Fri Dec 3 17:07:58 1993 Ralph Campbell ([email protected]) ! 2476: ! 2477: * cp/parse.y (unary_expr): Look at $1 for tree_code rather than ! 2478: casting $$. ! 2479: ! 2480: Wed Nov 17 19:22:09 1993 Chip Salzenberg ([email protected]) ! 2481: ! 2482: * cp/typeck.c (build_binary_op_nodefault): Propagate code ! 2483: from C front-end to optimize unsigned short division. ! 2484: (build_conditional_expr): Fix bug in "1 ? 42 : (void *) 8". ! 2485: ! 2486: Wed Nov 17 19:17:18 1993 Chip Salzenberg ([email protected]) ! 2487: ! 2488: * cp/call.c (convert_harshness_ansi): Given an (e.g.) char ! 2489: constant, prefer 'const char &' to 'int'. ! 2490: ! 2491: Wed Feb 3 13:11:48 1993 Chip Salzenberg ([email protected]) ! 2492: ! 2493: * cp/class.c (finish_struct_methods): Handle multiple ! 2494: constructors in fn_fields list. ! 2495: ! 2496: Fri Apr 22 12:48:10 1994 Kung Hsu ([email protected]) ! 2497: ! 2498: * class.c (finish_struct): use TYPE_DECL_SUPPRESS_DEBUG to flag ! 2499: types not to be dumped in stabs, like types in #pragma interface. ! 2500: * decl.c (init_decl_processing): use TYPE_DECL_SUPPRESS_DEBUG to ! 2501: mark unknown type. ! 2502: ! 2503: Fri Apr 22 03:27:26 1994 Doug Evans ([email protected]) ! 2504: ! 2505: * Language directory reorganization. ! 2506: See parent makefile. ! 2507: ! 2508: Fri Apr 22 03:27:26 1994 Doug Evans ([email protected]) ! 2509: ! 2510: * Language directory reorganization. ! 2511: See parent makefile. ! 2512: ! 2513: Thu Apr 21 18:27:57 1994 Per Bothner ([email protected]) ! 2514: ! 2515: * cp-tree.h (THUNK_DELTA): It is normally negative, so ! 2516: use signed .i variant of frame_size rather than unsigned .u. ! 2517: * cp-tree.h (VTABLE_NAME_FORMAT): If flag_vtable_thunks, ! 2518: use "VT" rather than "vt" due to binary incompatibility. ! 2519: * class.c (get_vtable_name): Use strlen of VTABLE_NAME_FORMAT, ! 2520: rather than sizeof, since it is now an expression. ! 2521: * class.c (modify_one_vtable): Modify to skip initial element ! 2522: containing a count of the vtable. ! 2523: ! 2524: Thu Apr 21 00:09:02 1994 Jason Merrill ([email protected]) ! 2525: ! 2526: * lex.c (check_newline): Force interface_unknown on main input file. ! 2527: ! 2528: * pt.c (do_pending_expansions): Always emit functions that have been ! 2529: explicitly instantiated. ! 2530: (do_function_instantiation): Set DECL_EXPLICITLY_INSTANTIATED. ! 2531: (do_type_instantiation): Set CLASSTYPE_VTABLE_NEEDS_WRITING and ! 2532: DECL_EXPLICITLY_INSTANTIATED on all my methods. ! 2533: * parse.y (explicit_instantiation): Call do_type_instantiation for ! 2534: types. ! 2535: * decl2.c (finish_vtable_vardecl): Call import_export_vtable. ! 2536: * decl.c (start_function): Don't set DECL_EXTERNAL on a function ! 2537: that has been explicitly instantiated. ! 2538: * cp-tree.h (DECL_EXPLICITLY_INSTANTIATED): Alias for ! 2539: DECL_LANG_FLAG_4. ! 2540: * class.c: Move import_export_vtable to decl2.c, and comment out all ! 2541: uses. ! 2542: ! 2543: Wed Apr 20 16:51:06 1994 Jason Merrill ([email protected]) ! 2544: ! 2545: * lex.c (process_next_inline): Don't muck with DECL_INLINE. ! 2546: (do_pending_inlines): Ditto. ! 2547: ! 2548: Tue Apr 19 22:25:41 1994 Mike Stump ([email protected]) ! 2549: ! 2550: Reimplement vtable building, and most vtable pointer setting. ! 2551: Allows for earier maintenance, easier understandability, and most ! 2552: importantly, correct semantics. ! 2553: ! 2554: * class.c (build_vtable): Removed unneeded ! 2555: SET_BINFO_VTABLE_PATH_MARKED. ! 2556: * class.c (prepare_fresh_vtable): Ditto. Added argument. ! 2557: * class.c (modify_vtable_entry): General cleanup. ! 2558: * class.c (related_vslot, is_normal, modify_other_vtable_entries, ! 2559: modify_vtable_entries): Removed. ! 2560: * class.c (add_virtual_function): General cleanup. ! 2561: * class.c (finish_base_struct): Setup BINFO_VTABLE and ! 2562: BINFO_VIRTUALS as early as we can, so that modify_all_vtables can ! 2563: work. ! 2564: * class.c (finish_vtbls): New routine, mostly from ! 2565: unmark_finished_struct. ! 2566: * class.c (overrides): New routine. ! 2567: * class.c (modify_one_vtable): New routine, mostly from ! 2568: modify_other_vtable_entries and modify_vtable_entries. ! 2569: * class.c (modify_all_direct_vtables, modify_all_indirect_vtables, ! 2570: modify_all_vtables): New routines. ! 2571: * class.c (finish_struct): Added arguemnt to prepare_fresh_vtable ! 2572: call. General cleanup on how pending_hard_virtuals are handled. ! 2573: General cleanup on modifying vtables. Use finish_vtbls, instead of ! 2574: unmark_finished_struct. ! 2575: * cp-tree.h (init_vtbl_ptrs, expand_direct_vtbls_init, ! 2576: get_first_matching_virtual, get_matching_virtual, ! 2577: expand_vbase_vtables_init, expand_indirect_vtbls_init): Update. ! 2578: * cvt.c (convert_pointer_to_real): cleanup error message. ! 2579: * decl.c (grokfndecl): General cleanup. ! 2580: * decl.c (finish_function): Change init_vtbl_ptrs call to ! 2581: expand_direct_vtbls_init. Change expand_vbase_vtables_init call to ! 2582: expand_indirect_vtbls_init. ! 2583: * init.c (expand_virtual_init): Remove unneeded argument. ! 2584: * init.c (init_vtbl_ptrs): Rename to expand_direct_vtbls_init, added ! 2585: two arguments to make more general. Made more general. Now can be ! 2586: used for vtable pointer initialization from virtual bases. ! 2587: * init.c (emit_base_init): Change expand_vbase_vtables_init call to ! 2588: expand_indirect_vtbls_init. Change init_vtbl_ptrs call to ! 2589: expand_direct_vtbls_init. ! 2590: * init.c (expand_virtual_init): General cleanup. ! 2591: * init.c (expand_default_init): Change expand_vbase_vtables_init ! 2592: call to expand_indirect_vtbls_init. ! 2593: * init.c (expand_recursive_init_1): Change expand_vbase_vtables_init ! 2594: call to expand_indirect_vtbls_init. ! 2595: * init.c (expand_recursive_init): Change expand_vbase_vtables_init ! 2596: call to expand_indirect_vtbls_init. ! 2597: * search.c (get_first_matching_virtual): Rename to ! 2598: get_matching_virtual. General cleanup and remove setting of ! 2599: DECL_CONTEXT. That is now done in a cleaner way in ! 2600: modify_vtable_entry and add_virtual_function. ! 2601: * search.c (expand_vbase_vtables_init): Rename to ! 2602: expand_indirect_vtbls_init. General cleanup. Use ! 2603: expand_direct_vtbls_init to do hard work. Ensures that _all_ vtable ! 2604: pointers from virtual bases are set up. ! 2605: * search.c (bfs_unmark_finished_struct, unmark_finished_struct): ! 2606: Removed. ! 2607: ! 2608: * *.[chy]: Remove support for VTABLE_USES_MASK. ! 2609: ! 2610: Tue Apr 19 12:51:59 1994 Jason Merrill ([email protected]) ! 2611: ! 2612: * cvt.c (convert_to_reference): Use NOP_EXPRs to switch between ! 2613: reference and pointer types instead of bashing the types directly. ! 2614: ! 2615: * call.c (build_overload_call_real): Use the TREE_CODE to determine ! 2616: whether the function is overloaded or not, rather than ! 2617: TREE_OVERLOADED. ! 2618: * *: Remove all uses of TREE_OVERLOADED. ! 2619: ! 2620: * decl.c (grokdeclarator): Only complain about initializing const ! 2621: fields when -ansi or -pedantic. ! 2622: ! 2623: Tue Apr 19 12:42:42 1994 Doug Evans ([email protected]) ! 2624: ! 2625: * cp-tree.h (THUNK_DELTA): frame_size is now a union. ! 2626: ! 2627: Mon Apr 18 00:17:13 1994 Jason Merrill ([email protected]) ! 2628: ! 2629: Do overloading on a block-by-block basis, not function-by-function. ! 2630: * decl.c: Lose overloads_to_forget. ! 2631: (struct binding_level): Add overloads_shadowed field. ! 2632: (poplevel): Restore overloads_shadowed. ! 2633: (push_overloaded_decl): Use overloads_shadowed instead of ! 2634: overloads_to_forget. ! 2635: (finish_function): Don't look at overloads_to_forget. ! 2636: ! 2637: Copy enum_overflow logic from c-decl.c. ! 2638: * decl.c (start_enum): Initialize enum_overflow. ! 2639: (build_enumerator): Use enum_overflow. Also use current_scope(). ! 2640: ! 2641: * search.c (current_scope): Move Brendan's comment from ! 2642: build_enumerator here. ! 2643: ! 2644: * typeck.c (convert_for_assignment): Change warnings to pedwarns for ! 2645: discarding const/volatile. ! 2646: ! 2647: Sat Apr 16 01:18:21 1994 Jason Merrill ([email protected]) ! 2648: ! 2649: * typeck.c (comp_target_parms): Accept TEMPLATE_TYPE_PARMs on the rhs. ! 2650: (comp_target_types): Ditto. ! 2651: ! 2652: * decl.c (lookup_name): Don't unset got_scope here. ! 2653: ! 2654: * spew.c (yylex): Only replace yylval with the TYPE_NESTED_NAME if ! 2655: got_scope != NULL_TREE. ! 2656: ! 2657: Fri Apr 15 16:36:33 1994 Jason Merrill ([email protected]) ! 2658: ! 2659: Horrible kludge to prevent templates from being instantiated by ! 2660: their base classes. ! 2661: * parse.y (template_instantiate_once): Unset TYPE_BEING_DEFINED ! 2662: before we get to left_curly. ! 2663: * pt.c (instantiate_class_template): Set TYPE_BEING_DEFINED. ! 2664: ! 2665: * error.c (dump_decl): If it's a typedef, print out the name of the ! 2666: decl, not just the underlying type. ! 2667: ! 2668: * decl.c (pushdecl): If the old duplicate decl was a TYPE_DECL, ! 2669: update the IDENTIFIER_TYPE_VALUE of its name. ! 2670: ! 2671: * decl2.c (finish_file): When processing the initializer for a ! 2672: static member, pretend that the dummy function is a member of the ! 2673: same class. ! 2674: ! 2675: Fri Apr 15 15:56:35 1994 Kung Hsu ([email protected]) ! 2676: ! 2677: * class.c (build_vtable_entry): revert Apr 4 change. ! 2678: * decl2.c (mark_vtable_entries): replace pure virtual function ! 2679: decl with abort's. ! 2680: ! 2681: Fri Apr 15 13:49:33 1994 Jason Merrill ([email protected]) ! 2682: ! 2683: * typeck.c (build_conditional_expr): Pedwarn on pointer/integer ! 2684: mismatch, and don't pedwarn on 0/function pointer mismatch. ! 2685: ! 2686: * typeck2.c (digest_init): Lose code for special handling of unions. ! 2687: (process_init_constructor): Since they're handled just fine here. ! 2688: Pedwarn on excess elements. ! 2689: ! 2690: * decl2.c (grokfield): Complain about local class method declaration ! 2691: without definition. ! 2692: ! 2693: Fri Apr 15 13:19:40 1994 Per Bothner ([email protected]) ! 2694: ! 2695: * method.c (emit_thunk): Add extern declaration for ! 2696: current_call_is_indirect (needed for hppa). ! 2697: ! 2698: Thu Apr 14 16:12:31 1994 Jason Merrill ([email protected]) ! 2699: ! 2700: Improve local class support; allow classes in different blocks to ! 2701: have the same name. ! 2702: * decl.c (pushtag): Support local classes better. ! 2703: (pushdecl_nonclass_level): New function for pushing mangled decls of ! 2704: nested types into the appropriate scope. ! 2705: (xref_defn_tag): Use pushdecl_nonclass_level instead of ! 2706: pushdecl_top_level. ! 2707: (grokfndecl): Don't mess with IDENTIFIER_GLOBAL_VALUE for local ! 2708: class methods. ! 2709: * method.c (do_inline_function_hair): Ditto. ! 2710: ! 2711: * class.c (finish_struct): It is legal for a class with no ! 2712: constructors to have nonstatic const and reference members. ! 2713: ! 2714: Thu Apr 14 07:15:11 1994 Brendan Kehoe ([email protected]) ! 2715: ! 2716: * decl.c (push_overloaded_decl): Avoid giving errors about ! 2717: built-ins, since duplicate_decls will have given warnings/errors ! 2718: for them. ! 2719: ! 2720: Thu Apr 14 03:45:12 1994 Jason Merrill ([email protected]) ! 2721: ! 2722: * cvt.c (convert_to_reference): Warn about casting pointer type to ! 2723: reference type when this is probably not what they wanted. ! 2724: ! 2725: Wed Apr 13 13:12:35 1994 Per Bothner ([email protected]) ! 2726: ! 2727: * decl.c (finish_decl): Don't mindlessly set TREE_USED for ! 2728: static consts any more (toplev.c has now been modified to ! 2729: not emit warnings if they are unused). ! 2730: ! 2731: Wed Apr 13 00:22:35 1994 Jason Merrill ([email protected]) ! 2732: ! 2733: * decl.c (grok_op_properties): If op new/delete get here with ! 2734: METHOD_TYPEs, do a revert_static_member_fn. ! 2735: ! 2736: * cp-tree.h (IDENTIFIER_CLASS_TYPE_VALUE): Lose. ! 2737: * init.c (is_aggr_typedef): Don't look at ! 2738: IDENTIFIER_CLASS_TYPE_VALUE. ! 2739: (get_aggr_from_typedef): Ditto. ! 2740: (get_type_value): Ditto. ! 2741: * call.c (build_scoped_method_call): Don't rely on overloaded ! 2742: template names having IDENTIFIER_CLASS_VALUE set. ! 2743: ! 2744: * parse.y (component_decl_1, fn.def2): Revert rules for ! 2745: constructors. ! 2746: (component_decl_1, fn.def2): Use $1 instead of $$, since $$ is being ! 2747: clobbered. ! 2748: ! 2749: * decl.c (start_function): Only warn about `void main()' if pedantic ! 2750: || warn_return_type. ! 2751: ! 2752: Tue Apr 12 02:14:17 1994 Jason Merrill ([email protected]) ! 2753: ! 2754: Clean up overloading of the template name. ! 2755: * class.c (pushclass): overload the template name whenever pushing ! 2756: into the scope of a template class, not just if it is ! 2757: uninstantiated. ! 2758: (popclass): Correspondingly. ! 2759: * search.c (push_class_decls): Don't overload_template_name. ! 2760: * pt.c (overload_template_name): Don't set IDENTIFIER_LOCAL_VALUE or ! 2761: DECL_CONTEXT on things. ! 2762: * parse.y (left_curly): Don't overload_template_name. ! 2763: * class.c (finish_struct): Don't undo_template_name_overload. ! 2764: ! 2765: * method.c (build_opfncall): Only pass one argument to global op ! 2766: delete. ! 2767: ! 2768: * call.c (build_method_call): Use TYPE_VEC_DELETE_TAKES_SIZE to ! 2769: decide how many arguments to use for vec delete. ! 2770: ! 2771: * decl.c (grok_op_properties): Be consistent in modifying ! 2772: current_class_type. ! 2773: (grokdeclarator): Only complain about function decls with no return ! 2774: type if we're being pedantic. ! 2775: ! 2776: Mon Apr 11 00:10:53 1994 Jason Merrill ([email protected]) ! 2777: ! 2778: Add support for operator new [] and operator delete []. ! 2779: ! 2780: * tree.def: Add VEC_NEW_EXPR and VEC_DELETE_EXPR. ! 2781: * ptree.c (print_lang_type): Indicate vec new/delete. ! 2782: * parse.y: Support vec new/delete. ! 2783: * method.c (build_decl_overload): Deal with vec new/delete. ! 2784: (build_opfncall): Ditto. ! 2785: * lex.c (init_lex): Set up values of ansi_opname and opname_tab for ! 2786: vec new/delete. vec new uses "__vn", and vec delete uses "__vd". ! 2787: * init.c (init_init_processing): Set up BIVN and BIVD. ! 2788: (do_friend): Don't clean up after mistaken setting of TREE_GETS_NEW, ! 2789: since it doesn't happen any more. ! 2790: (build_new): Support vec new. Always call something. ! 2791: (build_x_delete): Support vec delete. ! 2792: (build_vec_delete): Lose dtor_dummy argument, add use_global_delete, ! 2793: and pass it to build_x_delete. ! 2794: * decl2.c (delete_sanity): Don't change behavior by whether or not ! 2795: the type has a destructor. Pass use_global_delete to ! 2796: build_vec_delete. ! 2797: (coerce_delete_type): Make sure that the type returned has a first ! 2798: argument of ptr_type_node. ! 2799: * decl.c (init_decl_processing): Also declare the global vec ! 2800: new/delete. ! 2801: (grokdeclarator): Also force vec new/delete to be static. ! 2802: (grok_op_properties): Note presence of vec new/delete, and play with ! 2803: their args. If vec delete takes the optional size_t argument, set ! 2804: TYPE_VEC_DELETE_TAKES_SIZE. ! 2805: * cp-tree.h (TYPE_GETS_{REG,VEC}_DELETE): New macros to simplify ! 2806: checking for one delete or the other. ! 2807: (lang_type): gets_new and gets_delete are now two bits long. The ! 2808: low bit is for the non-array version. Lose gets_placed_new. ! 2809: (TYPE_VEC_DELETE_TAKES_SIZE): New macro indicating that the vec ! 2810: delete defined by this class wants to know how much space it is ! 2811: deleting. ! 2812: (TYPE_VEC_NEW_USES_COOKIE): New macro to indicate when vec new must ! 2813: add a header containing the number of elements in the vector; i.e. ! 2814: when the elements need to be destroyed or vec delete wants to know ! 2815: the size. ! 2816: * class.c (finish_struct_methods): Also check for overloading vec ! 2817: delete. ! 2818: * call.c (build_method_call): Also delete second argument for vec ! 2819: delete. ! 2820: ! 2821: * decl.c (grokdeclarator): Correct complaints again. ! 2822: (grokdeclarator): Fix segfault on null declarator. ! 2823: (decls_match): Also accept redeclaration with no arguments if both ! 2824: declarations were in C context. Bash TREE_TYPE (newdecl) here. ! 2825: (duplicate_decls): Instead of here. ! 2826: ! 2827: * parse.y (nested_name_specifier_1): Lose rules for dealing with ! 2828: syntax errors nicely, since they break parsing of 'const i;'. ! 2829: ! 2830: * decl.c (lookup_name): if (got_scope == current_class_type) ! 2831: val = IDENTIFIER_CLASS_VALUE (name). ! 2832: ! 2833: * search.c (lookup_nested_tag): Look in enclosing classes, too. ! 2834: ! 2835: * spew.c (yylex): Only look one character ahead when checking for a ! 2836: SCOPE. ! 2837: ! 2838: * lex.c (check_newline): Read first nonwhite char before ! 2839: incrementing lineno. ! 2840: ! 2841: * decl.c (grokdeclarator): Don't claim that typedefs are variables ! 2842: in warning. ! 2843: ! 2844: * parse.y: Divide up uses of unqualified_id into ! 2845: notype_unqualified_id and unqualified_id, so that TYPENAME can be ! 2846: used as an identifier after an object. ! 2847: ! 2848: * class.c (push_nested_class): Don't push into non-class scope. ! 2849: ! 2850: * decl.c (grokdeclarator): If an identifier could be a type ! 2851: conversion operator, but has no associated type, it's not a type ! 2852: conversion operator. ! 2853: ! 2854: * pt.c (unify): Check for equality of constants better. ! 2855: ! 2856: * decl.c (grokdeclarator): Don't complain about access decls. ! 2857: ! 2858: Sun Apr 10 02:39:55 1994 Jason Merrill ([email protected]) ! 2859: ! 2860: * decl.c (grokdeclarator): pedwarn about data definitions without ! 2861: types here. ! 2862: ! 2863: * parse.y (datadef): Don't pedwarn about decls without types here, ! 2864: since that is valid for functions. ! 2865: (fn.def2, component_decl): Support constructors with declmods again. ! 2866: (nomods_initdecls): For decls without any mods, so that we don't try ! 2867: to get declspecs from some arbitrary $0. ! 2868: ! 2869: * search.c (lookup_field): Use cp_error. ! 2870: ! 2871: * parse.y (nested_name_specifier_1): Don't check aggr/non-aggr type ! 2872: here; it breaks destructors for non-aggr types. ! 2873: ! 2874: * decl.c (lookup_name): Only look for TYPE_DECLs in base classes of ! 2875: a type being defined, like the comment says. ! 2876: If got_scope is not an aggregate, just return NULL_TREE. ! 2877: ! 2878: * pt.c (create_nested_upt): Kung's code for creating types nested ! 2879: within uninstantiated templates now lives here (it used to live in ! 2880: hack_more_ids). It needs to be expanded. ! 2881: ! 2882: * parse.y: Stop calling see_typename so much. ! 2883: ! 2884: * decl.c (lookup_name): Deal with TTPs and UPTs. ! 2885: ! 2886: * lex.c (real_yylex): Don't set looking_for_typename just because we ! 2887: saw a 'new'. ! 2888: (dont_see_typename): #if 0 out. ! 2889: ! 2890: * spew.c (yylex): Increment looking_for_typename if the next ! 2891: character is SCOPE, rather than setting it to 1; this way, the value ! 2892: from seeing an aggr specifier will not be lost. This kinda relies ! 2893: on looking_for_typename never being < 0, which is now true. ! 2894: ! 2895: * parse.y (nested_name_specifier_1): Accept TEMPLATE_TYPE_PARMs, ! 2896: too. ! 2897: (named_class_head_sans_basetype): Accept template types, too. Oops. ! 2898: ! 2899: Fri Apr 8 16:39:35 1994 Jason Merrill ([email protected]) ! 2900: ! 2901: * decl2.c (reparse_decl_as_expr1): Handle SCOPE_REFs. ! 2902: ! 2903: * parse.y: Lose START_DECLARATOR. ! 2904: ! 2905: * search.c (lookup_nested_tag): New function to scan CLASSTYPE_TAGS ! 2906: for a class. ! 2907: ! 2908: * parse.y: Simplify fn.def2 and component_decl. Support 'enum ! 2909: A::foo' syntax. Catch invalid scopes better. ! 2910: ! 2911: * parse.y, lex.c: lose TYPENAME_COLON. ! 2912: ! 2913: * decl2.c (groktypefield): #if 0 out. ! 2914: ! 2915: * decl.c (lookup_name): If the type denoted by got_scope is ! 2916: currently being defined, look in CLASSTYPE_TAGS rather than FIELDS. ! 2917: ! 2918: * class.c (push_nested_class): Don't try to push into ! 2919: error_mark_node. ! 2920: ! 2921: Fri Apr 8 07:26:36 1994 Brendan Kehoe ([email protected]) ! 2922: ! 2923: * Makefile.in (stamp-parse): Update count of conflicts to 33. ! 2924: ! 2925: Thu Apr 7 17:47:53 1994 Jason Merrill ([email protected]) ! 2926: ! 2927: A saner implementation of nested types that treats template types ! 2928: no differently from non-template types. There are still some ! 2929: shortcomings of our system; most notably, it is difficult to look ! 2930: for a nested type that is hidden by another name, because of the way ! 2931: we keep track of hidden types. But this shouldn't be a problem for ! 2932: just about anyone. Perhaps lookup_field should be fixed up a bit. ! 2933: ! 2934: * spew.c: Moved handling of nested types/scoping from the lexer ! 2935: into the parser. Removed variable template_type_seen_before_scope. ! 2936: Removed functions frob_identifier, hack_more_ids, and various cruft ! 2937: that was #if 0'd out in the past, reducing the size of the file from ! 2938: 1146 lines to 450 lines. We can't quite do away with spew.c yet, ! 2939: though; we still need it for do_aggr () and checking for SCOPE after ! 2940: the current identifier. And setting lastiddecl. ! 2941: ! 2942: * parse.y: Moved handling of nested types/scoping from the lexer ! 2943: into the parser, using a new global variable `got_scope'. Reduced ! 2944: the number of states by 53. Implemented all uses of explicit global ! 2945: scope. Removed terminals SCOPED_TYPENAME and SCOPED_NAME. Removed ! 2946: nonterminals tmpl.1, scoped_base_class, id_scope, typename_scope, ! 2947: scoped_typename. Added nonterminals nested_type, ! 2948: qualified_type_name, complete_type_name, qualified_id, ptr_to_mem, ! 2949: nested_name_specifier, global_scope, overqualified_id, type_name. ! 2950: Changed many others. Added 9 new reduce/reduce conflicts, which are ! 2951: nested type parallels of 9 that were already in the grammar for ! 2952: non-nested types. Eight of the now 33 conflicts should be removed ! 2953: in the process of resolving the late binding between variable and ! 2954: function decls. ! 2955: ! 2956: * gxxint.texi (Parser): Update. ! 2957: ! 2958: * cp-tree.h (IS_AGGR_TYPE_CODE): Add UNINSTANTIATED_P_TYPE. ! 2959: ! 2960: * lex.h: Add decl for got_scope. ! 2961: ! 2962: * lex.c (see_typename): Claim to be the lexer when calling ! 2963: lookup_name. ! 2964: ! 2965: * decl.c (lookup_name): When called from the lexer, look at ! 2966: got_scope and looking_at_typename; otherwise don't. ! 2967: ! 2968: Thu Apr 7 22:05:47 1994 Mike Stump ([email protected]) ! 2969: ! 2970: 31th Cygnus<->FSF merge. ! 2971: ! 2972: Thu Apr 7 17:47:53 1994 Jason Merrill ([email protected]) ! 2973: ! 2974: * decl2.c (mark_vtable_entries): Call this to mark all the ! 2975: entries in the vtable addressable. ! 2976: (finish_decl_parsing): Handle SCOPE_REFs. ! 2977: ! 2978: * decl.c (decls_match): Always call compparms with strict == 1. ! 2979: Handle the special case of C function redecl here. ! 2980: (duplicate_decls): Only keep the old type if the new decl takes no ! 2981: arguments. ! 2982: ! 2983: * typeck.c (compparms): Also allow t1 to be ... if strict == 0. ! 2984: ! 2985: Thu Apr 7 16:17:50 1994 Mike Stump ([email protected]) ! 2986: ! 2987: * class.c (build_vtable_entry): Fix breakage introduced Apr 5 ! 2988: 17:48:41. ! 2989: ! 2990: Wed Apr 6 16:05:10 1994 Per Bothner ([email protected]) ! 2991: ! 2992: * init.c (build_virtual_init), search.c (build_vbase_vtables_init), ! 2993: ch-tree.h: Every place these functions were called, the result was ! 2994: immediately passed to expand_expr_stmt. Reduce redundancy by ! 2995: calling expand_expr_init *inside* these functions. These ! 2996: makes for a simpler interface, and we don't have to build ! 2997: compound expressions. Hence, rename these function to: ! 2998: expand_virtual_init and expand_vbase_vtables_init respectively. ! 2999: * init.c, decl.c: Change callers of these functions. ! 3000: * init.c, cp-tree.h (expand_virtual_init): Make static. ! 3001: ! 3002: * decl2.c (finish_file): Check TREE_PUBLIC||TREE_ADDRESSABLE ! 3003: rather than DECL_SAVED_INSNS before emitting inlines. ! 3004: ! 3005: Wed Apr 6 13:06:39 1994 Jason Merrill ([email protected]) ! 3006: ! 3007: * spew.c (init_spew): #if 0 out stuff used by arbitrate_lookup. ! 3008: ! 3009: * decl.c (duplicate_decls): If this is a new declaration of an ! 3010: extern "C" function, keep the type (for the argtypes). ! 3011: (redeclaration_error_message): Don't check DECL_LANGUAGE here. ! 3012: (decls_match): Call compparms with a value of strict dependent on ! 3013: the value of strict_prototypes for DECL_LANGUAGE (oldecl). ! 3014: ! 3015: * typeck.c (compparms): ... is only equivalent to non-promoting ! 3016: parms if we're not being strict. ! 3017: ! 3018: * parse.y (empty_parms): Don't check flag_ansi || pedantic here. ! 3019: ! 3020: * decl.c (init_decl_processing): if (flag_ansi || pedantic) ! 3021: strict_prototypes_lang_c = strict_prototypes_lang_cplusplus; ! 3022: ! 3023: * decl2.c (grok_function_init): Don't set DECL_INITIAL on pure ! 3024: virtuals. ! 3025: ! 3026: Tue Apr 5 17:48:41 1994 Per Bothner ([email protected]) ! 3027: ! 3028: Support for implementing vtables with thunks. ! 3029: * tree.def (THUNK_DECL): New TREE_CODE. ! 3030: * cp-tree.h (FNADDR_FROM_VTABLE_ENTRY), tree.c ! 3031: (fnaddr_from_vtable_entry): Handle flag_vtable_thunks case. ! 3032: * cp-tree.h (memptr_type): New variable. ! 3033: * class.c (build_vtable_entry): Build thunk if necessary. ! 3034: * class.c (build_vfn_ref): If using thunks, don't need ! 3035: to add delta field from vtable (there is none!). ! 3036: * decl.c: Add memptr_type as well as vtable_entry_type. ! 3037: If using thunks, the latter is just ptr_type_node. ! 3038: * gc.c, typeck.c: Use memptr_typeChange, not vtable_entry_type. ! 3039: * decl2.c (finish_vtable_vardecl): Handle thunks. ! 3040: * expr.c (cplus_expand_expr): Support THUNK_DECL. ! 3041: ! 3042: * decl.c (grokdeclarator): Set DECL_THIS_EXTERN if "extern". ! 3043: * decl.c (start_function): Set current_extern_inline based on ! 3044: DECL_THIS_EXTERN, not TREE_PUBLIC. ! 3045: * decl.c (finish_function): Call mark_inline_for_output if needed, ! 3046: ! 3047: Improve intelligence about when to emit inlines. ! 3048: * cp-tree.h (lang_decl_flags): New field saved_inline. ! 3049: * cp-tree.h (DECL_SAVED_INLINE): New macro. ! 3050: * class.c (add_virtual_function): Don't set TREE_ADDRESSABLE. ! 3051: * decl.h, decl.c (pending_addressable_inlines): Removed. ! 3052: * decl2.c (pending_addressable_inlines): Renamed to saved_inlines. ! 3053: * decl2.c (mark_inline_for_output): Do nothing if ! 3054: DECL_SAVED_INLINE; otherwise set it (and add to saved_inlines list). ! 3055: * decl2.c (finish_vtable_vardecl): SET_CLASSTYPE_INTERFACE_KNOWN ! 3056: and set CLASSTYPE_INTERFACE_ONLY if there is a non-inline virtual. ! 3057: * decl2.c (finish_file): Writing out inlines later, so we can ! 3058: also handle the ones needed for vtbales. ! 3059: * decl2.c (write_vtable_entries, finish_vtable_typedecl): Removed. ! 3060: ! 3061: * cp-tree.h, class.c, decl2.c, search.c: Remove -fvtable-hack ! 3062: and flag_vtable_hack. Use -fvtable-thunks and flag_vtable_thunks ! 3063: instead. (The rationale is that these optimizations both break binary ! 3064: compatibility, but should become the default in a future release.) ! 3065: ! 3066: Wed Apr 6 10:53:56 1994 Mike Stump ([email protected]) ! 3067: ! 3068: * class.c (modify_vtable_entries): Never reset the DECL_CONTEXT ! 3069: of a fndecl, as we might not be from that vfield. ! 3070: ! 3071: Tue Apr 5 17:43:35 1994 Kung Hsu ([email protected]) ! 3072: ! 3073: * class.c (add_virtual_function): fix bug for pure virtual, so ! 3074: that DECL_VINDEX of the dummy decl copied won't be error. ! 3075: (see also Apr 4 change) ! 3076: ! 3077: Tue Apr 5 17:23:45 1994 Per Bothner ([email protected]) ! 3078: ! 3079: * typeck.c (c_expand_return): Before checking that we're not ! 3080: returning the address of a local, make sure it's a VAR_DECL. ! 3081: (And don't worry about it being a TREE_LIST.) ! 3082: ! 3083: Tue Apr 5 13:26:42 1994 Jason Merrill ([email protected]) ! 3084: ! 3085: * parse.y (YYDEBUG): Always define. ! 3086: * lex.c (YYDEBUG): Ditto. ! 3087: ! 3088: Mon Apr 4 11:28:17 1994 Kung Hsu ([email protected]) ! 3089: ! 3090: * class.c (finish_struct): backup out the change below, put the ! 3091: new change for the same purpose. The change below breaks code. ! 3092: ! 3093: * class.c (finish_struct): if pure virtual, copy node and make ! 3094: RTL point to abort, then put in virtual table. ! 3095: * decl2.c (grok_function_iit): reinstate Mar 31 change. ! 3096: ! 3097: Sat Apr 2 03:12:58 1994 Jason Merrill ([email protected]) ! 3098: ! 3099: * init.c (build_new): pedwarn about newing const and volatile ! 3100: types. ! 3101: ! 3102: * tree.c (get_identifier_list): Only do the special handling ! 3103: thing if we're dealing with the main variant of the record type. ! 3104: ! 3105: * cvt.c (convert_to_reference): When converting between ! 3106: compatible reference types, use the pointer conversion machinery. ! 3107: Don't just blindly overwrite the old type. ! 3108: ! 3109: Fri Apr 1 17:14:42 1994 Jason Merrill ([email protected]) ! 3110: ! 3111: * call.c (build_method_call): When looking at global functions, ! 3112: be sure to use instance_ptr for the first argument, not some version ! 3113: of it that has been cast to a base class. Also do this before ! 3114: comparing candidates. ! 3115: ! 3116: Thu Mar 31 19:50:35 1994 Jason Merrill ([email protected]) ! 3117: ! 3118: * call.c (build_method_call): Constructors can be called for ! 3119: const objects. ! 3120: ! 3121: Thu Mar 31 16:20:16 1994 Kung Hsu ([email protected]) ! 3122: ! 3123: * decl2.c (grok_func_init): do not abort as rtl for pur virtual ! 3124: fucntions. They can be defined somewhere else. ! 3125: ! 3126: Sat Jan 23 23:23:26 1994 Stephen R. van den Berg ([email protected]) ! 3127: ! 3128: * decl.c (init_decl_processing): Declare __builtin_return_address ! 3129: and __builtin_frame_address for C++ as well. ! 3130: ! 3131: Thu Mar 31 12:35:49 1994 Mike Stump ([email protected]) ! 3132: ! 3133: * typeck2.c (store_init_value): Integral constant variables are ! 3134: always constant, even when doing -fpic. ! 3135: ! 3136: Sat Jan 23 23:23:26 1994 Stephen R. van den Berg ([email protected]) ! 3137: ! 3138: * decl.c (redeclaration_error_message): Pass the types to ! 3139: comptypes. ! 3140: ! 3141: Wed Mar 30 21:29:25 1994 Mike Stump ([email protected]) ! 3142: ! 3143: Cures incorrect errors about pure virtuals in a class, when they ! 3144: have been overridden in a derived class. ! 3145: ! 3146: * search.c (get_abstract_virtuals): Reimplement. ! 3147: * search.c (get_abstract_virtuals_1): New routine. ! 3148: ! 3149: Wed Mar 30 14:10:04 1994 Jason Merrill ([email protected]) ! 3150: ! 3151: * pt.c (push_template_decls): Make the pushed level pseudo ! 3152: global. ! 3153: ! 3154: * parse.y (extdefs): Don't pop everything if the current binding ! 3155: level is pseudo_global. ! 3156: ! 3157: * decl.c (pop_everything): Stop on reaching a pseudo-global ! 3158: binding level. ! 3159: ! 3160: * cp-tree.h (DECL_FUNCTION_MEMBER_P): Change to more reliable test. ! 3161: ! 3162: * decl.c (duplicate_decls): Only copy DECL_SOURCE_{FILE_LINE} if ! 3163: the old decl actually had an initializer. ! 3164: ! 3165: * {various}: Clean up gcc -W complaints. ! 3166: ! 3167: * cp-tree.h (DECL_FUNCTION_MEMBER_P): Currently defined to be ! 3168: (DECL_CONTEXT (NODE) != NULL_TREE). ! 3169: ! 3170: * parse.y (lang_extdef): Call pop_everything if necessary. ! 3171: ! 3172: * decl.c (pop_everything): New function for popping binding ! 3173: levels left over after a syntax error. ! 3174: (pushdecl): Use DECL_FUNCTION_MEMBER_P to decide whether or not ! 3175: a function is a member. ! 3176: ! 3177: Wed Mar 30 14:20:50 1994 Mike Stump ([email protected]) ! 3178: ! 3179: Cures calling a more base base class function, when a more derived ! 3180: base class member should be called in some MI situations. ! 3181: ! 3182: * search.c (make_binfo): Use more the more specialized base ! 3183: binfos from the binfo given as the second argument to make_binfo, ! 3184: instead of the unspecialized ones from the TYPE_BINFO. ! 3185: * class.c (finish_base_struct): Ditto, update callers. ! 3186: * search.c (dfs_get_vbase_types): Ditto. ! 3187: * tree.c (propagate_binfo_offsets, layout_vbasetypes): Ditto. ! 3188: * decl.c (xref_tag): Use NULL_TREE instead of 0. ! 3189: * lex.c (make_lang_type): Ditto. ! 3190: ! 3191: Wed Mar 30 14:10:04 1994 Jason Merrill ([email protected]) ! 3192: ! 3193: * decl.c (pushdecl): If pushing a C-linkage function, only do a ! 3194: push_overloaded_decl. ! 3195: (duplicate_decls): Standard overloading does not shadow built-ins. ! 3196: ! 3197: Tue Mar 29 00:54:18 1994 Jason Merrill ([email protected]) ! 3198: ! 3199: * pt.c (end_template_decl): Don't call push_overloaded_decl. ! 3200: ! 3201: * init.c (do_friend): Don't call push_overloaded_decl. ! 3202: ! 3203: * decl.c (pushdecl): Call push_overloaded_decl for functions and ! 3204: function templates. ! 3205: (duplicate_decls): functions and function templates are not ! 3206: duplicates, but don't complain about calling this function to ! 3207: compare them. ! 3208: (push_overloaded_decl): Don't deal with linkage. Call ! 3209: duplicate_decls. ! 3210: (redeclaration_error_message): Deal with linkage. ! 3211: ! 3212: * decl.c (start_function): If push_overloaded_decl returns an ! 3213: older version of the function, deal with it. ! 3214: ! 3215: * decl.c (start_function): Be sure only to push_overloaded_decl ! 3216: for non-members. ! 3217: ! 3218: * decl.c (grokfndecl): Put back clearing of DECL_CHAIN for ! 3219: methods. ! 3220: (start_function): Lose broken and redundant code for checking old ! 3221: decl. ! 3222: ! 3223: * init.c (add_friend): Give line numbers of both friend decls ! 3224: when warning about re-friending. ! 3225: ! 3226: * pt.c (tsubst): Use comptypes rather than == to compare the ! 3227: types of the method as declared and as defined, since default ! 3228: parameters may be different. ! 3229: ! 3230: * call.c (build_method_call): Use brendan's candidate printing ! 3231: routine. ! 3232: ! 3233: * decl.c (start_method): Methods defined in the class body are ! 3234: inline whether or not it's a template class. ! 3235: ! 3236: Mon Mar 28 16:39:26 1994 Jason Merrill ([email protected]) ! 3237: ! 3238: * parse.y (initdcl0): Add "extern" to current_declspecs if ! 3239: have_extern_spec && ! used_extern_spcec. ! 3240: ! 3241: * tree.c (really_overloaded_fn): A fn with more than one ! 3242: overload. ! 3243: ! 3244: * pt.c (end_template_decl): Use really_overloaded_fn. ! 3245: ! 3246: * decl.c (duplicate_decls): When smashing a decl into a previous ! 3247: definition, keep the old file and line. ! 3248: Don't deal with overloaded functions. ! 3249: Lose old code for checking arg types of functions. ! 3250: Check for overloaded C functions. ! 3251: (pushdecl): Deal with overloaded functions. ! 3252: (start_decl): Expect pushdecl to return an appropriate function decl. ! 3253: (start_function): Ditto. ! 3254: (push_overloaded_decl): Don't check for overloaded C functions. ! 3255: ! 3256: * *.c: Stop using DECL_OVERLOADED, it being archaic. ! 3257: TREE_OVERLOADED should probably go, too. ! 3258: ! 3259: Mon Mar 28 14:00:45 1994 Ron Guilmette ([email protected]) ! 3260: ! 3261: * typeck.c (comp_target_types): Call comp_target_parms with ! 3262: strict == 1. ! 3263: ! 3264: Sun Mar 27 00:07:45 1994 Jason Merrill ([email protected]) ! 3265: ! 3266: * parse.y (empty_parms): Don't parse () as (...) in extern "C" ! 3267: sections if we're compiling with -ansi or -pedantic. ! 3268: ! 3269: * decl.c (decls_match): Don't treat (int) and (int&) as matching. ! 3270: ! 3271: * decl2.c (grokfield): Don't pedwarn twice about initializing ! 3272: field. ! 3273: ! 3274: * decl.c (push_overloaded_decl): Warn about shadowing ! 3275: constructor. ! 3276: (redeclaration_error_message): Don't allow 'int a; int a;' ! 3277: ! 3278: * cvt.c (build_up_reference): Only check for valid upcast if ! 3279: LOOKUP_PROTECT is set, not just any flag. ! 3280: ! 3281: Fri Mar 25 01:22:31 1994 Jason Merrill ([email protected]) ! 3282: ! 3283: * lex.c (check_newline): When we see a #pragma implementation, ! 3284: also set it for the main input file. ! 3285: ! 3286: * init.c (build_new): Convert array size argument to size_t. ! 3287: ! 3288: * parse.y (primary): If we're doing a parenthesized type-id, call ! 3289: groktypename before passing it to build_new. ! 3290: ! 3291: * call.c (build_method_call): Deal properly with const and ! 3292: volatile for instances of reference type. ! 3293: ! 3294: * decl.c (store_return_init): Change 'if (pedantic) error' to 'if ! 3295: (pedantic) pedwarn'. ! 3296: ! 3297: * decl.c (grokdeclarator): Don't complain about putting `static' ! 3298: and `inline' on template function decls. ! 3299: ! 3300: Thu Mar 24 23:18:19 1994 Jason Merrill ([email protected]) ! 3301: ! 3302: * call.c (build_method_call): Preserve const & volatile on ! 3303: `this'. ! 3304: ! 3305: Thu Mar 24 16:21:52 1994 Mike Stump ([email protected]) ! 3306: ! 3307: * init.c (build_new, build_vec_delete): Use global new and delete ! 3308: for arrays. ! 3309: * decl2.c (delete_sanity): Ditto. ! 3310: ! 3311: Thu Mar 24 02:10:46 1994 Jason Merrill ([email protected]) ! 3312: ! 3313: * cvt.c (convert_to_reference): If i is an lvalue, ! 3314: (int &)i -> *(int*)&i, as per 5.2.8p9 of the latest WP. ! 3315: (convert_force): Call convert_to_reference with LOOKUP_COMPLAIN. ! 3316: ! 3317: Wed Mar 23 17:45:37 1994 Jason Merrill ([email protected]) ! 3318: ! 3319: * decl.c (duplicate_decls): Also propagate DECL_TEMPLATE_MEMBERS ! 3320: and DECL_TEMPLATE_INSTANTIATIONS. ! 3321: ! 3322: * init.c (build_new): Handle array typedefs properly. ! 3323: ! 3324: Wed Mar 23 18:23:33 1994 Mike Stump ([email protected]) ! 3325: ! 3326: 30th Cygnus<->FSF merge. ! 3327: ! 3328: Wed Mar 23 00:46:24 1994 Mike Stump ([email protected]) ! 3329: ! 3330: * class.c (modify_vtable_entries): Avoid running off the end of the ! 3331: virtuals list when processing a virtual destructor. ! 3332: * class.c (get_vtable_entry): Ditto. ! 3333: ! 3334: Wed Mar 23 00:23:59 1994 Jason Merrill ([email protected]) ! 3335: ! 3336: * decl.c (duplicate_decls): If two template decls don't match, ! 3337: just return 0. ! 3338: ! 3339: Tue Mar 22 23:49:41 1994 Jason Merrill ([email protected]) ! 3340: ! 3341: * typeck.c (convert_for_assignment): Don't pedwarn about ! 3342: converting function pointer to void *. ! 3343: ! 3344: Tue Mar 22 22:23:19 1994 Mike Stump ([email protected]) ! 3345: ! 3346: Major revamp of pointer to member functions. Cures major ! 3347: nonfunctionality when used in casts, and MI situations. ! 3348: ! 3349: * cvt.c (convert_force): Update call site of build_ptrmemfunc. ! 3350: * typeck.c (convert_for_assignment): Ditto. ! 3351: * typeck2.c (digest_init): Ditto. ! 3352: * typeck2.c (process_init_constructor): Simplify by moving code into ! 3353: digest_init. ! 3354: * typeck2.c (digest_init): Do default_conversions on init value, if ! 3355: we are processing pointer to member functions. ! 3356: * class.c (get_vfield_offset): Now non-static. Convert bit offset ! 3357: into byte offset. ! 3358: * cp-tree.h (get_vfield_offset): Ditto. ! 3359: * typeck.c (get_member_function_from_ptrfunc): Convert down to right ! 3360: instance, before fetching vtable pointer. ! 3361: * typeck.c (get_delta_difference): New routine. ! 3362: * typeck.c (build_ptrmemfunc): Revamp to handle casting better, also ! 3363: get vtable pointer out of right subobject. ! 3364: ! 3365: Tue Mar 22 17:56:48 1994 Mike Stump ([email protected]) ! 3366: ! 3367: * search.c (get_binfo): Return NULL instead of aborting, when ! 3368: passed a UNION_TYPE. ! 3369: ! 3370: Tue Mar 22 12:44:54 1994 Jason Merrill ([email protected]) ! 3371: ! 3372: These patches implement handling of redefinition/redeclaration of ! 3373: templates. ! 3374: ! 3375: * typeck.c (comptypes): Simplify. All TEMPLATE_TYPE_PARMs are ! 3376: considered compatible. ! 3377: ! 3378: * parse.y (template_def): Pass defn argument to end_template_decl. ! 3379: ! 3380: * pt.c (end_template_decl): Add defn argument. Check for ! 3381: redefinition. Simplify. ! 3382: ! 3383: * error.c (OB_UNPUT): New macro, to remove mistakes. ! 3384: (aggr_variety): Subroutine of dump_aggr_type. ! 3385: ! 3386: * decl.c (decls_match): Support templates. ! 3387: (duplicate_decls): No longer static. Don't try to lay out template ! 3388: decls. ! 3389: (pushdecl): Simplify. ! 3390: ! 3391: * cp-tree.h (DECL_TEMPLATE_MEMBERS): Use DECL_SIZE instead of ! 3392: DECL_INITIAL. ! 3393: ! 3394: Mon Mar 21 11:46:55 1994 Jason Merrill ([email protected]) ! 3395: ! 3396: * error.c (dump_decl): Support class template decls. ! 3397: (dump_type): Don't adorn template type parms. ! 3398: ! 3399: * decl.c (duplicate_decls): Save DECL_TEMPLATE_INFO from old decl ! 3400: if it was a definition. ! 3401: (redeclaration_error_message): Do the cp_error thang, and reject ! 3402: redefinition of templates. ! 3403: ! 3404: Mon Mar 21 19:36:06 1994 Per Bothner ([email protected]) ! 3405: ! 3406: * decl.c (grokdeclarator): Set TREE_PUBLIC for METHOD_TYPE ! 3407: in FIELD context, when appropriate. Also, ! 3408: CLASSTYPE_INTERFACE_ONLY is irrelevant to setting TREE_PUBLIC. ! 3409: Also, simplify check for bogus return specifiers. ! 3410: ! 3411: Mon Mar 21 11:46:55 1994 Jason Merrill ([email protected]) ! 3412: ! 3413: * parse.y (after_type_declarator1): Expand type_quals. ! 3414: (notype_declarator1): Ditto. ! 3415: (absdcl1): Ditto. ! 3416: ! 3417: Sat Mar 19 01:05:17 1994 Jason Merrill ([email protected]) ! 3418: ! 3419: * decl.c (grokdeclarator): Treat class-local typedefs like static ! 3420: members; i.e. 'typedef int f();' means that f is a function type, ! 3421: not a method type. ! 3422: ! 3423: * parse.y (decl): Change direct_* back to *. ! 3424: (type_id): Change direct_abstract_declarator to absdcl. ! 3425: (direct_declarator, direct_initdecls, direct_initdcl0): Remove again. ! 3426: ! 3427: Fri Mar 18 12:47:59 1994 Jason Merrill ([email protected]) ! 3428: ! 3429: These two patches fix crashes on instantiating a template inside a ! 3430: function with C linkage or containing labels. ! 3431: ! 3432: * class.c (current_lang_stacksize): No longer static. ! 3433: ! 3434: * decl.c (struct saved_scope): Add lang_base, lang_stack, ! 3435: lang_name, lang_stacksize, and named_labels. ! 3436: (push_to_top_level): Save them. ! 3437: (pop_from_top_level): Restore them. ! 3438: ! 3439: * gxxint.texi (Parser): Update. ! 3440: ! 3441: These two patches finish moving the task of expr/declarator ! 3442: ambiguity resolution from the lexer to the parser, and add one more ! 3443: r/r conflict. START_DECLARATOR can now be nuked. ! 3444: ! 3445: * parse.y (decl): Add "direct_" in typespec X rules. ! 3446: (direct_declarator): New nonterminal for ! 3447: direct_after_type_declarator and direct_notype_declarator. ! 3448: (direct_initdecls): Like initdecls, but uses direct_initdcl0. ! 3449: (direct_initdcl0): Like initdcl0, but uses direct_declarator. ! 3450: (named_parm): Add typespec direct_declarator rule. ! 3451: ! 3452: * spew.c (yylex): #if 0 out START_DECLARATOR insertion. ! 3453: ! 3454: These two patches disable some excessive cleverness on the part of ! 3455: g++; a non-class declaration always hides a class declaration in the ! 3456: same scope, and g++ was trying to unhide it depending on the ! 3457: enclosing expression. ! 3458: ! 3459: * spew.c (arbitrate_lookup): #if 0 out. ! 3460: ! 3461: * decl.c (lookup_name): Never call arbitrate_lookup. ! 3462: ! 3463: * parse.y (complex_notype_declarator1): Add '*' ! 3464: complex_notype_declarator1 and '&' complex_notype_declarator1 rules. ! 3465: ! 3466: * parse.y (complex_direct_notype_declarator): Restore id_scope ! 3467: see_typename TYPENAME rule, remove all other rules beginning with ! 3468: those tokens. ! 3469: (notype_unqualified_id): Add '~' see_typename IDENTIFIER rule. ! 3470: ! 3471: Thu Mar 17 17:30:01 1994 Jason Merrill ([email protected]) ! 3472: ! 3473: These changes fix the compiler's handling of the functional cast/ ! 3474: object declaration ambiguities in section 6.8 of the ARM. They also ! 3475: add 11 reduce/reduce conflicts. Sigh. ! 3476: ! 3477: * parse.y: Add precedence decls for OPERATOR and '~'. ! 3478: (notype_unqualified_id): New nonterminal, encompasses all of the ! 3479: ANSI unqualified-id nonterminal except TYPENAMEs. ! 3480: (expr_or_declarator): New nonterminal to delay parsing of code like ! 3481: `int (*a)'. ! 3482: (primary): Use notype_unqualified_id. ! 3483: (decl): Add typespec initdecls ';' and typespec declarator ';' ! 3484: rules. ! 3485: (initdcl0): Deal with the above. ! 3486: (complex_notype_declarator1): A notype_declarator that is not also ! 3487: an expr_or_declarator. ! 3488: (complex_direct_notype_declarator): A direct_notype_declarator that ! 3489: doesn't conflict with expr_or_declarator. Use ! 3490: notype_unqualified_id. Remove id_scope see_typename TYPENAME rule. ! 3491: (functional_cast): New nonterminal, for the three functional cast ! 3492: rules. So that they can be moved after ! 3493: complex_direct_notype_declarator. ! 3494: (see_typename): Don't accept type_quals any more. ! 3495: ! 3496: * decl2.c (reparse_decl_as_expr): New function to deal with parse ! 3497: nodes for code like `int (*a)++;'. ! 3498: (reparse_decl_as_expr1): Recursive subroutine of the above. ! 3499: (finish_decl_parsing): New function to deal with parse nodes for ! 3500: code like `int (*a);'. See the difference? ! 3501: ! 3502: Thu Mar 17 12:16:10 1994 Mike Stump ([email protected]) ! 3503: ! 3504: These changes break binary compatibility in code with classes ! 3505: that use virtual bases. ! 3506: ! 3507: * search.c (dfs_get_vbase_types): Simplify and correct to make ! 3508: sure virtual bases are initialized in dfs ordering. ! 3509: * search.c (get_vbase_types): Simplify and make readable. ! 3510: ! 3511: Thu Mar 17 12:01:10 1994 Jason Merrill ([email protected]) ! 3512: ! 3513: * parse.y: s/ typename / type_id /g ! 3514: ! 3515: Wed Mar 16 17:42:52 1994 Kung Hsu ([email protected]) ! 3516: ! 3517: * parse.y (typespec): add SCOPE TYPENAME for global scoped ! 3518: type. e.g. ::B x. ! 3519: ! 3520: * decl.c (complete_array_type): fix a bug that in -pendantic ! 3521: mode even there's no initializer, it will continue to build ! 3522: default index. ! 3523: ! 3524: Wed Mar 16 17:43:07 1994 Jason Merrill ([email protected]) ! 3525: ! 3526: * parse.y (direct_notype_declarator): Add PTYPENAME rule, remove ! 3527: all of the scoped PTYPENAME rules. ! 3528: ! 3529: Wed Mar 16 16:39:02 1994 Mike Stump ([email protected]) ! 3530: ! 3531: * init.c (build_offset_ref): The value of A::typedef_name is ! 3532: always the TYPE_DECL, and never an error. ! 3533: ! 3534: Tue Mar 15 20:02:35 1994 Jason Merrill ([email protected]) ! 3535: ! 3536: * search.c (get_base_distance_recursive): Two binfos can only ! 3537: represent the same object if they are both via_virtual. ! 3538: ! 3539: * class.c (finish_base_struct): Check vbases for ambiguity, too. ! 3540: ! 3541: * search.c (get_vbase_types): Accept binfo argument, too. ! 3542: ! 3543: Tue Mar 15 19:22:05 1994 Kung Hsu ([email protected]) ! 3544: ! 3545: * decl.c (complete_array_type): complete TYPE_DOMAIN of the ! 3546: initializer also, because back-end requires it. ! 3547: ! 3548: Tue Mar 15 15:33:31 1994 Jason Merrill ([email protected]) ! 3549: ! 3550: * error.c (dump_expr): Support member functions (which show up as ! 3551: OFFSET_REFs). ! 3552: ! 3553: Mon Mar 14 16:24:36 1994 Mike Stump ([email protected]) ! 3554: ! 3555: * init.c (build_new): Set the return type of multidimensional ! 3556: news correctly. ! 3557: ! 3558: Fri Mar 11 15:35:39 1994 Kung Hsu ([email protected]) ! 3559: ! 3560: * call.c (build_method_call): if basetype not equal to type ! 3561: of the instance, use the type of the instance in building ! 3562: destructor. ! 3563: ! 3564: Thu Mar 10 17:07:10 1994 Kung Hsu ([email protected]) ! 3565: ! 3566: * parse.y (direct_notype_declarator): add push_nested_type for ! 3567: 'template_type SCOPED_NAME' rule. ! 3568: ! 3569: Tue Mar 8 00:19:58 1994 Jason Merrill ([email protected]) ! 3570: ! 3571: * parse.y (parm): Add typed_declspec1 {absdcl, epsilon} rules. ! 3572: ! 3573: Sat Mar 5 04:47:48 1994 Jason Merrill ([email protected]) ! 3574: ! 3575: * parse.y (regcast_or_absdcl): New nonterminal to implement late ! 3576: reduction of constructs like `int ((int)(int)(int))'. ! 3577: (cast_expr): Use it. ! 3578: (sub_cast_expr): Everything that can come after a cast. ! 3579: (typed_declspecs1): typed_declspecs that are not typed_typespecs. ! 3580: (direct_after_type_declarator): Lose PAREN_STAR_PAREN rule. ! 3581: (direct_abstract_declarator): Replace '(' parmlist ')' rule with ! 3582: '(' complex_parmlist ')' and regcast_or_absdcl. ! 3583: (parmlist): Split ! 3584: (complex_parmlist): Parmlists that are not also typenames. ! 3585: (parms_comma): Enabler. ! 3586: (named_parm): A parm that is not also a typename. Use declarator ! 3587: rather than dont_see_typename abs_or_notype_decl. Expand ! 3588: typed_declspecs inline. ! 3589: (abs_or_notype_decl): Lose. ! 3590: (dont_see_typename): Comment out. ! 3591: (bad_parm): Break out abs_or_notype_decl into two rules. ! 3592: ! 3593: Fri Mar 4 18:22:39 1994 Jason Merrill ([email protected]) ! 3594: ! 3595: * decl2.c (reparse_decl_as_casts): New function to change parse ! 3596: nodes for `(int)(int)(int)' from "function taking int and returning ! 3597: function taking int and returning function taking int" to "... cast ! 3598: to int, cast to int, cast to int". ! 3599: ! 3600: * decl2.c (reparse_decl_as_expr): Recursive function to change ! 3601: parse nodes for `A()()' from "function returning function returning ! 3602: A" to "A().operator()". ! 3603: ! 3604: * parse.y (primary): Replace `typespec LEFT_RIGHT' rule with ! 3605: `typespec fcast_or_absdcl' rule. ! 3606: (fcast_or_absdcl): New nonterminal to implement late reduction of ! 3607: constructs like `A()()()()'. ! 3608: (typename): Replace `typespec absdcl1' rule with ! 3609: `typespec direct_abstract_declarator' rule. ! 3610: (direct_abstract_declarator): Replace `LEFT_RIGHT type_quals' rule ! 3611: with `fcast_or_absdcl type_quals' rule. ! 3612: ! 3613: Fri Mar 4 16:18:03 1994 Mike Stump ([email protected]) ! 3614: ! 3615: * tree.c (lvalue_p): Improve OFFSET_REF handling, so that it ! 3616: matches Section 5.5. ! 3617: ! 3618: Fri Mar 4 14:01:59 1994 Jason Merrill ([email protected]) ! 3619: ! 3620: * error.c (dump_type_prefix): Don't print basetype twice for ! 3621: pmfs. ! 3622: ! 3623: Fri Mar 4 13:24:33 1994 Mike Stump ([email protected]) ! 3624: ! 3625: * typeck.c (convert_arguments): Handle setHandler(A::handlerFn) ! 3626: so that it is like setHandler(&A::handlerFn). Cures an `invalid ! 3627: lvalue in unary `&''. ! 3628: ! 3629: Fri Mar 4 11:15:59 1994 Jason Merrill ([email protected]) ! 3630: ! 3631: * gxxint.texi (Copying Objects): New section discussing default ! 3632: op= problems with virtual inheritance. ! 3633: ! 3634: * decl2.c (grokoptypename): Just does grokdeclarator and ! 3635: build_typename_overload, since the parser can't call grokdeclarator ! 3636: directly. ! 3637: ! 3638: * method.c (build_typename_overload): Set IDENTIFIER_GLOBAL_VALUE ! 3639: and TREE_TYPE on generated identifiers. ! 3640: ! 3641: * decl.c (grokdeclarator): Don't deal with TYPE_EXPRs anymore. ! 3642: ! 3643: * parse.y (parm): Convert `const char *' to `__opPCc' here. ! 3644: ! 3645: * error.c (dump_decl): Say sorry rather than my_friendly_aborting ! 3646: if we can't figure out what to do. ! 3647: (dump_type*): Ditto. ! 3648: ! 3649: * typeck2.c (build_m_component_ref): 'component' is an expr, not ! 3650: a decl. Also move the IS_AGGR_TYPE check after the stripping of ! 3651: REFERENCE_TYPE. ! 3652: ! 3653: Fri Mar 4 04:46:05 1994 Mike Stump ([email protected]) ! 3654: ! 3655: * call.c (build_method_call): Handle b->setHandler(A::handlerFn) ! 3656: so that it is like b->setHandler(&A::handlerFn). Cures an `invalid ! 3657: lvalue in unary `&''. ! 3658: ! 3659: Thu Mar 3 12:38:15 1994 Jason Merrill ([email protected]) ! 3660: ! 3661: * parse.y: Add precedence specification for START_DECLARATOR. ! 3662: (type_quals): Move before primary. ! 3663: (typename): Move before typed_declspecs, add 'typespec absdcl1' rule. ! 3664: ! 3665: * decl2.c (grokoptypename): Lose. ! 3666: ! 3667: * decl.c (grokdeclarator): Parse TYPE_EXPRs in the initial scan, ! 3668: rather than waiting until later. ! 3669: ! 3670: Wed Mar 2 14:12:23 1994 Jason Merrill ([email protected]) ! 3671: ! 3672: * parse.y (unary_expr): Use 'typename' in 'new' rules, rather ! 3673: than expanding it inline. ! 3674: (typename): Expand empty option of (former) absdcl inline. ! 3675: (abs_or_notype_decl): Ditto. ! 3676: (absdcl): Lose empty rule. ! 3677: (conversion_declarator): New nonterminal for 'typename' of 'operator ! 3678: typename'. ! 3679: (operator_name): Use it instead of absdcl. ! 3680: ! 3681: * parse.y: Add precedence declarations for SCOPED_TYPENAME, ! 3682: TYPEOF, and SIGOF. ! 3683: (typed_declspecs): Accept typed_typespecs, rather than typespec ! 3684: directly. Add rules with reserved_typespecquals. ! 3685: (reserved_declspecs): Don't accept typespecqual_reserved at the ! 3686: beginning of the list. The typed_declspecs rule will deal with this ! 3687: omission. ! 3688: (declmods): Accept nonempty_type_quals, rather than TYPE_QUAL ! 3689: directly. ! 3690: ! 3691: * parse.y (direct_notype_declarator, ! 3692: direct_after_type_declarator, direct_abstract_declarator): Split up ! 3693: the declarator1 nonterminals to match the draft standard and avoid ! 3694: ambiguities. ! 3695: (new_type_id, new_declarator, direct_new_declarator, ! 3696: new_member_declarator): New nonterminals to implement the subset of ! 3697: 'typename' allowed in new expressions. ! 3698: (unary_expr): Use new_type_id instead of typename. ! 3699: (after_type_declarator1, absdcl1): Fix semantics of member pointers. ! 3700: (abs_member_declarator, after_type_member_declarator): Lose. ! 3701: ! 3702: * parse.y (absdcl1): Don't require parens around ! 3703: abs_member_declarator. ! 3704: (abs_member_declarator): Lose see_typename from rules. ! 3705: (after_type_member_declarator): Ditto. ! 3706: ! 3707: * tree.c (get_identifier_list): New function, containing code ! 3708: previously duplicated in get_decl_list and list_hash_lookup_or_cons. ! 3709: (get_decl_list): Use it. ! 3710: (list_hash_lookup_or_cons): Ditto. ! 3711: ! 3712: * parse.y (typed_declspecs, declmods): It's not necessary to hash ! 3713: the declspecs on class_obstack, so don't. This way typed_typespecs ! 3714: can reduce to typed_declspecs. ! 3715: ! 3716: Wed Mar 2 14:29:18 1994 Jason Merrill ([email protected]) ! 3717: ! 3718: * cvt.c (build_up_reference): If we aren't checking visibility, ! 3719: also allow base->derived conversions. ! 3720: ! 3721: Mon Feb 28 15:14:29 1994 Per Bothner ([email protected]) ! 3722: ! 3723: * typeck.c (build_c_cast): Remove bogus hack when converting ! 3724: to a reference type. ! 3725: ! 3726: * cp-tree.h (lang_decl::vbase_init_list, DECL_VBASE_INIT_LIST): ! 3727: Removed, not used. ! 3728: (lang_stype::methods, lang_decl::next_method): New fields. ! 3729: (CLASSTYPE_METHODS, DECL_NEXT_METHOD): New macros. ! 3730: * decl.c (duplicate_decls): Preserve DECL_NEXT_METHOD. ! 3731: ! 3732: * cp-tree.h, decl2.c (flag_vtable_hack): New flag. ! 3733: * decl2.c (finish_vtable_vardecl): If flag_vtable_hack, ! 3734: and !CLASSTYPE_INTERFACE_KNOWN, try to use the presence of ! 3735: a non-inline virtual function to control emitting of vtables. ! 3736: * class.c (finish_struct): Build CLASSTYPE_METHODS list. ! 3737: * search.c (build_vbase_vtables_init): Don't assemble_external ! 3738: (yet) if flag_vtable_hack. ! 3739: * class.c (build_vfn_ref): Ditto. ! 3740: ! 3741: Mon Feb 28 14:54:13 1994 Jason Merrill ([email protected]) ! 3742: ! 3743: * parse.y (component_decl): Don't include "typed_declspecs ! 3744: declarator ';'" speedup, since it breaks enums. ! 3745: ! 3746: Fri Feb 25 15:43:44 1994 Per Bothner ([email protected]) ! 3747: ! 3748: * class.c (finish_struct): Minor optimization for building ! 3749: fn_fields list. ! 3750: ! 3751: Fri Feb 25 15:23:42 1994 Jason Merrill ([email protected]) ! 3752: ! 3753: * decl.c (start_function): Fix detection of function overloading. ! 3754: ! 3755: Thu Feb 24 22:26:19 1994 Mike Stump ([email protected]) ! 3756: ! 3757: * lex.c (check_newline): #pragma interface can take a string ! 3758: argument, just like #pragma implementation. #pragma implementation ! 3759: checks for garbage on the line, line #pragma interface does. Main ! 3760: input files do not auto implement like named files, #pragma ! 3761: implementation must be used explicitly. ! 3762: ! 3763: Thu Feb 24 17:09:01 1994 Jason Merrill ([email protected]) ! 3764: ! 3765: * parse.y (components): Handle list of one again. ! 3766: (notype_components): Ditto. ! 3767: (after_type_declarator1): Take maybe_raises out again. ! 3768: ! 3769: * gxxint.texi (Parser): Document additional r/r conflict. ! 3770: ! 3771: Wed Feb 23 14:42:55 1994 Jason Merrill ([email protected]) ! 3772: ! 3773: * gxxint.texi (Parser): Add node. ! 3774: ! 3775: * Makefile.in (stamp-parse): Update expected conflict count. ! 3776: ! 3777: * parse.y (various): Replace "declmods declarator" with "declmods ! 3778: notype_declarator". The comment saying that "declmods declarator ';'" ! 3779: corresponds to "int i;" was wrong; it corresponds to "const i;". ! 3780: (component_decl): Add "typed_declspecs declarator ';'" rule; this ! 3781: *does* correspond to "int i;". Change "declmods components" to ! 3782: "declmods notype_components". ! 3783: (components): Don't deal with a list of one anymore. ! 3784: (notype_components): New nonterminal, corresponds to notype_declarator. ! 3785: ({after_,no}type_component_decl{,0}): More new nonterminals. ! 3786: ({after_,no}type_declarator): Fold in START_DECLARATOR token. ! 3787: Eliminates four reduce/reduce conflicts. ! 3788: ! 3789: (expr): Depend on nontrivial_exprlist instead of nonnull_exprlist. ! 3790: (nontrivial_exprlist): New nonterminal: A list of at least two ! 3791: expr_no_commas's. ! 3792: (nonnull_exprlist): Depend on nontrival_exprlist. ! 3793: Eliminates four reduce/reduce conflicts. ! 3794: ! 3795: (named_class_head): Move intermediate code block into separate ! 3796: nonterminal so that we can stick %prec EMPTY on it. ! 3797: ! 3798: Add more %prec EMPTY's to eliminate remaining shift/reduce ! 3799: conflicts. ! 3800: ! 3801: (after_type_declarator): Add maybe_raises to fndecl rules. ! 3802: (after_type_declarator_no_typename): Remove. ! 3803: For correctness. ! 3804: ! 3805: Document remaining reduce/reduce conflicts. ! 3806: ! 3807: Tue Feb 22 12:10:32 1994 Jason Merrill ([email protected]) ! 3808: ! 3809: * search.c (get_base_distance): Only bash BINFO_INHERITANCE_CHAIN ! 3810: (TYPE_BINFO (type)) if we care about the path. ! 3811: ! 3812: * tree.c (lvalue_p): A COND_EXPR is an lvalue if both of the ! 3813: options are. ! 3814: ! 3815: Mon Feb 21 19:59:40 1994 Mike Stump ([email protected]) ! 3816: ! 3817: * Makefile.in (mostlyclean): lex.c is a source file, don't ! 3818: remove. ! 3819: ! 3820: Sat Feb 19 01:27:14 1994 Jason Merrill ([email protected]) ! 3821: ! 3822: * parse.y: Eliminate 20 shift/reduce conflicts. ! 3823: ! 3824: Fri Feb 18 11:49:42 1994 Jason Merrill ([email protected]) ! 3825: ! 3826: * pt.c (type_unification): Add subr argument; if set, it means ! 3827: that we are calling ourselves recursively, so a partial match is OK. ! 3828: (unify): Support pointers to methods and functions. ! 3829: (tsubst): Support method pointers. ! 3830: * decl.c (build_ptrmemfunc_type): No longer static, so that ! 3831: tsubst can get at it. ! 3832: ! 3833: * init.c (is_aggr_typedef): Pretend template type parms are ! 3834: aggregates. ! 3835: * decl2.c (build_push_scope): If cname refers to a template type ! 3836: parm, just grin and nod. ! 3837: ! 3838: * call.c (build_overload_call_real): Pass subr argument to ! 3839: type_unification. ! 3840: * pt.c (do_function_instantiation): Ditto. ! 3841: * class.c (instantiate_type): Ditto. ! 3842: ! 3843: * search.c (get_base_distance): If BINFO is a binfo, use it and ! 3844: don't mess with its BINFO_INHERITANCE_CHAIN. ! 3845: ! 3846: * cvt.c (convert_to_reference): Fix temporary generation. ! 3847: If ambiguous, return error_mark_node. ! 3848: ! 3849: * init.c (build_new): Put back some necessary code. ! 3850: ! 3851: Thu Feb 17 15:39:47 1994 Jason Merrill ([email protected]) ! 3852: ! 3853: * init.c (build_new): Deal with array types properly. ! 3854: ! 3855: * search.c (get_binfo): Become a shell for get_base_distance. ! 3856: (get_binfo_recursive): Lose. ! 3857: (get_base_distance_recursive): Find the path to the via_virtual base ! 3858: that provides the most access. ! 3859: (get_base_distance): Ditto. ! 3860: ! 3861: * parse.y (explicit_instantiation): Syntax is 'template class ! 3862: A<int>', not 'template A<int>'. ! 3863: ! 3864: * typeck.c (convert_for_initialization): Remove bogus warning. ! 3865: ! 3866: * parse.y (datadef): Revert patch of Oct 27. ! 3867: ! 3868: Thu Feb 17 15:12:29 1994 Per Bothner ([email protected]) ! 3869: ! 3870: * class.c (build_vfn_ref): Cast delta field to ptrdiff_type_node, ! 3871: rather than integer_type_node. Does wonders for the Alpha. ! 3872: ! 3873: Thu Feb 17 13:36:21 1994 Jason Merrill ([email protected]) ! 3874: ! 3875: * decl.c (build_ptrmemfunc_type): Make sure that the pmf type ! 3876: goes onto the same obstack as its target type. ! 3877: ! 3878: Wed Feb 16 00:34:46 1994 Jason Merrill ([email protected]) ! 3879: ! 3880: * cvt.c (convert_to_reference): If converting via constructor ! 3881: on local level, go back to build_cplus_new approach. ! 3882: ! 3883: * tree.c (build_cplus_new): If with_cleanup_p, set cleanup slot ! 3884: to error_mark_node to prevent expand_expr from building a cleanup ! 3885: for this variable. ! 3886: ! 3887: * lex.c (default_assign_ref_body): Return *this from the memcpy ! 3888: version, too. ! 3889: ! 3890: * decl.c (grok_reference_init): Just return if called with ! 3891: error_mark_node, don't worry about initializing non-const reference ! 3892: with temporary. ! 3893: ! 3894: * cvt.c (convert_to_reference): Do the right thing for ! 3895: non-aggregate reference conversions, pedwarn when generating a ! 3896: non-const reference to a temporary. ! 3897: ! 3898: * class.c (finish_struct): TYPE_HAS_COMPLEX_{INIT,ASSIGN}_REF and ! 3899: TYPE_NEEDS_CONSTRUCTING all depend on TYPE_USES_VIRTUAL_BASECLASSES ! 3900: again. ! 3901: ! 3902: Tue Feb 15 19:47:19 1994 Jason Merrill ([email protected]) ! 3903: ! 3904: * decl.c (grok_reference_init): Pawn off a lot of the work on ! 3905: convert_to_reference. Generally do the right thing. ! 3906: ! 3907: * cvt.c (convert_to_reference): Conform to the initial comment; ! 3908: i.e. don't create temps if decl != error_mark_node. Handle ! 3909: cleanups better for temps that do get created. Don't pretend ! 3910: that we can use an 'A' to initialize a 'const double &' just by ! 3911: tacking on a NOP_EXPR. Support LOOKUP_SPECULATIVELY. ! 3912: ! 3913: * call.c (build_method_call): Set TREE_HAS_CONSTRUCTOR on ! 3914: constructor calls. ! 3915: ! 3916: Mon Feb 14 14:50:17 1994 Jason Merrill ([email protected]) ! 3917: ! 3918: * decl.c (grok_reference_init): Make a temporary for initializing ! 3919: const reference from constant expression. ! 3920: ! 3921: Mon Feb 14 11:31:31 1994 Per Bothner ([email protected]) ! 3922: ! 3923: * cp-tree.h, decl.c (set_identifier_local_value): Deleted function. ! 3924: * decl.c (pushdecl): Define decl in correct binding_level ! 3925: (which isn't always the inner_binding_level). ! 3926: ! 3927: * cvt.c (build_up_reference): Don't ever call expand_aggr_init. ! 3928: It's ugly, and I don't think it's the right thing to do. ! 3929: ! 3930: * cp-tree.h, class.c, decl.c, decl2.c, sp/search.c: ! 3931: Remove NEW_CLASS_SCOPING, assuming it is always 1. ! 3932: * decl.c (pop_decl_level): Removed; manually inlined. ! 3933: ! 3934: Sun Feb 13 19:04:56 1994 Jason Merrill ([email protected]) ! 3935: ! 3936: * class.h (candidate): Add basetypes field. ! 3937: ! 3938: * call.c (build_method_call): Do access checking after choosing a ! 3939: function, not before. ! 3940: ! 3941: * Makefile.in (cvt.o, call.o, method.o): Depend on class.h. ! 3942: (mostlyclean): Remove ../cc1plus. ! 3943: ! 3944: Fri Feb 11 11:52:26 1994 Jason Merrill ([email protected]) ! 3945: ! 3946: * class.c (finish_struct): Don't allow adjusting access to a field ! 3947: of a base class if a local field has the same name. ! 3948: ! 3949: * error.c (dump_type_prefix): Output basetype for METHOD_TYPEs. ! 3950: ! 3951: hu Jan 13 17:55:51 EST 1994 Gnanasekaran Swaminathan ([email protected]) ! 3952: ! 3953: * cp-tree.h (DESTRUCTOR_NAME_P): do not confuse AUTO_TEMP names ! 3954: with destructor names when either NO_DOLLAR_IN_LABEL or ! 3955: NO_DOT_IN_LABEL are not defined. ! 3956: ! 3957: Now `template <class T, T f(T&), const T*> class A {...}' works. ! 3958: ! 3959: * pt.c (grok_template_type): substitute template parm types ! 3960: with actual types in complex type as well. ! 3961: (coerce_template_parms): update the grok_template_type () ! 3962: function call. ! 3963: ! 3964: * pt.c (tsubst): Traverse method list using DECL_CHAIN. ! 3965: ! 3966: * decl.c (grok_op_properties): Allow operator++/-- to have ! 3967: default arguments. ! 3968: ! 3969: * typeck2.c (store_init_value): Don't abort when called to ! 3970: initialize a type that needs constructing with a CONSTRUCTOR. ! 3971: ! 3972: * init.c (expand_aggr_init_1, CONSTRUCTOR case): If ! 3973: store_init_value fails, build and expand an INIT_EXPR. If ! 3974: store_init_value succeeds, call expand_decl_init. ! 3975: ! 3976: Fri Feb 11 02:49:23 1994 Mike Stump ([email protected]) ! 3977: ! 3978: * class.c (build_vbase_path): Use complete_type_p instead of ! 3979: resolves_to_fixed_type_p to determine if the virtual bases are in ! 3980: their right place for the type of expr. Cures problem of thinking a ! 3981: virtual base class is one place, when it is in fact someplace else. ! 3982: ! 3983: Fri Feb 11 00:26:46 1994 Mike Stump ([email protected]) ! 3984: ! 3985: * init.c (resolve_offset_ref): Make sure we first convert to ! 3986: intermediate type, if given, when dealing with members off `this'. ! 3987: Solves an incorrrect `type `foo' is not a base type for type ! 3988: `multiple'' when it is infact, a base type. ! 3989: ! 3990: Thu Feb 10 21:49:35 1994 Mike Stump ([email protected]) ! 3991: ! 3992: * class.c (modify_other_vtable_entries): Use get_binfo, instead ! 3993: of binfo_value. Solves problem with compiler giving a `base class ! 3994: `B' ambiguous in binfo_value (compiler error)' on complex MI ! 3995: herarchies, when a virtual function is first defied in a virtual ! 3996: base class. ! 3997: ! 3998: Thu Feb 10 17:19:32 1994 Mike Stump ([email protected]) ! 3999: ! 4000: * class.c (build_vbase_path): Don't complain about ambiguous ! 4001: intermediate conversion when converting down to a virtual base ! 4002: class, even if they might seem to be ambiguous. ! 4003: ! 4004: Thu Feb 10 12:18:26 1994 Jason Merrill ([email protected]) ! 4005: ! 4006: * typeck2.c (build_functional_cast): #if 0 out constructor ! 4007: inheritance code, improve error messages. ! 4008: ! 4009: * class.c (finish_base_struct): Complain about base with only ! 4010: non-default constructors in derived class with no constructors. ! 4011: ! 4012: * decl.c (grokdeclarator): Fix detection of virtual new/delete. ! 4013: ! 4014: Wed Feb 9 22:02:32 1994 Mike Stump ([email protected]) ! 4015: ! 4016: * search.c (build_mi_virtuals, add_mi_virtuals, ! 4017: report_ambiguous_mi_virtuals): Removed unneeded code. ! 4018: * class.c (finish_struct_bits): Ditto. ! 4019: ! 4020: Wed Feb 9 11:27:17 1994 Jason Merrill ([email protected]) ! 4021: ! 4022: * pt.c (end_template_instantiation): Push decl before ! 4023: pop_from_top_level. ! 4024: ! 4025: * typeck2.c (build_m_component_ref): Make sure datum is of ! 4026: aggregate type. ! 4027: ! 4028: * init.c (get_type_value): New function, returns ! 4029: IDENTIFIER_TYPE_VALUE or IDENTIFIER_CLASS_TYPE_VALUE or NULL_TREE. ! 4030: ! 4031: * call.c (build_method_call): Don't die on call to destructor for ! 4032: non-type. ! 4033: ! 4034: * decl.c (grokdeclarator): Complain about virtual op new and op ! 4035: delete, make static virtuals unvirtual instead of unstatic. ! 4036: ! 4037: * typeck.c (build_c_cast): Also call default_conversion on ! 4038: methods. ! 4039: ! 4040: * decl.c (grokdeclarator): Don't complain about anonymous ! 4041: bitfields. ! 4042: ! 4043: * parse.y (simple_stmt, for loops): Move the continue point after ! 4044: the cleanups. ! 4045: ! 4046: * class.c (finish_struct): Fix setting of ! 4047: TYPE_HAS_COMPLEX_INIT_REF. ! 4048: ! 4049: Tue Feb 8 13:21:40 1994 Jason Merrill ([email protected]) ! 4050: ! 4051: * init.c (build_new): Deal with `new double (1)'. ! 4052: ! 4053: * class.c (finish_struct): TYPE_HAS_COMPLEX_*_REF are supersets of ! 4054: TYPE_HAS_REAL_*_REF, but TYPE_HAS_COMPLEX_INIT_REF is independent of ! 4055: TYPE_NEEDS_CONSTRUCTING. ! 4056: ! 4057: * decl.c (duplicate_decls): Propagate access decls. ! 4058: ! 4059: * typeck2.c (process_init_constructor): Accept empty_init_node ! 4060: for initializing unions. ! 4061: ! 4062: * class.c, lex.c, cp-tree.h: Use ! 4063: TYPE_HAS_COMPLEX_ASSIGN_REF where TYPE_HAS_REAL_ASSIGN_REF was used ! 4064: before, use TYPE_HAS_COMPLEX_INIT_REF for TYPE_NEEDS_CONSTRUCTING in ! 4065: some places. ! 4066: ! 4067: * decl.c (finish_decl): Don't complain about uninitialized const ! 4068: if it was initialized before. ! 4069: ! 4070: Mon Feb 7 18:12:34 1994 Jason Merrill ([email protected]) ! 4071: ! 4072: * lex.c (default_assign_ref_body): Don't deal with vbases for ! 4073: now. ! 4074: ! 4075: * decl.c (finish_decl): Fix reversed logic for objects and other ! 4076: things that need to be constructed but have no initializer. ! 4077: ! 4078: * class.c (finish_struct): Don't set TYPE_HAS_* flags that are ! 4079: set by grok_op_properties or finish_decl. ! 4080: ! 4081: * decl.c: Don't warn about extern redeclared inline unless ! 4082: -Wextern-inline is given. ! 4083: * decl2.c (lang_decode_option): Ditto. ! 4084: * cp-tree.h: Ditto. ! 4085: ! 4086: Mon Feb 7 17:29:24 1994 Per Bothner ([email protected]) ! 4087: ! 4088: * decl.c (pushdecl_with_scope): Fix thinko. Add forward ! 4089: declaration. ! 4090: ! 4091: * decl.c (pushdecl_with_scope): New function. ! 4092: * decl.c (pushdecl_top_level): Use new function. ! 4093: * decl.c (pushtag): Initialize newdecl. ! 4094: * decl.c (pushtag): Push new type decl into correct scope. ! 4095: ! 4096: Mon Feb 7 14:42:03 1994 Jason Merrill ([email protected]) ! 4097: ! 4098: * call.c, cvt.c, init.c, search.c, cp-tree.h: ! 4099: Eradicate LOOKUP_PROTECTED_OK. ! 4100: ! 4101: Mon Feb 7 13:57:19 1994 Per Bothner ([email protected]) ! 4102: ! 4103: * decl.c (pushtag, xref_tag), cp-tree.h: Add extra parameter ! 4104: 'globalize' to signify implicit declarations. ! 4105: * decl.c (globalize_nested_type, maybe_globalize_type): Removed. ! 4106: * decl.c (set_identifier_type_value_with_scope): New function. ! 4107: * decl.c (set_identifier_local_value): Simplify. ! 4108: * spew.c (yylex, do_addr): Modify to return a _DEFN if a ! 4109: forward declaration (followed by ';' and not preceded by 'friend'). ! 4110: * class.c, decl.c, except.c, init.c, parse.y, ! 4111: pt.c, search.c: Add new argument to calls to xref_tag and ! 4112: pushtag. ! 4113: ! 4114: Mon Feb 7 00:22:59 1994 Jason Merrill ([email protected]) ! 4115: ! 4116: * cp-tree.h (ACCESSIBLY_UNIQUELY_DERIVED_P): New macro, means what ! 4117: ACCESSIBLY_DERIVED_FROM_P meant before. ! 4118: (ACCESSIBLY_DERIVED_FROM_P): Now disregards ambiguity. ! 4119: ! 4120: * cvt.c (build_up_reference): Call get_binfo with PROTECT == 1. ! 4121: ! 4122: * search.c (get_base_distance_recursive): Members and friends of ! 4123: a class X can implicitly convert an X* to a pointer to a private or ! 4124: protected immediate base class of X. ! 4125: (get_binfo_recursive): Ditto. ! 4126: (get_base_distance): Ignore ambiguity if PROTECT < 0. ! 4127: (get_binfo): Lose multiple values of PROTECT. ! 4128: (compute_access): Protected is OK if the start of the ! 4129: search is an accessible base class of current_class_type. ! 4130: ! 4131: * method.c (build_opfncall): Do check access on operator new here. ! 4132: ! 4133: * decl.c (finish_function): Don't check access on operator new ! 4134: here. ! 4135: ! 4136: Sun Feb 6 14:06:58 1994 Jason Merrill ([email protected]) ! 4137: ! 4138: * decl.c (xref_tag): The base of a derived struct is NOT always ! 4139: public. Duh. ! 4140: ! 4141: * pt.c (do_explicit_instantiation): New function, called from ! 4142: parser to do explicit function instantiation. ! 4143: (type_unification): Allow the args list to be terminated with ! 4144: void_list_node. ! 4145: (do_pending_expansions): Look at i->interface for non-member ! 4146: templates. ! 4147: ! 4148: * parse.y (datadef): Move explicit_instantiation here. ! 4149: (structsp): From here. ! 4150: (datadef): Complain about `int;'. ! 4151: ! 4152: Sun Feb 6 12:33:18 1994 Per Bothner ([email protected]) ! 4153: ! 4154: * pt.c (end_template_instantiation), cp-tree.h: Remove unused ! 4155: second parameter, and simplify first from a TREE_LIST where ! 4156: we only care about its TREE_VALUE to just the value (an IDENTIFIER). ! 4157: * pt.c (instantiate_member_templates): Simplify argument list ! 4158: from a TREE_LIST to just an IDENTIFIER. ! 4159: * lex.c (yyprint): PRE_PARSED_CLASS_DECL is now just an IDENTIFIER. ! 4160: * parse.y (template_instantiate_once): Simplify accordingly. ! 4161: * decl.c (inner_binding_level): New. Use various places to ! 4162: simplify. ! 4163: ! 4164: Sun Feb 6 02:49:37 1994 Jason Merrill ([email protected]) ! 4165: ! 4166: * typeck2.c (build_functional_cast): int() -> int(0). ! 4167: ! 4168: Sat Feb 5 00:53:21 1994 Jason Merrill ([email protected]) ! 4169: ! 4170: * class.c (finish_struct): Don't do a bitwise copy for op= if the ! 4171: class has a virtual function table. ! 4172: ! 4173: * typeck.c (convert_for_initialization): Restore warnings about ! 4174: not using defined op=. Should really be my_friendly_aborts, I ! 4175: s'pose. ! 4176: ! 4177: Fri Feb 4 14:21:00 1994 Jason Merrill ([email protected]) ! 4178: ! 4179: * class.c (finish_struct): Tidy up conditions for doing bitwise ! 4180: copies of objects. ! 4181: ! 4182: * decl.c (build_default_constructor): #if 0 out. ! 4183: ! 4184: * *: Eradicate TYPE_GETS_{ASSIGNMENT,ASSIGN_REF,CONST_ASSIGN_REF, ! 4185: CONST_INIT_REF}, TYPE_HAS_REAL_CONSTRUCTOR. ! 4186: ! 4187: * decl.c (grokdeclarator): Don't return void_type_node for ! 4188: friends being defined here. ! 4189: ! 4190: * init.c (perform_member_init): Only do the init if it's useful. ! 4191: ! 4192: * lex.c (default_copy_constructor_body): If we don't need to do ! 4193: memberwise init, just call __builtin_memcpy. ! 4194: (default_assign_ref_body): Ditto. ! 4195: ! 4196: * decl.c (grokdeclarator): If friendp && virtualp, friendp = 0. ! 4197: ! 4198: Fri Feb 4 13:02:56 1994 Mike Stump ([email protected]) ! 4199: ! 4200: * lex.c (reinit_parse_for_method, cons_up_default_function): ! 4201: Don't give warn_if_unknown_interface warning when it came from a ! 4202: system header file. ! 4203: * pt.c (end_template_decl, instantiate_template): Ditto. ! 4204: * decl.c (start_decl): Ditto. ! 4205: ! 4206: Fri Feb 4 00:41:21 1994 Jason Merrill ([email protected]) ! 4207: ! 4208: * decl.c (grokdeclarator): Don't try to set TYPE_WAS_ANONYMOUS on ! 4209: enums. ! 4210: ! 4211: * decl2.c (constructor_name_full): Use IS_AGGR_TYPE_CODE instead of ! 4212: IS_AGGR_TYPE, since we don't know it's a type. ! 4213: ! 4214: Thu Feb 3 11:36:46 1994 Jason Merrill ([email protected]) ! 4215: ! 4216: * decl.c (grokdeclarator): Don't complain about anonymous unions. ! 4217: ! 4218: * cp-tree.h (TYPE_WAS_ANONYMOUS): This struct was originally ! 4219: anonymous, but had a name given to it by a typedef. ! 4220: ! 4221: * decl.c (grokdeclarator): When renaming an anonymous struct, set ! 4222: TYPE_WAS_ANONYMOUS. ! 4223: ! 4224: * decl2.c (constructor_name_full): Use TYPE_WAS_ANONYMOUS. ! 4225: ! 4226: * cp-tree.h (DECL_UNDEFINED_FRIENDS): #if 0 out. ! 4227: ! 4228: * init.c (xref_friend): Don't set up DECL_UNDEFINED_FRIENDS. ! 4229: (embrace_waiting_friends): Don't use DECL_UNDEFINED_FRIENDS. ! 4230: ! 4231: * decl.c (grokdeclarator): Set TYPE_NESTED_NAME properly on nested ! 4232: anonymous structs that get typedef'd. ! 4233: ! 4234: * decl.c (grokdeclarator): Always return void_type_node for ! 4235: friends. ! 4236: ! 4237: * error.c (dump_function_decl): Don't use DECL_CLASS_CONTEXT for ! 4238: friends. ! 4239: (dump_function_decl): Don't print out default args for ! 4240: a function used in an expression. ! 4241: ! 4242: * decl.c (grokdeclarator): Give error on abstract declarator used ! 4243: in an invalid context (i.e. `void (*)();'). ! 4244: ! 4245: * error.c (cp_line_of): Support _TYPE nodes. ! 4246: (cp_file_of): Ditto. ! 4247: ! 4248: * cvt.c (build_up_reference): Don't abort if passed a SAVE_EXPR; ! 4249: it can happen for the RHS of an assignment stmt where the LHS is ! 4250: a COND_EXPR. ! 4251: ! 4252: * init.c (expand_aggr_init_1): Deal with bracketed initializer ! 4253: lists properly. ! 4254: ! 4255: * class.c (finish_struct): Deal with enumerators and typedefs ! 4256: again. ! 4257: ! 4258: Wed Feb 2 11:30:22 1994 Jason Merrill ([email protected]) ! 4259: ! 4260: * class.c (finish_struct): Tidy up loop over fields. ! 4261: ! 4262: * errfn.c (cp_thing): Don't advance twice after a format. ! 4263: ! 4264: * class.c (finish_struct): Complain about needing a constructor ! 4265: if a member has only non-default constructors, and don't try to ! 4266: generate a default constructor. ! 4267: ! 4268: * decl.c (finish_decl): Also do the constructor thing if ! 4269: TYPE_NEEDS_CONSTRUCTING is set (for arrays). ! 4270: ! 4271: * search.c (unuse_fields): New function: mark all fields in this ! 4272: type unused. ! 4273: (dfs_unuse_fields): Helper function. ! 4274: ! 4275: * class.c (pushclass): If the new class is the same as the old ! 4276: class, still unuse the fields. ! 4277: (unuse_fields): Move to search.c. ! 4278: ! 4279: * decl.c (grok_op_properties): Add friendp argument. ! 4280: (grokfndecl): Pass it. ! 4281: (start_method): Ditto. ! 4282: ! 4283: * decl2.c (delete_sanity): Add use_global_delete parameter to catch ! 4284: ::delete calls. ! 4285: ! 4286: * parse.y (unary_expr): Pass new parameter to delete_sanity. ! 4287: ! 4288: * lex.c (default_copy_constructor_body): Don't choke if the union ! 4289: has no fields. ! 4290: (default_assign_ref_body): Ditto. ! 4291: ! 4292: * call.c (compute_conversion_costs_ansi): Do the right thing for ! 4293: ellipsis matches. ! 4294: ! 4295: * decl.c (push_to_top_level): Optimize. ! 4296: ! 4297: * decl.c (start_function): Look for the lexical scope of a friend ! 4298: in DECL_CLASS_CONTEXT. ! 4299: ! 4300: * init.c (do_friend): Set DECL_CLASS_CONTEXT on global friends. ! 4301: ! 4302: Tue Feb 1 15:59:24 1994 Jason Merrill ([email protected]) ! 4303: ! 4304: * cp-tree.h (TREE_GETS_PLACED_NEW): New macro. ! 4305: ! 4306: * init.c (init_init_processing): Don't assign BIN/BID to the ! 4307: IDENTIFIER_GLOBAL_VALUEs of their respective operators. ! 4308: (build_new): Check TREE_GETS_PLACED_NEW. ! 4309: ! 4310: * decl.c (grok_op_properties): Don't set TREE_GETS_NEW for a decl of ! 4311: op new with placement, set TREE_GETS_PLACED_NEW. ! 4312: ! 4313: * cp-tree.h (ANON_UNION_P): New macro. Applies to decls. ! 4314: ! 4315: * class.c (finish_struct): Don't treat anonymous unions like ! 4316: other aggregate members. Do synthesize methods for unions without ! 4317: a name, since they may or may not be "anonymous unions". ! 4318: ! 4319: * decl2.c (grok_x_components): Wipe out memory of synthesized methods ! 4320: in anonymous unions. ! 4321: ! 4322: * lex.c (default_copy_constructor_body): Support unions. ! 4323: (default_assign_ref_body): Ditto. ! 4324: ! 4325: Mon Jan 31 12:07:30 1994 Jason Merrill ([email protected]) ! 4326: ! 4327: * cp-tree.h: Fix documentation of LOOKUP_GLOBAL, add prototypes. ! 4328: ! 4329: * error.c (args_as_string): New function (%A), like type_as_string ! 4330: except NULL_TREE -> "..." ! 4331: ! 4332: * call.c (build_overload_call_real): Fix for new overloading. ! 4333: ! 4334: * decl.c (grok_op_properties): Set all of the TYPE_OVERLOADS_* flags ! 4335: here. ! 4336: ! 4337: * parse.y (operator_name): Instead of here. ! 4338: ! 4339: * typeck2.c (build_functional_cast): Treat a TREE_LIST as a list ! 4340: of functions. ! 4341: ! 4342: * call.c (build_overload_call_real): Support LOOKUP_SPECULATIVELY. ! 4343: ! 4344: * method.c (build_opfncall): Don't need to massage return value ! 4345: any more, call build_overload_call with all flags. ! 4346: ! 4347: * typeck.c (build_x_binary_op): Put back speculative call to ! 4348: build_opfncall. ! 4349: (build_x_unary_op): Ditto. ! 4350: (build_x_conditional_expr): Ditto. ! 4351: ! 4352: Mon Jan 31 10:00:30 1994 Mike Stump ([email protected]) ! 4353: ! 4354: * cvt.c (build_type_conversion_1): Change call to pedwarn into ! 4355: warning, and conditionalize upon warn_cast_qual. ! 4356: ! 4357: Fri Jan 28 11:48:15 1994 Jason Merrill ([email protected]) ! 4358: ! 4359: * search.c (lookup_field): If xbasetype is a binfo, copy it to ! 4360: avoid clobbering its inheritance info. ! 4361: ! 4362: * call.c (build_method_call): Don't overwrite basetype_path with ! 4363: TYPE_BINFO (inst_ptr_basetype) if they have the same type. ! 4364: ! 4365: * search.c (compute_access): Fix handling of protected inheritance ! 4366: and friendship with the enclosing class. ! 4367: ! 4368: * typeck2.c (store_init_value): Allow passing of TREE_CHAIN for ! 4369: initialization of arbitrary variable. ! 4370: ! 4371: * typeck2.c (build_functional_cast): Only try calling a method if ! 4372: one exists. ! 4373: ! 4374: * decl.c (grokdeclarator): Move handling of constructor syntax ! 4375: initialization into first loop for generality. ! 4376: (parmlist_is_random): Lose. ! 4377: ! 4378: * lex.c (cons_up_default_function): Set TREE_PARMLIST on arguments ! 4379: to default function. ! 4380: ! 4381: Thu Jan 27 19:26:51 1994 Jason Merrill ([email protected]) ! 4382: ! 4383: * decl.c (grokparms): Abort if we get called with something we don't ! 4384: expect. ! 4385: ! 4386: Thu Jan 27 17:37:25 1994 Mike Stump ([email protected]) ! 4387: ! 4388: * call.c (build_overload_call_real): Change argument complain to ! 4389: flags to match style of rest of code. Pass it down to ! 4390: build_function_call_real as necessary. ! 4391: * call.c (build_overload_call, build_overload_call_maybe): Change ! 4392: argument complain to flags to match style of rest of code. ! 4393: * cp-tree.h (build_function_call_real): Added fourth flags ! 4394: argument. ! 4395: * cvt.c (convert_to_reference): Only give warning messages, if ! 4396: LOOKUP_COMPLAIN is set. ! 4397: * typeck.c (build_x_function_call): Change simple complain ! 4398: argument to build_overload_call_maybe and build_overload_call, to ! 4399: LOOKUP_COMPLAIN to match style of rest of code. ! 4400: * typeck2.c (build_functional_cast): Ditto. ! 4401: * typeck.c (build_function_call_real): Add flags, so that we can ! 4402: not complain, if we don't want to complain. Complain about ! 4403: arguments, if we are complaining, otherwise don't. ! 4404: * typeck.c (build_function_call, build_function_call_maybe): ! 4405: Stick in flags argument. ! 4406: * typeck.c (build_x_binary_op, build_x_unary_op, ! 4407: build_x_conditional_expr, build_x_compound_expr): Follow style of ! 4408: build_x_indirect_ref, as it is more correct and more common. ! 4409: ! 4410: Thu Jan 27 14:36:20 1994 Jason Merrill ([email protected]) ! 4411: ! 4412: * call.c (build_method_call): Don't check for being called with ! 4413: a pointer. ! 4414: ! 4415: * decl2.c (finish_file): Don't play with DECL_CLASS_CONTEXT for the ! 4416: static initializer function. ! 4417: ! 4418: * init.c (build_member_call): Use convert_force here, too. ! 4419: ! 4420: * search.c (compute_access): Only treat static members specially ! 4421: if they are referenced directly. ! 4422: ! 4423: Wed Jan 26 18:28:14 1994 Jason Merrill ([email protected]) ! 4424: ! 4425: * gxxint.texi (Access Control): New node. ! 4426: ! 4427: * search.c (current_scope): New function; returns whichever of ! 4428: current_class_type and current_function_decl is the most nested. ! 4429: (compute_access): Total overhaul to make it clearer and more ! 4430: correct. Don't use the cache for now; in the only situation where ! 4431: it was used before, it gained nothing. This frees up three of the ! 4432: DECL_LANG_FLAGs for possible other use! ! 4433: ! 4434: * cp-tree.h: #if 0 out DECL_PUBLIC & friends. ! 4435: ! 4436: * typeck.c (build_component_ref_1): Don't check DECL_PUBLIC. ! 4437: ! 4438: * call.c (build_method_call): Use convert_force to cast `this' -- ! 4439: rely on the access checking for the method itself. ! 4440: ! 4441: * init.c (is_friend): Do the nesting thing, handle types. I am ! 4442: my own friend. ! 4443: (is_friend_type): Become a shell for is_friend. ! 4444: (add_friend): Never stick in ctype. ! 4445: Why are the friendship functions in init.c, anyway? ! 4446: ! 4447: Wed Jan 26 17:50:00 1994 Mike Stump ([email protected]) ! 4448: ! 4449: * cvt.c (build_type_conversion_1): Don't conditionalize call to ! 4450: pedwarn upon pedantic. ! 4451: ! 4452: Wed Jan 26 17:20:46 1994 Mike Stump ([email protected]) ! 4453: ! 4454: * cvt.c (convert_to_reference): Add 8.4.3 checking so that one ! 4455: gets a warning if one tries to initialize a non-const & from a ! 4456: non-lvalue. ! 4457: * cvt.c (convert_to_reference): Use %P format for argument ! 4458: numbers in warnings. ! 4459: ! 4460: Wed Jan 26 14:35:06 1994 Mike Stump ([email protected]) ! 4461: ! 4462: * init.c (build_delete): Follow style in call.c to construct the ! 4463: virtual call to the desctructor, as that code is right. Fixes a ! 4464: problem of the compiler saying a pointer conversion is ambiguous. ! 4465: ! 4466: Wed Jan 26 11:28:14 1994 Jason Merrill ([email protected]) ! 4467: ! 4468: * cp-tree.h (VTABLE_NAME_P): Change other occurrence of ! 4469: VTABLE_NAME_FORMAT to VTABLE_NAME. ! 4470: ! 4471: * *: s/visibility/access/g ! 4472: ! 4473: Tue Jan 25 18:39:12 1994 Jason Merrill ([email protected]) ! 4474: ! 4475: * typeck.c (build_modify_expr): Don't smash references if INIT_EXPR. ! 4476: ! 4477: Tue Jan 25 13:54:29 1994 Mike Stump ([email protected]) ! 4478: ! 4479: * init.c (build_delete): Back out Jan 17th & 18th pacthes, as ! 4480: they break libg++. ! 4481: ! 4482: Tue Jan 25 13:11:45 1994 Jason Merrill ([email protected]) ! 4483: ! 4484: * decl.c (duplicate_decls): Fix pointer arithmetic. ! 4485: ! 4486: Mon Jan 24 15:50:06 1994 Chip Salzenberg ([email protected]) ! 4487: ! 4488: [ cp-* changes propagated from c-* changes in 940114 snapshot ] ! 4489: * cp-parse.y (maybe_attribute): Allow multiple __attribute__ ! 4490: clauses on a declaration. ! 4491: ! 4492: Mon Jan 24 17:06:23 1994 Jason Merrill ([email protected]) ! 4493: ! 4494: * class.c (finish_struct): Do synthesize methods for anon ! 4495: structs, just not unions. ! 4496: ! 4497: Mon Jan 24 13:50:13 1994 Kung Hsu ([email protected]) ! 4498: ! 4499: * decl.c (xref_tag): handle anonymous nested type. ! 4500: * decl.c (globalize_nested_type): add no globalize bit check. ! 4501: * spew.c (hack_more_ids) : templated nested decl not push top ! 4502: level. ! 4503: ! 4504: * parse.y : get rid of 'goto do_components'. It is much better ! 4505: for debugging. ! 4506: ! 4507: * decl.c (is_anon_name): get rid of the function and use the ! 4508: macro ANON_AGGRNAME_P. ! 4509: * pt.c : ditto. ! 4510: ! 4511: Fri Jan 21 14:06:02 1994 Jason Merrill ([email protected]) ! 4512: ! 4513: * class.c (finish_struct): Don't synthesize any methods for ! 4514: anonymous structs/unions. ! 4515: ! 4516: * typeck.c (build_modify_expr): Don't treat pmf's as class objects. ! 4517: ! 4518: Thu Jan 20 18:56:46 1994 Jason Merrill ([email protected]) ! 4519: ! 4520: * method.c (build_opfncall): Call build_indirect_ref on ! 4521: synthesized instance for operator delete. ! 4522: ! 4523: * pt.c (type_unification): Don't abort if called with a list of ! 4524: types in ARGS. ! 4525: ! 4526: * class.c (instantiate_type): Deal with function templates. ! 4527: ! 4528: Thu Jan 20 16:55:35 1994 Jim Wilson ([email protected]) ! 4529: ! 4530: * Makefile.in (CC): Default to cc not gcc. ! 4531: ! 4532: Thu Jan 20 13:47:54 1994 Jason Merrill ([email protected]) ! 4533: ! 4534: * typeck.c (build_modify_expr): Call constructor if appropriate. ! 4535: ! 4536: * decl.c (push_to_top_level): Clear out class-level bindings cache. ! 4537: ! 4538: Wed Jan 19 13:51:22 1994 Jason Merrill ([email protected]) ! 4539: ! 4540: * call.c (resolve_scope_to_name): Work recursively (previously only ! 4541: looked down one level). ! 4542: ! 4543: * lex.c (do_pending_inlines): If we're still dealing with the last ! 4544: batch of inlines, don't start working on a new one. ! 4545: ! 4546: * Makefile.in (stamp-parse): Update conflict count. ! 4547: (TAGS): Fix. ! 4548: ! 4549: * parse.y (explicit_instantiation): New rule; implements ! 4550: 'template A<int>' syntax (though not 'template foo(int)' yet). ! 4551: (structsp): Add explicit_instantiation. ! 4552: ! 4553: Tue Jan 18 13:53:05 1994 Jason Merrill ([email protected]) ! 4554: ! 4555: * class.c (finish_struct, etc.): Simplify decision to synthesize ! 4556: a destructor. ! 4557: ! 4558: * call.c, class.c, cp-tree.h, decl.c, init.c, ! 4559: ptree.c, search.c, typeck.c, typeck2.c: Nuke ! 4560: TYPE_NEEDS_CONSTRUCTOR (change all calls to TYPE_NEEDS_CONSTRUCTING). ! 4561: * init.c (expand_aggr_init_1): Don't try non-constructor methods ! 4562: of initializing objects. ! 4563: (build_new): Don't try other methods if the constructor lookup fails. ! 4564: ! 4565: * class.c (finish_base_struct): Set cant_have_default_ctor and ! 4566: cant_synth_copy_ctor properly. ! 4567: (finish_struct): Ditto. ! 4568: ! 4569: Mon Jan 17 13:58:18 1994 Jason Merrill ([email protected]) ! 4570: ! 4571: * typeck.c (build_modify_expr_1): #if 0 out again. ! 4572: (build_modify_expr): #if 0 out memberwise init code again. ! 4573: ! 4574: * lex.c (default_copy_constructor_body): Be const-correct. ! 4575: (default_assign_ref_body): Ditto. ! 4576: ! 4577: * init.c (perform_member_init): Use TYPE_HAS_CONSTRUCTOR to decide ! 4578: whether or not to use it, rather than TYPE_NEEDS_CONSTRUCTING. ! 4579: (expand_aggr_init): Disable silent conversion from initializer list ! 4580: to list of args for a constructor. ! 4581: ! 4582: * class.c (base_info): Lose needs_default_ctor. ! 4583: (finish_base_struct): Ditto. ! 4584: (finish_struct): Ditto. ! 4585: ! 4586: * decl.c (init_decl_processing): Don't turn off flag_default_inline ! 4587: just because flag_no_inline is on. ! 4588: (finish_decl): Use TYPE_HAS_CONSTRUCTOR to decide to use ! 4589: constructor. ! 4590: ! 4591: * class.c (finish_struct): Synthesize default ctor whenever ! 4592: allowed. ! 4593: ! 4594: * Makefile.in (TAGS): Don't try to run etags on cp-parse.y. ! 4595: ! 4596: Sat Jan 15 18:34:33 1994 Mike Stump ([email protected]) ! 4597: ! 4598: * Makefile.in, configure: Handle the C++ front-end in a ! 4599: subdirectory. ! 4600: * cp-*: Move C++ front-end to cp/*. ! 4601: ! 4602: Fri Jan 14 14:09:37 1994 Jason Merrill ([email protected]) ! 4603: ! 4604: * cp-typeck.c (build_function_call_real): Modify to match other ! 4605: instances of taking the address of the function. ! 4606: ! 4607: * cp-class.c (finish_struct): Set TYPE_HAS_REAL_CONSTRUCTOR to 1 if ! 4608: there are non-synthesized constructors. ! 4609: Only set TYPE_NEEDS_CONSTRUCTOR if TYPE_HAS_REAL_CONSTRUCTOR. ! 4610: Always generate copy constructor if possible. ! 4611: ! 4612: * cp-tree.h (lang_type): Add has_real_constructor bitfield. ! 4613: (TYPE_HAS_REAL_CONSTRUCTOR): Define. ! 4614: ! 4615: * cp-lex.c (default_copy_constructor_body): Use init syntax ! 4616: for all bases. ! 4617: ! 4618: * cp-type2.c (store_init_value): Only give error for initializer list ! 4619: if TYPE_HAS_REAL_CONSTRUCTOR. ! 4620: ! 4621: Thu Jan 13 15:38:29 1994 Jason Merrill ([email protected]) ! 4622: ! 4623: * cp-tree.h (DECL_SYNTHESIZED): Add defn. ! 4624: (lang_decl): Add synthesized bitfield to decl_flags. ! 4625: ! 4626: * cp-lex.c (cons_up_default_function): Use DECL_SYNTHESIZED to mark ! 4627: artificial methods, rather than a line # of 0. ! 4628: ! 4629: Fri Jan 14 18:25:29 1994 Kung Hsu ([email protected]) ! 4630: ! 4631: * cp-decl (xref_tag): fix a bug in conflict type. ! 4632: * cp-parse.y : add SCOPED_NAME for uninstantiated template nested ! 4633: type reference. ! 4634: * cp-spew.c (yylex) : generated SCOPED_NAME token. ! 4635: * cp-lex.c (yyprint): handle SCOPED_NAME. ! 4636: ! 4637: Fri Jan 14 17:00:29 1994 Mike Stump ([email protected]) ! 4638: ! 4639: * cp-decl.c (pushdecl): Revert patch from Jan 11 19:33:03, as it is ! 4640: not right. ! 4641: ! 4642: Thu Jan 13 14:00:35 1994 Kung Hsu ([email protected]) ! 4643: ! 4644: * cp-decl2.c (grok_x_components): fix a bug that enum type does not ! 4645: have type_flags. ! 4646: ! 4647: Thu Jan 13 11:39:34 1994 Mike Stump ([email protected]) ! 4648: ! 4649: Ensure that all vtable pointers are initialized with all the right ! 4650: values. ! 4651: ! 4652: * cp-class.c (is_normal): Changed to reflect new meaning of ! 4653: CLASSTYPE_VFIELD_PARENT. ! 4654: * cp-class.c (maybe_fixup_vptrs): Use of ! 4655: CLASSTYPE_NEEDS_VIRTUAL_REINIT here is misguided. Use ! 4656: BINFO_MODIFIED instead. ! 4657: * cp-class.c (finish_struct): Changed to reflect new meaning of ! 4658: CLASSTYPE_VFIELD_PARENT. ! 4659: * cp-decl.c (get_binfo_from_vfield): Removed, unneeded now. ! 4660: * cp-decl.c (finish_function): Use init_vtbl_ptrs, instead of open ! 4661: coding it here. ! 4662: * cp-init.c (init_vfields): Changed name to init_vtbl_ptrs, and ! 4663: re-implement. ! 4664: * cp-init.c (emit_base_init): Use new name init_vtbl_ptrs. ! 4665: * cp-tree.h (vfield_parent): Changed to integer. ! 4666: * cp-tree.h (CLASSTYPE_VFIELD_PARENT): Changed docs to reflect new ! 4667: meaning. ! 4668: * cp-tree.h (init_vtbl_ptrs): Added init_vtbl_ptrs. ! 4669: ! 4670: Wed Jan 12 18:24:16 1994 Kung Hsu ([email protected]) ! 4671: ! 4672: * cp-decl.c (xref_tag): re-implement globalize nested type. ! 4673: * cp-decl2.c (grok_x_components): ditto. ! 4674: * cp-parse.y: ditto. ! 4675: * cp-tree.h (lang_type): add no_globalize bit in type_flags. ! 4676: ! 4677: Wed Jan 12 14:08:09 1994 Jason Merrill ([email protected]) ! 4678: ! 4679: * cp-decl.c (grokdeclarator): Don't set TREE_PUBLIC on friend ! 4680: decls with a definition attached. ! 4681: ! 4682: * cp-typeck.c (build_modify_expr): Undo previous change in the case ! 4683: of INIT_EXPRs. ! 4684: ! 4685: Tue Jan 11 19:33:03 1994 Jason Merrill ([email protected]) ! 4686: ! 4687: * cp-typeck.c (build_modify_expr): Replace code for generating ! 4688: assignment semantics for classes with an error. ! 4689: (build_modify_expr_1): #if 0 out. ! 4690: ! 4691: * cp-decl.c (pushdecl): Patch bogus design of pushdecl ! 4692: behavior for overloaded functions (it doesn't push anything). ! 4693: ! 4694: * cp-class.c (finish_struct): When generating default op=, ! 4695: set TYPE_HAS_ASSIGNMENT. ! 4696: ! 4697: Mon Jan 10 18:48:06 1994 Mike Stump ([email protected]) ! 4698: ! 4699: * cp-cvt.c (convert): Make {double, clashing enum} -> enum ! 4700: invalid. ! 4701: * cp-typeck.c (convert_for_assignment): Simplify. ! 4702: * cp-decl2.c (warn_enum_clash): Removed. ! 4703: * invoke.texi (-Wenum-clash): Removed. ! 4704: * toplev.c (-Wenum-clash): Removed. ! 4705: ! 4706: Mon Jan 10 17:48:37 1994 Kung Hsu ([email protected]) ! 4707: ! 4708: * cp-decl.c (finish_decl): fix incorrect popclass call. ! 4709: ! 4710: * cp-decl.c (is_anon_name): new function, check whether the name ! 4711: is anonymous name generated by compiler. ! 4712: * cp-decl.c (grokdeclarator): allow nested SCOPE_REF ! 4713: * cp-spew.c (hack_more_ids): handle nested type in template. ! 4714: * cp-parse.y : handle nested type reference in uninstantiated ! 4715: template. ! 4716: * cp-call.c (build_method_call): handle uninstantiated template ! 4717: case. ! 4718: * cp-pt.c (search_nested_type_in_tmpl): new function, search nested ! 4719: type in template. ! 4720: * cp-pt.c (lookup_nested_type_by_name): new function, lookup nested ! 4721: type by name. ! 4722: * cp-pt.c (tsubst): handle nested type search by name. ! 4723: ! 4724: Mon Jan 10 14:32:18 1994 Jason Merrill ([email protected]) ! 4725: ! 4726: * cp-init.c (build_member_call): Propagate qualifiers to new type. ! 4727: ! 4728: * cp-call.c (build_method_call): Count functions the new way. ! 4729: ! 4730: Fri Jan 7 19:03:26 1994 Jason Merrill ([email protected]) ! 4731: ! 4732: * cp-decl.c (pushtag): Set DECL_ASSEMBLER_NAME for nested classes, ! 4733: too. ! 4734: ! 4735: Tue Jan 4 16:45:51 1994 Kung Hsu ([email protected]) ! 4736: ! 4737: * cp-parse.y: change to handle whether to globalize nested class. ! 4738: * cp-decl.c(xref_tag, maybe_globalize_type): Ditto. ! 4739: ! 4740: Mon Jan 3 22:22:32 1994 Gerald Baumgartner ([email protected]) ! 4741: ! 4742: * Makefile.in cp-call.c cp-class.c cp-cvt.c cp-decl.c cp-decl2.c ! 4743: cp-error.c cp-init.c cp-lex.c cp-lex.h cp-method.c cp-parse.y ! 4744: cp-spew.c cp-tree.c cp-tree.h cp-type2.c cp-typeck.c cp-xref.c ! 4745: gplus.gperf toplev.c: Incorporated C++ signature extension. ! 4746: * cp-sig.c: New file, contains most of signature processing. ! 4747: * cp-hash.h: Regenerated from gplus.gperf. ! 4748: ! 4749: * gcc.1 g++.1: Added explanation for the `-fhandle-signatures' ! 4750: and `-fno-handle-signatures' command line flags. ! 4751: ! 4752: * gcc.texi: Changed the last-modification date. ! 4753: * invoke.texi: Added `-fhandle-signatures' in the list of ! 4754: C++ language options. Added explanation for this option. ! 4755: ! 4756: Tue Dec 28 21:10:03 1993 Mike Stump ([email protected]) ! 4757: ! 4758: * cp-init.c (expand_vec_init): Remove comptypes test, as it is too ! 4759: harsh here. ! 4760: ! 4761: Tue Dec 28 13:42:22 1993 Mike Stump ([email protected]) ! 4762: ! 4763: * cp-pt.c (do_pending_expansions): Decide to expand a template ! 4764: member function, based upon it's class type, not the class type of ! 4765: the first place it was declared. ! 4766: ! 4767: Tue Dec 28 05:42:31 1993 Mike Stump ([email protected]) ! 4768: ! 4769: * cp-class.c (is_normal): New routine, use to determine when the ! 4770: given binfo is the normal one. (The one that should have the simple ! 4771: vtable name.) ! 4772: * cp-class.c (modify_other_vtable_entries): Use DECL_ASSEMBLER_NAME ! 4773: to check if two fndecls are `the same'. Sometimes this routine can ! 4774: modify the main vtable, and normal should be 1, in that case, so use ! 4775: is_normal() to determine if this is the main vtable for the class. ! 4776: Don't recurse down virtual bases, as they are shared, and we take ! 4777: care of them elsewhere. ! 4778: * cp-class.c (modify_vtable_entries): If we have already updated the ! 4779: vtable with the new virtual, don't do it again. ! 4780: * cp-class.c (finish_struct): Set CLASSTYPE_VFIELD_PARENT as ! 4781: appropriate. Do virtual function overriding in virtual bases, after ! 4782: normal overriding, so that the base function list in DECL_VINDEX is ! 4783: not overridden, before we have a chance to run through the list. ! 4784: Use DECL_ASSEMBLER_NAME to check if two fndecls are `the same'. ! 4785: Make sure we pass the right address into modify_vtable_entries. ! 4786: * cp-tree.h (CLASSTYPE_VFIELD_PARENT): New field to indicate which ! 4787: binfo is the one that has the vtable that we based our vtable on. ! 4788: ! 4789: Fri Dec 24 09:40:52 1993 Michael Tiemann ([email protected]) ! 4790: ! 4791: * cp-typeck.c (c_expand_start_case): Use default_conversion to ! 4792: convert expression from reference type if necessary. ! 4793: ! 4794: Wed Dec 22 17:58:43 1993 Jason Merrill ([email protected]) ! 4795: ! 4796: * cp-typeck.c (build_unary_op): Make sure that it's a TREE_LIST before ! 4797: trying to read its TREE_VALUE. ! 4798: ! 4799: * cp-class.c (finish_struct_methods): Clear DECL_IN_AGGR_P here. ! 4800: (finish_struct): Instead of here. ! 4801: ! 4802: Tue Dec 21 14:34:25 1993 Brendan Kehoe ([email protected]) ! 4803: ! 4804: * cp-tree.c (list_hash_lookup_or_cons): Make sure the type doesn't ! 4805: have TYPE_PTRMEMFUNC_P set before we try to build its ! 4806: CLASSTYPE_ID_AS_LIST. ! 4807: (get_decl_list): Likewise, when trying to read it. ! 4808: ! 4809: * cp-tree.h (VTABLE_NAME): No def with NO_{DOLLAR,DOT} defined. ! 4810: (VTABLE_NAME_P): Use it instead of VTABLE_NAME_FORMAT. ! 4811: ! 4812: Mon Dec 20 13:35:03 1993 Brendan Kehoe ([email protected]) ! 4813: ! 4814: * cp-typeck.c (rationalize_conditional_expr): New function. ! 4815: (unary_complex_lvalue): Use it. ! 4816: (build_modify_expr): Use it, since trying to do an ADDR_EXPR of it ! 4817: with build_unary_op won't cut it. Don't wrap the COND_EXPR with a ! 4818: SAVE_EXPR either. ! 4819: ! 4820: * cp-decl2.c (explicit_warn_return_type): Deleted variable. ! 4821: (lang_decode_option): Set warn_return_type, not explicit_*, for ! 4822: -Wreturn-type and -Wall. This is what rest_of_compilation uses to ! 4823: decide if it should go into jump_optimize or not. ! 4824: * cp-tree.h (explicit_warn_return_type): Deleted. ! 4825: * cp-decl.c (grokdeclarator): Use warn_return_type, not explicit_*. ! 4826: (finish_function): Also complain about no return in a non-void fn if ! 4827: we're being pedantic (don't rely on use of -Wreturn-type). ! 4828: ! 4829: Fri Dec 17 15:45:46 1993 Brendan Kehoe ([email protected]) ! 4830: ! 4831: * cp-decl.c (grokdeclarator): Forbid declaration of a function as ! 4832: static if it's being done inside another function. ! 4833: ! 4834: * cp-search.c (compute_visibility): Check for friendship both ways. ! 4835: ! 4836: Fri Dec 17 14:28:25 1993 Jason Merrill ([email protected]) ! 4837: ! 4838: * cp-cvt.c (build_default_binary_type_conversion): Make error ! 4839: messages more helpful. ! 4840: ! 4841: * cp-error.c (op_as_string): New function, returns "operator ==" ! 4842: given EQ_EXPR or suchlike. ! 4843: ! 4844: Fri Dec 17 13:28:11 1993 Brendan Kehoe ([email protected]) ! 4845: ! 4846: * cp-call.c (print_n_candidates): New function. ! 4847: (build_overload_call_real): Use it when we complain about a call ! 4848: being ambiguous. ! 4849: ! 4850: Fri Dec 17 12:41:17 1993 Jason Merrill ([email protected]) ! 4851: ! 4852: * cp-call.c (build_method_call): Fix checking for static call ! 4853: context. ! 4854: ! 4855: * cp-method.c (build_opfncall): Call build_indirect_ref on argument ! 4856: to operator new. ! 4857: ! 4858: * cp-init.c (build_new): Don't mess with rval when building ! 4859: indirect ref. ! 4860: ! 4861: Thu Dec 16 16:48:05 1993 Kung Hsu ([email protected]) ! 4862: ! 4863: * cp-lex.c (default_assign_ref_body): add check when TYPE_NESTED_ ! 4864: NAME(type) may not be exist. It's not a problem for old compiler. ! 4865: ! 4866: Thu Dec 16 14:46:06 1993 Brendan Kehoe ([email protected]) ! 4867: ! 4868: * cp-tree.h (CLASSTYPE_ALTERS_VISIBILITIES_P): Delete macro, it's ! 4869: never used for anything. ! 4870: (struct lang_type, member type_flags): Delete field ! 4871: `alters_visibility', and up `dummy' by 1. ! 4872: * cp-class.c (finish_base_struct): Delete code that copies the ! 4873: setting of CLASSTYPE_ALTERS_VISIBILITIES_P. ! 4874: (finish_struct): Delete code that sets it. ! 4875: ! 4876: Thu Dec 16 14:44:39 1993 Jason Merrill ([email protected]) ! 4877: ! 4878: * cp-decl.c, cp-init.c, cp-typeck.c: Fix arguments to ! 4879: build_method_call that I messed up before. ! 4880: ! 4881: * cp-search.c (get_base_distance): If protect > 1, allow immediate ! 4882: private base. ! 4883: ! 4884: * cp-class.c (finish_base_struct): Set cant_synth_* correctly. ! 4885: (finish_struct): Ditto. Well, nigh-correctly; it won't deal ! 4886: properly with the case where a class contains an object of an ! 4887: ambiguous base class which has a protected op=. Should be fixed ! 4888: when the access control code gets overhauled. ! 4889: (finish_struct_methods): Set TYPE_HAS_NONPUBLIC_* correctly. ! 4890: ! 4891: Thu Dec 16 12:17:06 1993 Brendan Kehoe ([email protected]) ! 4892: ! 4893: * cp-lex.c (real_yylex): Turn the code back on that deals with ! 4894: __FUNCTION__ and __PRETTY_FUNCTION__. Don't use lookup_name, to ! 4895: avoid the ambiguity problems that led to it being turned off in the ! 4896: first place. ! 4897: ! 4898: * cp-method.c (hack_identifier): Also check for a TYPE_PTRMEMFUNC_P ! 4899: to see if something is a method. ! 4900: ! 4901: Wed Dec 15 18:35:58 1993 Mike Stump ([email protected]) ! 4902: ! 4903: * cp-typeck.c (build_modify_expr): Avoid error messages on small ! 4904: enum bit fields. ! 4905: * cp-typeck.c (convert_for_assignment): Add missing argument to ! 4906: cp_warning and cp_pedwarn calls. ! 4907: ! 4908: Wed Dec 15 18:25:32 1993 Jason Merrill ([email protected]) ! 4909: ! 4910: * cp-parse.y (member_init): ANSI C++ doesn't forbid old-style base ! 4911: initializers; it's just anachronistic. ! 4912: ! 4913: * cp-decl.c (finish_decl): Don't require external-linkage arrays ! 4914: to have a complete type at declaration time when pedantic. ! 4915: ! 4916: Tue Dec 14 11:37:23 1993 Jason Merrill ([email protected]) ! 4917: ! 4918: * cp-decl.c (pushdecl): Don't set DECL_CONTEXT if it's already set. ! 4919: ! 4920: * cp-call.c (build_method_call): Don't dereference pointer given ! 4921: as instance. ! 4922: ! 4923: * cp-decl.c (finish_function): Don't pass pointer to ! 4924: build_method_call. ! 4925: (finish_function): Ditto. ! 4926: ! 4927: * cp-typeck.c (build_x_function_call): Ditto. ! 4928: ! 4929: * cp-method.c (build_component_type_expr): Ditto. ! 4930: ! 4931: * cp-init.c (build_member_call): Ditto. ! 4932: (build_new): Ditto. ! 4933: ! 4934: Mon Dec 13 18:04:33 1993 Kung Hsu ([email protected]) ! 4935: ! 4936: * cp-decl.c (xref_tag): fix regression created by changes made ! 4937: in Dec. 7 1993. ! 4938: * cp-decl.c (xref_defn_tag): fix parallel nested class problem. ! 4939: ! 4940: Fri Dec 10 12:40:25 1993 Brendan Kehoe ([email protected]) ! 4941: ! 4942: * cp-call.c (compute_conversion_costs_ansi) [DEBUG_MATCHING]: Print ! 4943: out the final evaluation of the function, so we can see if ELLIPSIS, ! 4944: USER, and EVIL were set at the end. ! 4945: ! 4946: * cp-call.c (convert_harshness_ansi): When the parm isn't an lvalue, ! 4947: only go for setting TRIVIAL_CODE if we are dealing with types that ! 4948: are compatible. ! 4949: ! 4950: Thu Dec 9 18:27:22 1993 Mike Stump ([email protected]) ! 4951: ! 4952: * cp-decl.c (flag_huge_objects): New flag to allow large objects. ! 4953: * toplev.c (lang_options): Ditto. ! 4954: * cp-decl2.c (flag_huge_objects, lang_f_options): Ditto. ! 4955: * cp-decl.c (delta_type_node): New type for delta entries. ! 4956: * cp-tree.h (delta_type_node): Ditto. ! 4957: * cp-decl.c (init_decl_processing): Setup delta_type_node. ! 4958: * cp-decl.c (init_decl_processing, build_ptrmemfunc_type): Use ! 4959: delta_type_node instead of short_integer_type_node. ! 4960: * cp-class.c (build_vtable_entry): Ditto. ! 4961: ! 4962: Thu Dec 9 16:19:05 1993 Brendan Kehoe ([email protected]) ! 4963: ! 4964: * cp-tree.h (OPERATOR_TYPENAME_P): Define outside of ! 4965: NO_{DOLLAR,DOT} macro checks, so it always gets defined. ! 4966: (VTABLE_NAME_P): Define for NO_DOT && NO_DOLLAR_IN_LABEL. ! 4967: ! 4968: Wed Dec 8 17:38:06 1993 Mike Stump ([email protected]) ! 4969: ! 4970: * cp-decl.c (finish_decl): Make sure things that can go into ! 4971: "common", do go into common, if -fcommon is given. ! 4972: ! 4973: Wed Dec 8 13:01:54 1993 Brendan Kehoe ([email protected]) ! 4974: ! 4975: * cp-call.c (print_harshness) [DEBUG_MATCHING]: New function. ! 4976: (compute_conversion_costs_ansi) [DEBUG_MATCHING]: Print out ! 4977: argument matching diagnostics to make instantly clear what the ! 4978: compiler is doing. ! 4979: ! 4980: * cp-call.c (convert_harshness_ansi): If the parm isn't an lvalue, ! 4981: then check to see if the penalty was increased due to ! 4982: signed/unsigned mismatch, and use a TRIVIAL_CODE if it wasn't. ! 4983: ! 4984: Tue Dec 7 18:29:14 1993 Kung Hsu ([email protected]) ! 4985: ! 4986: * cp-decl.c (xref_tag, pushtag): Fix nested class search/resolution ! 4987: problem. ! 4988: ! 4989: Tue Dec 7 16:09:34 1993 Jason Merrill ([email protected]) ! 4990: ! 4991: * cp-class.c (finish_struct): Before synthesizing methods, if no ! 4992: methods have yet been declared then set nonprivate_method. Don't ! 4993: set non_private method after synthesizing a method. ! 4994: ! 4995: * cp-lex.c (extract_interface_info): If flag_alt_external_templates ! 4996: is set, tie emitted code to the location of template instantiation, ! 4997: rather than definition. ! 4998: ! 4999: * cp-tree.h: Declare flag_alt_external_templates. ! 5000: ! 5001: * cp-decl2.c (lang_decode_option): Support -falt-external-templates. ! 5002: ! 5003: * toplev.c (lang_options): Ditto. ! 5004: ! 5005: Mon Oct 4 12:50:02 1993 Chip Salzenberg ([email protected]) ! 5006: ! 5007: [changes propagated from 930810 snapshot] ! 5008: * cp-decl.c (init_decl_processing): Make long long available for use ! 5009: as SIZE_TYPE and PTRDIFF_TYPE. ! 5010: (finish_decl): Allow file-scope static incomplete array. ! 5011: (grokdeclarator): Don't pass on const and volatile fron function ! 5012: value type to function type. ! 5013: Warn here for volatile fn returning non-void type. ! 5014: * cp-parse.y (attrib): Accept attributes `volatile' with alias ! 5015: `noreturn', and `const'. ! 5016: * cp-typeck.c (default_conversion): Don't lose const and volatile. ! 5017: (build_binary_op_nodefault): Generate pedantic warning for comparison ! 5018: of complete pointer type with incomplete pointer type. ! 5019: (build_c_cast): Be careful that null pointer constant be INTEGER_CST. ! 5020: ! 5021: Tue Dec 7 10:46:48 1993 Jason Merrill ([email protected]) ! 5022: ! 5023: * cp-init.c (expand_vec_init): When creating a temporary for copying ! 5024: arrays, use the type of the source, not the target. ! 5025: ! 5026: * cp-cvt.c (convert): Pass an argument for errtype to ! 5027: convert_to_reference. ! 5028: ! 5029: * cp-error.c (dump_expr, COMPONENT_REF & CALL_EXPR): Deal with ! 5030: methods, -> and `this'. ! 5031: ! 5032: Mon Dec 6 17:12:33 1993 Jason Merrill ([email protected]) ! 5033: ! 5034: * cp-error.c (parm_as_string): New function; returns `this' or arg ! 5035: number. Corresponds to %P. ! 5036: (dump_expr): Deal with method calls. ! 5037: ! 5038: * cp-cvt.c (convert_to_reference): Stop using warn_for_assignment. ! 5039: * cp-typeck.c (convert_for_assignment): Ditto. ! 5040: (warn_for_assignment): Lose. ! 5041: ! 5042: Mon Dec 6 11:33:35 1993 Brendan Kehoe ([email protected]) ! 5043: ! 5044: * cp-call.c (ideal_candidate_ansi): Delete code that was never ! 5045: doing anything useful. Instead, sort once, and DO NOT wipe ! 5046: out any codes with EVIL_CODE, since that's what we use as a ! 5047: marker for the end of the list of candidates. ! 5048: ! 5049: * cp-cvt.c (convert_to_aggr): Make sure to always set H_LEN. ! 5050: ! 5051: Mon Dec 6 12:49:17 1993 Jason Merrill ([email protected]) ! 5052: ! 5053: * cp-init.c (get_aggr_from_typedef): New function, like ! 5054: is_aggr_typedef but returns the _TYPE. ! 5055: ! 5056: * cp-call.c, cp-init.c, cp-method.c: Eradicate err_name. ! 5057: ! 5058: Sun Dec 5 18:12:48 1993 Brendan Kehoe ([email protected]) ! 5059: ! 5060: * cp-lex.c (readescape): Pedwarn when a hex escape is out of range. ! 5061: ! 5062: Thu Nov 25 23:50:19 1993 Chip Salzenberg ([email protected]) ! 5063: ! 5064: Delay language context change until beginning of next decl. ! 5065: ! 5066: * cp-lex.h (c_header_level): Removed. ! 5067: (pending_lang_change): Declared. ! 5068: * cp-lex.c (c_header_level): Renamed from in_c_header, made static. ! 5069: (pending_lang_change): Defined. ! 5070: (check_newline): Rework code that recognizes line number and ! 5071: filename changes. Instead of pushing and popping lang context, ! 5072: increment and decrement pending_lang_change. ! 5073: (do_pending_lang_change): Push and pop lang context according ! 5074: to value of pending_lang_change. ! 5075: * cp-parse.y (extdefs): Use lang_extdef instead of extdef. ! 5076: (extdef): Same as extdef, but call do_pending_lang_change() first. ! 5077: ! 5078: Mon Nov 15 15:39:15 1993 Chip Salzenberg ([email protected]) ! 5079: ! 5080: * cp-typeck.c (build_binary_op_nodefault): Warn for ordered ! 5081: compare of ptr with 0 only if pedantic in both cases. ! 5082: ! 5083: Thu Nov 25 13:31:37 1993 Chip Salzenberg ([email protected]) ! 5084: ! 5085: Reinstate the below patch, which got lost in the Cygnus merge: ! 5086: Tue Nov 23 13:59:24 1993 Hallvard B Furuseth ([email protected]) ! 5087: * cp-parse.y (maybe_type_qual): Don't fail to set $$. ! 5088: ! 5089: Wed Nov 17 19:03:30 1993 Chip Salzenberg ([email protected]) ! 5090: ! 5091: * cp-parse.y (attrib): Allow "ident(ident)" like the C front end. ! 5092: ! 5093: Fri Oct 22 20:43:37 1993 Paul Eggert ([email protected]) ! 5094: ! 5095: * cp-lex.c (real_yylex): Diagnose floating point constants ! 5096: that are too large. ! 5097: ! 5098: Wed Nov 17 19:10:37 1993 Chip Salzenberg ([email protected]) ! 5099: ! 5100: * cp-type2.c (build_functional_cast): ARM page 16: When a class ! 5101: and an object, function or enumerator are declared in the same ! 5102: scope with the same name, the class name is hidden. ! 5103: ! 5104: Wed Nov 17 19:07:18 1993 Chip Salzenberg ([email protected]) ! 5105: ! 5106: * cp-call.c (convert_harshness_ansi): Distinguish float, double, ! 5107: and long double from each other when overloading. ! 5108: (compute_conversion_costs_{ansi,old}, build_method_call, ! 5109: build_overlay_call_real, convert_to_aggr): Always set and ! 5110: always use H_LEN member of candidate structure. ! 5111: ! 5112: Mon Oct 11 23:10:53 1993 Chip Salzenberg ([email protected]) ! 5113: ! 5114: * cp-decl.c (duplicate_decls): Note redeclarations of library ! 5115: functions, and generate distinct warnings for them. ! 5116: ! 5117: Mon Oct 4 12:26:49 1993 Chip Salzenberg ([email protected]) ! 5118: ! 5119: Support format warnings in G++. ! 5120: ! 5121: * cp-tree.h: Protect against multiple inclusion. ! 5122: Declare all public functions in c-common.c (copy from c-tree.h). ! 5123: (STDIO_PROTO): Define. ! 5124: (warn_format): Declare. ! 5125: (record_format_info): Remove declaration. ! 5126: * cp-decl.c (init_decl_processing): Call init_function_format_info. ! 5127: * cp-decl2.c (lang_decode_option): Make "-Wall" include warn_format. ! 5128: * cp-typeck.c (build_function_call_real): Call check_function_format. ! 5129: (record_format_info): Remove -- obsolete stub. ! 5130: ! 5131: Sat Jul 24 12:04:29 1993 Chip Salzenberg ([email protected]) ! 5132: ! 5133: * cp-decl.c (duplicate_decls): Don't warn for non-extern var decl ! 5134: following an extern one (for -Wredundant-decls). ! 5135: * cp-parse.y (primary): In statement expression case, if compstmt ! 5136: returns something other than a BLOCK, return it unchanged. ! 5137: ! 5138: Thu Dec 2 20:44:58 1993 Chip Salzenberg ([email protected]) ! 5139: ! 5140: * cp-decl.c (warn_extern_redeclared_static): New function made ! 5141: from code extracted from pushdecl. ! 5142: (duplicate_decls, pushdecl): Call new function. ! 5143: (lookup_name_current_level): Allow for IDENTIFIER_GLOBAL_VALUE ! 5144: to be a TREE_LIST when function is declared in 'extern "C" {}'. ! 5145: ! 5146: Fri Dec 3 16:01:10 1993 Jason Merrill ([email protected]) ! 5147: ! 5148: * cp-class.c (duplicate_tag_error): Use cp_error. ! 5149: (finish_base_struct): Check for ambiguity with direct base, and don't ! 5150: generate op= or copy ctor if it exists. ! 5151: ! 5152: Fri Dec 3 15:32:34 1993 Kung Hsu ([email protected]) ! 5153: ! 5154: * cp-init.c (expand_member_init): when initializer name is null, ! 5155: don't try to build it now because emit_base_init will handle it. ! 5156: ! 5157: Fri Dec 3 12:28:59 1993 Jason Merrill ([email protected]) ! 5158: ! 5159: * cp-lex.c (init_lex): Initialize input_filename to "<internal>" for ! 5160: code such as ExceptionHandler::operator=. ! 5161: ! 5162: Fri Dec 3 10:32:08 1993 Jason Merrill ([email protected]) ! 5163: ! 5164: * cp-decl.c (grokdeclarator): Don't try to print out dname when ! 5165: complaining about arrays of references if decl_context==TYPENAME, ! 5166: since it will be null. ! 5167: ! 5168: * cp-decl2.c: Default to flag_ansi_overloading. ! 5169: ! 5170: Thu Dec 2 18:05:56 1993 Kung Hsu ([email protected]) ! 5171: ! 5172: * cp-call.c (build_method_call): use binfo from instance if it's ! 5173: different from binfo (basetype_path) passed from above. ! 5174: ! 5175: Thu Dec 2 12:48:36 1993 Brendan Kehoe ([email protected]) ! 5176: ! 5177: Wed Nov 17 19:14:29 1993 Chip Salzenberg ([email protected]) ! 5178: ! 5179: cp-error.c (dump_expr): Use unsigned chars to output a ! 5180: TREE_REAL_CST in hex. ! 5181: ! 5182: Thu Dec 2 11:05:48 1993 Jason Merrill ([email protected]) ! 5183: ! 5184: * cp-class.c (finish_struct): Fix typo in setting ! 5185: cant_synth_asn_ref. ! 5186: ! 5187: * cp-tree.h (TYPE_NESTED_NAME): New macro, does ! 5188: DECL_NESTED_TYPENAME (TYPE_NAME (NODE)). ! 5189: ! 5190: * cp-lex.c (default_copy_constructor_body): Change ! 5191: DECL_NAME (TYPE_NAME (btype)) to TYPE_NESTED_NAME (btype). ! 5192: (default_assign_ref_body): Ditto. ! 5193: (default_copy_constructor_body): Call operator= explicitly for ! 5194: base classes that have no constructor. ! 5195: ! 5196: Thu Dec 2 10:47:15 1993 Michael Tiemann ([email protected]) ! 5197: ! 5198: * cp-call.c (build_method_call): If the instance variable is ! 5199: converted to error_mark_node when we're trying to convert it to the ! 5200: base type of a method we're looking up, return error_mark_node. ! 5201: ! 5202: Thu Dec 2 10:41:16 1993 Torbjorn Granlund ([email protected]) ! 5203: ! 5204: * cp-typeck.c (build_binary_op_nodefault): In *_DIV_EXPR *_MOD_EXPR ! 5205: cases, tests for unsigned operands by peeking inside a NOP_EXPR. ! 5206: ! 5207: Wed Dec 1 13:33:34 1993 Brendan Kehoe ([email protected]) ! 5208: ! 5209: * cp-call.c (compute_conversion_costs_ansi): Use the size of struct ! 5210: harshness_code, not the size of short, for clearing out the ! 5211: ansi_harshness. ! 5212: ! 5213: * cp-call.c (print_candidates): New function. ! 5214: (build_method_call): When we had some candidates, but didn't get a ! 5215: usable match, don't report that we got an error with the first ! 5216: candidate. Instead, say there were no matches, and list the ! 5217: candidates with print_candidates. In the second pass, make sure we ! 5218: clear out ever_seen, so we can accurately count the number of ! 5219: functions that qualified. ! 5220: ! 5221: Wed Dec 1 09:53:59 1993 Torbjorn Granlund ([email protected]) ! 5222: ! 5223: * cp-typeck.c (build_binary_op_nodefault): Shorten for *_MOD_EXPR ! 5224: only if op1 is known to be != -1. ! 5225: (build_binary_op_nodefault): Handle *_DIV_EXPR likewise. ! 5226: ! 5227: Tue Nov 30 14:07:26 1993 Brendan Kehoe ([email protected]) ! 5228: ! 5229: * cp-method.c (hack_identifier): If the field itself is private, and ! 5230: not from a private base class, say so. ! 5231: ! 5232: Mon Nov 29 03:00:56 1993 Jason Merrill ([email protected]) ! 5233: ! 5234: * cp-decl.c (grokdeclarator): Always warn on initialization of ! 5235: const member. ! 5236: ! 5237: Wed Nov 24 00:49:35 1993 Jason Merrill ([email protected]) ! 5238: ! 5239: * cp-class.c (finish_struct): Set TYPE_GETS_CONST_* properly. ! 5240: (finish_base_struct): Set cant_synth_asn_ref properly. ! 5241: ! 5242: * cp-lex.c (cons_up_default_function): Add section for operator=. ! 5243: (default_assign_ref_body): New function, mostly cribbed from ! 5244: default_copy_constructor_body. ! 5245: ! 5246: * cp-class.c (base_info): Add members cant_synth_copy_ctor, ! 5247: cant_synth_asn_ref, no_const_asn_ref. ! 5248: (finish_base_struct): Update no_const_asn_ref, note that you should ! 5249: update cant_synth_*, propagate TYPE_GETS_ASSIGN_REF. ! 5250: (finish_struct): Add decls for cant_synth_*, no_const_asn_ref, and ! 5251: initialize them properly. Set no_const_asn_ref properly. Set ! 5252: cant_synth_* in some of the situations where they should be set. ! 5253: Propagate TYPE_GETS_ASSIGN_REF. Use cant_synth_copy_ctor. Add call ! 5254: to cons_up_default_function for operator=. ! 5255: ! 5256: Tue Nov 23 20:24:58 1993 Mike Stump ([email protected]) ! 5257: ! 5258: * cp-cvt.c (convert_force): Add code to perform casting of pointer ! 5259: to member function types. ! 5260: * cp-typeck.c (build_ptrmemfunc): Add FORCE parameter to indicate ! 5261: when the conversion should be done, regardless. ! 5262: * cp-tree.h (build_ptrmemfunc): Ditto. ! 5263: * cp-type2.c (digest_init): Ditto. ! 5264: * cp-typeck.c (convert_for_assignment): Ditto. ! 5265: ! 5266: Tue Nov 23 18:06:58 1993 Jason Merrill ([email protected]) ! 5267: ! 5268: * cp-error.c (dump_expr): Do the right thing for variables of ! 5269: reference type. ! 5270: ! 5271: * cp-decl.c (grok_op_properties): Set TYPE_HAS_ASSIGN_REF ! 5272: and its kin properly. ! 5273: (xref_tag): Propagate TYPE_GETS_ASSIGN_REF. ! 5274: ! 5275: Tue Nov 23 12:26:13 1993 Mike Stump ([email protected]) ! 5276: ! 5277: * cp-method.c (build_opfncall): Don't count pointer to member ! 5278: functions as aggregates here, as we don't want to look up methods in ! 5279: them. The compiler would core dump if we did, as they don't have ! 5280: normal names. ! 5281: * cp-typeck.c (build_indirect_ref): Improve wording on error ! 5282: message. ! 5283: ! 5284: Mon Nov 22 14:22:23 1993 Jason Merrill ([email protected]) ! 5285: ! 5286: * cp-decl.c (grok_op_properties): Allow operator?: with pedwarn ! 5287: (since it's supported in other compiler bits). ! 5288: ! 5289: * cp-method.c (report_type_mismatch): Use cp_error; ignore err_name ! 5290: argument. ! 5291: ! 5292: * cp-error.c (dump_function_decl): Don't print return type for ! 5293: constructors and destructors. ! 5294: ! 5295: * cp-cvt.c (cp_convert_to_pointer): Import code from ! 5296: convert_to_pointer so we can return error_mark_node in the case of an ! 5297: error, and to allow more meaningful error messages. ! 5298: (build_type_conversion): Don't go through void* when trying ! 5299: to convert to a pointer type. ! 5300: ! 5301: * cp-decl.c (grokfndecl): Move call to grok_op_properties back ! 5302: after grokclassfn so that it's dealing with the right decl. ! 5303: (grok_op_properties): Don't assert !methodp for op new and op delete. ! 5304: ! 5305: * cp-init.c (build_delete): Don't use TYPE_BUILT_IN (there are now ! 5306: no uses of it in the compiler). ! 5307: ! 5308: * cp-call.c (build_scoped_method_call): Fix for destructors of simple ! 5309: types. ! 5310: (build_method_call): Ditto. ! 5311: ! 5312: Fri Nov 19 12:59:38 1993 Jason Merrill ([email protected]) ! 5313: ! 5314: * cp-tree.c (count_functions): Abstraction function. ! 5315: ! 5316: * cp-call.c (build_overload_call_real): Deal with new overloading ! 5317: properly, remove dead code. ! 5318: ! 5319: * gcc.c (default_compilers): Generate and use .ii files in the ! 5320: intermediate stage of compiling C++ source. ! 5321: ! 5322: Fri Nov 19 11:26:09 1993 Jim Wilson ([email protected]) ! 5323: ! 5324: * cp-expr.c (cplus_expand_expr): Make call_target a valid memory ! 5325: address before using it, so it can be later safely compared. ! 5326: ! 5327: Fri Nov 12 15:30:27 1993 Jason Merrill ([email protected]) ! 5328: ! 5329: * cp-pt.c (tsubst): Deal with new overloading. ! 5330: ! 5331: * cp-typeck.c (fntype_p): is the arg function type? ! 5332: (comp_target_parms): pedwarn on conversion from (anything) to (...). ! 5333: (build_x_function_call): Deal with new overloading. ! 5334: ! 5335: * cp-tree.c (decl_list_length): Deal with new overloading. ! 5336: (decl_value_member): Like value_member, but for DECL_CHAINs. ! 5337: ! 5338: * cp-decl.c (duplicate_decls): Deal with new overloading. ! 5339: (start_decl): Ditto. ! 5340: ! 5341: * cp-class.c (instantiate_type): Deal with new overloading. ! 5342: ! 5343: * cp-call.c (convert_harshness_ansi): Deal with new overloading. ! 5344: (convert_harshness_old): Deal with new overloading. ! 5345: (build_overload_call_real): Ditto. ! 5346: ! 5347: Mon Nov 8 13:50:49 1993 Jason Merrill ([email protected]) ! 5348: ! 5349: * cp-tree.c (get_unique_fn): New function; returns FUNCTION_DECL ! 5350: if unambiguous, NULL_TREE otherwise. ! 5351: (get_first_fn): Returns the first appropriate FUNCTION_DECL. ! 5352: (is_overloaded_fn): Returns whether or not the passed tree is ! 5353: a function or list of functions. ! 5354: ! 5355: * cp-init.c (init_init_processing): use `get_first_fn' to find ! 5356: the FUNCTION_DEFN for new and delete. ! 5357: ! 5358: * cp-decl.c (push_overloaded_decl): Use new overloading strategy, cut ! 5359: code size in half (I spit on special cases). ! 5360: ! 5361: Tue Sep 7 20:03:33 1993 Jason Merrill ([email protected]) ! 5362: ! 5363: * cp-decl.c: Allow references and template type parameters as well ! 5364: ! 5365: Local Variables: ! 5366: eval: (auto-fill-mode) ! 5367: left-margin: 8 ! 5368: fill-column: 76 ! 5369: End:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.