1 2002-01-04 Jakub Jelinek <jakub@redhat.com>
3 * tree.h (expand_expr_stmt_value): Add maybe_last argument.
4 * c-common.h (genrtl_expr_stmt_value): Likewise.
5 * stmt.c (expand_expr_stmt): Pass 1 as maybe_last.
6 (expand_expr_stmt_value): Add maybe_last argument.
7 Don't warn about statement with no effect if it is the last statement
8 in expression statement.
9 * c-semantics.c (genrtl_expr_stmt): Pass 1 as maybe_last.
10 (genrtl_expr_stmt_value): Add maybe_last argument, pass it down to
11 expand_expr_stmt_value.
12 (expand_stmt) [EXPR_STMT]: Pass 1 as maybe_last to
13 genrtl_expr_stmt_value if t is the last EXPR_STMT in its scope.
14 * expr.c (expand_expr) [LABELED_BLOCK_EXPR, LOOP_EXPR]: Pass 1
15 as maybe_last to expand_expr_stmt_value.
17 Fri Jan 4 11:45:05 2002 Jeffrey A Law (law@redhat.com)
19 * c-common.c (c_expand_start_cond): Expect the IF_STMT node to
20 be passed in, do not build it.
21 (c_begin_if_stmt): New function.
22 (c_begin_while_stmt, c_finish_while_stmt_cond): Likewise.
23 * c-common.h (c_expand_start_cond): Update prototype.
24 (c_begin_if_stmt): Prototype new function.
25 (c_begin_while_stmt, c_finish_while_stmt_cond): Likewise.
26 * c-parse.in (if_prefix): Use c_begin_if_stmt,
27 c_begin_while_stmt and c_finish_while_stmt_cond.
29 2002-01-04 William Cohen <wcohen@redhat.com>
31 * config/pa/elf.h (ASM_FILE_START): Reverted to profile_flag.
32 * config/pa/pa-linux.h (ASM_FILE_START): Likewise.
33 * config/pa/pa64-hpux.h (ASM_FILE_START): Likewise.
34 * config/pa/som.h (ASM_FILE_START): Likewise.
36 2001-01-04 Daniel Berlin <dan@cgsoftware.com>
38 * lcm.c: Include df.h.
39 Add available_transfer_function prototype.
40 (compute_available): Rework to use iterative dataflow framework.
41 (struct bb_info): s/bb_info/lcm_bb_info/g to avoid conflict
43 (available_transfer_function): New function.
45 * Makefile.in (lcm.o): add df.h to dependencies.
47 2002-01-04 Richard Henderson <rth@redhat.com>
49 * config/alpha/alpha.c (some_operand): Accept HIGH.
50 (input_operand): Likewise; accept simple references to globals.
51 (alpha_const_ok_for_letter_p): New, outlined from alpha.h.
52 (alpha_const_double_ok_for_letter_p): Likewise.
53 (alpha_extra_constraint): Likewise.
54 (alpha_preferred_reload_class): Likewise. Do not force
55 symbolic constants to memory.
56 (alpha_legitimate_address_p): Accept simple references
57 to small_symbolic_operand.
58 (alpha_legitimize_address): New arg scratch. Be prepared to be
59 called when no_new_pseudos. Emit simple symbolic references.
60 Split integers into low, high, and rest.
61 (alpha_expand_mov): Use alpha_legitimize_address.
62 (some_small_symbolic_mem_operand): New.
63 (split_small_symbolic_mem_operand): New.
64 * config/alpha/alpha-protos.h: Update.
65 * config/alpha/alpha.h (CONST_OK_FOR_LETTER_P): Out-line.
66 (CONST_DOUBLE_OK_FOR_LETTER_P): Likewise.
67 (EXTRA_CONSTRAINT): Likewise.
68 (PREFERRED_RELOAD_CLASS): Likewise.
69 (LEGITIMIZE_ADDRESS): Update for alpha_legitimize_address change.
70 (PREDICATE_CODES): Update.
71 * config/alpha/alpha.md: New post-reload splitters to convert
72 simplfied symbolic operands to the form that references $29.
73 (divide expanders): Use emit_move_insn, not gen_movdi_er_high_g.
74 (movdi_er_nofix, movdi_er_fix): Accept any symbolic operand.
76 2002-01-03 Richard Henderson <rth@redhat.com>
78 * local-alloc.c (function_invariant_p): Update commentary.
80 2002-01-04 H.J. Lu <hjl@gnu.org>
82 * toplev.c (rest_of_compilation): Fix a typo when calling
85 2002-01-03 Kazu Hirata <kazu@hxi.com>
87 * c-common.c: Fix formatting.
88 * diagnostic.c: Likewise.
90 * dwarf2out.c: Likewise.
92 2002-01-03 Kazu Hirata <kazu@hxi.com>
94 * config/h8300/h8300.c (output_logical_op): Use 'not.w' instead
95 of 'neg.w' when xoring with 0x0000ffff or 0xffff0000.
97 2002-01-03 Neil Booth <neil@daikokuya.demon.co.uk>
99 * cpperror.c: Update comments and copyright.
100 * cppexp.c, cppfiles.c, cpphash.c, cpphash.h, cppinit.c,
101 cpplex.c, cpplib.c, cpplib.h, cppmacro.c, cppmain.c: Similarly.
103 2002-01-03 John David Anglin <dave@hiauly1.hia.nrc.ca>
105 * collect2.c (main): Use strcmp when testing for "-shared".
107 2002-01-03 Neil Booth <neil@daikokuya.demon.co.uk>
109 * cppmacro.c: Don't include intl.h. Update comments.
110 (new_number_token): Allocate enough buffer for 64-bit unsigned
111 integers; update prototype.
112 * cppmain.c: Update comments.
114 2002-01-03 William Cohen <wcohen@redhat.com>
116 * function.h (struct function): Add profile.
117 (current_function_profile): New.
118 doc/extend.texi: Update documentation.
119 * final.c (final_start_function): Use current_function_profile
120 instead of profile_flag.
121 (profile_after_prologue): Likewise.
122 * function.c (expand_function_start): Likewise.
123 (expand_function_start): Likewise.
124 * config/alpha/alpha.c (direct_call_operand):
125 (alpha_does_function_need_gp): Likewise.
126 (alpha_expand_prologue): Likewise.
127 * config/arm/arm.c (arm_expand_prologue): Likewise.
128 thumb_expand_prologue: Likewise.
129 * config/d30v/d30v.c (d30v_stack_info): Likewise.
130 * config/fr30/fr30.c (MUST_SAVE_RETURN_POINTER): Likewise.
131 (fr30_expand_prologue): Likewise.
132 * config/i386/cygwin.h (SUBTARGET_PROLOGUE): Likewise.
133 * config/i386/i386.c (ix86_osf_output_function_prologue): Likewise.
134 * config/i386/i386.h (FINALIZE_PIC): Likewise.
135 * config/i386/win32.h (SUBTARGET_PROLOGUE): Likewise.
136 * config/i960/i960.c (i960_output_function_prologue): Likewise.
137 * config/ia64/ia64.c (ia64_compute_frame_size): Likewise.
138 * config/m32r/m32r.c (MUST_SAVE_RETURN_ADDR): Likewise.
139 (m32r_expand_prologue): Likewise.
140 * config/m88k/m88k.c (m88k_layout_frame): Likewise.
141 (m88k_expand_prologue): Likewise.
142 * config/m88k/m88k.h (ADJUST_INSN_LENGTH): Likewise.
143 * config/mips/mips.c (compute_frame_size): Likewise.
144 (mips_expand_prologue): Likewise.
145 (mips_can_use_return_insn): Likewise.
146 * config/pa/elf.h (ASM_FILE_START): Likewise.
147 * config/pa/pa-linux.h (ASM_FILE_START): Likewise.
148 * config/pa/pa64-hpux.h (ASM_FILE_START): Likewise.
149 * config/pa/som.h (ASM_FILE_START): Likewise.
150 * config/romp/romp.c (romp_using_r14): Likewise.
151 * config/rs6000/rs6000.c (first_reg_to_save): Likewise.
152 (rs6000_stack_info): Likewise.
153 * config/rs6000/sysv4.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
154 * config/rs6000/xcoff.h (ASM_FILE_START): Likewise.
155 * config/v850/v850.c (compute_register_save_size): Likewise.
157 2002-01-03 Jakub Jelinek <jakub@redhat.com>
159 * simplify-rtx.c (simplify_binary_operation) [DIV]: If
160 gen_lowpart_common fails, use gen_lowpart_SUBREG.
162 2002-01-03 Turly O'Connor <turly@apple.com>
164 * darwin.c (machopic_output_possible_stub_label): Don't generate
165 stub routines for pseudo-stubs which we've just defined.
167 2002-01-03 Kazu Hirata <kazu@hxi.com>
169 * builtins.c: Fix formatting.
170 * c-typeck.c: Likewise.
171 * combine.c: Likewise.
175 2002-01-03 Andreas Schwab <schwab@suse.de>
177 * cppfiles.c (_cpp_pop_file_buffer): Change return type to bool
178 and return true if _cpp_push_next_buffer pushed a new include
180 * cpplib.c (_cpp_pop_buffer): Only call obstack_free if
181 _cpp_pop_file_buffer did not push a new file.
182 * cpphash.h (_cpp_pop_file_buffer): Update declaration.
184 2002-01-02 Eric Christopher <echristo@redhat.com>
186 * final.c (final_scan_insn): Change 0 -> NULL_RTX in
187 FIND_REG_INC_NOTE call. Update copyright.
188 * loop.c (canonicalize_condition): Ditto.
189 * reorg.c (delete_scheduled_jump): Ditto.
191 2002-01-03 Kazu Hirata <kazu@hxi.com>
193 * gcse.c: Fix formatting.
195 2002-01-03 Graham Stott <grahams@redhat.com>
197 * mkconfig.sh: Output to config.h, hconfig.h and tconfig.h
198 forward defs for struct tags rtx_def, union_tree, rtvec_def
199 also output corresponding typedefs for rtxm, tree, and rtvcec.
201 * system.h: Move forward defs for struct tags rtx_def, union_tree,
202 rtvec_def along with corresponding typedefs for rtx, tree, and
203 rtvcec to config.h, hconfig.h, tconfig.h
205 2002-01-03 Graham Stott <grahams@redhat.com>
207 * tree.h: Update copyright date.
208 (IS_EXPR_CODE_CLASS): Add parenthesis.
209 (TREE_SET_CODE): Add whitespace.
210 (TREE_CHECK): Add parenthesis.
211 (TREE_CLASS_CODE): Add parenthesis and wrap long line.
212 (CST_OR_CONSTRUCTOR_CHECK):
213 (EXPR_CHECK): Add parenthis, whitespace and wrap line.
214 (TREE_SYMBOL_REFERENCED): Whitespace.
215 (INT_CST_LT): Likewise.
216 (INT_CST_LT_UNSIGNED): Likewise.
217 (tree_real_cst): Unwrap comment.
218 (tree_string): Likewise.
219 (tree_complex): Likewise.
220 (IDENTIFIER_POINTER): correct cast.
221 (SAVE_EXPR_CONTEXT): Whitespace.
222 (EXPR_WFL_FILENAME_NODE): Likewise.
223 (EXPR_WFL_FILENAME): Remove parenthesis.
224 (DECL_ORIGIN): Add parenthesis.
225 (DECL_FROM_INLINE): Use NULL_TREE.
226 (build_int_2): Whitespace.
227 (build_type_variant): Add parenthesis.
229 * gcc/jcf-parse.c: Update copyright date.
230 (yyparse): Constify resource_filename.
232 2002-01-03 Graham Stott <grahams@redhat.com>
234 * rtl.h: Update copyright date.
235 (RTL_CHECK1): Wrap long line.
236 (RTL_CHECK2): Likewise.
237 (RTL_CHECKC1): Wrap long line and whitespace.
238 (RTL_CHECKC2): Likewise.
256 (X0BITMAP): Likewise.
259 (X0ADVFLAGS): Likewise.
260 (X0CSELIB): Likewise.
261 (X0MEMATTR): Likewise.
269 (XCBITMAP): Likewise.
272 (XCADVFLAGS): Likewise.
273 (XCCSELIB): Likewise.
275 (INSN_UID): Likewise.
276 (PREV_INSN): Likewise.
278 (INSN_CODE): Likewise.
279 (PUT_REG_NOTE_KIND): Likewise.
280 (CODE_LABEL_NUMBER): Likewise.
281 (NOTE_SOURCE_FILE): Likewise.
282 (NOTE_BLOCK): Likewise.
283 (NOTE_EH_HANDLER): Likewise.
284 (NOTE_RANGE_INFO): Likewise.
285 (NOTE_LIVE_INFO): Likewise.
286 (NOTE_BASIC_BLOCK): Likewise.
287 (NOTE_EXPECTED_VALUE): Likewise.
288 (NOTE_LINE_NUMBER): Likewise.
289 (LABEL_NAME): Likewise.
290 (LABEL_NUSES): Likewise.
291 (LABEL_ALTERNATE_NAME): Likewise.
292 (ADDRESSOF_DECL): Likewise.
293 (JUMP_LABEL): Likewise.
294 (LABEL_NEXTREF): Likewise.
296 (ORIGINAL_REGNO: Likewise.
297 (HARD_REGISTER_NUM_P): Add parenthesis.
298 (SUBREG_REG): Whitespace.
299 (SUBREG_BYTE): Likewise.
300 (ASM_OPERANDS_TEMPLATE): Remove parenthesis.
301 (ASM_OPERANDS_OUTPUT_CONSTRAINT): Likewise.
302 (ASM_OPERANDS_OUTPUT_IDX): Likewise.
303 (ASM_OPERANDS_INPUT_VEC): Likewise.
304 (ASM_OPERANDS_INPUT_CONSTRAINT_VEC): Likewise.
305 (ASM_OPERANDS_INPUT): Likewise.
306 (ASM_OPERANDS_INPUT_LENGTH): Likewise.
307 (ASM_OPERANDS_INPUT_CONSTRAINT_EXP): Likewise.
308 (ASM_OPERANDS_INPUT_CONSTRAINT): Likewise.
309 (ASM_OPERANDS_INPUT_MODE): Likewise.
310 (ASM_OPERANDS_SOURCE_FILE): Likewise.
311 (ASM_OPERANDS_SOURCE_LINE): Likewise.
312 (MEM_SET_IN_STRUCT_P): Minor reformat.
313 (TRAP_CONDITION): Whitespace.
314 (TRAP_CODE): Likewise.
315 (COND_EXEC_TEST): Likewise.
316 (COND_EXEC_CODE): Likewise.
317 (FIND_REG_INC_NOTE): Uppercase macro args and add parenthesis.
318 (PHI_NODE_P): Add parenthesis.
319 (plus_constant): Whitespace and add parenthesis.
321 2002-01-03 Kazu Hirata <kazu@hxi.com>
323 * config/avr/avr.c: Fix comment typos.
324 * config/c4x/c4x.md: Likewise.
325 * config/dsp16xx/dsp16xx.h: Likewise.
326 * config/dsp16xx/dsp16xx.md: Likewise.
327 * config/i386/i386.md: Likewise.
328 * config/ia64/ia64.c: Likewise.
329 * config/m32r/m32r.h: Likewise.
330 * config/m68hc11/m68hc11.md: Likewise.
331 * config/mmix/mmix.c: Likewise.
332 * config/mn10200/mn10200.c: Likewise.
333 * config/romp/romp.c: Likewise.
334 * config/sh/sh.c: Likewise.
335 * config/stormy16/stormy16.c: Likewise.
336 * config/stormy16/stormy16.h: Likewise.
337 * config/stormy16/stormy16.md: Likewise.
339 2002-01-03 Graham Stott <grahams@redhat.com>
341 * loop.h: Update copyright date.
342 (LOOP_MOVABLES): Fix typo.
343 (LOOP_REGS): Likewise.
344 (LOOP_IVS): Likewise.
346 2002-01-03 Graham Stott <grahams@redhat.com>
348 * cppinit.c: Update copyright date.
349 Don't include output.h
350 * Makefile.in: Update copyright date.
353 2002-01-02 Craig Rodrigues <rodrigc@gcc.gnu.org>
356 * invoke.texi (-mthreads): Remove from documented RS/6000 options.
357 (-pthread) Add to RS/6000 options.
359 2002-01-02 Kazu Hirata <kazu@hxi.com>
361 * except.c: Fix comment typos.
363 * varasm.c: Likewise.
364 * doc/tm.texi: Fix a typo.
366 2002-01-02 Jakub Jelinek <jakub@redhat.com>
368 * c-typeck.c (output_init_element): Allow initializing static storage
369 duration objects with compound literals.
371 2002-01-02 Richard Henderson <rth@redhat.com>
373 * objc/objc-act.c (hack_method_prototype): Clear current_function_decl
376 2002-01-02 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
378 * gcc.c (default_compilers): Const-ify.
379 * mips-tdump.c (stab_names): Likewise.
380 * mips-tfile.c (map_coff_types, map_coff_storage,
381 map_coff_sym_type, map_coff_derived_type, stabs_symbol,
382 pseudo_ops_t, pseudo_ops): Likewise.
383 * protoize.c (default_include): Likewise
385 * real.c (GET_REAL, PUT_REAL): Don't cast away const-ness.
386 (ezero, ehalf, eone, etwo, e32, elog2, esqrt2, epi): Const-ify.
387 Add array size in declaration.
388 (endian, emov, eisneg, eisinf, eisnan, eiisnan, eiisneg, emovi,
389 emovo, emovz, eiisinf, ecmpm, eaddm, esubm, m16m, edivm, emulm,
390 esub, eadd, eadd1, ediv, emul, e53toe, e64toe, e113toe, e24toe,
391 etoe113, etoe64, etoe53, etoe24, ecmp, eround, ltoe, ultoe,
392 eifrac, euifrac, e24toasc, e53toasc, e64toasc, e113toasc, etoasc,
393 efloor, efrexp, eldexp, eremain, dectoe, etodec, ibmtoe, etoibm,
394 c4xtoe, etoc4x, uditoe, ditoe, etoudi, etodi, esqrt, etens,
395 emtens, make_nan): Const-ify.
396 (TFbignan, TFlittlenan, XFbignan, XFlittlenan, DFbignan,
397 DFlittlenan, SFbignan, SFlittlenan): Make static and const-ify.
399 2002-01-02 Joseph S. Myers <jsm28@cam.ac.uk>
401 * config.gcc (ia64-*-*): Set extra_headers.
402 (alpha*-dec-osf*): Likewise. Don't use alpha/t-osf.
403 * config/alpha/t-osf: Remove.
404 * config/ia64/t-ia64 (EXTRA_HEADERS): Remove.
406 2002-01-02 David Edelsohn <edelsohn@gnu.org>
408 * config/rs6000/t-aix43: Revert previous change.
410 2002-01-02 Jason Merrill <jason@redhat.com>
412 * c-decl.c (c_expand_body): Call outlining_inline_function when
413 emitting an inline function out of line.
415 2002-01-02 Richard Henderson <rth@redhat.com>
417 * dwarf2out.c (limbo_die_node): Add created_for member.
418 (new_die): New argument created_for. Update all callers.
419 (mark_limbo_die_list): New.
420 (dwarf2out_init): Register limbo_die_list as a root.
421 (dwarf2out_finish): Force insert limbo dies into their function
424 2002-01-02 Nathan Sidwell <nathan@codesourcery.com>
427 * doc/invoke.texi (-Wold-style-cast): Only warn about non-void casts.
429 2002-01-02 Kazu Hirata <kazu@hxi.com>
431 * config/h8300/fixunssfsi.c: Update copyright.
434 * config/h8300/h8300.c: Update copyright.
437 2002-01-02 Kazu Hirata <kazu@hxi.com>
439 * config/romp/romp.c: Fix comment formatting.
440 * config/romp/romp.h: Likewise.
441 * config/romp/romp.md: Likewise.
442 * config/s390/s390.c: Likewise.
443 * config/stormy16/stormy16.c: Likewise.
444 * config/stormy16/stormy16.h: Likewise.
446 2002-01-02 Alexandre Oliva <aoliva@redhat.com>
448 * c-common.h (genrtl_expr_stmt_value): Declare.
449 * c-semantics.c (genrtl_goto_stmt): Redirect to...
450 (genrtl_goto_stmt_value): ... this new function. Pass new
451 argument down to expand_expr_stmt_value, taking
452 TREE_ADDRESSABLE into account.
453 * c-common.c (c_expand_expr): Mark the last EXPR_STMT of a
454 STMT_EXPR as addressable, i.e., one whose result we want.
455 * expr.c (expand_expr): Don't save expression statement value
456 of labeled_blocks or loop_exprs.
457 * stmt.c (expand_expr_stmt): Redirect to...
458 (expand_expr_stmt_value): ... this new function. Use new
459 argument to tell whether to save expression value.
460 (expand_end_stmt_expr): Reset last_expr_type and
461 last_expr_value if we don't have either.
462 * tree-inline.c (declare_return_variable): Mark its use
463 statement as addressable.
464 * tree.h: Document new use of TREE_ADDRESSABLE.
465 (expand_expr_stmt_value): Declare.
467 2002-01-01 Tom Rix <trix@redhat.com>
469 * config/rs6000/rs6000.c (rs6000_emit_set_long_const): Fix for use by
470 rs6000_emit_allocate_stack.
472 2002-01-01 Joseph S. Myers <jsm28@cam.ac.uk>
474 * configure.in: Prepend ${srcdir}/config/${cpu_type}/ instead of
475 ${srcdir}/ginclude/ to every entry in extra_headers.
476 * configure: Regenerate.
477 * ginclude/math-3300.h: Rename to config/m68k/math-3300.h.
478 * ginclude/math-68881.h: Rename to config/m68k/math-68881.h.
479 * ginclude/ppc-asm.h: Rename to config/rs6000/ppc-asm.h.
480 * ginclude/proto.h: Rename to config/convex/proto.h.
482 Tue Jan 1 17:12:56 2002 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
484 * attribs.c (handle_vector_size_attribute): Use host_integerp
485 and tree_int_cst; remove warnings.
486 * caller-save.c (insert_restore): Add cast to get rid of warning.
487 (insert_save): Likewise.
488 * emit-rtl.c (adjust_address_1, offset_address): Likewise.
489 * regmove.c (find_matches): Add temporary var to kill a warning.
491 2002-01-01 Douglas B Rupp <rupp@gnat.com>
493 * config/alpha/vms.h (DWARF2_UNWIND_INFO, EH_RETURN_HANDLER_RTX,
494 LINK_EH_SPEC, MD_FALLBACK_FRAME_STATE_FOR): Define.
495 * config/alpha/t-vms (EXTRA_PARTS): Add vms-dwarf2eh.o
496 (vms-dwarf2eh.o): Add Makefile rule.
497 * config/alpha/vms-ld.c (main): Handle vms-dwarf2eh.o.
498 * config/alpha/vms-dwarf2eh.asm: New file.
500 * gcc.c (delete_if_ordinary): Delete all versions.
502 2002-01-01 Hans-Peter Nilsson <hp@bitrange.com>
504 * config/mmix/mmix.md: Update FIXME to not mention
506 (MMIX_rJ_REGNUM): New define_constants constant.
507 ("movqi", "movsi", "movdi", "*movdicc_real_foldable",
508 "*movdicc_real"): Adjust contraints formatting.
509 ("*bCC_foldable"): Add %+ for P in output format and delete FIXME
510 for branch prediction.
511 ("*bCC", "*bCC_inverted_foldable", "*bCC_inverted"): Add %+ in
513 ("*call_real", "*call_value_real", "nonlocal_goto_receiver",
514 "*nonlocal_goto_receiver_expanded"): Use MMIX_rJ_REGNUM instead of
515 number. Delete related FIXMEs.
516 * config/mmix/mmix.h (MMIX_INCOMING_RETURN_ADDRESS_REGNUM): Change
517 from number to MMIX_rJ_REGNUM.
518 (TARGET_MASK_BRANCH_PREDICT): New.
519 (TARGET_DEFAULT): Change to TARGET_MASK_BRANCH_PREDICT.
520 (TARGET_SWITCHES): Update comment. Correct -mno-toplevel-symbols
521 value. Add -mbranch-predict and -mno-branch-predict.
522 (TARGET_VERSION): Drop date.
523 (ADDITIONAL_REGISTER_NAMES): Use MMIX_rJ_REGNUM, not number.
524 * config/mmix/mmix.c (mmix_encode_section_info): Correct condition
525 for finding out global symbols.
526 (mmix_asm_output_labelref): Revert condition for global symbol.
527 (mmix_print_operand): <case '+'>: Emit P for a likely branch.
528 (mmix_print_operand_punct_valid_p): A '+' is valid.
530 See ChangeLog.6 for earlier changes.