Index: gcc/optabs.c =================================================================== --- gcc/optabs.c (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/optabs.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -7033,6 +7033,7 @@ if (icode == CODE_FOR_nothing) return NULL_RTX; + do_pending_stack_adjust (); do { start_sequence (); Index: gcc/DATESTAMP =================================================================== --- gcc/DATESTAMP (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/DATESTAMP (.../branches/gcc-4_5-branch) (wersja 163628) @@ -1 +1 @@ -20100731 +20100829 Index: gcc/postreload.c =================================================================== --- gcc/postreload.c (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/postreload.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -810,7 +810,7 @@ rtx reg = SET_DEST (set); rtx plus = SET_SRC (set); rtx base = XEXP (plus, 1); - rtx prev = prev_nonnote_insn (insn); + rtx prev = prev_nonnote_nondebug_insn (insn); rtx prev_set = prev ? single_set (prev) : NULL_RTX; unsigned int regno = REGNO (reg); rtx index_reg = NULL_RTX; @@ -1323,7 +1323,7 @@ && MODES_OK_FOR_MOVE2ADD (GET_MODE (reg), reg_mode[REGNO (src)])) { - rtx next = next_nonnote_insn (insn); + rtx next = next_nonnote_nondebug_insn (insn); rtx set = NULL_RTX; if (next) set = single_set (next); Index: gcc/rtlanal.c =================================================================== --- gcc/rtlanal.c (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/rtlanal.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -4755,9 +4755,7 @@ stop if it isn't a single set or if it has a REG_INC note because we don't want to bother dealing with it. */ - do - prev = prev_nonnote_insn (prev); - while (prev && DEBUG_INSN_P (prev)); + prev = prev_nonnote_nondebug_insn (prev); if (prev == 0 || !NONJUMP_INSN_P (prev) Index: gcc/fold-const.c =================================================================== --- gcc/fold-const.c (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/fold-const.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -4737,9 +4737,9 @@ n_high = range_binop (MINUS_EXPR, exp_type, build_int_cst (exp_type, 0), 0, low, 0); - low = n_low, high = n_high; - exp = arg0; - continue; + if (n_high != 0 && TREE_OVERFLOW (n_high)) + break; + goto normalize; case BIT_NOT_EXPR: /* ~ X -> -X - 1 */ @@ -4773,6 +4773,7 @@ if (TYPE_OVERFLOW_UNDEFINED (arg0_type)) *strict_overflow_p = true; + normalize: /* Check for an unsigned range which has wrapped around the maximum value thus making n_high < n_low, and normalize it. */ if (n_low && n_high && tree_int_cst_lt (n_high, n_low)) Index: gcc/DEV-PHASE =================================================================== --- gcc/DEV-PHASE (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/DEV-PHASE (.../branches/gcc-4_5-branch) (wersja 163628) @@ -0,0 +1 @@ +prerelease Index: gcc/ChangeLog =================================================================== --- gcc/ChangeLog (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/ChangeLog (.../branches/gcc-4_5-branch) (wersja 163628) @@ -1,3 +1,244 @@ +2010-08-28 Eric Botcazou + + * config/ia64/ia64.md (cstorebi4): Fix thinko. + +2010-08-28 Uros Bizjak + + PR target/41484 + * config/i386/sse.md (sse4_1_extendv8qiv8hi2): Also accept memory + operands for operand 1. + (sse4_1_extendv4qiv4si2): Ditto. + (sse4_1_extendv2qiv2di2): Ditto. + (sse4_1_extendv4hiv4si2): Ditto. + (sse4_1_extendv2hiv2di2): Ditto. + (sse4_1_extendv2siv2di2): Ditto. + (sse4_1_zero_extendv8qiv8hi2): Ditto. + (sse4_1_zero_extendv4qiv4si2): Ditto. + (sse4_1_zero_extendv2qiv2di2): Ditto. + (sse4_1_zero_extendv4hiv4si2): Ditto. + (sse4_1_zero_extendv2hiv2di2): Ditto. + (sse4_1_zero_extendv2siv2di2): Ditto. + (*sse4_1_extendv8qiv8hi2): Remove insn pattern. + (*sse4_1_extendv4qiv4si2): Ditto. + (*sse4_1_extendv2qiv2di2): Ditto. + (*sse4_1_extendv4hiv4si2): Ditto. + (*sse4_1_extendv2hiv2di2): Ditto. + (*sse4_1_extendv2siv2di2): Ditto. + (*sse4_1_zero_extendv8qiv8hi2): Ditto. + (*sse4_1_zero_extendv4qiv4si2): Ditto. + (*sse4_1_zero_extendv2qiv2di2): Ditto. + (*sse4_1_zero_extendv4hiv4si2): Ditto. + (*sse4_1_zero_extendv2hiv2di2): Ditto. + (*sse4_1_zero_extendv2siv2di2): Ditto. + +2010-08-25 Jakub Jelinek + + PR rtl-optimization/44858 + * combine.c (try_combine): If recog_for_combine added CLOBBERs to + newi2pat, make sure they don't affect newpat. + + PR rtl-optimization/45400 + * combine.c (simplify_shift_const_1) : Only use + SUBREG_REG if both modes are of MODE_INT class. + +2010-08-20 Changpeng Fang + + PR tree-optimization/45260 + * tree-flow.h (may_be_nonaddressable_p): New definition. Make the + existing static function global. + + * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): This function + is changed to global. + + * tree-ssa-loop-prefetch.c (gather_memory_references_ref): Call + may_be_nonaddressable_p on base, and don't collect this reference + if the address of the base could not be taken. + +2010-08-20 David Edelsohn + + Backport from mainline + 2010-04-22 David Edelsohn + + * config/rs6000/x-aix: Override LDFLAGS for all COMPILERS. + +2010-08-19 Uros Bizjak + + * config/i386/i386.md (*add3_cconly_overflow): Do not use + ix86_binary_operator_ok. + +2010-08-18 Uros Bizjak + + PR target/45327 + * config/i386/i386.md (_3): Do not use + ix86_binary_operator_ok. + +2010-08-18 H.J. Lu + + Backport from mainline + 2010-08-18 Paolo Bonzini + + PR middle-end/45292 + * optabs.c (expand_bool_compare_and_swap): Expand pending + pops before trying the optab. + +2010-08-17 Uros Bizjak + + PR target/45296 + * reginfo.c (globalize_reg): Reject stack registers. + +2010-08-16 Changpeng Fang + + Backport from mainline: + 2010-08-12 Changpeng Fang + + PR tree-optimization/45241 + * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Give + up dot_prod pattern searching if a stmt is outside the loop. + +2010-08-16 John David Anglin + + Backport from mainline: + 2010-08-09 Richard Guenther + + PR middle-end/44632 + * function.c (gimplify_parameters): Do not clear addressable + bit of the original parameter. + +2010-08-14 John David Anglin + + Revert: + 2010-08-08 John David Anglin + + PR boehm-gc/34544 + * gthr-posix.h (__gthread_start): Delete. + (__gthread_active_init): Use pthread_default_stacksize_np instead of + pthread_create to determine if hpux pthreads are active. + * gthr-posix95.h (__gthread_start): Delete. + (__gthread_active_init): Likewise use pthread_default_stacksize_np. + +2010-08-12 Jakub Jelinek + + PR middle-end/45262 + * fold-const.c (make_range) : Punt if + -a overflows. Normalize the range. + + PR debug/45259 + * caller-save.c (save_call_clobbered_regs): Only swap notes with + DEBUG_INSNs if n_regs_saved. + + Backport from mainline + 2010-07-30 Jakub Jelinek + + PR debug/45055 + PR rtl-optimization/45137 + * rtl.h (prev_nonnote_nondebug_insn, next_nonnote_nondebug_insn): New + prototypes. + * emit-rtl.c (prev_nonnote_nondebug_insn, next_nonnote_nondebug_insn): + New functions. + * combine.c (next_nonnote_nondebug_insn): Removed. + * ifcvt.c (noce_process_if_block): Use prev_nonnote_nondebug_insn. + * haifa-sched.c (queue_to_ready): Use next_nonnote_nondebug_insn. + * sched-deps.c (sched_analyze_insn): Likewise. + (fixup_sched_groups, deps_start_bb): Use prev_nonnote_nondebug_insn. + * rtlanal.c (canonicalize_condition): Likewise. + * postreload.c (reload_combine): Likewise. + (reload_cse_move2add): Use next_nonnote_nondebug_insn. + +2010-08-08 John David Anglin + + Backport from mainline. + 2010-07-17 John David Anglin + + PR target/44805 + * config/pa/pa.h (CONSTANT_ALIGNMENT): Align strings to BITS_PER_WORD + on all targets. + +2010-08-08 Richard Guenther + + PR middle-end/45034 + * convert.c (convert_to_integer): Always use an unsigned + type for narrowed negate and bitwise not. + +2010-08-08 Richard Guenther + + PR tree-optimization/45109 + * tree-ssa-structalias.c (get_constraint_for_component_ref): + Explicitly strip handled components and indirect references. + +2010-08-08 John David Anglin + + PR boehm-gc/34544 + * gthr-posix.h (__gthread_start): Delete. + (__gthread_active_init): Use pthread_default_stacksize_np instead of + pthread_create to determine if hpux pthreads are active. + * gthr-posix95.h (__gthread_start): Delete. + (__gthread_active_init): Likewise use pthread_default_stacksize_np. + +2010-08-06 Eric Botcazou + + PR target/44942 + * config/sparc/sparc.c (function_arg_advance): Always take into account + the padding, if any. + +2010-08-06 Uros Bizjak + + * expmed.c (expand_mult_const) : Expand shift into + temporary. Emit move from temporary to accum, so REG_EQUAL note will + be attached to this insn in correct mode. + +2010-08-06 Uros Bizjak + + * config/i386/i386.c (ix86_decompose_address): Check for SI_REG + using REGNO of base_reg directly. + +2010-08-03 Ulrich Weigand + + * config/spu/spu.c (spu_emit_branch_hint): Do not access NOTE_KIND of + non-NOTE insns. + +2010-08-03 Uros Bizjak + + PR target/41089 + * config/alpha/alpha.c (alpha_build_builtin_va_list): Mark __offset + as volatile. + +2010-08-03 Martin Jambor + + PR tree-optimization/44914 + * tree-sra.c (cfg_changed): New variable. + (sra_initialize): Initialize cgf_changed to false. + (scan_function): Set cfg_changed if cfg was changed. + (perform_intra_sra): Return also TODO_cleanup_cfg if cfg was changed. + (ipa_early_sra): Likewise. + +2010-08-02 DJ Delorie + + * config/rx/predicates.md (rx_constshift_operand): New. + * config/rx/rx.md (zs_cond): New. + (cbranchsi4): Remove mode. + (*cbranchsi4_): Likewise. + (*tstbranchsi4_): New. + (*tstbranchsi4r_): New. + (*tstbranchsi4m_eq): New. + (*tstbranchsi4m_ne): New. + (cbranchsf4): Remove mode. + (*cbranchsf4_): Likewise. + +2010-07-31 Richard Guenther + + PR tree-optimization/45052 + * ipa-pure-const.c (check_stmt): Check volatileness. + +2010-07-31 Richard Guenther + + * ipa-prop.c (ipa_modify_formal_parameters): Use + build_distinct_type_copy. + +2010-07-31 Richard Guenther + + * DEV-PHASE: Set back to prerelease. + * BASE-VER: Bump to 4.5.2. + 2010-07-31 Release Manager * GCC 4.5.1 released. @@ -105,8 +346,8 @@ 2010-07-19 Bingfeng Mei * ddg.c (create_ddg): Exclude nodes of debug_insn in counting nodes - of a loop. - * loop-doloop.c (doloop_condition_get): Skip possible debug_insn. + of a loop. + * loop-doloop.c (doloop_condition_get): Skip possible debug_insn. 2010-07-15 Jie Zhang @@ -286,7 +527,7 @@ if old_decl was DECL_ONE_ONLY. 2010-06-21 Jakub Jelinek - + PR target/44575 * config/i386/i386.c (ix86_gimplify_va_arg): When copying va_arg from a set of register save slots into a temporary, @@ -392,24 +633,24 @@ Backport from mainline 2010-05-17 Martin Jambor - PR middle-end/44133 - * tree-sra.c (create_access_replacement): New parameter rename, mark - the replaement for renaming only when it is true. - (get_access_replacement): Pass true in the rename parameter of - create_access_replacement. - (get_unrenamed_access_replacement): New function. - (replace_uses_with_default_def_ssa_name): New parameter racc, get the - replacement declaration from it. + PR middle-end/44133 + * tree-sra.c (create_access_replacement): New parameter rename, mark + the replaement for renaming only when it is true. + (get_access_replacement): Pass true in the rename parameter of + create_access_replacement. + (get_unrenamed_access_replacement): New function. + (replace_uses_with_default_def_ssa_name): New parameter racc, get the + replacement declaration from it. 2010-06-29 Martin Jambor Backport from mainline 2010-04-13 Martin Jambor - * tree-sra.c (replace_uses_with_default_def_ssa_name): New function. - (sra_modify_assign): Delete stmts loading dead data even if racc has no - children. Call replace_uses_with_default_def_ssa_name to handle - SSA_NAES on lhs. + * tree-sra.c (replace_uses_with_default_def_ssa_name): New function. + (sra_modify_assign): Delete stmts loading dead data even if racc has no + children. Call replace_uses_with_default_def_ssa_name to handle + SSA_NAES on lhs. 2010-06-27 Jan Hubicka @@ -536,7 +777,7 @@ Backport from mainline: 2010-05-18 Steven Bosscher - * darwin.c (darwin_asm_named_section): Do not add assembler comment + * darwin.c (darwin_asm_named_section): Do not add assembler comment after .section directive; just print it before the directive instead. @@ -1659,7 +1900,7 @@ * tree-tailcall.c (find_tail_calls): Verify the tail call properly. -2010-04-19 Ira Rosen +2010-04-19 Ira Rosen PR tree-optimization/43771 * tree-vect-slp.c (vect_supported_load_permutation_p): Check that @@ -1925,11 +2166,11 @@ * Makefile.in ($(out_object_file)): Depend on gt-$(basename $(notdir $(out_file))).h. -2010-04-01 Ralf Corsépius +2010-04-01 Ralf Corsépius * config.gcc (lm32-*-rtems*): Add t-lm32. -2010-04-01 Joel Sherrill +2010-04-01 Joel Sherrill * config.gcc: Add lm32-*-rtems*. * config/lm32/rtems.h: New file. @@ -1984,8 +2225,8 @@ PR middle-end/43602 Revert - 2010-03-30 Seongbae Park - Jack Howarth + 2010-03-30 Seongbae Park + Jack Howarth * tree-profile.c (tree_init_ic_make_global_vars): Make static variables TLS. @@ -2276,8 +2517,8 @@ * config/s390/s390.c (s390_emit_prologue): Omit issuing a dynamic stack check if the mask would be zero. -2010-03-30 Seongbae Park - Jack Howarth +2010-03-30 Seongbae Park + Jack Howarth * tree-profile.c (tree_init_ic_make_global_vars): Make static variables TLS. @@ -2620,7 +2861,7 @@ instead of callq. 2010-03-22 Janis Johnson - Rainer Orth + Rainer Orth * doc/sourcebuild.texi (Test Directives): Split into six subsections, with most of the current text in new subsections @@ -2775,8 +3016,8 @@ (sparc_file_end): Emit a hidden comdat symbol for the PIC thunk if possible. Output CFI information as needed. -2010-03-18 Francois-Xavier Coudert - Jack Howarth +2010-03-18 Francois-Xavier Coudert + Jack Howarth PR target/36399 * config/i386/i386.h: Fix ABI on darwin x86-32. @@ -2919,7 +3160,7 @@ * graphite-sese-to-poly.c (split_reduction_stmt): Skip debug statements before splitting block. -2010-03-16 Rainer Orth +2010-03-16 Rainer Orth * doc/sourcebuild.texi (Testsuites): Fix markup. Use pathnames relative to gcc/testsuite. @@ -3531,7 +3772,7 @@ * tree-vect-loop.c (vect_transform_loop): Kill out-of-loop debug uses of relevant DEFs that are dead outside the loop too. -2010-03-06 Alexandre Oliva +2010-03-06 Alexandre Oliva * var-tracking.c (dataflow_set_merge): Swap src and src2. Reverted: @@ -4313,7 +4554,7 @@ * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Call lang_hooks.types_compatible_p instead of comptypes. -2010-02-18 Sebastian Huber +2010-02-18 Sebastian Huber * config/arm/lib1funcs.asm (__prefer_thumb__): New define. (udivsi3, aeabi_uidivmod, divsi3, aeabi_idivmod): Use Thumb-1 variant @@ -4384,7 +4625,7 @@ statements ... (vrp_visit_phi_node): ... but only for loop PHI nodes. -2010-02-16 Ira Rosen +2010-02-16 Ira Rosen PR tree-optimization/43074 * tree-vectorizer.h (VECTORIZABLE_CYCLE_DEF): New. @@ -4412,8 +4653,8 @@ flag_var_tracking_assignments. * Makefile.in (var-tracking.o): Adjust dependencies. -2010-02-16 Jack Howarth - Jakub Jelinek +2010-02-16 Jack Howarth + Jakub Jelinek PR target/42854 * config/darwin.h (ASM_WEAKEN_DECL): Don't check weak attribute @@ -4511,7 +4752,7 @@ 2010-02-12 Dave Korn Jack Howarth - Iain Sandoe + Iain Sandoe PR target/42982 Partial revert of unintended change in fix for PR41605. @@ -5934,7 +6175,7 @@ (maybe_tidy_empty_bb): Delete prototype. (purge_empty_blocks): Declare. -2010-01-14 Andrey Belevantsev +2010-01-14 Andrey Belevantsev PR rtl-optimization/42249 * sel-sched.c (try_replace_dest_reg): When chosen register Index: gcc/testsuite/gcc.c-torture/execute/pr45034.c =================================================================== --- gcc/testsuite/gcc.c-torture/execute/pr45034.c (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/gcc.c-torture/execute/pr45034.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -0,0 +1,45 @@ +extern void abort (void); +static void fixnum_neg(signed char x, signed char *py, int *pv) +{ + unsigned char ux, uy; + + ux = (unsigned char)x; + uy = -ux; + *py = (uy <= 127) ? (signed char)uy : (-(signed char)(255 - uy) - 1); + *pv = (x == -128) ? 1 : 0; +} + +void __attribute__((noinline)) foo(int x, int y, int v) +{ + if (y < -128 || y > 127) + abort(); +} + +int test_neg(void) +{ + signed char x, y; + int v, err; + + err = 0; + x = -128; + for (;;) { + fixnum_neg(x, &y, &v); + foo((int)x, (int)y, v); + if ((v && x != -128) || (!v && x == -128)) + ++err; + if (x == 127) + break; + ++x; + } + return err; +} + +int main(void) +{ + if (sizeof (char) != 1) + return 0; + if (test_neg() != 0) + abort(); + return 0; +} + Index: gcc/testsuite/gcc.c-torture/execute/pr44858.c =================================================================== --- gcc/testsuite/gcc.c-torture/execute/pr44858.c (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/gcc.c-torture/execute/pr44858.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -0,0 +1,28 @@ +/* PR rtl-optimization/44858 */ + +extern void abort (void); +int a = 3; +int b = 1; + +__attribute__((noinline)) long long +foo (int x, int y) +{ + return x / y; +} + +__attribute__((noinline)) int +bar (void) +{ + int c = 2; + c &= foo (1, b) > b; + b = (a != 0) | c; + return c; +} + +int +main (void) +{ + if (bar () != 0 || b != 1) + abort (); + return 0; +} Index: gcc/testsuite/gcc.c-torture/execute/pr45262.c =================================================================== --- gcc/testsuite/gcc.c-torture/execute/pr45262.c (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/gcc.c-torture/execute/pr45262.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -0,0 +1,33 @@ +/* PR middle-end/45262 */ + +extern void abort (void); + +int +foo (unsigned int x) +{ + return ((int) x < 0) || ((int) (-x) < 0); +} + +int +bar (unsigned int x) +{ + return x >> 31 || (-x) >> 31; +} + +int +main (void) +{ + if (foo (1) != 1) + abort (); + if (foo (0) != 0) + abort (); + if (foo (-1) != 1) + abort (); + if (bar (1) != 1) + abort (); + if (bar (0) != 0) + abort (); + if (bar (-1) != 1) + abort (); + return 0; +} Index: gcc/testsuite/gcc.c-torture/compile/pr45109.c =================================================================== --- gcc/testsuite/gcc.c-torture/compile/pr45109.c (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/gcc.c-torture/compile/pr45109.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -0,0 +1,38 @@ +struct o_fsm_t; +struct o_fsm_event_t; + +typedef void (*fn_t) (struct o_fsm_t *, + struct o_fsm_event_t const *); + +struct o_fsm_state_t { + fn_t dispatch; +}; + +struct o_fsm_t { + fn_t dispatch; +}; + +extern struct o_fsm_state_t o_fsm_tran(struct o_fsm_t *fsm, + struct o_fsm_state_t next_state); +static void plist_parser_state_start(struct o_fsm_t *fsm, + struct o_fsm_event_t const *fsm_event); + +struct o_fsm_state_t o_fsm_state(fn_t dispatch_fcn) +{ + return *(struct o_fsm_state_t *)&dispatch_fcn; +} + +typedef struct _o_plist_parser_t { + struct o_fsm_t fsm; +} o_plist_parser_t; + +static void plist_parser_state_start(struct o_fsm_t *fsm, + struct o_fsm_event_t const *fsm_event) +{ +} + +void o_plist_deserialize_xml(int fin) +{ + o_plist_parser_t parser; + o_fsm_tran(&parser.fsm, o_fsm_state(plist_parser_state_start)); +} Index: gcc/testsuite/gcc.target/i386/pr45296.c =================================================================== --- gcc/testsuite/gcc.target/i386/pr45296.c (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/gcc.target/i386/pr45296.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -0,0 +1,4 @@ +/* { dg-do compile } */ +/* { dg-options "" } */ + +register long double F80 asm("st"); /* { dg-error "stack register" } */ Index: gcc/testsuite/gcc.dg/20050330-2.c =================================================================== --- gcc/testsuite/gcc.dg/20050330-2.c (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/testsuite/gcc.dg/20050330-2.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -19,5 +19,3 @@ x->b[y] = x->b[y + 1]; x->b[x->a] = (void *) 0; } - -/* { dg-final { cleanup-coverage-files } } */ Index: gcc/testsuite/gcc.dg/gomp/pr34610.c =================================================================== --- gcc/testsuite/gcc.dg/gomp/pr34610.c (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/testsuite/gcc.dg/gomp/pr34610.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -26,5 +26,3 @@ for (i = 0; i < 10; ++i) bar (i); } - -/* { dg-final { cleanup-coverage-files } } */ Index: gcc/testsuite/gcc.dg/gomp/pr27573.c =================================================================== --- gcc/testsuite/gcc.dg/gomp/pr27573.c (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/testsuite/gcc.dg/gomp/pr27573.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -16,5 +16,3 @@ } return 0; } - -/* { dg-final { cleanup-coverage-files } } */ Index: gcc/testsuite/gcc.dg/pr32773.c =================================================================== --- gcc/testsuite/gcc.dg/pr32773.c (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/testsuite/gcc.dg/pr32773.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -7,5 +7,3 @@ if (p) *p = 0; } /* { dg-message "note: \[^\n\]*execution counts estimated" } */ - -/* { dg-final { cleanup-coverage-files } } */ Index: gcc/testsuite/gcc.dg/20030107-1.c =================================================================== --- gcc/testsuite/gcc.dg/20030107-1.c (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/testsuite/gcc.dg/20030107-1.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -3,5 +3,3 @@ extern void bar(void) __attribute__((noreturn)); int foo (void) { bar(); } - -/* { dg-final { cleanup-coverage-files } } */ Index: gcc/testsuite/gcc.dg/20051201-1.c =================================================================== --- gcc/testsuite/gcc.dg/20051201-1.c (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/testsuite/gcc.dg/20051201-1.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -24,5 +24,3 @@ res = bar (); } - -/* { dg-final { cleanup-coverage-files } } */ Index: gcc/testsuite/gcc.dg/20030702-1.c =================================================================== --- gcc/testsuite/gcc.dg/20030702-1.c (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/testsuite/gcc.dg/20030702-1.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -8,5 +8,3 @@ { fork (); } - -/* { dg-final { cleanup-coverage-files } } */ Index: gcc/testsuite/gcc.dg/march.c =================================================================== --- gcc/testsuite/gcc.dg/march.c (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/testsuite/gcc.dg/march.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -1,4 +1,5 @@ /* { dg-do compile } */ +/* { dg-skip-if "" { *-*-* } { "-march=*" } { "" } } */ /* { dg-options "-march=foo" } */ /* { dg-error "march" "" { target *-*-* } 0 } */ /* { dg-bogus "mtune" "" { target *-*-* } 0 } */ Index: gcc/testsuite/gcc.dg/profile-dir-1.c =================================================================== --- gcc/testsuite/gcc.dg/profile-dir-1.c (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/testsuite/gcc.dg/profile-dir-1.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -1,6 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-O -fprofile-generate=. -fdump-tree-tree_profile" } */ -/* { dg-require-host-local "" } */ /* { dg-final { scan-tree-dump " ./profile-dir-1.gcda" "tree_profile" } } */ int @@ -9,5 +8,4 @@ return 0; } -/* { dg-final { cleanup-coverage-files } } */ /* { dg-final { cleanup-tree-dump "tree_profile" } } */ Index: gcc/testsuite/gcc.dg/pr24225.c =================================================================== --- gcc/testsuite/gcc.dg/pr24225.c (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/testsuite/gcc.dg/pr24225.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -13,5 +13,3 @@ return 0; } } - -/* { dg-final { cleanup-coverage-files } } */ Index: gcc/testsuite/gcc.dg/graphite/interchange-0.c =================================================================== --- gcc/testsuite/gcc.dg/graphite/interchange-0.c (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/testsuite/gcc.dg/graphite/interchange-0.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -47,4 +47,4 @@ } /* { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" } } */ -/* { dg -final { cleanup-tree-dump "graphite" } } */ +/* { dg-final { cleanup-tree-dump "graphite" } } */ Index: gcc/testsuite/gcc.dg/pr26570.c =================================================================== --- gcc/testsuite/gcc.dg/pr26570.c (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/testsuite/gcc.dg/pr26570.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -5,5 +5,3 @@ { return a / b; } /* { dg-message "note: \[^\n\]*execution counts estimated" } */ - -/* { dg-final { cleanup-coverage-files } } */ Index: gcc/testsuite/gcc.dg/lto/20091216-1_0.c =================================================================== --- gcc/testsuite/gcc.dg/lto/20091216-1_0.c (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/testsuite/gcc.dg/lto/20091216-1_0.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -1,6 +1,10 @@ /* { dg-lto-do run } */ +#ifdef __ia64 +asm (".globl start_\nstart_: nop 0"); +#else asm (".globl start_; start_: nop"); +#endif int main () Index: gcc/testsuite/gcc.dg/lto/20090313_0.c =================================================================== --- gcc/testsuite/gcc.dg/lto/20090313_0.c (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/testsuite/gcc.dg/lto/20090313_0.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -1,4 +1,5 @@ /* { dg-lto-options "-mcpu=v9" { target sparc*-*-* } } */ +/* { dg-require-effective-target sync_char_short } */ void _cairo_clip_path_reference () { int a; Index: gcc/testsuite/gcc.dg/profile-dir-2.c =================================================================== --- gcc/testsuite/gcc.dg/profile-dir-2.c (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/testsuite/gcc.dg/profile-dir-2.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -1,6 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-O -fprofile-generate -fdump-tree-tree_profile" } */ -/* { dg-require-host-local "" } */ /* { dg-final { scan-tree-dump "/profile-dir-2.gcda" "tree_profile" } } */ int @@ -9,5 +8,4 @@ return 0; } -/* { dg-final { cleanup-coverage-files } } */ /* { dg-final { cleanup-tree-dump "tree_profile" } } */ Index: gcc/testsuite/gcc.dg/tree-ssa/sra-10.c =================================================================== --- gcc/testsuite/gcc.dg/tree-ssa/sra-10.c (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/testsuite/gcc.dg/tree-ssa/sra-10.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O1 -fdump-tree-optimized -fdump-tree-esra-details" } */ +/* { dg-options "-O1 -fdump-tree-optimized" } */ struct S { Index: gcc/testsuite/gcc.dg/pr45055.c =================================================================== --- gcc/testsuite/gcc.dg/pr45055.c (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/gcc.dg/pr45055.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -0,0 +1,41 @@ +/* PR debug/45055 */ +/* { dg-do compile } */ +/* { dg-options "-O2 -ftracer -fsched-pressure -funroll-loops -fschedule-insns -fcompare-debug" } */ + +int colormap[10]; + +extern int bar (); + +void +foo (int *img, int fp, int y, int *ptr, int depth, int c, int t, int xm) +{ + int x, color, count; + for (; y; y--) + { + if (depth) + { + count = bar (); + for (x = xm; x; x--) + { + if (c != 1) + count = color = -1; + if (count == 0) + color = count = bar (); + if (color) + t = bar (fp); + *ptr++ = colormap[t]; + } + } + switch (*img) + { + case 1: + bar (); + case 3: + case -1: + case -3: + bar (); + case -4: + bar (); + } + } +} Index: gcc/testsuite/gcc.dg/20050325-1.c =================================================================== --- gcc/testsuite/gcc.dg/20050325-1.c (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/testsuite/gcc.dg/20050325-1.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -17,5 +17,3 @@ { g (42, ff); } - -/* { dg-final { cleanup-coverage-files } } */ Index: gcc/testsuite/gcc.dg/pr45259.c =================================================================== --- gcc/testsuite/gcc.dg/pr45259.c (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/gcc.dg/pr45259.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -0,0 +1,42 @@ +/* PR debug/45259 */ +/* { dg-do compile } */ +/* { dg-options "-g -O2 -fpic -w" { target fpic } } */ + +struct S { void (*bar) (long); }; +struct T { struct S *t; }; +int w; +extern int baz (int); + +void +foo (int x, int u, char *z) +{ + struct T *v; + static void *y[256] = { &&l1, &&l2 }; + for (;;) + switch (x) + { + l2: + x = 9; + case 9: + goto *y[*z++]; + case 10: + case 27: + case 54: + case 99: + case 100: + case 120: + case 122: + case 131: + case 132: + case 134: + case 141: + case 142: + v->t->bar (u); + v->t->bar (u); + case 143: + continue; + l1: + default: + baz (w); + } +} Index: gcc/testsuite/gcc.dg/profile-dir-3.c =================================================================== --- gcc/testsuite/gcc.dg/profile-dir-3.c (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/testsuite/gcc.dg/profile-dir-3.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -1,6 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-O -fprofile-generate -fprofile-dir=. -fdump-tree-tree_profile" } */ -/* { dg-require-host-local "" } */ /* { dg-final { scan-tree-dump " ./profile-dir-3.gcda" "tree_profile" } } */ int @@ -9,5 +8,4 @@ return 0; } -/* { dg-final { cleanup-coverage-files } } */ /* { dg-final { cleanup-tree-dump "tree_profile" } } */ Index: gcc/testsuite/gcc.dg/vect/no-tree-pre-pr45241.c =================================================================== --- gcc/testsuite/gcc.dg/vect/no-tree-pre-pr45241.c (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/gcc.dg/vect/no-tree-pre-pr45241.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -0,0 +1,20 @@ +/* PR tree-optimization/45241 */ +/* { dg-do compile } */ +/* { dg-options "-fno-tree-vectorize" } */ + +int +foo (short x) +{ + short i, y; + int sum; + + for (i = 0; i < x; i++) + y = x * i; + + for (i = x; i > 0; i--) + sum += y; + + return sum; +} + +/* { dg-final { cleanup-tree-dump "vect" } } */ Index: gcc/testsuite/gcc.dg/mtune.c =================================================================== --- gcc/testsuite/gcc.dg/mtune.c (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/testsuite/gcc.dg/mtune.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -1,4 +1,5 @@ /* { dg-do compile } */ +/* { dg-skip-if "" { *-*-* } { "-mtune=*" } { "" } } */ /* { dg-options "-mtune=foo" } */ /* { dg-error "mtune" "" { target *-*-* } 0 } */ /* { dg-bogus "march" "" { target *-*-* } 0 } */ Index: gcc/testsuite/gcc.dg/20050309-1.c =================================================================== --- gcc/testsuite/gcc.dg/20050309-1.c (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/testsuite/gcc.dg/20050309-1.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -34,5 +34,3 @@ error (1, 0, 0, node, "%s", name); return 0; } - -/* { dg-final { cleanup-coverage-files } } */ Index: gcc/testsuite/ChangeLog =================================================================== --- gcc/testsuite/ChangeLog (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/testsuite/ChangeLog (.../branches/gcc-4_5-branch) (wersja 163628) @@ -1,3 +1,150 @@ +2010-08-25 Jakub Jelinek + + PR rtl-optimization/44858 + * gcc.c-torture/execute/pr44858.c: New test. + + PR rtl-optimization/45400 + * g++.dg/other/i386-8.C: New test. + +2010-08-19 Jason Merrill + + * g++.dg/init/value8.C: New. + +2010-08-20 Jakub Jelinek + + PR fortran/45344 + Backport from mainline + 2010-05-14 Jakub Jelinek + + * gfortran.dg/gomp/pr44036-1.f90: Adjust. + +2010-08-17 Uros Bizjak + + PR target/45296 + * gcc.target/i386/pr45296.c: New test. + +2010-08-16 Changpeng Fang + + PR tree-optimization/45241 + * gcc.dg/vect/no-tree-pre-pr45241.c: New test. + +2010-08-14 Uros Bizjak + + * g++.dg/cast.C: Change fields of structures to "long" to pass + the test on targets with STRUCTURE_SIZE_BOUNDARY != BITS_PER_UNIT. + * g++.dg/cpp0x/iop.C: Ditto. + * g++.dg/cpp0x/named_refs.C: Ditto. + * g++.dg/cpp0x/rv1p.C: Ditto. + * g++.dg/cpp0x/rv2p.C: Ditto. + * g++.dg/cpp0x/rv3p.C: Ditto. + * g++.dg/cpp0x/rv4p.C: Ditto. + * g++.dg/cpp0x/rv5p.C: Ditto. + * g++.dg/cpp0x/rv6p.C: Ditto. + * g++.dg/cpp0x/rv7p.C: Ditto. + * g++.dg/cpp0x/rv8p.C: Ditto. + * g++.dg/cpp0x/unnamed_refs.C: Ditto. + +2010-08-12 Jakub Jelinek + + PR middle-end/45262 + * gcc.c-torture/execute/pr45262.c: New test. + + PR debug/45259 + * gcc.dg/pr45259.c: New test. + + Backport from mainline + 2010-07-30 Jakub Jelinek + + PR debug/45055 + PR rtl-optimization/45137 + * gcc.dg/pr45055.c: New test. + +2010-08-08 Uros Bizjak + + * gcc.dg/20030107-1.c: Do not call cleanup-coverage-files. + * gcc.dg/20030702-1.c: Ditto. + * gcc.dg/20050309-1.c: Ditto. + * gcc.dg/20050325-1.c: Ditto. + * gcc.dg/20050330-2.c: Ditto. + * gcc.dg/20051201-1.c: Ditto. + * gcc.dg/gomp/pr27573.c: Ditto. + * gcc.dg/gomp/pr34610.c: Ditto. + * gcc.dg/pr24225.c: Ditto. + * gcc.dg/pr26570.c: Ditto. + * gcc.dg/pr32773.c: Ditto. + * g++.dg/gcov/gcov-6.C: Ditto. + * g++.dg/gomp/pr34608.C: Ditto. + * gfortran.dg/gomp/pr27573.f90: Ditto. + + * gcc.dg/profile-dir-1.c: Do not call cleanup-coverage-files. Remove + dg-require-host-local dg directive. + * gcc.dg/profile-dir-2.c: Ditto. + * gcc.dg/profile-dir-3.c: Ditto. + +2010-08-08 Richard Guenther + + PR middle-end/45034 + * gcc.c-torture/execute/pr45034.c: New testcase. + +2010-08-08 Richard Guenther + + PR tree-optimization/45109 + * gcc.c-torture/compile/pr45109.c: New testcase. + +2010-08-08 Uros Bizjak + + * gcc.dg/march.c: Skip if -march defined. + * gcc.dg/mtune.c: Skip if -mtune defined. + + * g++.old-deja/g++.jason/thunk3.C: Skip for targets with + generic thunk support. + + Backport from mainline: + 2010-05-25 Richard Guenther + + * gcc.dg/tree-ssa/sra-10.c: Do not dump esra details. + + Backport from mainline: + 2010-04-22 Uros Bizjak + + * gcc.dg/graphite/interchange-0.c: Fix dg-final directive. + +2010-08-05 Janus Weil + + PR fortran/44929 + * gfortran.dg/allocate_derived_3.f90: New. + +2010-08-04 Uros Bizjak + + Backport from mainline: + 2010-07-20 Bingfeng Mei + + * gcc.dg/lto/20090313_0.c: Use dg-require-effective-target + sync_char_short. + + 2010-06-24 Steve Ellcey + + PR testsuite/43283 + * gcc.dg/lto/20091216-1_0.c: Use newline instead of semicolon + and add argument to nop for IA64. + +2010-08-03 Martin Jambor + + PR tree-optimization/44914 + * g++.dg/tree-ssa/pr44914.C: New test. + +2010-08-02 Uros Bizjak + + * lib/gcc-dg.exp (cleanup-coverage-files): Remove options from + test name. + (cleanup-repo-files): Ditto. + (cleanup-saved-temps): Ditto. + +2010-07-31 Ulrich Weigand + + PR c++/45112 + * testsuite/g++.dg/pr45112.C: New test. + 2010-07-31 Release Manager * GCC 4.5.1 released. @@ -479,15 +626,15 @@ Backport from mainline 2010-05-17 Martin Jambor - PR middle-end/44133 - * gcc.dg/tree-ssa/pr44133.c: New test. + PR middle-end/44133 + * gcc.dg/tree-ssa/pr44133.c: New test. 2010-06-29 Martin Jambor Backport from mainline 2010-04-13 Martin Jambor - * gcc.dg/tree-ssa/sra-9.c: New test. + * gcc.dg/tree-ssa/sra-9.c: New test. 2010-06-28 Rainer Orth @@ -636,7 +783,7 @@ PR testsuite/44518 * obj-c++.dg/encode-2.mm: XFAIL new test for all targets. * obj-c++.dg/encode-3.mm: Restore XFAIL run for all targets. - + 2010-06-12 Daniel Franke PR fortran/44347 Index: gcc/testsuite/g++.old-deja/g++.jason/thunk3.C =================================================================== --- gcc/testsuite/g++.old-deja/g++.jason/thunk3.C (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/testsuite/g++.old-deja/g++.jason/thunk3.C (.../branches/gcc-4_5-branch) (wersja 163628) @@ -1,4 +1,5 @@ -// { dg-do run { xfail rs6000-*-* powerpc-*-eabi v850-*-* sh-*-* sh64-*-* h8*-*-* xtensa*-*-* m32r*-*-* lm32-*-* } } +// { dg-do run } +// { dg-skip-if "fails with generic thunk support" { rs6000-*-* powerpc-*-eabi v850-*-* sh-*-* sh64-*-* h8*-*-* xtensa*-*-* m32r*-*-* lm32-*-* } { "*" } { "" } } // Test that variadic function calls using thunks work right. // Note that this will break on any target that uses the generic thunk // support, because it doesn't support variadic functions. Index: gcc/testsuite/g++.dg/other/i386-8.C =================================================================== --- gcc/testsuite/g++.dg/other/i386-8.C (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/g++.dg/other/i386-8.C (.../branches/gcc-4_5-branch) (wersja 163628) @@ -0,0 +1,23 @@ +// PR rtl-optimization/45400 +// { dg-do compile { target i?86-*-* x86_64-*-* } } +// { dg-options "-O2 -msse2" } +// { dg-options "-O2 -msse2 -fpic" { target fpic } } +// { dg-require-effective-target sse2 } + +#include + +static inline unsigned short +bar (unsigned short x) +{ + return ((x << 8) | (x >> 8)); +} + +unsigned int +foo (float *x, short *y) +{ + __m128 a = _mm_set_ps1 (32767.5f); + __m128 b = _mm_mul_ps (_mm_load_ps (x), a); + __m64 c = _mm_cvtps_pi16 (b); + __builtin_memcpy (y, &c, sizeof (short) * 4); + y[0] = bar (y[0]); +} Index: gcc/testsuite/g++.dg/tree-ssa/pr44914.C =================================================================== --- gcc/testsuite/g++.dg/tree-ssa/pr44914.C (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/g++.dg/tree-ssa/pr44914.C (.../branches/gcc-4_5-branch) (wersja 163628) @@ -0,0 +1,20 @@ +/* { dg-do compile } */ +/* { dg-options "-O1 -fipa-sra -fnon-call-exceptions" } */ + +struct A +{ + ~A () { } +}; + +struct B +{ + A a; + int i; + void f (int) { } + B () + { + f (i); + } +}; + +B b; Index: gcc/testsuite/g++.dg/pr45112.C =================================================================== --- gcc/testsuite/g++.dg/pr45112.C (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/g++.dg/pr45112.C (.../branches/gcc-4_5-branch) (wersja 163628) @@ -0,0 +1,12 @@ +/* { dg-do compile } */ + +struct JSString +{ + unsigned char mLength; + static JSString unitStringTable[]; +}; + +JSString JSString::unitStringTable[] __attribute__ ((aligned (8))) = { 1 }; + +int bug [__alignof__ (JSString::unitStringTable) >= 8 ? 1 : -1]; + Index: gcc/testsuite/g++.dg/cpp0x/rv6p.C =================================================================== --- gcc/testsuite/g++.dg/cpp0x/rv6p.C (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/testsuite/g++.dg/cpp0x/rv6p.C (.../branches/gcc-4_5-branch) (wersja 163628) @@ -8,14 +8,14 @@ template struct sa; template <> struct sa {}; -struct one {char x[1];}; -struct two {char x[2];}; -struct three {char x[3];}; -struct four {char x[4];}; -struct five {char x[5];}; -struct six {char x[6];}; -struct seven {char x[7];}; -struct eight {char x[8];}; +struct one {long x[1];}; +struct two {long x[2];}; +struct three {long x[3];}; +struct four {long x[4];}; +struct five {long x[5];}; +struct six {long x[6];}; +struct seven {long x[7];}; +struct eight {long x[8];}; struct A { @@ -43,12 +43,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; return 0; } @@ -65,13 +65,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; return 0; } @@ -88,14 +88,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -112,12 +112,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t6; - sa t7; + sa t1; + sa t2; + sa t3; + sa t4; + sa t6; + sa t7; return 0; } @@ -134,14 +134,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -158,14 +158,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -182,12 +182,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t5; - sa t6; - sa t7; + sa t1; + sa t2; + sa t3; + sa t5; + sa t6; + sa t7; return 0; } @@ -204,13 +204,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -227,13 +227,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -250,12 +250,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t6; + sa t7; + sa t8; return 0; } @@ -272,13 +272,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; return 0; } @@ -295,14 +295,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -319,14 +319,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -343,13 +343,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t6; + sa t7; + sa t8; return 0; } @@ -366,12 +366,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -388,13 +388,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; return 0; } @@ -411,14 +411,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -435,14 +435,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -459,13 +459,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t6; + sa t7; + sa t8; return 0; } @@ -482,12 +482,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t3; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -504,14 +504,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -528,12 +528,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; return 0; } @@ -550,13 +550,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -573,13 +573,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -596,12 +596,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t4; - sa t6; - sa t7; - sa t8; + sa t2; + sa t3; + sa t4; + sa t6; + sa t7; + sa t8; return 0; } @@ -618,12 +618,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t5; - sa t6; - sa t7; - sa t8; + sa t2; + sa t3; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -640,14 +640,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -664,14 +664,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } Index: gcc/testsuite/g++.dg/cpp0x/rv1p.C =================================================================== --- gcc/testsuite/g++.dg/cpp0x/rv1p.C (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/testsuite/g++.dg/cpp0x/rv1p.C (.../branches/gcc-4_5-branch) (wersja 163628) @@ -8,14 +8,14 @@ template struct sa; template <> struct sa {}; -struct one {char x[1];}; -struct two {char x[2];}; -struct three {char x[3];}; -struct four {char x[4];}; -struct five {char x[5];}; -struct six {char x[6];}; -struct seven {char x[7];}; -struct eight {char x[8];}; +struct one {long x[1];}; +struct two {long x[2];}; +struct three {long x[3];}; +struct four {long x[4];}; +struct five {long x[5];}; +struct six {long x[6];}; +struct seven {long x[7];}; +struct eight {long x[8];}; struct A { @@ -38,7 +38,7 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; + sa t1; return 0; } @@ -50,10 +50,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t5; - sa t6; + sa t1; + sa t2; + sa t5; + sa t6; return 0; } @@ -65,8 +65,8 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; + sa t1; + sa t3; return 0; } @@ -78,10 +78,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; + sa t1; + sa t2; + sa t3; + sa t4; return 0; } @@ -93,7 +93,7 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t5; + sa t5; return 0; } @@ -105,8 +105,8 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t5; - sa t6; + sa t5; + sa t6; return 0; } @@ -118,8 +118,8 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t5; - sa t7; + sa t5; + sa t7; return 0; } @@ -131,10 +131,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t5; - sa t6; - sa t7; - sa t8; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } Index: gcc/testsuite/g++.dg/cpp0x/cast.C =================================================================== --- gcc/testsuite/g++.dg/cpp0x/cast.C (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/testsuite/g++.dg/cpp0x/cast.C (.../branches/gcc-4_5-branch) (wersja 163628) @@ -8,8 +8,8 @@ template struct sa; template <> struct sa {}; -struct one {char x[1];}; -struct two {char x[2];}; +struct one {long x[1];}; +struct two {long x[2];}; struct A {}; @@ -19,8 +19,8 @@ int test1() { A a; - sa t1; - sa(a))) == 2> t2; + sa t1; + sa(a))) == 2 * sizeof(long)> t2; return 0; } Index: gcc/testsuite/g++.dg/cpp0x/rv7p.C =================================================================== --- gcc/testsuite/g++.dg/cpp0x/rv7p.C (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/testsuite/g++.dg/cpp0x/rv7p.C (.../branches/gcc-4_5-branch) (wersja 163628) @@ -8,14 +8,14 @@ template struct sa; template <> struct sa {}; -struct one {char x[1];}; -struct two {char x[2];}; -struct three {char x[3];}; -struct four {char x[4];}; -struct five {char x[5];}; -struct six {char x[6];}; -struct seven {char x[7];}; -struct eight {char x[8];}; +struct one {long x[1];}; +struct two {long x[2];}; +struct three {long x[3];}; +struct four {long x[4];}; +struct five {long x[5];}; +struct six {long x[6];}; +struct seven {long x[7];}; +struct eight {long x[8];}; struct A { @@ -44,13 +44,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; return 0; } @@ -68,14 +68,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -93,14 +93,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -118,13 +118,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t6; + sa t7; + sa t8; return 0; } @@ -142,13 +142,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -166,14 +166,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -191,14 +191,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -216,13 +216,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } Index: gcc/testsuite/g++.dg/cpp0x/rv2p.C =================================================================== --- gcc/testsuite/g++.dg/cpp0x/rv2p.C (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/testsuite/g++.dg/cpp0x/rv2p.C (.../branches/gcc-4_5-branch) (wersja 163628) @@ -8,14 +8,14 @@ template struct sa; template <> struct sa {}; -struct one {char x[1];}; -struct two {char x[2];}; -struct three {char x[3];}; -struct four {char x[4];}; -struct five {char x[5];}; -struct six {char x[6];}; -struct seven {char x[7];}; -struct eight {char x[8];}; +struct one {long x[1];}; +struct two {long x[2];}; +struct three {long x[3];}; +struct four {long x[4];}; +struct five {long x[5];}; +struct six {long x[6];}; +struct seven {long x[7];}; +struct eight {long x[8];}; struct A { @@ -39,10 +39,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t5; - sa t6; + sa t1; + sa t2; + sa t5; + sa t6; return 0; } @@ -55,8 +55,8 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; + sa t1; + sa t3; return 0; } @@ -69,10 +69,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; + sa t1; + sa t2; + sa t3; + sa t4; return 0; } @@ -85,8 +85,8 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t5; + sa t1; + sa t5; return 0; } @@ -99,9 +99,9 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t5; - sa t6; + sa t1; + sa t5; + sa t6; return 0; } @@ -114,9 +114,9 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t5; - sa t7; + sa t1; + sa t5; + sa t7; return 0; } @@ -129,11 +129,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -146,10 +146,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t5; - sa t6; + sa t2; + sa t3; + sa t5; + sa t6; return 0; } @@ -162,14 +162,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; -// sa t7; -// sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; +// sa t7; +// sa t8; return 0; } @@ -182,10 +182,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t5; - sa t6; + sa t1; + sa t2; + sa t5; + sa t6; return 0; } @@ -198,10 +198,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t5; - sa t6; + sa t1; + sa t2; + sa t5; + sa t6; return 0; } @@ -214,11 +214,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t5; - sa t6; - sa t7; + sa t1; + sa t2; + sa t5; + sa t6; + sa t7; return 0; } @@ -231,12 +231,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -249,14 +249,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; -// sa t5; -// sa t6; -// sa t7; -// sa t8; + sa t1; + sa t2; + sa t3; + sa t4; +// sa t5; +// sa t6; +// sa t7; +// sa t8; return 0; } @@ -269,9 +269,9 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t5; + sa t1; + sa t3; + sa t5; return 0; } @@ -284,10 +284,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t5; - sa t6; + sa t1; + sa t3; + sa t5; + sa t6; return 0; } @@ -300,10 +300,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t5; - sa t7; + sa t1; + sa t3; + sa t5; + sa t7; return 0; } @@ -316,12 +316,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t3; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -334,14 +334,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; -// sa t6; -// sa t7; -// sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; +// sa t6; +// sa t7; +// sa t8; return 0; } @@ -354,14 +354,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; -// sa t7; -// sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; +// sa t7; +// sa t8; return 0; } @@ -374,14 +374,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; -// sa t6; - sa t7; -// sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; +// sa t6; + sa t7; +// sa t8; return 0; } @@ -394,14 +394,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -414,8 +414,8 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t5; - sa t6; + sa t5; + sa t6; return 0; } @@ -428,8 +428,8 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t5; - sa t7; + sa t5; + sa t7; return 0; } @@ -442,10 +442,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t5; - sa t6; - sa t7; - sa t8; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -458,8 +458,8 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t6; - sa t7; + sa t6; + sa t7; return 0; } @@ -472,10 +472,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t5; - sa t6; - sa t7; - sa t8; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -488,10 +488,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t5; - sa t6; - sa t7; - sa t8; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } Index: gcc/testsuite/g++.dg/cpp0x/rv8p.C =================================================================== --- gcc/testsuite/g++.dg/cpp0x/rv8p.C (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/testsuite/g++.dg/cpp0x/rv8p.C (.../branches/gcc-4_5-branch) (wersja 163628) @@ -8,14 +8,14 @@ template struct sa; template <> struct sa {}; -struct one {char x[1];}; -struct two {char x[2];}; -struct three {char x[3];}; -struct four {char x[4];}; -struct five {char x[5];}; -struct six {char x[6];}; -struct seven {char x[7];}; -struct eight {char x[8];}; +struct one {long x[1];}; +struct two {long x[2];}; +struct three {long x[3];}; +struct four {long x[4];}; +struct five {long x[5];}; +struct six {long x[6];}; +struct seven {long x[7];}; +struct eight {long x[8];}; struct A { @@ -45,14 +45,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } Index: gcc/testsuite/g++.dg/cpp0x/rv3p.C =================================================================== --- gcc/testsuite/g++.dg/cpp0x/rv3p.C (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/testsuite/g++.dg/cpp0x/rv3p.C (.../branches/gcc-4_5-branch) (wersja 163628) @@ -8,14 +8,14 @@ template struct sa; template <> struct sa {}; -struct one {char x[1];}; -struct two {char x[2];}; -struct three {char x[3];}; -struct four {char x[4];}; -struct five {char x[5];}; -struct six {char x[6];}; -struct seven {char x[7];}; -struct eight {char x[8];}; +struct one {long x[1];}; +struct two {long x[2];}; +struct three {long x[3];}; +struct four {long x[4];}; +struct five {long x[5];}; +struct six {long x[6];}; +struct seven {long x[7];}; +struct eight {long x[8];}; struct A { @@ -40,11 +40,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t5; - sa t6; + sa t1; + sa t2; + sa t3; + sa t5; + sa t6; return 0; } @@ -58,12 +58,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; return 0; } @@ -77,10 +77,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t5; - sa t6; + sa t1; + sa t2; + sa t5; + sa t6; return 0; } @@ -94,10 +94,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t5; - sa t6; + sa t1; + sa t2; + sa t5; + sa t6; return 0; } @@ -111,11 +111,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t5; - sa t6; - sa t7; + sa t1; + sa t2; + sa t5; + sa t6; + sa t7; return 0; } @@ -129,12 +129,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -148,10 +148,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; + sa t1; + sa t2; + sa t3; + sa t4; return 0; } @@ -165,9 +165,9 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t5; + sa t1; + sa t3; + sa t5; return 0; } @@ -181,10 +181,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t5; - sa t6; + sa t1; + sa t3; + sa t5; + sa t6; return 0; } @@ -198,10 +198,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t5; - sa t7; + sa t1; + sa t3; + sa t5; + sa t7; return 0; } @@ -215,12 +215,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t3; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -234,11 +234,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; return 0; } @@ -252,12 +252,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; return 0; } @@ -271,12 +271,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t7; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t7; return 0; } @@ -290,14 +290,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -311,9 +311,9 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t5; - sa t6; + sa t1; + sa t5; + sa t6; return 0; } @@ -327,9 +327,9 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t5; - sa t7; + sa t1; + sa t5; + sa t7; return 0; } @@ -343,11 +343,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -361,9 +361,9 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t6; - sa t7; + sa t1; + sa t6; + sa t7; return 0; } @@ -377,11 +377,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -395,11 +395,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -413,11 +413,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; return 0; } @@ -431,10 +431,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t5; - sa t6; + sa t2; + sa t3; + sa t5; + sa t6; return 0; } @@ -448,10 +448,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t5; - sa t6; + sa t2; + sa t3; + sa t5; + sa t6; return 0; } @@ -465,11 +465,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t5; - sa t6; - sa t7; + sa t2; + sa t3; + sa t5; + sa t6; + sa t7; return 0; } @@ -483,12 +483,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t5; - sa t6; - sa t7; - sa t8; + sa t2; + sa t3; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -502,12 +502,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; return 0; } @@ -521,12 +521,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; return 0; } @@ -540,13 +540,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; return 0; } @@ -560,14 +560,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -581,10 +581,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t5; - sa t6; + sa t1; + sa t2; + sa t5; + sa t6; return 0; } @@ -598,11 +598,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t5; - sa t6; - sa t7; + sa t1; + sa t2; + sa t5; + sa t6; + sa t7; return 0; } @@ -616,12 +616,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -635,10 +635,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t6; - sa t7; + sa t1; + sa t2; + sa t6; + sa t7; return 0; } @@ -652,12 +652,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -671,12 +671,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -690,11 +690,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; return 0; } @@ -708,12 +708,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; return 0; } @@ -727,12 +727,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t7; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t7; return 0; } @@ -746,14 +746,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -767,10 +767,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t5; - sa t6; + sa t1; + sa t3; + sa t5; + sa t6; return 0; } @@ -784,10 +784,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t5; - sa t7; + sa t1; + sa t3; + sa t5; + sa t7; return 0; } @@ -801,12 +801,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t3; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -820,10 +820,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t6; - sa t7; + sa t1; + sa t3; + sa t6; + sa t7; return 0; } @@ -837,12 +837,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t3; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -856,12 +856,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t3; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -875,12 +875,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; return 0; } @@ -894,12 +894,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t7; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t7; return 0; } @@ -913,14 +913,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -934,12 +934,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t6; - sa t7; + sa t1; + sa t2; + sa t3; + sa t4; + sa t6; + sa t7; return 0; } @@ -953,14 +953,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -974,14 +974,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -995,9 +995,9 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t5; - sa t6; - sa t7; + sa t5; + sa t6; + sa t7; return 0; } @@ -1011,10 +1011,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t5; - sa t6; - sa t7; - sa t8; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -1028,10 +1028,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t5; - sa t6; - sa t7; - sa t8; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -1045,9 +1045,9 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t6; - sa t7; - sa t8; + sa t6; + sa t7; + sa t8; return 0; } Index: gcc/testsuite/g++.dg/cpp0x/rv4p.C =================================================================== --- gcc/testsuite/g++.dg/cpp0x/rv4p.C (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/testsuite/g++.dg/cpp0x/rv4p.C (.../branches/gcc-4_5-branch) (wersja 163628) @@ -8,14 +8,14 @@ template struct sa; template <> struct sa {}; -struct one {char x[1];}; -struct two {char x[2];}; -struct three {char x[3];}; -struct four {char x[4];}; -struct five {char x[5];}; -struct six {char x[6];}; -struct seven {char x[7];}; -struct eight {char x[8];}; +struct one {long x[1];}; +struct two {long x[2];}; +struct three {long x[3];}; +struct four {long x[4];}; +struct five {long x[5];}; +struct six {long x[6];}; +struct seven {long x[7];}; +struct eight {long x[8];}; struct A { @@ -41,12 +41,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; return 0; } @@ -61,11 +61,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t5; - sa t6; + sa t1; + sa t2; + sa t3; + sa t5; + sa t6; return 0; } @@ -80,11 +80,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t5; - sa t6; + sa t1; + sa t2; + sa t3; + sa t5; + sa t6; return 0; } @@ -99,12 +99,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t5; - sa t6; - sa t7; + sa t1; + sa t2; + sa t3; + sa t5; + sa t6; + sa t7; return 0; } @@ -119,13 +119,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -140,12 +140,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; return 0; } @@ -160,12 +160,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; return 0; } @@ -180,13 +180,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; return 0; } @@ -201,14 +201,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -223,10 +223,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t5; - sa t6; + sa t1; + sa t2; + sa t5; + sa t6; return 0; } @@ -241,11 +241,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t5; - sa t6; - sa t7; + sa t1; + sa t2; + sa t5; + sa t6; + sa t7; return 0; } @@ -260,12 +260,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -280,10 +280,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t6; - sa t7; + sa t1; + sa t2; + sa t6; + sa t7; return 0; } @@ -298,12 +298,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -318,12 +318,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -338,11 +338,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; return 0; } @@ -357,12 +357,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; return 0; } @@ -377,12 +377,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t7; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t7; return 0; } @@ -397,14 +397,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -419,10 +419,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t5; - sa t6; + sa t1; + sa t3; + sa t5; + sa t6; return 0; } @@ -437,10 +437,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t5; - sa t7; + sa t1; + sa t3; + sa t5; + sa t7; return 0; } @@ -455,12 +455,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t3; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -475,10 +475,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t6; - sa t7; + sa t1; + sa t3; + sa t6; + sa t7; return 0; } @@ -493,12 +493,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t3; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -513,12 +513,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t3; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -533,12 +533,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; return 0; } @@ -553,12 +553,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t7; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t7; return 0; } @@ -573,14 +573,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -595,12 +595,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t6; - sa t7; + sa t1; + sa t2; + sa t3; + sa t4; + sa t6; + sa t7; return 0; } @@ -615,14 +615,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -637,14 +637,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -659,10 +659,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t5; - sa t6; - sa t7; + sa t1; + sa t5; + sa t6; + sa t7; return 0; } @@ -677,11 +677,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -696,11 +696,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -715,10 +715,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t6; - sa t7; - sa t8; + sa t1; + sa t6; + sa t7; + sa t8; return 0; } @@ -733,11 +733,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; return 0; } @@ -752,11 +752,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; return 0; } @@ -771,12 +771,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; return 0; } @@ -791,13 +791,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -812,10 +812,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t5; - sa t6; + sa t2; + sa t3; + sa t5; + sa t6; return 0; } @@ -830,11 +830,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t5; - sa t6; - sa t7; + sa t2; + sa t3; + sa t5; + sa t6; + sa t7; return 0; } @@ -849,12 +849,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t5; - sa t6; - sa t7; - sa t8; + sa t2; + sa t3; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -869,10 +869,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t6; - sa t7; + sa t2; + sa t3; + sa t6; + sa t7; return 0; } @@ -887,12 +887,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t5; - sa t6; - sa t7; - sa t8; + sa t2; + sa t3; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -907,12 +907,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t5; - sa t6; - sa t7; - sa t8; + sa t2; + sa t3; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -927,12 +927,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; return 0; } @@ -947,13 +947,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; return 0; } @@ -968,14 +968,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -990,12 +990,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t6; - sa t7; + sa t1; + sa t2; + sa t3; + sa t4; + sa t6; + sa t7; return 0; } @@ -1010,14 +1010,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -1032,14 +1032,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -1054,11 +1054,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t5; - sa t6; - sa t7; + sa t1; + sa t2; + sa t5; + sa t6; + sa t7; return 0; } @@ -1073,12 +1073,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -1093,12 +1093,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -1113,11 +1113,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t6; + sa t7; + sa t8; return 0; } @@ -1132,12 +1132,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; return 0; } @@ -1152,12 +1152,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t7; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t7; return 0; } @@ -1172,14 +1172,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -1194,12 +1194,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t6; - sa t7; + sa t1; + sa t2; + sa t3; + sa t4; + sa t6; + sa t7; return 0; } @@ -1214,14 +1214,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -1236,14 +1236,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -1258,11 +1258,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t5; - sa t6; - sa t7; + sa t1; + sa t3; + sa t5; + sa t6; + sa t7; return 0; } @@ -1277,12 +1277,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t3; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -1297,12 +1297,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t3; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -1317,11 +1317,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t6; - sa t7; - sa t8; + sa t1; + sa t3; + sa t6; + sa t7; + sa t8; return 0; } @@ -1336,13 +1336,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; return 0; } @@ -1357,14 +1357,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -1379,14 +1379,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -1401,13 +1401,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t6; + sa t7; + sa t8; return 0; } @@ -1422,10 +1422,10 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t5; - sa t6; - sa t7; - sa t8; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } Index: gcc/testsuite/g++.dg/cpp0x/iop.C =================================================================== --- gcc/testsuite/g++.dg/cpp0x/iop.C (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/testsuite/g++.dg/cpp0x/iop.C (.../branches/gcc-4_5-branch) (wersja 163628) @@ -12,8 +12,8 @@ template struct sa; template <> struct sa {}; -struct one {char x[1];}; -struct two {char x[2];}; +struct one {long x[1];}; +struct two {long x[2];}; struct os { @@ -30,7 +30,7 @@ void test() { os o; - sa t1; // Calls os::operator<<(int) + sa t1; // Calls os::operator<<(int) // Would be ambiguous if the implicit object parameter // was an rvalue reference. } Index: gcc/testsuite/g++.dg/cpp0x/rv5p.C =================================================================== --- gcc/testsuite/g++.dg/cpp0x/rv5p.C (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/testsuite/g++.dg/cpp0x/rv5p.C (.../branches/gcc-4_5-branch) (wersja 163628) @@ -8,14 +8,14 @@ template struct sa; template <> struct sa {}; -struct one {char x[1];}; -struct two {char x[2];}; -struct three {char x[3];}; -struct four {char x[4];}; -struct five {char x[5];}; -struct six {char x[6];}; -struct seven {char x[7];}; -struct eight {char x[8];}; +struct one {long x[1];}; +struct two {long x[2];}; +struct three {long x[3];}; +struct four {long x[4];}; +struct five {long x[5];}; +struct six {long x[6];}; +struct seven {long x[7];}; +struct eight {long x[8];}; struct A { @@ -42,12 +42,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; return 0; } @@ -63,12 +63,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; return 0; } @@ -84,13 +84,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; return 0; } @@ -106,14 +106,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -129,11 +129,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t5; - sa t6; + sa t1; + sa t2; + sa t3; + sa t5; + sa t6; return 0; } @@ -149,12 +149,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t5; - sa t6; - sa t7; + sa t1; + sa t2; + sa t3; + sa t5; + sa t6; + sa t7; return 0; } @@ -170,13 +170,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -192,11 +192,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t6; - sa t7; + sa t1; + sa t2; + sa t3; + sa t6; + sa t7; return 0; } @@ -212,13 +212,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -234,13 +234,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -256,12 +256,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; return 0; } @@ -277,13 +277,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; return 0; } @@ -299,14 +299,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -322,12 +322,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t6; - sa t7; + sa t1; + sa t2; + sa t3; + sa t4; + sa t6; + sa t7; return 0; } @@ -343,14 +343,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -366,14 +366,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -389,11 +389,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t5; - sa t6; - sa t7; + sa t1; + sa t2; + sa t5; + sa t6; + sa t7; return 0; } @@ -409,12 +409,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -430,12 +430,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -451,11 +451,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t6; + sa t7; + sa t8; return 0; } @@ -471,12 +471,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; return 0; } @@ -492,12 +492,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t7; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t7; return 0; } @@ -513,14 +513,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -536,12 +536,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t6; - sa t7; + sa t1; + sa t2; + sa t3; + sa t4; + sa t6; + sa t7; return 0; } @@ -557,14 +557,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -580,14 +580,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -603,11 +603,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t5; - sa t6; - sa t7; + sa t1; + sa t3; + sa t5; + sa t6; + sa t7; return 0; } @@ -623,12 +623,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t3; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -644,12 +644,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t3; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -665,11 +665,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t6; - sa t7; - sa t8; + sa t1; + sa t3; + sa t6; + sa t7; + sa t8; return 0; } @@ -685,13 +685,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; return 0; } @@ -707,14 +707,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -730,14 +730,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -753,13 +753,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t6; + sa t7; + sa t8; return 0; } @@ -775,11 +775,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -795,11 +795,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; return 0; } @@ -815,12 +815,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; return 0; } @@ -836,13 +836,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -858,11 +858,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t4; - sa t6; - sa t7; + sa t2; + sa t3; + sa t4; + sa t6; + sa t7; return 0; } @@ -878,13 +878,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -900,13 +900,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -922,11 +922,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t5; - sa t6; - sa t7; + sa t2; + sa t3; + sa t5; + sa t6; + sa t7; return 0; } @@ -942,12 +942,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t5; - sa t6; - sa t7; - sa t8; + sa t2; + sa t3; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -963,12 +963,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t5; - sa t6; - sa t7; - sa t8; + sa t2; + sa t3; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -984,11 +984,11 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t2; - sa t3; - sa t6; - sa t7; - sa t8; + sa t2; + sa t3; + sa t6; + sa t7; + sa t8; return 0; } @@ -1004,13 +1004,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; return 0; } @@ -1026,14 +1026,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -1049,14 +1049,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -1072,13 +1072,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t6; + sa t7; + sa t8; return 0; } @@ -1094,12 +1094,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -1115,13 +1115,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; return 0; } @@ -1137,14 +1137,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -1160,14 +1160,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -1183,13 +1183,13 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t6; + sa t7; + sa t8; return 0; } @@ -1205,12 +1205,12 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t3; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t3; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } @@ -1226,14 +1226,14 @@ const A ca = a; volatile A va; const volatile A cva = a; - sa t1; - sa t2; - sa t3; - sa t4; - sa t5; - sa t6; - sa t7; - sa t8; + sa t1; + sa t2; + sa t3; + sa t4; + sa t5; + sa t6; + sa t7; + sa t8; return 0; } Index: gcc/testsuite/g++.dg/cpp0x/named_refs.C =================================================================== --- gcc/testsuite/g++.dg/cpp0x/named_refs.C (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/testsuite/g++.dg/cpp0x/named_refs.C (.../branches/gcc-4_5-branch) (wersja 163628) @@ -8,8 +8,8 @@ template struct sa; template <> struct sa {}; -struct one {char x[1];}; -struct two {char x[2];}; +struct one {long x[1];}; +struct two {long x[2];}; struct A {}; @@ -18,7 +18,7 @@ int test1(A&& a) { - sa t1; + sa t1; return 0; } Index: gcc/testsuite/g++.dg/cpp0x/unnamed_refs.C =================================================================== --- gcc/testsuite/g++.dg/cpp0x/unnamed_refs.C (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/testsuite/g++.dg/cpp0x/unnamed_refs.C (.../branches/gcc-4_5-branch) (wersja 163628) @@ -8,8 +8,8 @@ template struct sa; template <> struct sa {}; -struct one {char x[1];}; -struct two {char x[2];}; +struct one {long x[1];}; +struct two {long x[2];}; struct A {}; @@ -25,7 +25,7 @@ int test1() { - sa t1; + sa t1; return 0; } Index: gcc/testsuite/g++.dg/init/value8.C =================================================================== --- gcc/testsuite/g++.dg/init/value8.C (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/g++.dg/init/value8.C (.../branches/gcc-4_5-branch) (wersja 163628) @@ -0,0 +1,19 @@ +// PR c++/45315 + +struct A +{ + A (); +}; + +template < int > struct B : A +{ + void foo () + { + new B < 0 > (); + } +}; + +int main() +{ + B<1>().foo(); +} Index: gcc/testsuite/lib/gcc-dg.exp =================================================================== --- gcc/testsuite/lib/gcc-dg.exp (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/testsuite/lib/gcc-dg.exp (.../branches/gcc-4_5-branch) (wersja 163628) @@ -407,6 +407,8 @@ # that stores the filename of the testcase in a local variable "name". # A cleaner solution would require a new DejaGnu release. upvar 2 name testcase + # The name might include a list of options; extract the file name. + set testcase [lindex $testcase 0]] remove-build-file "[file rootname [file tail $testcase]].gc??" # Clean up coverage files for additional source files. @@ -423,6 +425,8 @@ # that stores the filename of the testcase in a local variable "name". # A cleaner solution would require a new DejaGnu release. upvar 2 name testcase + # The name might include a list of options; extract the file name. + set testcase [lindex $testcase 0]] remove-build-file "[file rootname [file tail $testcase]].o" remove-build-file "[file rootname [file tail $testcase]].rpo" @@ -498,6 +502,8 @@ # that stores the filename of the testcase in a local variable "name". # A cleaner solution would require a new DejaGnu release. upvar 2 name testcase + # The name might include a list of options; extract the file name. + set testcase [lindex $testcase 0]] foreach suffix $suffixes { remove-build-file "[file rootname [file tail $testcase]]$suffix" # -fcompare-debug dumps Index: gcc/testsuite/gfortran.dg/gomp/pr27573.f90 =================================================================== --- gcc/testsuite/gfortran.dg/gomp/pr27573.f90 (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/testsuite/gfortran.dg/gomp/pr27573.f90 (.../branches/gcc-4_5-branch) (wersja 163628) @@ -11,5 +11,3 @@ end do !$omp end parallel end - -! { dg-final { cleanup-coverage-files } } Index: gcc/testsuite/gfortran.dg/gomp/pr44036-1.f90 =================================================================== --- gcc/testsuite/gfortran.dg/gomp/pr44036-1.f90 (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/testsuite/gfortran.dg/gomp/pr44036-1.f90 (.../branches/gcc-4_5-branch) (wersja 163628) @@ -12,7 +12,7 @@ x = a(4) !$omp end parallel !$omp parallel default(none) private (x) ! { dg-error "enclosing parallel" } - x = b(5) ! { dg-error "not specified in" "" { target *-*-* } 11 } + x = b(5) ! { dg-error "not specified in" } !$omp end parallel !$omp parallel default(none) private (x) x = c(6) Index: gcc/testsuite/gfortran.dg/allocate_derived_3.f90 =================================================================== --- gcc/testsuite/gfortran.dg/allocate_derived_3.f90 (.../tags/gcc_4_5_1_release) (wersja 0) +++ gcc/testsuite/gfortran.dg/allocate_derived_3.f90 (.../branches/gcc-4_5-branch) (wersja 163628) @@ -0,0 +1,17 @@ +! { dg-do compile } +! +! PR 44929: [OOP] Parsing error of derived type name starting with 'REAL' +! +! Contributed by Satish.BD + + type :: real_type + end type + class(real_type), allocatable :: obj + real(8), allocatable :: r8 + + allocate(real_type :: obj) + + allocate( real(kind=8) :: r8) + allocate(real(8) :: r8 ) + +end Index: gcc/cp/init.c =================================================================== --- gcc/cp/init.c (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/cp/init.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -2158,7 +2158,8 @@ { init_expr = cp_build_indirect_ref (data_addr, RO_NULL, complain); - if (TYPE_NEEDS_CONSTRUCTING (type) && !explicit_value_init_p) + if (TYPE_NEEDS_CONSTRUCTING (type) + && (!explicit_value_init_p || processing_template_decl)) { init_expr = build_special_member_call (init_expr, complete_ctor_identifier, @@ -2168,9 +2169,13 @@ } else if (explicit_value_init_p) { - /* Something like `new int()'. */ - init_expr = build2 (INIT_EXPR, type, - init_expr, build_value_init (type)); + if (processing_template_decl) + /* Don't worry about it, we'll handle this properly at + instantiation time. */; + else + /* Something like `new int()'. */ + init_expr = build2 (INIT_EXPR, type, + init_expr, build_value_init (type)); } else { Index: gcc/cp/decl.c =================================================================== --- gcc/cp/decl.c (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/cp/decl.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -2077,6 +2077,10 @@ SET_DECL_INIT_PRIORITY (olddecl, DECL_INIT_PRIORITY (newdecl)); DECL_HAS_INIT_PRIORITY_P (olddecl) = 1; } + /* Likewise for DECL_USER_ALIGN and DECL_PACKED. */ + DECL_USER_ALIGN (olddecl) = DECL_USER_ALIGN (newdecl); + if (TREE_CODE (newdecl) == FIELD_DECL) + DECL_PACKED (olddecl) = DECL_PACKED (newdecl); /* The DECL_LANG_SPECIFIC information in OLDDECL will be replaced with that from NEWDECL below. */ Index: gcc/cp/ChangeLog =================================================================== --- gcc/cp/ChangeLog (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/cp/ChangeLog (.../branches/gcc-4_5-branch) (wersja 163628) @@ -1,3 +1,13 @@ +2010-08-19 Jason Merrill + + PR c++/45315 + * init.c (build_new_1): Don't use build_value_init in a template. + +2010-07-31 Ulrich Weigand + + PR c++/45112 + * decl.c (duplicate_decls): Merge DECL_USER_ALIGN and DECL_PACKED. + 2010-07-31 Release Manager * GCC 4.5.1 released. Index: gcc/haifa-sched.c =================================================================== --- gcc/haifa-sched.c (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/haifa-sched.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -1997,13 +1997,9 @@ q_ptr = NEXT_Q (q_ptr); if (dbg_cnt (sched_insn) == false) - { - /* If debug counter is activated do not requeue insn next after - last_scheduled_insn. */ - skip_insn = next_nonnote_insn (last_scheduled_insn); - while (skip_insn && DEBUG_INSN_P (skip_insn)) - skip_insn = next_nonnote_insn (skip_insn); - } + /* If debug counter is activated do not requeue insn next after + last_scheduled_insn. */ + skip_insn = next_nonnote_nondebug_insn (last_scheduled_insn); else skip_insn = NULL_RTX; Index: gcc/tree-ssa-loop-ivopts.c =================================================================== --- gcc/tree-ssa-loop-ivopts.c (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/tree-ssa-loop-ivopts.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -1557,7 +1557,7 @@ /* Return true if EXPR may be non-addressable. */ -static bool +bool may_be_nonaddressable_p (tree expr) { switch (TREE_CODE (expr)) Index: gcc/caller-save.c =================================================================== --- gcc/caller-save.c (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/caller-save.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -883,7 +883,10 @@ remain saved. If the last insn in the block is a JUMP_INSN, put the restore before the insn, otherwise, put it after the insn. */ - if (DEBUG_INSN_P (insn) && last && last->block == chain->block) + if (n_regs_saved + && DEBUG_INSN_P (insn) + && last + && last->block == chain->block) { rtx ins, prev; basic_block bb = BLOCK_FOR_INSN (insn); Index: gcc/ipa-pure-const.c =================================================================== --- gcc/ipa-pure-const.c (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/ipa-pure-const.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -416,6 +416,13 @@ print_gimple_stmt (dump_file, stmt, 0, 0); } + if (gimple_has_volatile_ops (stmt)) + { + local->pure_const_state = IPA_NEITHER; + if (dump_file) + fprintf (dump_file, " Volatile stmt is not const/pure\n"); + } + /* Look for loads and stores. */ walk_stmt_load_store_ops (stmt, local, check_load, check_store); Index: gcc/ifcvt.c =================================================================== --- gcc/ifcvt.c (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/ifcvt.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -2285,9 +2285,7 @@ } else { - insn_b = prev_nonnote_insn (if_info->cond_earliest); - while (insn_b && DEBUG_INSN_P (insn_b)) - insn_b = prev_nonnote_insn (insn_b); + insn_b = prev_nonnote_nondebug_insn (if_info->cond_earliest); /* We're going to be moving the evaluation of B down from above COND_EARLIEST to JUMP. Make sure the relevant data is still intact. */ Index: gcc/fortran/intrinsic.c =================================================================== --- gcc/fortran/intrinsic.c (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/fortran/intrinsic.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -112,6 +112,8 @@ sym->attr.flavor = FL_PROCEDURE; sym->attr.proc = PROC_INTRINSIC; + gfc_commit_symbol (sym); + return sym; } Index: gcc/fortran/symbol.c =================================================================== --- gcc/fortran/symbol.c (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/fortran/symbol.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -3795,6 +3795,9 @@ formal_arg = gfc_get_formal_arglist (); /* Add arg to list of formal args (the CPTR arg). */ add_formal_arg (head, tail, formal_arg, param_sym); + + /* Validate changes. */ + gfc_commit_symbol (param_sym); } @@ -3840,6 +3843,9 @@ formal_arg = gfc_get_formal_arglist (); /* Add arg to list of formal args. */ add_formal_arg (head, tail, formal_arg, param_sym); + + /* Validate changes. */ + gfc_commit_symbol (param_sym); } @@ -3911,6 +3917,9 @@ formal_arg = gfc_get_formal_arglist (); /* Add arg to list of formal args. */ add_formal_arg (head, tail, formal_arg, param_sym); + + /* Validate changes. */ + gfc_commit_symbol (param_sym); } @@ -3973,6 +3982,9 @@ /* Add arg to list of formal args. */ add_formal_arg (&head, &tail, formal_arg, formal_arg->sym); + + /* Validate changes. */ + gfc_commit_symbol (formal_arg->sym); } /* Add the interface to the symbol. */ @@ -4030,6 +4042,9 @@ /* Add arg to list of formal args. */ add_formal_arg (&head, &tail, formal_arg, formal_arg->sym); + + /* Validate changes. */ + gfc_commit_symbol (formal_arg->sym); } /* Add the interface to the symbol. */ @@ -4083,6 +4098,9 @@ /* Add arg to list of formal args. */ add_formal_arg (&head, &tail, formal_arg, formal_arg->sym); + + /* Validate changes. */ + gfc_commit_symbol (formal_arg->sym); } /* Add the interface to the symbol. */ @@ -4465,6 +4483,7 @@ default: gcc_unreachable (); } + gfc_commit_symbol (tmp_sym); } @@ -4837,10 +4856,12 @@ c->ts.u.derived = vtype; c->initializer->expr_type = EXPR_NULL; } + gfc_commit_symbol (vtype); } vtab->ts.u.derived = vtype; vtab->value = gfc_default_initializer (&vtab->ts); + gfc_commit_symbol (vtab); } } Index: gcc/fortran/gfortran.texi =================================================================== --- gcc/fortran/gfortran.texi (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/fortran/gfortran.texi (.../branches/gcc-4_5-branch) (wersja 163628) @@ -2639,9 +2639,6 @@ User-specified alignment rules for structures. @item -Flag to generate @code{Makefile} info. - -@item Automatically extend single precision constants to double. @item Index: gcc/fortran/cpp.c =================================================================== --- gcc/fortran/cpp.c (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/fortran/cpp.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -35,6 +35,7 @@ #include "../../libcpp/internal.h" #include "cpp.h" #include "incpath.h" +#include "mkdeps.h" #ifndef TARGET_OS_CPP_BUILTINS # define TARGET_OS_CPP_BUILTINS() @@ -84,6 +85,12 @@ int no_predefined; /* -undef */ int standard_include_paths; /* -nostdinc */ int verbose; /* -v */ + int deps; /* -M */ + int deps_skip_system; /* -MM */ + const char *deps_filename; /* -M[M]D */ + const char *deps_filename_user; /* -MF */ + int deps_missing_are_generated; /* -MG */ + int deps_phony; /* -MP */ const char *multilib; /* -imultilib */ const char *prefix; /* -iprefix */ @@ -270,6 +277,26 @@ return gfc_cpp_option.preprocess_only; } +bool +gfc_cpp_makedep (void) +{ + return gfc_cpp_option.deps; +} + +void +gfc_cpp_add_dep (const char *name, bool system) +{ + if (!gfc_cpp_option.deps_skip_system || !system) + deps_add_dep (cpp_get_deps (cpp_in), name); +} + +void +gfc_cpp_add_target (const char *name) +{ + deps_add_target (cpp_get_deps (cpp_in), name, 0); +} + + const char * gfc_cpp_temporary_file (void) { @@ -299,6 +326,12 @@ gfc_cpp_option.no_predefined = 0; gfc_cpp_option.standard_include_paths = 1; gfc_cpp_option.verbose = 0; + gfc_cpp_option.deps = 0; + gfc_cpp_option.deps_skip_system = 0; + gfc_cpp_option.deps_phony = 0; + gfc_cpp_option.deps_missing_are_generated = 0; + gfc_cpp_option.deps_filename = NULL; + gfc_cpp_option.deps_filename_user = NULL; gfc_cpp_option.multilib = NULL; gfc_cpp_option.prefix = NULL; @@ -414,6 +447,43 @@ gfc_cpp_option.print_include_names = 1; break; + case OPT_MM: + gfc_cpp_option.deps_skip_system = 1; + /* fall through */ + + case OPT_M: + gfc_cpp_option.deps = 1; + break; + + case OPT_MMD: + gfc_cpp_option.deps_skip_system = 1; + /* fall through */ + + case OPT_MD: + gfc_cpp_option.deps = 1; + gfc_cpp_option.deps_filename = arg; + break; + + case OPT_MF: + /* If specified multiple times, last one wins. */ + gfc_cpp_option.deps_filename_user = arg; + break; + + case OPT_MG: + gfc_cpp_option.deps_missing_are_generated = 1; + break; + + case OPT_MP: + gfc_cpp_option.deps_phony = 1; + break; + + case OPT_MQ: + case OPT_MT: + gfc_cpp_option.deferred_opt[gfc_cpp_option.deferred_opt_count].code = code; + gfc_cpp_option.deferred_opt[gfc_cpp_option.deferred_opt_count].arg = arg; + gfc_cpp_option.deferred_opt_count++; + break; + case OPT_P: gfc_cpp_option.no_line_commands = 1; break; @@ -430,16 +500,17 @@ an error. */ if (!gfc_cpp_enabled () && (gfc_cpp_preprocess_only () - || !gfc_cpp_option.discard_comments - || !gfc_cpp_option.discard_comments_in_macro_exp - || gfc_cpp_option.print_include_names - || gfc_cpp_option.no_line_commands - || gfc_cpp_option.dump_macros - || gfc_cpp_option.dump_includes)) + || gfc_cpp_makedep () + || !gfc_cpp_option.discard_comments + || !gfc_cpp_option.discard_comments_in_macro_exp + || gfc_cpp_option.print_include_names + || gfc_cpp_option.no_line_commands + || gfc_cpp_option.dump_macros + || gfc_cpp_option.dump_includes)) gfc_fatal_error("To enable preprocessing, use -cpp"); cpp_in = cpp_create_reader (CLK_GNUC89, NULL, line_table); - if (!gfc_cpp_enabled()) + if (!gfc_cpp_enabled ()) return; gcc_assert (cpp_in); @@ -462,6 +533,17 @@ cpp_option->print_include_names = gfc_cpp_option.print_include_names; cpp_option->preprocessed = gfc_option.flag_preprocessed; + if (gfc_cpp_makedep ()) + { + cpp_option->deps.style = DEPS_USER; + cpp_option->deps.phony_targets = gfc_cpp_option.deps_phony; + cpp_option->deps.missing_files = gfc_cpp_option.deps_missing_are_generated; + + /* -MF overrides -M[M]D. */ + if (gfc_cpp_option.deps_filename_user) + gfc_cpp_option.deps_filename = gfc_cpp_option.deps_filename_user; + } + if (gfc_cpp_option.working_directory == -1) gfc_cpp_option.working_directory = (debug_info_level != DINFO_LEVEL_NONE); @@ -571,6 +653,9 @@ else cpp_assert (cpp_in, opt->arg); } + else if (opt->code == OPT_MT || opt->code == OPT_MQ) + deps_add_target (cpp_get_deps (cpp_in), + opt->arg, opt->code == OPT_MQ); } if (gfc_cpp_option.working_directory @@ -614,14 +699,27 @@ if (!gfc_cpp_enabled ()) return; - /* TODO: if dependency tracking was enabled, call - cpp_finish() here to write dependencies. + gcc_assert (cpp_in); - Use cpp_get_deps() to access the current source's - dependencies during parsing. Add dependencies using - the mkdeps-interface (defined in libcpp). */ + if (gfc_cpp_makedep ()) + { + if (gfc_cpp_option.deps_filename) + { + FILE *f = fopen (gfc_cpp_option.deps_filename, "w"); + if (f) + { + cpp_finish (cpp_in, f); + fclose (f); + } + else + gfc_fatal_error ("opening output file %s: %s", + gfc_cpp_option.deps_filename, + xstrerror (errno)); + } + else + cpp_finish (cpp_in, stdout); + } - gcc_assert (cpp_in); cpp_undef_all (cpp_in); cpp_clear_file_cache (cpp_in); } Index: gcc/fortran/cpp.h =================================================================== --- gcc/fortran/cpp.h (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/fortran/cpp.h (.../branches/gcc-4_5-branch) (wersja 163628) @@ -24,6 +24,12 @@ bool gfc_cpp_preprocess_only (void); +bool gfc_cpp_makedep (void); + +void gfc_cpp_add_dep (const char *name, bool system); + +void gfc_cpp_add_target (const char *name); + const char *gfc_cpp_temporary_file (void); Index: gcc/fortran/gfortran.h =================================================================== --- gcc/fortran/gfortran.h (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/fortran/gfortran.h (.../branches/gcc-4_5-branch) (wersja 163628) @@ -1326,7 +1326,7 @@ struct gfc_code *code; /* Points to the equivalences set up in this namespace. */ - struct gfc_equiv *equiv; + struct gfc_equiv *equiv, *old_equiv; /* Points to the equivalence groups produced by trans_common. */ struct gfc_equiv_list *equiv_lists; @@ -2569,6 +2569,7 @@ void gfc_free_alloc_list (gfc_alloc *); void gfc_free_namelist (gfc_namelist *); void gfc_free_equiv (gfc_equiv *); +void gfc_free_equiv_until (gfc_equiv *, gfc_equiv *); void gfc_free_data (gfc_data *); void gfc_free_case_list (gfc_case *); Index: gcc/fortran/lang.opt =================================================================== --- gcc/fortran/lang.opt (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/fortran/lang.opt (.../branches/gcc-4_5-branch) (wersja 163628) @@ -56,6 +56,42 @@ Fortran Joined Separate -J Put MODULE files in 'directory' +M +Fortran +; Documented in C + +MD +Fortran Separate +; Documented in C + +MF +Fortran Joined Separate +; Documented in C + +MG +Fortran +; Documented in C + +MM +Fortran +; Documented in C + +MMD +Fortran Separate +; Documented in C + +MP +Fortran +; Documented in C + +MT +Fortran Joined Separate +; Documented in C + +MQ +Fortran Joined Separate +; Documented in C + P Fortran ; Documented in C Index: gcc/fortran/ChangeLog =================================================================== --- gcc/fortran/ChangeLog (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/fortran/ChangeLog (.../branches/gcc-4_5-branch) (wersja 163628) @@ -1,3 +1,88 @@ +2010-08-20 Jakub Jelinek + + PR fortran/45344 + Backport from mainline + 2010-05-14 Jakub Jelinek + + * trans.c (trans_code): Set backend locus early. + * trans-decl.c (gfc_get_fake_result_decl): Use source location + of the function instead of current input_location. + +2010-08-17 Jakub Jelinek + + PR fortran/45186 + * trans.c (gfc_annotate_with_location): New function. + (trans_code): Use it. + +2010-08-09 Janus Weil + + * intrinsic.texi: Correct documentation of ASINH, ACOSH and ATANH. + +2010-08-07 Daniel Franke + + 2010-06-13 Daniel Franke + + PR fortran/31588 + PR fortran/43954 + Backport from mainline: + * gfortranspec.c (lang_specific_driver): Removed deprecation + warning for -M. + * lang.opt: Add options -M, -MM, -MD, -MMD, -MF, -MG, -MP, -MT, -MQ. + * lang-specs.h (CPP_FORWARD_OPTIONS): Add -M* options. + * cpp.h (gfc_cpp_makedep): New. + (gfc_cpp_add_dep): New. + (gfc_cpp_add_target): New. + * cpp.c (gfc_cpp_option): Add deps* members. + (gfc_cpp_makedep): New. + (gfc_cpp_add_dep): New. + (gfc_cpp_add_target): New. + (gfc_cpp_init_options): Initialize new options. + (gfc_cpp_handle_option): Handle new options. + (gfc_cpp_post_options): Map new options to libcpp-options. + (gfc_cpp_init): Handle deferred -MQ and -MT options. + (gfc_cpp_done): If requested, write dependencies to file. + * module.c (gfc_dump_module): Add a module filename as target. + * scanner.c (open_included_file): New parameter system; add the + included file as dependency. + (gfc_open_included_file): Add the included file as dependency. + (gfc_open_intrinsic_module): Likewise. + * invoke.texi: Removed deprecation warning for -M. + * gfortran.texi: Removed Makefile-dependencies project. + +2010-08-05 Mikael Morin + + PR fortran/44660 + * gfortran.h (gfc_namespace): New field old_equiv. + (gfc_free_equiv_until): New prototype. + * match.c (gfc_free_equiv_until): New, renamed from gfc_free_equiv with + a parameterized stop condition. + (gfc_free_equiv): Use gfc_free_equiv_until. + * parse.c (next_statement): Save equivalence list. + (reject_statement): Restore equivalence list. + +2010-08-05 Mikael Morin + Janus Weil + + PR fortran/42051 + PR fortran/44064 + PR fortran/45151 + * intrinsic.c (gfc_get_intrinsic_sub_symbol): Commit changed symbol. + * symbol.c (gen_cptr_param, gen_fptr_param, gen_shape_param, + gfc_copy_formal_args, gfc_copy_formal_args_intr, + gfc_copy_formal_args_ppc, generate_isocbinding_symbol): Ditto. + (gfc_find_derived_vtab): Commit newly created symbols. + * parse.c (parse_derived_contains, parse_spec, parse_progunit): + Call reject_statement in case of error. + (match_deferred_characteritics): Call gfc_undo_symbols in case match + fails. + +2010-08-05 Janus Weil + Steven G. Kargl + + PR fortran/44929 + * match.c (match_type_spec): Try to parse derived types before + intrinsic types. + 2010-07-31 Release Manager * GCC 4.5.1 released. Index: gcc/fortran/invoke.texi =================================================================== --- gcc/fortran/invoke.texi (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/fortran/invoke.texi (.../branches/gcc-4_5-branch) (wersja 163628) @@ -148,8 +148,7 @@ @item Directory Options @xref{Directory Options,,Options for directory search}. -@gccoptlist{-I@var{dir} -J@var{dir} -M@var{dir} @gol --fintrinsic-modules-path @var{dir}} +@gccoptlist{-I@var{dir} -J@var{dir} -fintrinsic-modules-path @var{dir}} @item Link Options @xref{Link Options,,Options for influencing the linking step}. @@ -949,7 +948,6 @@ @option{-I} option. @item -J@var{dir} -@item -M@var{dir} @opindex @code{J}@var{dir} @opindex @code{M}@var{dir} @cindex paths, search @@ -960,8 +958,6 @@ The default is the current directory. -@option{-M} is deprecated to avoid conflicts with existing GCC options. - @item -fintrinsic-modules-path @var{dir} @opindex @code{fintrinsic-modules-path} @var{dir} @cindex paths, search Index: gcc/fortran/module.c =================================================================== --- gcc/fortran/module.c (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/fortran/module.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -73,6 +73,7 @@ #include "match.h" #include "parse.h" /* FIXME */ #include "md5.h" +#include "cpp.h" #define MODULE_EXTENSION ".mod" @@ -5100,6 +5101,9 @@ return; } + if (gfc_cpp_makedep ()) + gfc_cpp_add_target (filename); + /* Write the module to the temporary file. */ module_fp = fopen (filename_tmp, "w"); if (module_fp == NULL) Index: gcc/fortran/trans.c =================================================================== --- gcc/fortran/trans.c (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/fortran/trans.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -1041,7 +1041,30 @@ input_location = loc->lb->location; } +/* Annotate statement or statement list T with location LOC. */ +static void +gfc_annotate_with_location (tree t, location_t loc) +{ + if (TREE_CODE (t) == STATEMENT_LIST) + { + tree_stmt_iterator i; + + for (i = tsi_start (t); !tsi_end_p (i); tsi_next (&i)) + gfc_annotate_with_location (tsi_stmt (i), loc); + return; + } + if (TREE_CODE (t) == COMPOUND_EXPR) + { + gfc_annotate_with_location (TREE_OPERAND (t, 0), loc); + gfc_annotate_with_location (TREE_OPERAND (t, 1), loc); + } + if (TREE_CODE (t) == LABEL_EXPR || !TREE_SIDE_EFFECTS (t)) + return; + if (CAN_HAVE_LOCATION_P (t) && ! EXPR_HAS_LOCATION (t)) + SET_EXPR_LOCATION (t, loc); +} + /* Translate an executable statement. The tree cond is used by gfc_trans_do. This static function is wrapped by gfc_trans_code_cond and gfc_trans_code. */ @@ -1067,6 +1090,8 @@ gfc_add_expr_to_block (&block, res); } + gfc_set_backend_locus (&code->loc); + switch (code->op) { case EXEC_NOP: @@ -1281,9 +1306,8 @@ if (res != NULL_TREE && ! IS_EMPTY_STMT (res)) { - if (TREE_CODE (res) != STATEMENT_LIST) - SET_EXPR_LOCATION (res, input_location); - + gfc_annotate_with_location (res, input_location); + /* Add the new statement to the block. */ gfc_add_expr_to_block (&block, res); } Index: gcc/fortran/scanner.c =================================================================== --- gcc/fortran/scanner.c (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/fortran/scanner.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -390,7 +390,8 @@ static FILE * -open_included_file (const char *name, gfc_directorylist *list, bool module) +open_included_file (const char *name, gfc_directorylist *list, + bool module, bool system) { char *fullname; gfc_directorylist *p; @@ -407,7 +408,12 @@ f = gfc_open_file (fullname); if (f != NULL) - return f; + { + if (gfc_cpp_makedep ()) + gfc_cpp_add_dep (fullname, system); + + return f; + } } return NULL; @@ -421,28 +427,37 @@ FILE * gfc_open_included_file (const char *name, bool include_cwd, bool module) { - FILE *f; + FILE *f = NULL; - if (IS_ABSOLUTE_PATH (name)) - return gfc_open_file (name); - - if (include_cwd) + if (IS_ABSOLUTE_PATH (name) || include_cwd) { f = gfc_open_file (name); - if (f != NULL) - return f; + if (f && gfc_cpp_makedep ()) + gfc_cpp_add_dep (name, false); } - return open_included_file (name, include_dirs, module); + if (!f) + f = open_included_file (name, include_dirs, module, false); + + return f; } FILE * gfc_open_intrinsic_module (const char *name) { + FILE *f = NULL; + if (IS_ABSOLUTE_PATH (name)) - return gfc_open_file (name); + { + f = gfc_open_file (name); + if (f && gfc_cpp_makedep ()) + gfc_cpp_add_dep (name, true); + } - return open_included_file (name, intrinsic_modules_dirs, true); + if (!f) + f = open_included_file (name, intrinsic_modules_dirs, true, true); + + return f; } Index: gcc/fortran/gfortranspec.c =================================================================== --- gcc/fortran/gfortranspec.c (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/fortran/gfortranspec.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -415,36 +415,6 @@ continue; } - if ((argv[i][0] == '-') && (argv[i][1] == 'M')) - { - char *p; - - fprintf (stderr, _("Warning: Using -M is deprecated, " - "use -J instead\n")); - if (argv[i][2] == '\0') - { - if (i+1 < argc) - { - p = XNEWVEC (char, strlen (argv[i + 1]) + 3); - p[0] = '-'; - p[1] = 'J'; - strcpy (&p[2], argv[i + 1]); - i++; - } - else - fatal ("argument to '%s' missing", argv[i]); - } - else - { - p = XNEWVEC (char, strlen (argv[i]) + 1); - p[0] = '-'; - p[1] = 'J'; - strcpy (&p[2], argv[i] + 2); - } - append_arg (p); - continue; - } - if ((argv[i][0] == '-') && (argv[i][1] != 'l')) { /* Not a filename or library. */ Index: gcc/fortran/lang-specs.h =================================================================== --- gcc/fortran/lang-specs.h (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/fortran/lang-specs.h (.../branches/gcc-4_5-branch) (wersja 163628) @@ -28,7 +28,7 @@ %{O*} %{undef}" /* Options that f951 should know about, even if not preprocessing. */ -#define CPP_FORWARD_OPTIONS "%{i*} %{I*}" +#define CPP_FORWARD_OPTIONS "%{i*} %{I*} %{M*}" #define F951_CPP_OPTIONS "%{!nocpp: -cpp %g.f90 %{E} %(cpp_unique_options) \ %{E|M|MM:%(cpp_debug_options) " CPP_ONLY_OPTIONS \ Index: gcc/fortran/trans-decl.c =================================================================== --- gcc/fortran/trans-decl.c (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/fortran/trans-decl.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -2252,11 +2252,11 @@ IDENTIFIER_POINTER (DECL_NAME (this_function_decl))); if (!sym->attr.mixed_entry_master && sym->attr.function) - decl = build_decl (input_location, + decl = build_decl (DECL_SOURCE_LOCATION (this_function_decl), VAR_DECL, get_identifier (name), gfc_sym_type (sym)); else - decl = build_decl (input_location, + decl = build_decl (DECL_SOURCE_LOCATION (this_function_decl), VAR_DECL, get_identifier (name), TREE_TYPE (TREE_TYPE (this_function_decl))); DECL_ARTIFICIAL (decl) = 1; Index: gcc/fortran/match.c =================================================================== --- gcc/fortran/match.c (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/fortran/match.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -2303,7 +2303,7 @@ gfc_match_decl_type_spec() from decl.c, with the following exceptions: It only includes the intrinsic types from the Fortran 2003 standard (thus, neither BYTE nor forms like REAL*4 are allowed). Additionally, - the implicit_flag is not needed, so it was removed. Derived types are + the implicit_flag is not needed, so it was removed. Derived types are identified by their name alone. */ static match @@ -2313,8 +2313,30 @@ locus old_locus; gfc_clear_ts (ts); + gfc_gobble_whitespace(); old_locus = gfc_current_locus; + m = match_derived_type_spec (ts); + if (m == MATCH_YES) + { + old_locus = gfc_current_locus; + if (gfc_match (" :: ") != MATCH_YES) + return MATCH_ERROR; + gfc_current_locus = old_locus; + /* Enfore F03:C401. */ + if (ts->u.derived->attr.abstract) + { + gfc_error ("Derived type '%s' at %L may not be ABSTRACT", + ts->u.derived->name, &old_locus); + return MATCH_ERROR; + } + return MATCH_YES; + } + else if (m == MATCH_ERROR && gfc_match (" :: ") == MATCH_YES) + return MATCH_ERROR; + + gfc_current_locus = old_locus; + if (gfc_match ("integer") == MATCH_YES) { ts->type = BT_INTEGER; @@ -2356,25 +2378,6 @@ goto kind_selector; } - m = match_derived_type_spec (ts); - if (m == MATCH_YES) - { - old_locus = gfc_current_locus; - if (gfc_match (" :: ") != MATCH_YES) - return MATCH_ERROR; - gfc_current_locus = old_locus; - /* Enfore F03:C401. */ - if (ts->u.derived->attr.abstract) - { - gfc_error ("Derived type '%s' at %L may not be ABSTRACT", - ts->u.derived->name, &old_locus); - return MATCH_ERROR; - } - return MATCH_YES; - } - else if (m == MATCH_ERROR && gfc_match (" :: ") == MATCH_YES) - return MATCH_ERROR; - /* If a type is not matched, simply return MATCH_NO. */ gfc_current_locus = old_locus; return MATCH_NO; @@ -3580,18 +3583,25 @@ do this. */ void -gfc_free_equiv (gfc_equiv *eq) +gfc_free_equiv_until (gfc_equiv *eq, gfc_equiv *stop) { - if (eq == NULL) + if (eq == stop) return; gfc_free_equiv (eq->eq); - gfc_free_equiv (eq->next); + gfc_free_equiv_until (eq->next, stop); gfc_free_expr (eq->expr); gfc_free (eq); } +void +gfc_free_equiv (gfc_equiv *eq) +{ + gfc_free_equiv_until (eq, NULL); +} + + /* Match an EQUIVALENCE statement. */ match Index: gcc/fortran/parse.c =================================================================== --- gcc/fortran/parse.c (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/fortran/parse.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -876,6 +876,7 @@ gfc_new_block = NULL; gfc_current_ns->old_cl_list = gfc_current_ns->cl_list; + gfc_current_ns->old_equiv = gfc_current_ns->equiv; for (;;) { gfc_statement_label = NULL; @@ -1608,6 +1609,9 @@ gfc_free_charlen (gfc_current_ns->cl_list, gfc_current_ns->old_cl_list); gfc_current_ns->cl_list = gfc_current_ns->old_cl_list; + gfc_free_equiv_until (gfc_current_ns->equiv, gfc_current_ns->old_equiv); + gfc_current_ns->equiv = gfc_current_ns->old_equiv; + gfc_new_block = NULL; gfc_undo_symbols (); gfc_clear_warning (); @@ -1841,13 +1845,12 @@ case ST_DATA_DECL: gfc_error ("Components in TYPE at %C must precede CONTAINS"); - error_flag = true; - break; + goto error; case ST_PROCEDURE: if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: Type-bound" " procedure at %C") == FAILURE) - error_flag = true; + goto error; accept_statement (ST_PROCEDURE); seen_comps = true; @@ -1856,7 +1859,7 @@ case ST_GENERIC: if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: GENERIC binding" " at %C") == FAILURE) - error_flag = true; + goto error; accept_statement (ST_GENERIC); seen_comps = true; @@ -1866,7 +1869,7 @@ if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: FINAL procedure declaration" " at %C") == FAILURE) - error_flag = true; + goto error; accept_statement (ST_FINAL); seen_comps = true; @@ -1879,7 +1882,7 @@ && (gfc_notify_std (GFC_STD_F2008, "Fortran 2008: Derived type " "definition at %C with empty CONTAINS " "section") == FAILURE)) - error_flag = true; + goto error; /* ST_END_TYPE is accepted by parse_derived after return. */ break; @@ -1889,22 +1892,20 @@ { gfc_error ("PRIVATE statement in TYPE at %C must be inside " "a MODULE"); - error_flag = true; - break; + goto error; } if (seen_comps) { gfc_error ("PRIVATE statement at %C must precede procedure" " bindings"); - error_flag = true; - break; + goto error; } if (seen_private) { gfc_error ("Duplicate PRIVATE statement at %C"); - error_flag = true; + goto error; } accept_statement (ST_PRIVATE); @@ -1914,18 +1915,22 @@ case ST_SEQUENCE: gfc_error ("SEQUENCE statement at %C must precede CONTAINS"); - error_flag = true; - break; + goto error; case ST_CONTAINS: gfc_error ("Already inside a CONTAINS block at %C"); - error_flag = true; - break; + goto error; default: unexpected_statement (st); break; } + + continue; + +error: + error_flag = true; + reject_statement (); } pop_state (); @@ -2361,7 +2366,10 @@ gfc_commit_symbols (); } else - gfc_error_check (); + { + gfc_error_check (); + gfc_undo_symbols (); + } gfc_current_locus =loc; return m; @@ -2433,6 +2441,7 @@ case ST_STATEMENT_FUNCTION: gfc_error ("%s statement is not allowed inside of BLOCK at %C", gfc_ascii_statement (st)); + reject_statement (); break; default: @@ -2519,6 +2528,7 @@ { gfc_error ("%s statement must appear in a MODULE", gfc_ascii_statement (st)); + reject_statement (); break; } @@ -2526,6 +2536,7 @@ { gfc_error ("%s statement at %C follows another accessibility " "specification", gfc_ascii_statement (st)); + reject_statement (); break; } @@ -3822,6 +3833,7 @@ { gfc_error ("CONTAINS statement at %C is already in a contained " "program unit"); + reject_statement (); st = next_statement (); goto loop; } Index: gcc/fortran/intrinsic.texi =================================================================== --- gcc/fortran/intrinsic.texi (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/fortran/intrinsic.texi (.../branches/gcc-4_5-branch) (wersja 163628) @@ -44,7 +44,7 @@ * @code{ACCESS}: ACCESS, Checks file access modes * @code{ACHAR}: ACHAR, Character in @acronym{ASCII} collating sequence * @code{ACOS}: ACOS, Arccosine function -* @code{ACOSH}: ACOSH, Hyperbolic arccosine function +* @code{ACOSH}: ACOSH, Inverse hyperbolic cosine function * @code{ADJUSTL}: ADJUSTL, Left adjust a string * @code{ADJUSTR}: ADJUSTR, Right adjust a string * @code{AIMAG}: AIMAG, Imaginary part of complex number @@ -56,11 +56,11 @@ * @code{ANINT}: ANINT, Nearest whole number * @code{ANY}: ANY, Determine if any values are true * @code{ASIN}: ASIN, Arcsine function -* @code{ASINH}: ASINH, Hyperbolic arcsine function +* @code{ASINH}: ASINH, Inverse hyperbolic sine function * @code{ASSOCIATED}: ASSOCIATED, Status of a pointer or pointer/target pair * @code{ATAN}: ATAN, Arctangent function * @code{ATAN2}: ATAN2, Arctangent function -* @code{ATANH}: ATANH, Hyperbolic arctangent function +* @code{ATANH}: ATANH, Inverse hyperbolic tangent function * @code{BESSEL_J0}: BESSEL_J0, Bessel function of the first kind of order 0 * @code{BESSEL_J1}: BESSEL_J1, Bessel function of the first kind of order 1 * @code{BESSEL_JN}: BESSEL_JN, Bessel function of the first kind @@ -572,18 +572,17 @@ @node ACOSH -@section @code{ACOSH} --- Hyperbolic arccosine function +@section @code{ACOSH} --- Inverse hyperbolic cosine function @fnindex ACOSH @fnindex DACOSH @cindex area hyperbolic cosine -@cindex hyperbolic arccosine +@cindex inverse hyperbolic cosine @cindex hyperbolic function, cosine, inverse @cindex cosine, hyperbolic, inverse @table @asis @item @emph{Description}: -@code{ACOSH(X)} computes the hyperbolic arccosine of @var{X} (inverse of -@code{COSH(X)}). +@code{ACOSH(X)} computes the inverse hyperbolic cosine of @var{X}. @item @emph{Standard}: Fortran 2008 and later @@ -1213,17 +1212,17 @@ @node ASINH -@section @code{ASINH} --- Hyperbolic arcsine function +@section @code{ASINH} --- Inverse hyperbolic sine function @fnindex ASINH @fnindex DASINH @cindex area hyperbolic sine -@cindex hyperbolic arcsine +@cindex inverse hyperbolic sine @cindex hyperbolic function, sine, inverse @cindex sine, hyperbolic, inverse @table @asis @item @emph{Description}: -@code{ASINH(X)} computes the hyperbolic arcsine of @var{X} (inverse of @code{SINH(X)}). +@code{ASINH(X)} computes the inverse hyperbolic sine of @var{X}. @item @emph{Standard}: Fortran 2008 and later @@ -1455,18 +1454,17 @@ @node ATANH -@section @code{ATANH} --- Hyperbolic arctangent function -@fnindex ASINH -@fnindex DASINH +@section @code{ATANH} --- Inverse hyperbolic tangent function +@fnindex ATANH +@fnindex DATANH @cindex area hyperbolic tangent -@cindex hyperbolic arctangent +@cindex inverse hyperbolic tangent @cindex hyperbolic function, tangent, inverse @cindex tangent, hyperbolic, inverse @table @asis @item @emph{Description}: -@code{ATANH(X)} computes the hyperbolic arctangent of @var{X} (inverse -of @code{TANH(X)}). +@code{ATANH(X)} computes the inverse hyperbolic tangent of @var{X}. @item @emph{Standard}: Fortran 2008 and later Index: gcc/BASE-VER =================================================================== --- gcc/BASE-VER (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/BASE-VER (.../branches/gcc-4_5-branch) (wersja 163628) @@ -1 +1 @@ -4.5.1 +4.5.2 Index: gcc/function.c =================================================================== --- gcc/function.c (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/function.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -3423,12 +3423,10 @@ DECL_IGNORED_P (local) = 0; /* If PARM was addressable, move that flag over to the local copy, as its address will be taken, - not the PARMs. */ + not the PARMs. Keep the parms address taken + as we'll query that flag during gimplification. */ if (TREE_ADDRESSABLE (parm)) - { - TREE_ADDRESSABLE (parm) = 0; - TREE_ADDRESSABLE (local) = 1; - } + TREE_ADDRESSABLE (local) = 1; } else { Index: gcc/expmed.c =================================================================== --- gcc/expmed.c (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/expmed.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -3006,9 +3006,11 @@ switch (alg->op[opno]) { case alg_shift: - accum = expand_shift (LSHIFT_EXPR, mode, accum, - build_int_cst (NULL_TREE, log), - NULL_RTX, 0); + tem = expand_shift (LSHIFT_EXPR, mode, accum, + build_int_cst (NULL_TREE, log), + NULL_RTX, 0); + /* REG_EQUAL note will be attached to the following insn. */ + emit_move_insn (accum, tem); val_so_far <<= log; break; Index: gcc/emit-rtl.c =================================================================== --- gcc/emit-rtl.c (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/emit-rtl.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -3162,6 +3162,38 @@ return insn; } +/* Return the next insn after INSN that is not a NOTE nor DEBUG_INSN. + This routine does not look inside SEQUENCEs. */ + +rtx +next_nonnote_nondebug_insn (rtx insn) +{ + while (insn) + { + insn = NEXT_INSN (insn); + if (insn == 0 || (!NOTE_P (insn) && !DEBUG_INSN_P (insn))) + break; + } + + return insn; +} + +/* Return the previous insn before INSN that is not a NOTE nor DEBUG_INSN. + This routine does not look inside SEQUENCEs. */ + +rtx +prev_nonnote_nondebug_insn (rtx insn) +{ + while (insn) + { + insn = PREV_INSN (insn); + if (insn == 0 || (!NOTE_P (insn) && !DEBUG_INSN_P (insn))) + break; + } + + return insn; +} + /* Return the next INSN, CALL_INSN or JUMP_INSN after INSN; or 0, if there is none. This routine does not look inside SEQUENCEs. */ Index: gcc/tree-sra.c =================================================================== --- gcc/tree-sra.c (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/tree-sra.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -276,6 +276,9 @@ arguments than formal parameters.. */ static bool encountered_unchangable_recursive_call; +/* Set by scan_function when it changes the control flow graph. */ +static bool cfg_changed; + /* This is a table in which for each basic block and parameter there is a distance (offset + size) in that parameter which is dereferenced and accessed in that BB. */ @@ -570,6 +573,7 @@ memset (&sra_stats, 0, sizeof (sra_stats)); encountered_apply_args = false; encountered_unchangable_recursive_call = false; + cfg_changed = false; } /* Hook fed to pointer_map_traverse, deallocate stored vectors. */ @@ -1114,8 +1118,6 @@ FOR_EACH_BB (bb) { - bool bb_changed = false; - if (handle_ssa_defs) for (gsi = gsi_start_phis (bb); !gsi_end_p (gsi); gsi_next (&gsi)) ret |= handle_ssa_defs (gsi_stmt (gsi), data); @@ -1220,21 +1222,15 @@ if (!analysis_stage) { - bb_changed = true; update_stmt (stmt); - maybe_clean_eh_stmt (stmt); + if (maybe_clean_eh_stmt (stmt) + && gimple_purge_dead_eh_edges (bb)) + cfg_changed = true; } } - if (deleted) - bb_changed = true; - else - { - gsi_next (&gsi); - ret = true; - } + if (!deleted) + gsi_next (&gsi); } - if (!analysis_stage && bb_changed && sra_mode == SRA_MODE_EARLY_IPA) - gimple_purge_dead_eh_edges (bb); } return ret; @@ -2871,7 +2867,10 @@ statistics_counter_event (cfun, "Separate LHS and RHS handling", sra_stats.separate_lhs_rhs_handling); - ret = TODO_update_ssa; + if (cfg_changed) + ret = TODO_update_ssa | TODO_cleanup_cfg; + else + ret = TODO_update_ssa; out: sra_deinitialize (); @@ -4236,7 +4235,10 @@ modify_function (node, adjustments); VEC_free (ipa_parm_adjustment_t, heap, adjustments); - ret = TODO_update_ssa; + if (cfg_changed) + ret = TODO_update_ssa | TODO_cleanup_cfg; + else + ret = TODO_update_ssa; statistics_counter_event (cfun, "Unused parameters deleted", sra_stats.deleted_unused_parameters); Index: gcc/ipa-prop.c =================================================================== --- gcc/ipa-prop.c (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/ipa-prop.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -1597,7 +1597,7 @@ || (VEC_index (ipa_parm_adjustment_t, adjustments, 0)->copy_param && VEC_index (ipa_parm_adjustment_t, adjustments, 0)->base_index == 0)) { - new_type = copy_node (orig_type); + new_type = build_distinct_type_copy (orig_type); TYPE_ARG_TYPES (new_type) = new_reversed; } else Index: gcc/tree-vect-patterns.c =================================================================== --- gcc/tree-vect-patterns.c (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/tree-vect-patterns.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -254,6 +254,11 @@ prod_type = half_type; stmt = SSA_NAME_DEF_STMT (oprnd0); + + /* It could not be the dot_prod pattern if the stmt is outside the loop. */ + if (!flow_bb_inside_loop_p (loop, gimple_bb (stmt))) + return NULL; + /* FORNOW. Can continue analyzing the def-use chain when this stmt in a phi inside the loop (in case we are analyzing an outer-loop). */ if (!is_gimple_assign (stmt)) Index: gcc/sched-deps.c =================================================================== --- gcc/sched-deps.c (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/sched-deps.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -1517,9 +1517,7 @@ delete_all_dependences (insn); - prev_nonnote = prev_nonnote_insn (insn); - while (DEBUG_INSN_P (prev_nonnote)) - prev_nonnote = prev_nonnote_insn (prev_nonnote); + prev_nonnote = prev_nonnote_nondebug_insn (insn); if (BLOCK_FOR_INSN (insn) == BLOCK_FOR_INSN (prev_nonnote) && ! sched_insns_conditions_mutex_p (insn, prev_nonnote)) add_dependence (insn, prev_nonnote, REG_DEP_ANTI); @@ -2695,9 +2693,7 @@ if (JUMP_P (insn)) { rtx next; - next = next_nonnote_insn (insn); - while (next && DEBUG_INSN_P (next)) - next = next_nonnote_insn (next); + next = next_nonnote_nondebug_insn (insn); if (next && BARRIER_P (next)) reg_pending_barrier = MOVE_BARRIER; else @@ -3366,10 +3362,8 @@ hard registers correct. */ if (! reload_completed && !LABEL_P (head)) { - rtx insn = prev_nonnote_insn (head); + rtx insn = prev_nonnote_nondebug_insn (head); - while (insn && DEBUG_INSN_P (insn)) - insn = prev_nonnote_insn (insn); if (insn && CALL_P (insn)) deps->in_post_call_group_p = post_call_initial; } Index: gcc/tree-ssa-loop-prefetch.c =================================================================== --- gcc/tree-ssa-loop-prefetch.c (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/tree-ssa-loop-prefetch.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -481,6 +481,10 @@ if (!analyze_ref (loop, &ref, &base, &step, &delta, stmt)) return false; + /* Stop if the address of BASE could not be taken. */ + if (may_be_nonaddressable_p (base)) + return false; + /* Now we know that REF = &BASE + STEP * iter + DELTA, where DELTA and STEP are integer constants. */ agrp = find_or_create_group (refs, base, step); Index: gcc/rtl.h =================================================================== --- gcc/rtl.h (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/rtl.h (.../branches/gcc-4_5-branch) (wersja 163628) @@ -1709,6 +1709,8 @@ extern rtx next_nonnote_insn_bb (rtx); extern rtx prev_nondebug_insn (rtx); extern rtx next_nondebug_insn (rtx); +extern rtx prev_nonnote_nondebug_insn (rtx); +extern rtx next_nonnote_nondebug_insn (rtx); extern rtx prev_real_insn (rtx); extern rtx next_real_insn (rtx); extern rtx prev_active_insn (rtx); Index: gcc/combine.c =================================================================== --- gcc/combine.c (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/combine.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -3544,7 +3544,58 @@ i2_code_number = recog_for_combine (&newi2pat, i2, &new_i2_notes); if (i2_code_number >= 0) - insn_code_number = recog_for_combine (&newpat, i3, &new_i3_notes); + { + /* recog_for_combine might have added CLOBBERs to newi2pat. + Make sure NEWPAT does not depend on the clobbered regs. */ + if (GET_CODE (newi2pat) == PARALLEL) + { + for (i = XVECLEN (newi2pat, 0) - 1; i >= 0; i--) + if (GET_CODE (XVECEXP (newi2pat, 0, i)) == CLOBBER) + { + rtx reg = XEXP (XVECEXP (newi2pat, 0, i), 0); + if (reg_overlap_mentioned_p (reg, newpat)) + break; + } + + if (i >= 0) + { + /* CLOBBERs on newi2pat prevent it going first. + Try the other order of the insns if possible. */ + temp = newpat; + newpat = XVECEXP (newi2pat, 0, 0); + newi2pat = temp; +#ifdef HAVE_cc0 + if (reg_referenced_p (cc0_rtx, newpat)) + { + undo_all (); + return 0; + } +#endif + + i2_code_number = recog_for_combine (&newi2pat, i2, + &new_i2_notes); + if (i2_code_number < 0) + { + undo_all (); + return 0; + } + + if (GET_CODE (newi2pat) == PARALLEL) + for (i = XVECLEN (newi2pat, 0) - 1; i >= 0; i--) + if (GET_CODE (XVECEXP (newi2pat, 0, i)) == CLOBBER) + { + rtx reg = XEXP (XVECEXP (newi2pat, 0, i), 0); + if (reg_overlap_mentioned_p (reg, newpat)) + { + undo_all (); + return 0; + } + } + } + } + + insn_code_number = recog_for_combine (&newpat, i3, &new_i3_notes); + } } /* If it still isn't recognized, fail and change things back the way they @@ -9505,7 +9556,9 @@ > GET_MODE_SIZE (GET_MODE (varop))) && (unsigned int) ((GET_MODE_SIZE (GET_MODE (SUBREG_REG (varop))) + (UNITS_PER_WORD - 1)) / UNITS_PER_WORD) - == mode_words) + == mode_words + && GET_MODE_CLASS (GET_MODE (varop)) == MODE_INT + && GET_MODE_CLASS (GET_MODE (SUBREG_REG (varop))) == MODE_INT) { varop = SUBREG_REG (varop); if (GET_MODE_SIZE (GET_MODE (varop)) > GET_MODE_SIZE (mode)) @@ -12680,29 +12733,6 @@ return 0; } - -/* Return the next insn after INSN that is neither a NOTE nor a - DEBUG_INSN. This routine does not look inside SEQUENCEs. */ - -static rtx -next_nonnote_nondebug_insn (rtx insn) -{ - while (insn) - { - insn = NEXT_INSN (insn); - if (insn == 0) - break; - if (NOTE_P (insn)) - continue; - if (DEBUG_INSN_P (insn)) - continue; - break; - } - - return insn; -} - - /* Given a chain of REG_NOTES originally from FROM_INSN, try to place them as appropriate. I3 and I2 are the insns resulting from the combination Index: gcc/tree-flow.h =================================================================== --- gcc/tree-flow.h (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/tree-flow.h (.../branches/gcc-4_5-branch) (wersja 163628) @@ -837,6 +837,7 @@ bool multiplier_allowed_in_address_p (HOST_WIDE_INT, enum machine_mode, addr_space_t); unsigned multiply_by_cost (HOST_WIDE_INT, enum machine_mode, bool); +bool may_be_nonaddressable_p (tree expr); /* In tree-ssa-threadupdate.c. */ extern bool thread_through_all_blocks (bool); Index: gcc/reginfo.c =================================================================== --- gcc/reginfo.c (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/reginfo.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -841,6 +841,14 @@ void globalize_reg (int i) { +#ifdef STACK_REGS + if (IN_RANGE (i, FIRST_STACK_REG, LAST_STACK_REG)) + { + error ("stack register used for global register variable"); + return; + } +#endif + if (fixed_regs[i] == 0 && no_global_reg_vars) error ("global register variable follows a function definition"); Index: gcc/tree-ssa-structalias.c =================================================================== --- gcc/tree-ssa-structalias.c (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/tree-ssa-structalias.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -2955,7 +2955,8 @@ /* Some people like to do cute things like take the address of &0->a.b */ forzero = t; - while (!SSA_VAR_P (forzero) && !CONSTANT_CLASS_P (forzero)) + while (handled_component_p (forzero) + || INDIRECT_REF_P (forzero)) forzero = TREE_OPERAND (forzero, 0); if (CONSTANT_CLASS_P (forzero) && integer_zerop (forzero)) Index: gcc/config/alpha/alpha.c =================================================================== --- gcc/config/alpha/alpha.c (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/config/alpha/alpha.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -5945,6 +5945,10 @@ integer_type_node); DECL_FIELD_CONTEXT (ofs) = record; TREE_CHAIN (ofs) = space; + /* ??? This is a hack, __offset is marked volatile to prevent + DCE that confuses stdarg optimization and results in + gcc.c-torture/execute/stdarg-1.c failure. See PR 41089. */ + TREE_THIS_VOLATILE (ofs) = 1; base = build_decl (BUILTINS_LOCATION, FIELD_DECL, get_identifier ("__base"), Index: gcc/config/spu/spu.c =================================================================== --- gcc/config/spu/spu.c (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/config/spu/spu.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -2334,7 +2334,7 @@ return; /* If we have a Basic block note, emit it after the basic block note. */ - if (NOTE_KIND (before) == NOTE_INSN_BASIC_BLOCK) + if (NOTE_INSN_BASIC_BLOCK_P (before)) before = NEXT_INSN (before); branch_label = gen_label_rtx (); Index: gcc/config/sparc/sparc.c =================================================================== --- gcc/config/sparc/sparc.c (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/config/sparc/sparc.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -5558,14 +5558,13 @@ function_arg_advance (struct sparc_args *cum, enum machine_mode mode, tree type, int named) { - int slotno, regno, padding; + int regno, padding; /* We pass 0 for incoming_p here, it doesn't matter. */ - slotno = function_arg_slotno (cum, mode, type, named, 0, ®no, &padding); + function_arg_slotno (cum, mode, type, named, 0, ®no, &padding); - /* If register required leading padding, add it. */ - if (slotno != -1) - cum->words += padding; + /* If argument requires leading padding, add it. */ + cum->words += padding; if (TARGET_ARCH32) { Index: gcc/config/rx/predicates.md =================================================================== --- gcc/config/rx/predicates.md (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/config/rx/predicates.md (.../branches/gcc-4_5-branch) (wersja 163628) @@ -45,6 +45,13 @@ } ) +(define_predicate "rx_constshift_operand" + (match_code "const_int") + { + return IN_RANGE (INTVAL (op), 0, 31); + } +) + ;; Check that the operand is suitable as the source operand ;; for a logic or arithmeitc instruction. Registers, integers ;; and a restricted subset of memory addresses are allowed. Index: gcc/config/rx/rx.md =================================================================== --- gcc/config/rx/rx.md (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/config/rx/rx.md (.../branches/gcc-4_5-branch) (wersja 163628) @@ -24,6 +24,9 @@ (define_code_iterator most_cond [eq ne gt ge lt le gtu geu ltu leu unordered ordered ]) +;; Likewise, but only the ones that use Z or S. +(define_code_iterator zs_cond [eq ne gtu geu ltu leu ]) + ;; This code iterator is used for sign- and zero- extensions. (define_mode_iterator small_int_modes [(HI "") (QI "")]) @@ -157,9 +160,9 @@ (define_expand "cbranchsi4" [(set (pc) - (if_then_else (match_operator:SI 0 "comparison_operator" - [(match_operand:SI 1 "register_operand") - (match_operand:SI 2 "rx_source_operand")]) + (if_then_else (match_operator 0 "comparison_operator" + [(match_operand:SI 1 "register_operand") + (match_operand:SI 2 "rx_source_operand")]) (label_ref (match_operand 3 "")) (pc))) ] @@ -169,7 +172,7 @@ (define_insn_and_split "*cbranchsi4_" [(set (pc) - (if_then_else (most_cond:SI (match_operand:SI 0 "register_operand" "r") + (if_then_else (most_cond (match_operand:SI 0 "register_operand" "r") (match_operand:SI 1 "rx_source_operand" "riQ")) (label_ref (match_operand 2 "" "")) (pc))) @@ -189,11 +192,106 @@ " ) +;; ----------------------------------------------------------------------------- +;; These two are the canonical TST/branch insns. However, GCC +;; generates a wide variety of tst-like patterns, we catch those +;; below. +(define_insn_and_split "*tstbranchsi4_" + [(set (pc) + (if_then_else (zs_cond (and:SI (match_operand:SI 0 "register_operand" "r") + (match_operand:SI 1 "rx_source_operand" "riQ")) + (const_int 0)) + (label_ref (match_operand 2 "" "")) + (pc))) + ] + "" + "#" + "reload_completed" + [(const_int 0)] + " + emit_insn (gen_tstsi (operands[0], operands[1])); + + emit_jump_insn (gen_conditional_branch (operands[2], + gen_rtx_fmt_ee (, CCmode, + gen_rtx_REG (CCmode, CC_REG), const0_rtx))); + " +) + +;; Inverse of above +(define_insn_and_split "*tstbranchsi4_" + [(set (pc) + (if_then_else (zs_cond (and:SI (match_operand:SI 0 "register_operand" "r") + (match_operand:SI 1 "rx_source_operand" "riQ")) + (const_int 0)) + (pc) + (label_ref (match_operand 2 "" "")))) + ] + "" + "#" + "reload_completed" + [(const_int 0)] + " + emit_insn (gen_tstsi (operands[0], operands[1])); + + emit_jump_insn (gen_conditional_branch (operands[2], + gen_rtx_fmt_ee (reverse_condition (), CCmode, + gen_rtx_REG (CCmode, CC_REG), const0_rtx))); + " +) + +;; Various other ways that GCC codes "var & const" + +(define_insn_and_split "*tstbranchsi4m_eq" + [(set (pc) + (if_then_else (eq (zero_extract:SI (match_operand:SI 0 "register_operand" "r") + (match_operand 1 "rx_constshift_operand" "i") + (match_operand 2 "rx_constshift_operand" "i")) + (const_int 0)) + (label_ref (match_operand 3 "" "")) + (pc))) + ] + "" + "#" + "" + [(set (pc) + (if_then_else (eq (and:SI (match_dup 0) + (match_dup 4)) + (const_int 0)) + (label_ref (match_dup 3)) + (pc))) + ] + "operands[4] = GEN_INT (((1 << INTVAL (operands[1]))-1) << INTVAL (operands[2]));" +) + +(define_insn_and_split "*tstbranchsi4m_ne" + [(set (pc) + (if_then_else (ne (zero_extract:SI (match_operand:SI 0 "register_operand" "r") + (match_operand 1 "rx_constshift_operand" "i") + (match_operand 2 "rx_constshift_operand" "i")) + (const_int 0)) + (label_ref (match_operand 3 "" "")) + (pc))) + ] + "" + "#" + "" + [(set (pc) + (if_then_else (ne (and:SI (match_dup 0) + (match_dup 4)) + (const_int 0)) + (label_ref (match_dup 3)) + (pc))) + ] + "operands[4] = GEN_INT (((1 << INTVAL (operands[1]))-1) << INTVAL (operands[2]));" +) + +;; ----------------------------------------------------------------------------- + (define_expand "cbranchsf4" [(set (pc) - (if_then_else (match_operator:SF 0 "comparison_operator" - [(match_operand:SF 1 "register_operand") - (match_operand:SF 2 "rx_source_operand")]) + (if_then_else (match_operator 0 "comparison_operator" + [(match_operand:SF 1 "register_operand") + (match_operand:SF 2 "rx_source_operand")]) (label_ref (match_operand 3 "")) (pc))) ] @@ -203,8 +301,8 @@ (define_insn_and_split "*cbranchsf4_" [(set (pc) - (if_then_else (most_cond:SF (match_operand:SF 0 "register_operand" "r") - (match_operand:SF 1 "rx_source_operand" "rFiQ")) + (if_then_else (most_cond (match_operand:SF 0 "register_operand" "r") + (match_operand:SF 1 "rx_source_operand" "rFiQ")) (label_ref (match_operand 2 "" "")) (pc))) ] Index: gcc/config/i386/i386.md =================================================================== --- gcc/config/i386/i386.md (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/config/i386/i386.md (.../branches/gcc-4_5-branch) (wersja 163628) @@ -7575,7 +7575,7 @@ (match_operand:SWI 2 "" "m")) (match_dup 1))) (clobber (match_scratch:SWI 0 "="))] - "ix86_binary_operator_ok (PLUS, mode, operands)" + "!(MEM_P (operands[1]) && MEM_P (operands[2]))" "add{}\t{%2, %0|%0, %2}" [(set_attr "type" "alu") (set_attr "mode" "")]) @@ -8999,7 +8999,7 @@ (const_int 0))) (clobber (match_scratch:SWI 0 "="))] "ix86_match_ccmode (insn, CCNOmode) - && ix86_binary_operator_ok (, mode, operands)" + && !(MEM_P (operands[1]) && MEM_P (operands[2]))" "{}\t{%2, %0|%0, %2}" [(set_attr "type" "alu") (set_attr "mode" "")]) Index: gcc/config/i386/sse.md =================================================================== --- gcc/config/i386/sse.md (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/config/i386/sse.md (.../branches/gcc-4_5-branch) (wersja 163628) @@ -9535,7 +9535,7 @@ [(set (match_operand:V8HI 0 "register_operand" "=x") (sign_extend:V8HI (vec_select:V8QI - (match_operand:V16QI 1 "register_operand" "x") + (match_operand:V16QI 1 "nonimmediate_operand" "xm") (parallel [(const_int 0) (const_int 1) (const_int 2) @@ -9551,32 +9551,11 @@ (set_attr "prefix" "maybe_vex") (set_attr "mode" "TI")]) -(define_insn "*sse4_1_extendv8qiv8hi2" - [(set (match_operand:V8HI 0 "register_operand" "=x") - (sign_extend:V8HI - (vec_select:V8QI - (vec_duplicate:V16QI - (match_operand:V8QI 1 "nonimmediate_operand" "xm")) - (parallel [(const_int 0) - (const_int 1) - (const_int 2) - (const_int 3) - (const_int 4) - (const_int 5) - (const_int 6) - (const_int 7)]))))] - "TARGET_SSE4_1" - "%vpmovsxbw\t{%1, %0|%0, %1}" - [(set_attr "type" "ssemov") - (set_attr "prefix_extra" "1") - (set_attr "prefix" "maybe_vex") - (set_attr "mode" "TI")]) - (define_insn "sse4_1_extendv4qiv4si2" [(set (match_operand:V4SI 0 "register_operand" "=x") (sign_extend:V4SI (vec_select:V4QI - (match_operand:V16QI 1 "register_operand" "x") + (match_operand:V16QI 1 "nonimmediate_operand" "xm") (parallel [(const_int 0) (const_int 1) (const_int 2) @@ -9588,28 +9567,11 @@ (set_attr "prefix" "maybe_vex") (set_attr "mode" "TI")]) -(define_insn "*sse4_1_extendv4qiv4si2" - [(set (match_operand:V4SI 0 "register_operand" "=x") - (sign_extend:V4SI - (vec_select:V4QI - (vec_duplicate:V16QI - (match_operand:V4QI 1 "nonimmediate_operand" "xm")) - (parallel [(const_int 0) - (const_int 1) - (const_int 2) - (const_int 3)]))))] - "TARGET_SSE4_1" - "%vpmovsxbd\t{%1, %0|%0, %1}" - [(set_attr "type" "ssemov") - (set_attr "prefix_extra" "1") - (set_attr "prefix" "maybe_vex") - (set_attr "mode" "TI")]) - (define_insn "sse4_1_extendv2qiv2di2" [(set (match_operand:V2DI 0 "register_operand" "=x") (sign_extend:V2DI (vec_select:V2QI - (match_operand:V16QI 1 "register_operand" "x") + (match_operand:V16QI 1 "nonimmediate_operand" "xm") (parallel [(const_int 0) (const_int 1)]))))] "TARGET_SSE4_1" @@ -9619,26 +9581,11 @@ (set_attr "prefix" "maybe_vex") (set_attr "mode" "TI")]) -(define_insn "*sse4_1_extendv2qiv2di2" - [(set (match_operand:V2DI 0 "register_operand" "=x") - (sign_extend:V2DI - (vec_select:V2QI - (vec_duplicate:V16QI - (match_operand:V2QI 1 "nonimmediate_operand" "xm")) - (parallel [(const_int 0) - (const_int 1)]))))] - "TARGET_SSE4_1" - "%vpmovsxbq\t{%1, %0|%0, %1}" - [(set_attr "type" "ssemov") - (set_attr "prefix_extra" "1") - (set_attr "prefix" "maybe_vex") - (set_attr "mode" "TI")]) - (define_insn "sse4_1_extendv4hiv4si2" [(set (match_operand:V4SI 0 "register_operand" "=x") (sign_extend:V4SI (vec_select:V4HI - (match_operand:V8HI 1 "register_operand" "x") + (match_operand:V8HI 1 "nonimmediate_operand" "xm") (parallel [(const_int 0) (const_int 1) (const_int 2) @@ -9650,28 +9597,11 @@ (set_attr "prefix" "maybe_vex") (set_attr "mode" "TI")]) -(define_insn "*sse4_1_extendv4hiv4si2" - [(set (match_operand:V4SI 0 "register_operand" "=x") - (sign_extend:V4SI - (vec_select:V4HI - (vec_duplicate:V8HI - (match_operand:V2HI 1 "nonimmediate_operand" "xm")) - (parallel [(const_int 0) - (const_int 1) - (const_int 2) - (const_int 3)]))))] - "TARGET_SSE4_1" - "%vpmovsxwd\t{%1, %0|%0, %1}" - [(set_attr "type" "ssemov") - (set_attr "prefix_extra" "1") - (set_attr "prefix" "maybe_vex") - (set_attr "mode" "TI")]) - (define_insn "sse4_1_extendv2hiv2di2" [(set (match_operand:V2DI 0 "register_operand" "=x") (sign_extend:V2DI (vec_select:V2HI - (match_operand:V8HI 1 "register_operand" "x") + (match_operand:V8HI 1 "nonimmediate_operand" "xm") (parallel [(const_int 0) (const_int 1)]))))] "TARGET_SSE4_1" @@ -9681,26 +9611,11 @@ (set_attr "prefix" "maybe_vex") (set_attr "mode" "TI")]) -(define_insn "*sse4_1_extendv2hiv2di2" - [(set (match_operand:V2DI 0 "register_operand" "=x") - (sign_extend:V2DI - (vec_select:V2HI - (vec_duplicate:V8HI - (match_operand:V8HI 1 "nonimmediate_operand" "xm")) - (parallel [(const_int 0) - (const_int 1)]))))] - "TARGET_SSE4_1" - "%vpmovsxwq\t{%1, %0|%0, %1}" - [(set_attr "type" "ssemov") - (set_attr "prefix_extra" "1") - (set_attr "prefix" "maybe_vex") - (set_attr "mode" "TI")]) - (define_insn "sse4_1_extendv2siv2di2" [(set (match_operand:V2DI 0 "register_operand" "=x") (sign_extend:V2DI (vec_select:V2SI - (match_operand:V4SI 1 "register_operand" "x") + (match_operand:V4SI 1 "nonimmediate_operand" "xm") (parallel [(const_int 0) (const_int 1)]))))] "TARGET_SSE4_1" @@ -9710,26 +9625,11 @@ (set_attr "prefix" "maybe_vex") (set_attr "mode" "TI")]) -(define_insn "*sse4_1_extendv2siv2di2" - [(set (match_operand:V2DI 0 "register_operand" "=x") - (sign_extend:V2DI - (vec_select:V2SI - (vec_duplicate:V4SI - (match_operand:V2SI 1 "nonimmediate_operand" "xm")) - (parallel [(const_int 0) - (const_int 1)]))))] - "TARGET_SSE4_1" - "%vpmovsxdq\t{%1, %0|%0, %1}" - [(set_attr "type" "ssemov") - (set_attr "prefix_extra" "1") - (set_attr "prefix" "maybe_vex") - (set_attr "mode" "TI")]) - (define_insn "sse4_1_zero_extendv8qiv8hi2" [(set (match_operand:V8HI 0 "register_operand" "=x") (zero_extend:V8HI (vec_select:V8QI - (match_operand:V16QI 1 "register_operand" "x") + (match_operand:V16QI 1 "nonimmediate_operand" "xm") (parallel [(const_int 0) (const_int 1) (const_int 2) @@ -9745,32 +9645,11 @@ (set_attr "prefix" "maybe_vex") (set_attr "mode" "TI")]) -(define_insn "*sse4_1_zero_extendv8qiv8hi2" - [(set (match_operand:V8HI 0 "register_operand" "=x") - (zero_extend:V8HI - (vec_select:V8QI - (vec_duplicate:V16QI - (match_operand:V8QI 1 "nonimmediate_operand" "xm")) - (parallel [(const_int 0) - (const_int 1) - (const_int 2) - (const_int 3) - (const_int 4) - (const_int 5) - (const_int 6) - (const_int 7)]))))] - "TARGET_SSE4_1" - "%vpmovzxbw\t{%1, %0|%0, %1}" - [(set_attr "type" "ssemov") - (set_attr "prefix_extra" "1") - (set_attr "prefix" "maybe_vex") - (set_attr "mode" "TI")]) - (define_insn "sse4_1_zero_extendv4qiv4si2" [(set (match_operand:V4SI 0 "register_operand" "=x") (zero_extend:V4SI (vec_select:V4QI - (match_operand:V16QI 1 "register_operand" "x") + (match_operand:V16QI 1 "nonimmediate_operand" "xm") (parallel [(const_int 0) (const_int 1) (const_int 2) @@ -9782,28 +9661,11 @@ (set_attr "prefix" "maybe_vex") (set_attr "mode" "TI")]) -(define_insn "*sse4_1_zero_extendv4qiv4si2" - [(set (match_operand:V4SI 0 "register_operand" "=x") - (zero_extend:V4SI - (vec_select:V4QI - (vec_duplicate:V16QI - (match_operand:V4QI 1 "nonimmediate_operand" "xm")) - (parallel [(const_int 0) - (const_int 1) - (const_int 2) - (const_int 3)]))))] - "TARGET_SSE4_1" - "%vpmovzxbd\t{%1, %0|%0, %1}" - [(set_attr "type" "ssemov") - (set_attr "prefix_extra" "1") - (set_attr "prefix" "maybe_vex") - (set_attr "mode" "TI")]) - (define_insn "sse4_1_zero_extendv2qiv2di2" [(set (match_operand:V2DI 0 "register_operand" "=x") (zero_extend:V2DI (vec_select:V2QI - (match_operand:V16QI 1 "register_operand" "x") + (match_operand:V16QI 1 "nonimmediate_operand" "xm") (parallel [(const_int 0) (const_int 1)]))))] "TARGET_SSE4_1" @@ -9813,26 +9675,11 @@ (set_attr "prefix" "maybe_vex") (set_attr "mode" "TI")]) -(define_insn "*sse4_1_zero_extendv2qiv2di2" - [(set (match_operand:V2DI 0 "register_operand" "=x") - (zero_extend:V2DI - (vec_select:V2QI - (vec_duplicate:V16QI - (match_operand:V2QI 1 "nonimmediate_operand" "xm")) - (parallel [(const_int 0) - (const_int 1)]))))] - "TARGET_SSE4_1" - "%vpmovzxbq\t{%1, %0|%0, %1}" - [(set_attr "type" "ssemov") - (set_attr "prefix_extra" "1") - (set_attr "prefix" "maybe_vex") - (set_attr "mode" "TI")]) - (define_insn "sse4_1_zero_extendv4hiv4si2" [(set (match_operand:V4SI 0 "register_operand" "=x") (zero_extend:V4SI (vec_select:V4HI - (match_operand:V8HI 1 "register_operand" "x") + (match_operand:V8HI 1 "nonimmediate_operand" "xm") (parallel [(const_int 0) (const_int 1) (const_int 2) @@ -9844,28 +9691,11 @@ (set_attr "prefix" "maybe_vex") (set_attr "mode" "TI")]) -(define_insn "*sse4_1_zero_extendv4hiv4si2" - [(set (match_operand:V4SI 0 "register_operand" "=x") - (zero_extend:V4SI - (vec_select:V4HI - (vec_duplicate:V8HI - (match_operand:V4HI 1 "nonimmediate_operand" "xm")) - (parallel [(const_int 0) - (const_int 1) - (const_int 2) - (const_int 3)]))))] - "TARGET_SSE4_1" - "%vpmovzxwd\t{%1, %0|%0, %1}" - [(set_attr "type" "ssemov") - (set_attr "prefix_extra" "1") - (set_attr "prefix" "maybe_vex") - (set_attr "mode" "TI")]) - (define_insn "sse4_1_zero_extendv2hiv2di2" [(set (match_operand:V2DI 0 "register_operand" "=x") (zero_extend:V2DI (vec_select:V2HI - (match_operand:V8HI 1 "register_operand" "x") + (match_operand:V8HI 1 "nonimmediate_operand" "xm") (parallel [(const_int 0) (const_int 1)]))))] "TARGET_SSE4_1" @@ -9875,26 +9705,11 @@ (set_attr "prefix" "maybe_vex") (set_attr "mode" "TI")]) -(define_insn "*sse4_1_zero_extendv2hiv2di2" - [(set (match_operand:V2DI 0 "register_operand" "=x") - (zero_extend:V2DI - (vec_select:V2HI - (vec_duplicate:V8HI - (match_operand:V2HI 1 "nonimmediate_operand" "xm")) - (parallel [(const_int 0) - (const_int 1)]))))] - "TARGET_SSE4_1" - "%vpmovzxwq\t{%1, %0|%0, %1}" - [(set_attr "type" "ssemov") - (set_attr "prefix_extra" "1") - (set_attr "prefix" "maybe_vex") - (set_attr "mode" "TI")]) - (define_insn "sse4_1_zero_extendv2siv2di2" [(set (match_operand:V2DI 0 "register_operand" "=x") (zero_extend:V2DI (vec_select:V2SI - (match_operand:V4SI 1 "register_operand" "x") + (match_operand:V4SI 1 "nonimmediate_operand" "xm") (parallel [(const_int 0) (const_int 1)]))))] "TARGET_SSE4_1" @@ -9904,21 +9719,6 @@ (set_attr "prefix" "maybe_vex") (set_attr "mode" "TI")]) -(define_insn "*sse4_1_zero_extendv2siv2di2" - [(set (match_operand:V2DI 0 "register_operand" "=x") - (zero_extend:V2DI - (vec_select:V2SI - (vec_duplicate:V4SI - (match_operand:V2SI 1 "nonimmediate_operand" "xm")) - (parallel [(const_int 0) - (const_int 1)]))))] - "TARGET_SSE4_1" - "%vpmovzxdq\t{%1, %0|%0, %1}" - [(set_attr "type" "ssemov") - (set_attr "prefix_extra" "1") - (set_attr "prefix" "maybe_vex") - (set_attr "mode" "TI")]) - ;; ptestps/ptestpd are very similar to comiss and ucomiss when ;; setting FLAGS_REG. But it is not a really compare instruction. (define_insn "avx_vtestp" Index: gcc/config/i386/i386.c =================================================================== --- gcc/config/i386/i386.c (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/config/i386/i386.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -9491,8 +9491,7 @@ to test cfun for being non-NULL. */ if (TARGET_K6 && cfun && optimize_function_for_speed_p (cfun) && base_reg && !index_reg && !disp - && REG_P (base_reg) - && REGNO_REG_CLASS (REGNO (base_reg)) == SIREG) + && REG_P (base_reg) && REGNO (base_reg) == SI_REG) disp = const0_rtx; /* Special case: encode reg+reg instead of reg*2. */ Index: gcc/config/ia64/ia64.md =================================================================== --- gcc/config/ia64/ia64.md (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/config/ia64/ia64.md (.../branches/gcc-4_5-branch) (wersja 163628) @@ -3988,7 +3988,7 @@ [(match_operand:BI 2 "register_operand" "") (match_operand:BI 3 "const_int_operand" "")]))] "" - "ia64_expand_compare (&operands[0], &operands[1], &operands[2]);") + "ia64_expand_compare (&operands[1], &operands[2], &operands[3]);") (define_expand "cstoresi4" [(set (match_operand:DI 0 "gr_register_operand" "") Index: gcc/config/rs6000/x-aix =================================================================== --- gcc/config/rs6000/x-aix (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/config/rs6000/x-aix (.../branches/gcc-4_5-branch) (wersja 163628) @@ -2,5 +2,5 @@ build/genautomata : override LDFLAGS += -Wl,-bmaxdata:0x20000000 # jc1 requires more than 256MB of data -jc1 : override LDFLAGS += -Wl,-bmaxdata:0x20000000 +$(COMPILERS) : override LDFLAGS += -Wl,-bmaxdata:0x40000000 Index: gcc/config/pa/pa.h =================================================================== --- gcc/config/pa/pa.h (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/config/pa/pa.h (.../branches/gcc-4_5-branch) (wersja 163628) @@ -325,8 +325,9 @@ #define BIGGEST_ALIGNMENT (2 * BITS_PER_WORD) /* Get around hp-ux assembler bug, and make strcpy of constants fast. */ -#define CONSTANT_ALIGNMENT(CODE, TYPEALIGN) \ - ((TYPEALIGN) < 32 ? 32 : (TYPEALIGN)) +#define CONSTANT_ALIGNMENT(EXP, ALIGN) \ + (TREE_CODE (EXP) == STRING_CST \ + && (ALIGN) < BITS_PER_WORD ? BITS_PER_WORD : (ALIGN)) /* Make arrays of chars word-aligned for the same reasons. */ #define DATA_ALIGNMENT(TYPE, ALIGN) \ Index: gcc/convert.c =================================================================== --- gcc/convert.c (.../tags/gcc_4_5_1_release) (wersja 163628) +++ gcc/convert.c (.../branches/gcc-4_5-branch) (wersja 163628) @@ -799,14 +799,7 @@ /* This is not correct for ABS_EXPR, since we must test the sign before truncation. */ { - tree typex; - - /* Don't do unsigned arithmetic where signed was wanted, - or vice versa. */ - if (TYPE_UNSIGNED (TREE_TYPE (expr))) - typex = unsigned_type_for (type); - else - typex = signed_type_for (type); + tree typex = unsigned_type_for (type); return convert (type, fold_build1 (ex_form, typex, convert (typex, Index: libstdc++-v3/configure =================================================================== --- libstdc++-v3/configure (.../tags/gcc_4_5_1_release) (wersja 163628) +++ libstdc++-v3/configure (.../branches/gcc-4_5-branch) (wersja 163628) @@ -25562,7 +25562,7 @@ CFLAGS="$chktls_save_CFLAGS" if test "X$thread_CFLAGS" != Xfailed; then CFLAGS="$thread_CFLAGS $chktls_save_CFLAGS" - if test "$cross_compiling" = yes; then : + if test "$cross_compiling" = yes; then : { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error "cannot run test program while cross compiling @@ -44500,7 +44500,7 @@ CFLAGS="$chktls_save_CFLAGS" if test "X$thread_CFLAGS" != Xfailed; then CFLAGS="$thread_CFLAGS $chktls_save_CFLAGS" - if test "$cross_compiling" = yes; then : + if test "$cross_compiling" = yes; then : { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error "cannot run test program while cross compiling @@ -50585,7 +50585,7 @@ CFLAGS="$chktls_save_CFLAGS" if test "X$thread_CFLAGS" != Xfailed; then CFLAGS="$thread_CFLAGS $chktls_save_CFLAGS" - if test "$cross_compiling" = yes; then : + if test "$cross_compiling" = yes; then : { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error "cannot run test program while cross compiling Index: libstdc++-v3/doc/xml/manual/appendix_contributing.xml =================================================================== --- libstdc++-v3/doc/xml/manual/appendix_contributing.xml (.../tags/gcc_4_5_1_release) (wersja 163628) +++ libstdc++-v3/doc/xml/manual/appendix_contributing.xml (.../branches/gcc-4_5-branch) (wersja 163628) @@ -942,10 +942,18 @@ Generating the Doxygen Files The following Makefile rules run Doxygen to generate HTML - docs, XML docs, PDF docs, and the man pages. + docs, XML docs, XML docs as a single file, PDF docs, and the man pages. + Generated files are output into separate sub directores of + doc/doxygen/ in the + build directory, based on the output format. For instance, the + HTML docs will be in doc/doxygen/html. + + + make doc-html-doxygen @@ -954,6 +962,10 @@ + make doc-xml-single-doxygen + + + make doc-pdf-doxygen @@ -1204,23 +1216,30 @@ - For PDF output, something that transforms valid XML to PDF is - required. Possible solutions include - dblatex, - xmlto, or prince. Other - options are listed on the DocBook - web pages. Please + For PDF output, something that transforms valid Docbook XML to PDF is + required. Possible solutions include dblatex, + xmlto, or prince. Of + these, dblatex is the default. Other + options are listed on the DocBook web pages. Please consult the libstdc++@gcc.gnu.org list when preparing printed manuals for current best practice and suggestions. - Make sure that the XML documentation and markup is valid for - any change. This can be done easily, with the validation rules - in the Makefile, which is equivalent to doing: + For Texinfo output, something that transforms valid Docbook + XML to Texinfo is required. The default choice is docbook2X. + + Please make sure that the XML documentation and markup is valid for + any change. This can be done easily, with the validation rule + detailed below, which is equivalent to doing: + + xmllint --noout --valid xml/index.xml @@ -1239,6 +1258,14 @@ + Generated files are output into separate sub directores of + doc/docbook/ in the + build directory, based on the output format. For instance, the + HTML docs will be in doc/docbook/html. + + + make doc-html-docbook @@ -1492,20 +1519,90 @@ The following Makefile rules are defaults, and are usually - aliased to variable rules. + aliased to more detailed rules. They are shortcuts for + generating HTML, PDF, Texinfo, XML, or man files and then collecting + the generated files into the build directory's doc directory. + + + + make doc-html + + - make doc-html + Generates multi-page HTML documentation in the following directories: + + doc/libstdc++-api.html + + + doc/libstdc++-manual.html + + + + + make doc-man + + - make doc-man + Generates man pages in the following directory: + + doc/libstdc++-api.man + + + + + make doc-pdf + + - make doc-pdf + Generates indexed PDF documentation in the following files: + + doc/libstdc++-api.pdf + + + doc/libstdc++-manual.pdf + + + + + + make doc-texinfo + + + + Generates Texinfo documentation in the following files: + + + doc/libstdc++-manual.texinfo + + + + + + make doc-xml + + + + Generates single-file XML documentation in the following files: + + + doc/libstdc++-api.xml + + + doc/libstdc++-manual.xml + + + + + + + Index: libstdc++-v3/doc/Makefile.in =================================================================== --- libstdc++-v3/doc/Makefile.in (.../tags/gcc_4_5_1_release) (wersja 163628) +++ libstdc++-v3/doc/Makefile.in (.../branches/gcc-4_5-branch) (wersja 163628) @@ -267,7 +267,15 @@ # Assumes doxygen, graphviz (with dot), pdflatex installed doxygen_script = ${top_srcdir}/scripts/run_doxygen doxygen_outdir = ${glibcxx_builddir}/doc/doxygen +api_xml = ${doxygen_outdir}/xml/libstdc++-api-single.xml + +# Chance of loooooonnggg creation time on this rule. Iff this fails, +# look at refman.log and see if TeX's memory is exhausted. Symptoms +# include asking a wizard to enlarge capacity. If this is the case, +# find texmf.cnf and add a zero for pool_size, string_vacancies, +# max_strings, and pool_free values. doxygen_pdf = ${doxygen_outdir}/latex/refman.pdf +api_pdf = ${doxygen_outdir}/pdf/libstdc++-api.pdf # Docbook configuration. # Assumes @@ -364,29 +372,25 @@ DTD_FLAGS = --dtdvalid http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd XMLLINT_FLAGS = $(LINT_FLAGS) $(DTD_FLAGS) -# PDF 1 -# fop -FOP = fop -FOP_FLAGS = -d -r +# XML, all one page +# Some info on canonicalization +# http://www.mail-archive.com/help-texinfo@gnu.org/msg00864.html +manual_xml = ${docbook_outdir}/xml/libstdc++-manual-single.xml -# PDF 2 -# xmlto -XML2PDF = xmlto -XML2PDF_FLAGS = -v pdf --skip-validation -o pdf +# HTML, all one page +manual_html = ${docbook_outdir}/html/libstdc++-manual-single.html -# PDF 3 -# xmlroff -XMLROFF = xmlroff -XMLROFF_FLAGS = --format=pdf --backend=cairo --warn=1 --debug=1 --continue +# PDF, via dblatex +manual_pdf = ${docbook_outdir}/pdf/libstdc++-manual.pdf +DBLATEX_FLAGS = --dump --verbose --pdf -o ${manual_pdf} -# PDF 4 -# prince -PRINCE = prince -PRINCE_FLAGS = --log prince.log -o pdf/spine.pdf +# Texinfo, via docbook2X +DB2TEXI_FLAGS = \ + --encoding=utf-8//TRANSLIT \ + --string-param output-file="libstdc++-manual" \ + --string-param directory-category="GNU C++ Library" \ + --string-param explicit-node-names=true -# PDF 5 -# dblatex -DBLATEX_FLAGS = --dump --verbose --pdf -o ${docbook_outdir}/pdf/manual.pdf # Performance doc and graph configuration. # Assumes pychart, beautiful soup installed. @@ -585,20 +589,41 @@ # Documentation Overview # # There are two main source materials for libstdc++ documentation. -# The first is the doxygen markup in libstdc++ sources. And the second -# is the docbook markup in doc/xml/. A third and more obscure option -# deals with charting performance tests. +# The first is the doxygen markup in libstdc++ sources, which is a +# reference to the API. And the second is the docbook markup in +# doc/xml/. +# +# A third and more obscure option deals with charting +# performance tests, and should be considered experimental. -# Default, points to current best sub-rule that is the best conversion. +# Default rules. +# +# Point to best sub-rule for the requested documentation target, +# create, and then copy into toplevel directory with standardized names +# and layouts. + +# HTML +doc-html: doc-html-docbook doc-html-doxygen + cp -R ${docbook_outdir}/html ./libstdc++-manual.html + cp -R ${doxygen_outdir}/html ./libstdc++-api.html + # MAN doc-man: doc-man-doxygen + cp -R ${doxygen_outdir}/man ./libstdc++-api.man # PDF -doc-pdf: doc-pdf-docbook +doc-pdf: doc-pdf-docbook doc-pdf-doxygen + cp ${docbook_outdir}/pdf/libstdc++-manual.pdf . + cp ${doxygen_outdir}/pdf/libstdc++-api.pdf . -# HTML -doc-html: doc-html-docbook +# TEXINFO +doc-texinfo: doc-texinfo-docbook +# XML +doc-xml: doc-xml-single-docbook doc-xml-single-doxygen + cp ${manual_xml} . + cp ${api_xml} . + doc-html-doxygen: -(srcdir=`cd ${top_srcdir}; ${PWD_COMMAND}`; \ builddir=`cd ..; ${PWD_COMMAND}`; \ @@ -616,11 +641,10 @@ builddir=`cd ..; ${PWD_COMMAND}`; \ ${SHELL} ${doxygen_script} \ --host_alias=${host_alias} --mode=xml $${srcdir} $${builddir} NO) - -doc-xml-single-doxygen: +doc-xml-single-doxygen: doc-xml-doxygen @echo "Generating doxygen xml single file..." $(XSLTPROC) ${doxygen_outdir}/xml/combine.xslt \ - ${doxygen_outdir}/xml/index.xml > ${doxygen_outdir}/xml/api-spine.xml; + ${doxygen_outdir}/xml/index.xml > ${api_xml}; doc-latex-doxygen: -(srcdir=`cd ${top_srcdir}; ${PWD_COMMAND}`; \ @@ -628,12 +652,15 @@ ${SHELL} ${doxygen_script} \ --host_alias=${host_alias} --mode=latex $${srcdir} $${builddir} NO) -# Chance of loooooonnggg creation time on this rule. -doc-pdf-doxygen: stamp-latex-doxygen +${doxygen_outdir}/pdf: + mkdir -p ${doxygen_outdir}/pdf + +doc-pdf-doxygen: stamp-latex-doxygen ${doxygen_outdir}/pdf -(cd ${doxygen_outdir}/latex && $(MAKE) -i pdf;) echo "Generating doxygen pdf file..."; if [ -f ${doxygen_pdf} ]; then \ - echo "... ${doxygen_pdf}"; \ + mv ${doxygen_pdf} ${api_pdf} ; \ + echo ":: PDF file is ${api_pdf}"; \ else \ echo "... error"; \ exit 12; \ @@ -658,37 +685,36 @@ fi $(STAMP) stamp-latex-doxygen +${docbook_outdir}/fo: + mkdir -p ${docbook_outdir}/fo + ${docbook_outdir}/html: mkdir -p ${docbook_outdir}/html ${docbook_outdir}/pdf: mkdir -p ${docbook_outdir}/pdf -${docbook_outdir}/fo: - mkdir -p ${docbook_outdir}/fo +${docbook_outdir}/texinfo: + mkdir -p ${docbook_outdir}/texinfo ${docbook_outdir}/xml: mkdir -p ${docbook_outdir}/xml doc-xml-validate-docbook: $(xml_sources) @echo "Generating XML validation log..." $(XMLLINT) $(XMLLINT_FLAGS) ${top_srcdir}/doc/xml/spine.xml - doc-xml-single-docbook: $(xml_sources) ${docbook_outdir}/xml @echo "Generating XML single..." - $(XMLLINT) --xinclude --noent --noblanks \ - -o ${docbook_outdir}/xml/spine-single.xml \ - ${top_srcdir}/doc/xml/spine.xml + $(XMLLINT) --xinclude --noent --noblanks --nocdata --nsclean --c14n \ + ${top_srcdir}/doc/xml/manual/spine.xml > ${manual_xml} # HTML, index plus chapters doc-html-docbook: $(xml_sources) ${docbook_outdir}/html @echo "Generating html files..." $(XSLTPROC) $(XSLTPROC_FLAGS) -o ${docbook_outdir}/html/ \ $(XSL_HTML_STYLE) ${top_srcdir}/doc/xml/spine.xml - -# HTML, all one page doc-html-single-docbook: $(xml_sources) ${docbook_outdir}/html @echo "Generating html single file..." - $(XSLTPROC) $(XSLTPROC_FLAGS) -o ${docbook_outdir}/html/ \ + $(XSLTPROC) $(XSLTPROC_FLAGS) -o ${manual_html} \ $(XSL_HTML_SINGLE_STYLE) ${top_srcdir}/doc/xml/spine.xml # FO @@ -696,29 +722,14 @@ @echo "Generating FO files..." $(XSLTPROC) $(XSLTPROC_FLAGS) -o ${docbook_outdir}/fo/spine.fo \ $(XSL_FO_STYLE) ${top_srcdir}/doc/xml/spine.xml -doc-pdf-fop-xml-docbook: $(xml_sources) ${glibcxx_builddir}/doc/pdf - @echo "Generating pdf fop files from xml..." - $(FOP) $(FOP_FLAGS) -xml ${top_srcdir}/doc/xml/spine.xml \ - -xsl $(XSL_FO_STYLE) -pdf ${docbook_outdir}/pdf/spine.pdf +doc-pdf-docbook: doc-pdf-dblatex-docbook -doc-pdf-fop-fo-docbook: $(xml_sources) ${glibcxx_builddir}/doc/pdf doc-fo - @echo "Generating pdf fop files from fo..." - $(FOP) $(FOP_FLAGS) -fo ${docbook_outdir}/fo/spine.fo \ - -pdf ${docbook_outdir}/pdf/spine.pdf -doc-pdf-xmlto-docbook: $(xml_sources) ${docbook_outdir}/pdf - @echo "Generating pdf xmlto files..." - $(XML2PDF) $(XML2PDF_FLAGS) ${top_srcdir}/doc/xml/spine.xml -doc-pdf-xmlroff-docbook: $(xml_sources) doc-fo - @echo "Generating pdf xmlroff files..." - $(XMLROFF) $(XMLROFF_FLAGS) ${docbook_outdir}/fo/spine.fo -doc-pdf-prince-docbook: $(xml_sources) ${docbook_outdir}/pdf - @echo "Generating pdf prince files..." - $(PRINCE) $(PRINCE_FLAGS) ${top_srcdir}/xml/spine.xml doc-pdf-dblatex-docbook: $(xml_sources) ${docbook_outdir}/pdf @echo "Generating pdf dblatex files..." dblatex $(DBLATEX_FLAGS) ${top_srcdir}/doc/xml/spine.xml - -doc-pdf-docbook: doc-pdf-dblatex-docbook +doc-texinfo-docbook: doc-xml-single-docbook ${docbook_outdir}/texinfo + @echo "Generating texinfo files..." + db2x_docbook2texi $(DB2TEXI_FLAGS) ${manual_xml} doc-html-performance: -@(chmod + ${doc_performance_script}; \ ${doc_performance_script} ${top_srcdir} \ @@ -730,7 +741,7 @@ # To remove directories. clean-local: - rm -rf man html pdf fo xml doxygen docbook stamp* + rm -rf man html pdf fo xml doxygen docbook stamp* ./libstdc++-* db2t* # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. Index: libstdc++-v3/doc/Makefile.am =================================================================== --- libstdc++-v3/doc/Makefile.am (.../tags/gcc_4_5_1_release) (wersja 163628) +++ libstdc++-v3/doc/Makefile.am (.../branches/gcc-4_5-branch) (wersja 163628) @@ -25,26 +25,46 @@ # Documentation Overview # # There are two main source materials for libstdc++ documentation. -# The first is the doxygen markup in libstdc++ sources. And the second -# is the docbook markup in doc/xml/. A third and more obscure option -# deals with charting performance tests. +# The first is the doxygen markup in libstdc++ sources, which is a +# reference to the API. And the second is the docbook markup in +# doc/xml/. +# +# A third and more obscure option deals with charting +# performance tests, and should be considered experimental. -# Default, points to current best sub-rule that is the best conversion. +# Default rules. +# +# Point to best sub-rule for the requested documentation target, +# create, and then copy into toplevel directory with standardized names +# and layouts. + +# HTML +doc-html: doc-html-docbook doc-html-doxygen + cp -R ${docbook_outdir}/html ./libstdc++-manual.html + cp -R ${doxygen_outdir}/html ./libstdc++-api.html + # MAN doc-man: doc-man-doxygen + cp -R ${doxygen_outdir}/man ./libstdc++-api.man # PDF -doc-pdf: doc-pdf-docbook +doc-pdf: doc-pdf-docbook doc-pdf-doxygen + cp ${docbook_outdir}/pdf/libstdc++-manual.pdf . + cp ${doxygen_outdir}/pdf/libstdc++-api.pdf . -# HTML -doc-html: doc-html-docbook +# TEXINFO +doc-texinfo: doc-texinfo-docbook +# XML +doc-xml: doc-xml-single-docbook doc-xml-single-doxygen + cp ${manual_xml} . + cp ${api_xml} . + # Doxygen configuration # Assumes doxygen, graphviz (with dot), pdflatex installed doxygen_script=${top_srcdir}/scripts/run_doxygen doxygen_outdir = ${glibcxx_builddir}/doc/doxygen -doxygen_pdf = ${doxygen_outdir}/latex/refman.pdf doc-html-doxygen: -(srcdir=`cd ${top_srcdir}; ${PWD_COMMAND}`; \ @@ -64,10 +84,11 @@ ${SHELL} ${doxygen_script} \ --host_alias=${host_alias} --mode=xml $${srcdir} $${builddir} NO) -doc-xml-single-doxygen: +api_xml = ${doxygen_outdir}/xml/libstdc++-api-single.xml +doc-xml-single-doxygen: doc-xml-doxygen @echo "Generating doxygen xml single file..." $(XSLTPROC) ${doxygen_outdir}/xml/combine.xslt \ - ${doxygen_outdir}/xml/index.xml > ${doxygen_outdir}/xml/api-spine.xml; + ${doxygen_outdir}/xml/index.xml > ${api_xml}; doc-latex-doxygen: -(srcdir=`cd ${top_srcdir}; ${PWD_COMMAND}`; \ @@ -75,12 +96,23 @@ ${SHELL} ${doxygen_script} \ --host_alias=${host_alias} --mode=latex $${srcdir} $${builddir} NO) -# Chance of loooooonnggg creation time on this rule. -doc-pdf-doxygen: stamp-latex-doxygen +# Chance of loooooonnggg creation time on this rule. Iff this fails, +# look at refman.log and see if TeX's memory is exhausted. Symptoms +# include asking a wizard to enlarge capacity. If this is the case, +# find texmf.cnf and add a zero for pool_size, string_vacancies, +# max_strings, and pool_free values. +doxygen_pdf = ${doxygen_outdir}/latex/refman.pdf +api_pdf = ${doxygen_outdir}/pdf/libstdc++-api.pdf + +${doxygen_outdir}/pdf: + mkdir -p ${doxygen_outdir}/pdf + +doc-pdf-doxygen: stamp-latex-doxygen ${doxygen_outdir}/pdf -(cd ${doxygen_outdir}/latex && $(MAKE) -i pdf;) echo "Generating doxygen pdf file..."; if [ -f ${doxygen_pdf} ]; then \ - echo "... ${doxygen_pdf}"; \ + mv ${doxygen_pdf} ${api_pdf} ; \ + echo ":: PDF file is ${api_pdf}"; \ else \ echo "... error"; \ exit 12; \ @@ -193,14 +225,17 @@ #XSL_HTML_SINGLE_STYLE = $(XSL_STYLE_DIR)/xhtml/onechunk.xsl XSL_HTML_SINGLE_STYLE = $(XSL_STYLE_DIR)/xhtml/docbook.xsl +${docbook_outdir}/fo: + mkdir -p ${docbook_outdir}/fo + ${docbook_outdir}/html: mkdir -p ${docbook_outdir}/html ${docbook_outdir}/pdf: mkdir -p ${docbook_outdir}/pdf -${docbook_outdir}/fo: - mkdir -p ${docbook_outdir}/fo +${docbook_outdir}/texinfo: + mkdir -p ${docbook_outdir}/texinfo ${docbook_outdir}/xml: mkdir -p ${docbook_outdir}/xml @@ -216,11 +251,14 @@ @echo "Generating XML validation log..." $(XMLLINT) $(XMLLINT_FLAGS) ${top_srcdir}/doc/xml/spine.xml +# XML, all one page +# Some info on canonicalization +# http://www.mail-archive.com/help-texinfo@gnu.org/msg00864.html +manual_xml = ${docbook_outdir}/xml/libstdc++-manual-single.xml doc-xml-single-docbook: $(xml_sources) ${docbook_outdir}/xml @echo "Generating XML single..." - $(XMLLINT) --xinclude --noent --noblanks \ - -o ${docbook_outdir}/xml/spine-single.xml \ - ${top_srcdir}/doc/xml/spine.xml + $(XMLLINT) --xinclude --noent --noblanks --nocdata --nsclean --c14n \ + ${top_srcdir}/doc/xml/manual/spine.xml > ${manual_xml} # HTML, index plus chapters doc-html-docbook: $(xml_sources) ${docbook_outdir}/html @@ -229,9 +267,10 @@ $(XSL_HTML_STYLE) ${top_srcdir}/doc/xml/spine.xml # HTML, all one page +manual_html = ${docbook_outdir}/html/libstdc++-manual-single.html doc-html-single-docbook: $(xml_sources) ${docbook_outdir}/html @echo "Generating html single file..." - $(XSLTPROC) $(XSLTPROC_FLAGS) -o ${docbook_outdir}/html/ \ + $(XSLTPROC) $(XSLTPROC_FLAGS) -o ${manual_html} \ $(XSL_HTML_SINGLE_STYLE) ${top_srcdir}/doc/xml/spine.xml # FO @@ -240,52 +279,24 @@ $(XSLTPROC) $(XSLTPROC_FLAGS) -o ${docbook_outdir}/fo/spine.fo \ $(XSL_FO_STYLE) ${top_srcdir}/doc/xml/spine.xml -# PDF 1 -# fop -FOP = fop -FOP_FLAGS = -d -r -doc-pdf-fop-xml-docbook: $(xml_sources) ${glibcxx_builddir}/doc/pdf - @echo "Generating pdf fop files from xml..." - $(FOP) $(FOP_FLAGS) -xml ${top_srcdir}/doc/xml/spine.xml \ - -xsl $(XSL_FO_STYLE) -pdf ${docbook_outdir}/pdf/spine.pdf +# PDF, via dblatex +manual_pdf = ${docbook_outdir}/pdf/libstdc++-manual.pdf +DBLATEX_FLAGS = --dump --verbose --pdf -o ${manual_pdf} +doc-pdf-docbook: doc-pdf-dblatex-docbook -doc-pdf-fop-fo-docbook: $(xml_sources) ${glibcxx_builddir}/doc/pdf doc-fo - @echo "Generating pdf fop files from fo..." - $(FOP) $(FOP_FLAGS) -fo ${docbook_outdir}/fo/spine.fo \ - -pdf ${docbook_outdir}/pdf/spine.pdf - -# PDF 2 -# xmlto -XML2PDF = xmlto -XML2PDF_FLAGS = -v pdf --skip-validation -o pdf -doc-pdf-xmlto-docbook: $(xml_sources) ${docbook_outdir}/pdf - @echo "Generating pdf xmlto files..." - $(XML2PDF) $(XML2PDF_FLAGS) ${top_srcdir}/doc/xml/spine.xml - -# PDF 3 -# xmlroff -XMLROFF = xmlroff -XMLROFF_FLAGS = --format=pdf --backend=cairo --warn=1 --debug=1 --continue -doc-pdf-xmlroff-docbook: $(xml_sources) doc-fo - @echo "Generating pdf xmlroff files..." - $(XMLROFF) $(XMLROFF_FLAGS) ${docbook_outdir}/fo/spine.fo - -# PDF 4 -# prince -PRINCE = prince -PRINCE_FLAGS = --log prince.log -o pdf/spine.pdf -doc-pdf-prince-docbook: $(xml_sources) ${docbook_outdir}/pdf - @echo "Generating pdf prince files..." - $(PRINCE) $(PRINCE_FLAGS) ${top_srcdir}/xml/spine.xml - -# PDF 5 -# dblatex -DBLATEX_FLAGS = --dump --verbose --pdf -o ${docbook_outdir}/pdf/manual.pdf doc-pdf-dblatex-docbook: $(xml_sources) ${docbook_outdir}/pdf @echo "Generating pdf dblatex files..." dblatex $(DBLATEX_FLAGS) ${top_srcdir}/doc/xml/spine.xml -doc-pdf-docbook: doc-pdf-dblatex-docbook +# Texinfo, via docbook2X +DB2TEXI_FLAGS = \ + --encoding=utf-8//TRANSLIT \ + --string-param output-file="libstdc++-manual" \ + --string-param directory-category="GNU C++ Library" \ + --string-param explicit-node-names=true +doc-texinfo-docbook: doc-xml-single-docbook ${docbook_outdir}/texinfo + @echo "Generating texinfo files..." + db2x_docbook2texi $(DB2TEXI_FLAGS) ${manual_xml} # Performance doc and graph configuration. @@ -307,4 +318,4 @@ # To remove directories. clean-local: - rm -rf man html pdf fo xml doxygen docbook stamp* + rm -rf man html pdf fo xml doxygen docbook stamp* ./libstdc++-* db2t* Index: libstdc++-v3/doc/doxygen/user.cfg.in =================================================================== --- libstdc++-v3/doc/doxygen/user.cfg.in (.../tags/gcc_4_5_1_release) (wersja 163628) +++ libstdc++-v3/doc/doxygen/user.cfg.in (.../branches/gcc-4_5-branch) (wersja 163628) @@ -1,4 +1,4 @@ -# Doxyfile 1.6.1 +# Doxyfile 1.7.1 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project @@ -180,7 +180,7 @@ # You can put \n's in the value part of an alias to insert newlines. ALIASES = "doctodo=@todo\nDoc me! See doc/doxygen/TODO and http://gcc.gnu.org/ml/libstdc++/2002-02/msg00003.html for more. " \ - "isiosfwd=One of the @link io I/O @endlink typedefs" + "isiosfwd=One of the @link io I/O @endlink typedefs" # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C # sources only. Doxygen will then generate output that is more tailored for C. @@ -208,17 +208,15 @@ OPTIMIZE_OUTPUT_VHDL = NO -# Doxygen selects the parser to use depending on the extension of the -# files it parses. With this tag you can assign which parser to use -# for a given extension. Doxygen has a built-in mapping, but you can -# override or extend it using this tag. The format is ext=language, -# where ext is a file extension, and language is one of the parsers -# supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP, -# Objective-C, Python, Fortran, VHDL, C, C++. For instance to make -# doxygen treat .inc files as Fortran files (default is PHP), and .f -# files as C (default is Fortran), use: inc=Fortran f=C. Note that for -# custom extensions you also need to set FILE_PATTERNS otherwise the -# files are not read by doxygen. +# Doxygen selects the parser to use depending on the extension of the files it +# parses. With this tag you can assign which parser to use for a given extension. +# Doxygen has a built-in mapping, but you can override or extend it using this +# tag. The format is ext=language, where ext is a file extension, and language +# is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C, +# C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make +# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C +# (default is Fortran), use: inc=Fortran f=C. Note that for custom extensions +# you also need to set FILE_PATTERNS otherwise the files are not read by doxygen. EXTENSION_MAPPING = @@ -236,63 +234,57 @@ CPP_CLI_SUPPORT = NO -# Set the SIP_SUPPORT tag to YES if your project consists of sip -# sources only. Doxygen will parse them like normal C++ but will -# assume all classes use public instead of private inheritance when no -# explicit protection keyword is present. +# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. +# Doxygen will parse them like normal C++ but will assume all classes use public +# instead of private inheritance when no explicit protection keyword is present. SIP_SUPPORT = NO -# For Microsoft's IDL there are propget and propput attributes to -# indicate getter and setter methods for a property. Setting this -# option to YES (the default) will make doxygen to replace the get and -# set methods by a property in the documentation. This will only work -# if the methods are indeed getting or setting a simple type. If this -# is not the case, or you want to show the methods anyway, you should -# set this option to NO. +# For Microsoft's IDL there are propget and propput attributes to indicate getter +# and setter methods for a property. Setting this option to YES (the default) +# will make doxygen to replace the get and set methods by a property in the +# documentation. This will only work if the methods are indeed getting or +# setting a simple type. If this is not the case, or you want to show the +# methods anyway, you should set this option to NO. -IDL_PROPERTY_SUPPORT = YES +IDL_PROPERTY_SUPPORT = NO -# If member grouping is used in the documentation and the -# DISTRIBUTE_GROUP_DOC tag is set to YES, then doxygen will reuse the -# documentation of the first member in the group (if any) for the -# other members of the group. By default all members of a group must -# be documented explicitly. +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. DISTRIBUTE_GROUP_DOC = YES -# Set the SUBGROUPING tag to YES (the default) to allow class member -# groups of the same type (for instance a group of public functions) -# to be put as a subgroup of that type (e.g. under the Public -# Functions section). Set it to NO to prevent -# subgrouping. Alternatively, this can be done per class using the -# \nosubgrouping command. +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of +# the same type (for instance a group of public functions) to be put as a +# subgroup of that type (e.g. under the Public Functions section). Set it to +# NO to prevent subgrouping. Alternatively, this can be done per class using +# the \nosubgrouping command. SUBGROUPING = YES -# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, -# or enum is documented as struct, union, or enum with the name of the -# typedef. So typedef struct TypeS {} TypeT, will appear in the -# documentation as a struct with name TypeT. When disabled the typedef -# will appear as a member of a file, namespace, or class. And the -# struct will be named TypeS. This can typically be useful for C code -# in case the coding convention dictates that all compound types are -# typedef'ed and only the typedef is referenced, never the tag name. +# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum +# is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically +# be useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. TYPEDEF_HIDES_STRUCT = NO -# The SYMBOL_CACHE_SIZE determines the size of the internal cache use -# to determine which symbols to keep in memory and which to flush to -# disk. When the cache is full, less often used symbols will be -# written to disk. For small to medium size projects (<1000 input -# files) the default value is probably good enough. For larger -# projects a too small cache size can cause doxygen to be busy -# swapping symbols to and from disk most of the time causing a -# significant performance penality. If the system has enough physical -# memory increasing the cache will improve the performance by keeping -# more symbols in memory. Note that the value works on a logarithmic -# scale so increasing the size by one will rougly double the memory -# usage. The cache size is given by this formula: +# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to +# determine which symbols to keep in memory and which to flush to disk. +# When the cache is full, less often used symbols will be written to disk. +# For small to medium size projects (<1000 input files) the default value is +# probably good enough. For larger projects a too small cache size can cause +# doxygen to be busy swapping symbols to and from disk most of the time +# causing a significant performance penality. +# If the system has enough physical memory increasing the cache will improve the +# performance by keeping more symbols in memory. Note that the value works on +# a logarithmic scale so increasing the size by one will rougly double the +# memory usage. The cache size is given by this formula: # 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, # corresponding to a cache size of 2^16 = 65536 symbols @@ -396,6 +388,12 @@ SHOW_INCLUDE_FILES = NO +# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen +# will list include files with double quotes in the documentation +# rather than with sharp brackets. + +FORCE_LOCAL_INCLUDES = NO + # If the INLINE_INFO tag is set to YES (the default) then a tag [inline] # is inserted in the documentation for inline members. @@ -415,13 +413,13 @@ SORT_BRIEF_DOCS = YES -# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will -# sort the (brief and detailed) documentation of class members so that -# constructors and destructors are listed first. If set to NO (the -# default) the constructors will appear in the respective orders -# defined by SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. This tag will be -# ignored for brief docs if SORT_BRIEF_DOCS is set to NO and ignored -# for detailed docs if SORT_MEMBER_DOCS is set to NO. +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen +# will sort the (brief and detailed) documentation of class members so that +# constructors and destructors are listed first. If set to NO (the default) +# the constructors will appear in the respective orders defined by +# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. +# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO +# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO. SORT_MEMBERS_CTORS_1ST = YES @@ -505,24 +503,22 @@ SHOW_NAMESPACES = YES -# The FILE_VERSION_FILTER tag can be used to specify a program or -# script that doxygen should invoke to get the current version for -# each file (typically from the version control system). Doxygen will -# invoke the program by executing (via popen()) the command -# , where is the value of the -# FILE_VERSION_FILTER tag, and is the name of an input -# file provided by doxygen. Whatever the program writes to standard -# output is used as the file version. See the manual for examples. +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command , where is the value of +# the FILE_VERSION_FILTER tag, and is the name of an input file +# provided by doxygen. Whatever the program writes to standard output +# is used as the file version. See the manual for examples. FILE_VERSION_FILTER = -# The LAYOUT_FILE tag can be used to specify a layout file which will -# be parsed by doxygen. The layout file controls the global structure -# of the generated output files in an output format independent -# way. The create the layout file that represents doxygen's defaults, -# run doxygen with the -l option. You can optionally specify a file -# name after the option, if omitted DoxygenLayout.xml will be used as -# the name of the layout file. +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. The create the layout file +# that represents doxygen's defaults, run doxygen with the -l option. +# You can optionally specify a file name after the option, if omitted +# DoxygenLayout.xml will be used as the name of the layout file. LAYOUT_FILE = @@ -581,162 +577,161 @@ # configuration options related to the input files #--------------------------------------------------------------------------- -# The INPUT tag can be used to specify the files and/or directories -# that contain documented source files. You may enter file names like -# "myfile.cpp" or directories like "/usr/src/myproject". Separate the -# files or directories with spaces. +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. INPUT = @srcdir@/doc/doxygen/doxygroups.cc \ - @srcdir@/libsupc++/cxxabi.h \ - @srcdir@/libsupc++/cxxabi-forced.h \ - @srcdir@/libsupc++/exception \ - @srcdir@/libsupc++/exception_ptr.h \ - @srcdir@/libsupc++/initializer_list \ - @srcdir@/libsupc++/nested_exception.h \ - @srcdir@/libsupc++/new \ - @srcdir@/libsupc++/typeinfo \ - include/algorithm \ - include/array \ - include/atomic \ - include/bitset \ - include/chrono \ - include/complex \ - include/condition_variable \ - include/deque \ - include/fstream \ - include/functional \ - include/future \ - include/iomanip \ - include/ios \ - include/iosfwd \ - include/iostream \ - include/istream \ - include/iterator \ - include/limits \ - include/list \ - include/locale \ - include/map \ - include/memory \ - include/mutex \ - include/numeric \ - include/ostream \ - include/queue \ - include/random \ - include/ratio \ - include/regex \ - include/set \ - include/sstream \ - include/stack \ - include/stdexcept \ - include/streambuf \ - include/string \ - include/system_error \ - include/thread \ - include/tuple \ - include/type_traits \ - include/unordered_map \ - include/unordered_set \ - include/utility \ - include/valarray \ - include/vector \ - include/cassert \ - include/ccomplex \ - include/cctype \ - include/cerrno \ - include/cfenv \ - include/cfloat \ - include/cinttypes \ - include/ciso646 \ - include/climits \ - include/clocale \ - include/cmath \ - include/csetjmp \ - include/csignal \ - include/cstdarg \ - include/cstdbool \ - include/cstddef \ - include/cstdint \ - include/cstdio \ - include/cstdlib \ - include/cstring \ - include/ctgmath \ - include/ctime \ - include/cwchar \ - include/cwctype \ - include/backward/hash_map \ - include/backward/hash_set \ - include/backward/strstream \ - include/debug/bitset \ - include/debug/deque \ - include/debug/list \ - include/debug/map \ - include/debug/set \ - include/debug/string \ - include/debug/unordered_map \ - include/debug/unordered_set \ - include/debug/vector \ - include/profile/bitset \ - include/profile/deque \ - include/profile/list \ - include/profile/map \ - include/profile/set \ - include/profile/unordered_map \ - include/profile/unordered_set \ - include/profile/vector \ - include/ext/algorithm \ - include/ext/functional \ - include/ext/iterator \ - include/ext/memory \ - include/ext/numeric \ - include/ext/rb_tree \ - include/ext/rope \ - include/ext/slist \ - include/parallel/algorithm \ - include/parallel/numeric \ - include/tr1/ccomplex \ - include/tr1/cctype \ - include/tr1/cfenv \ - include/tr1/cfloat \ - include/tr1/cinttypes \ - include/tr1/climits \ - include/tr1/cmath \ - include/tr1/complex \ - include/tr1/cstdarg \ - include/tr1/cstdbool \ - include/tr1/cstdint \ - include/tr1/cstdio \ - include/tr1/cstdlib \ - include/tr1/ctgmath \ - include/tr1/ctime \ - include/tr1/cwchar \ - include/tr1/cwctype \ - include/tr1_impl/array \ - include/tr1_impl/cctype \ - include/tr1_impl/cfenv \ - include/tr1_impl/cinttypes \ - include/tr1_impl/cmath \ - include/tr1_impl/complex \ - include/tr1_impl/cstdint \ - include/tr1_impl/cstdio \ - include/tr1_impl/cstdlib \ - include/tr1_impl/cwchar \ - include/tr1_impl/cwctype \ - include/tr1_impl/regex \ - include/tr1_impl/type_traits \ - include/tr1_impl/utility \ - include/tr1_impl \ - include/decimal/decimal \ - include/ \ - include/@host_alias@/bits \ - include/backward \ - include/bits \ - include/debug \ - include/parallel \ - include/profile \ - include/profile/impl \ - include/ext \ - include/ext/pb_ds \ - include/ext/pb_ds/detail + @srcdir@/libsupc++/cxxabi.h \ + @srcdir@/libsupc++/cxxabi-forced.h \ + @srcdir@/libsupc++/exception \ + @srcdir@/libsupc++/exception_ptr.h \ + @srcdir@/libsupc++/initializer_list \ + @srcdir@/libsupc++/nested_exception.h \ + @srcdir@/libsupc++/new \ + @srcdir@/libsupc++/typeinfo \ + include/algorithm \ + include/array \ + include/atomic \ + include/bitset \ + include/chrono \ + include/complex \ + include/condition_variable \ + include/deque \ + include/fstream \ + include/functional \ + include/future \ + include/iomanip \ + include/ios \ + include/iosfwd \ + include/iostream \ + include/istream \ + include/iterator \ + include/limits \ + include/list \ + include/locale \ + include/map \ + include/memory \ + include/mutex \ + include/numeric \ + include/ostream \ + include/queue \ + include/random \ + include/ratio \ + include/regex \ + include/set \ + include/sstream \ + include/stack \ + include/stdexcept \ + include/streambuf \ + include/string \ + include/system_error \ + include/thread \ + include/tuple \ + include/type_traits \ + include/unordered_map \ + include/unordered_set \ + include/utility \ + include/valarray \ + include/vector \ + include/cassert \ + include/ccomplex \ + include/cctype \ + include/cerrno \ + include/cfenv \ + include/cfloat \ + include/cinttypes \ + include/ciso646 \ + include/climits \ + include/clocale \ + include/cmath \ + include/csetjmp \ + include/csignal \ + include/cstdarg \ + include/cstdbool \ + include/cstddef \ + include/cstdint \ + include/cstdio \ + include/cstdlib \ + include/cstring \ + include/ctgmath \ + include/ctime \ + include/cwchar \ + include/cwctype \ + include/backward/hash_map \ + include/backward/hash_set \ + include/backward/strstream \ + include/debug/bitset \ + include/debug/deque \ + include/debug/list \ + include/debug/map \ + include/debug/set \ + include/debug/string \ + include/debug/unordered_map \ + include/debug/unordered_set \ + include/debug/vector \ + include/profile/bitset \ + include/profile/deque \ + include/profile/list \ + include/profile/map \ + include/profile/set \ + include/profile/unordered_map \ + include/profile/unordered_set \ + include/profile/vector \ + include/ext/algorithm \ + include/ext/functional \ + include/ext/iterator \ + include/ext/memory \ + include/ext/numeric \ + include/ext/rb_tree \ + include/ext/rope \ + include/ext/slist \ + include/parallel/algorithm \ + include/parallel/numeric \ + include/tr1/ccomplex \ + include/tr1/cctype \ + include/tr1/cfenv \ + include/tr1/cfloat \ + include/tr1/cinttypes \ + include/tr1/climits \ + include/tr1/cmath \ + include/tr1/complex \ + include/tr1/cstdarg \ + include/tr1/cstdbool \ + include/tr1/cstdint \ + include/tr1/cstdio \ + include/tr1/cstdlib \ + include/tr1/ctgmath \ + include/tr1/ctime \ + include/tr1/cwchar \ + include/tr1/cwctype \ + include/tr1_impl/array \ + include/tr1_impl/cctype \ + include/tr1_impl/cfenv \ + include/tr1_impl/cinttypes \ + include/tr1_impl/cmath \ + include/tr1_impl/complex \ + include/tr1_impl/cstdint \ + include/tr1_impl/cstdio \ + include/tr1_impl/cstdlib \ + include/tr1_impl/cwchar \ + include/tr1_impl/cwctype \ + include/tr1_impl/type_traits \ + include/tr1_impl/utility \ + include/tr1_impl \ + include/decimal/decimal \ + include/ \ + include/@host_alias@/bits \ + include/backward \ + include/bits \ + include/debug \ + include/parallel \ + include/profile \ + include/profile/impl \ + include/ext \ + include/ext/pb_ds \ + include/ext/pb_ds/detail # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is @@ -754,8 +749,8 @@ # *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90 FILE_PATTERNS = *.h \ - *.hpp \ - *.tcc + *.hpp \ + *.tcc # The RECURSIVE tag can be used to turn specify whether or not subdirectories # should be searched for input files as well. Possible values are YES and NO. @@ -782,10 +777,10 @@ # for example use the pattern */test/* EXCLUDE_PATTERNS = stamp-* \ - *stdc++.h* \ - *stdtr1c++.h* \ - *extc++.h* \ - */.svn/* + *stdc++.h* \ + *stdtr1c++.h* \ + *extc++.h* \ + */.svn/* # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names # (namespaces, classes, functions, etc.) that should be excluded from the @@ -961,11 +956,6 @@ HTML_FOOTER = -# If the HTML_TIMESTAMP tag is set to YES then the generated HTML -# documentation will contain the timesstamp. - -HTML_TIMESTAMP = NO - # The HTML_STYLESHEET tag can be used to specify a user-defined cascading # style sheet that is used by each HTML page. It can be used to # fine-tune the look of the HTML output. If the tag is left blank doxygen @@ -975,6 +965,37 @@ HTML_STYLESHEET = +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. +# Doxygen will adjust the colors in the stylesheet and background images +# according to this color. Hue is specified as an angle on a colorwheel, +# see http://en.wikipedia.org/wiki/Hue for more information. +# For instance the value 0 represents red, 60 is yellow, 120 is green, +# 180 is cyan, 240 is blue, 300 purple, and 360 is red again. +# The allowed range is 0 to 359. + +HTML_COLORSTYLE_HUE = 220 + +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of +# the colors in the HTML output. For a value of 0 the output will use +# grayscales only. A value of 255 will produce the most vivid colors. + +HTML_COLORSTYLE_SAT = 100 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to +# the luminance component of the colors in the HTML output. Values below +# 100 gradually make the output lighter, whereas values above 100 make +# the output darker. The value divided by 100 is the actual gamma applied, +# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2, +# and 100 does not change the gamma. + +HTML_COLORSTYLE_GAMMA = 80 + +# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML +# page will contain the date and time when the page was generated. Setting +# this to NO can help when comparing the output of multiple runs. + +HTML_TIMESTAMP = NO + # If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, # files or namespaces will be aligned in HTML using tables. If set to # NO a bullet list will be used. @@ -991,14 +1012,14 @@ # If the GENERATE_DOCSET tag is set to YES, additional index files # will be generated that can be used as input for Apple's Xcode 3 -# integrated development environment, introduced with OSX 10.5 -# (Leopard). To create a documentation set, doxygen will generate a -# Makefile in the HTML output directory. Running make will produce the -# docset in that directory and running "make install" will install the -# docset in ~/Library/Developer/Shared/Documentation/DocSets so that -# Xcode will find it at startup. See -# http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for -# more information. +# integrated development environment, introduced with OSX 10.5 (Leopard). +# To create a documentation set, doxygen will generate a Makefile in the +# HTML output directory. Running make will produce the docset in that +# directory and running "make install" will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find +# it at startup. +# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html +# for more information. GENERATE_DOCSET = NO @@ -1014,8 +1035,19 @@ # reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen # will append .docset to the name. -DOCSET_BUNDLE_ID = org.doxygen.Project +DOCSET_BUNDLE_ID = org.gnu.libstdc++ +# When GENERATE_PUBLISHER_ID tag specifies a string that should +# uniquely identify the documentation publisher. This should be a +# reverse domain-name style string, +# e.g. com.mycompany.MyDocSet.documentation. + +DOCSET_PUBLISHER_ID = org.fsf + +# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher. + +DOCSET_PUBLISHER_NAME = libstdc++ + # If the GENERATE_HTMLHELP tag is set to YES, additional index files # will be generated that can be used as input for tools like the # Microsoft HTML help workshop to generate a compiled HTML help file (.chm) @@ -1061,10 +1093,9 @@ TOC_EXPAND = NO # If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and -# QHP_VIRTUAL_FOLDER are set, an additional index file will be -# generated that can be used as input for Qt's qhelpgenerator to -# generate a Qt Compressed Help (.qch) of the generated HTML -# documentation. +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated +# that can be used as input for Qt's qhelpgenerator to generate a +# Qt Compressed Help (.qch) of the generated HTML documentation. GENERATE_QHP = NO @@ -1086,23 +1117,24 @@ QHP_VIRTUAL_FOLDER = doc -# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom -# filter to add. For more information please see +# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to +# add. For more information please see # http://doc.trolltech.com/qthelpproject.html#custom-filters QHP_CUST_FILTER_NAME = -# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of -# the custom filter to add.For more information please see Qt -# Help Project / Custom Filters. +# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see +# +# Qt Help Project / Custom Filters. QHP_CUST_FILTER_ATTRS = -# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes -# this project's filter section matches. Qt -# Help Project / Filter Attributes. +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's +# filter section matches. +# +# Qt Help Project / Filter Attributes. QHP_SECT_FILTER_ATTRS = @@ -1113,6 +1145,23 @@ QHG_LOCATION = +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files +# will be generated, which together with the HTML files, form an Eclipse help +# plugin. To install this plugin and make it available under the help contents +# menu in Eclipse, the contents of the directory containing the HTML and XML +# files needs to be copied into the plugins directory of eclipse. The name of +# the directory within the plugins directory should be the same as +# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before +# the help appears. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have +# this name. + +ECLIPSE_DOC_ID = org.doxygen.Project + # The DISABLE_INDEX tag can be used to turn on/off the condensed index at # top of each HTML page. The value NO (the default) enables the index and # the value YES disables it. @@ -1145,6 +1194,11 @@ TREEVIEW_WIDTH = 250 +# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open +# links to external symbols imported via tag files in a separate window. + +EXT_LINKS_IN_WINDOW = NO + # Use this tag to change the font size of Latex formulas included # as images in the HTML documentation. The default is 10. Note that # when you change the font size after a successful doxygen run you need @@ -1153,15 +1207,34 @@ FORMULA_FONTSIZE = 10 -# When the SEARCHENGINE tag is enable doxygen will generate a search -# box for the HTML output. The underlying search engine uses -# javascript and DHTML and should work on any modern browser. Note -# that when using HTML help (GENERATE_HTMLHELP) or Qt help -# (GENERATE_QHP) there is already a search function so this one should -# typically be disabled. +# Use the FORMULA_TRANPARENT tag to determine whether or not the images +# generated for formulas are transparent PNGs. Transparent PNGs are +# not supported properly for IE 6.0, but are supported on all modern browsers. +# Note that when changing this option you need to delete any form_*.png files +# in the HTML output before the changes have effect. +FORMULA_TRANSPARENT = YES + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box +# for the HTML output. The underlying search engine uses javascript +# and DHTML and should work on any modern browser. Note that when using +# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets +# (GENERATE_DOCSET) there is already a search function so this one should +# typically be disabled. For large projects the javascript based search engine +# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution. + SEARCHENGINE = NO +# When the SERVER_BASED_SEARCH tag is enabled the search engine will be +# implemented using a PHP enabled web server instead of at the web client +# using Javascript. Doxygen will generate the search PHP script and index +# file to put on the web server. The advantage of the server +# based approach is that it scales better to large projects and allows +# full text search. The disadvances is that it is more difficult to setup +# and does not have live searching capabilities. + +SERVER_BASED_SEARCH = NO + #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- @@ -1179,6 +1252,9 @@ # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be # invoked. If left blank `latex' will be used as the default command name. +# Note that when enabling USE_PDFLATEX this option is only used for +# generating bitmaps for formulas in the HTML output, but not in the +# Makefile that is written to the output directory. LATEX_CMD_NAME = latex @@ -1225,11 +1301,10 @@ USE_PDFLATEX = YES -# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the -# \\batchmode. command to the generated LaTeX files. This will -# instruct LaTeX to keep running if errors occur, instead of asking -# the user for help. This option is also used when generating -# formulas in HTML. +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. LATEX_BATCHMODE = YES @@ -1239,10 +1314,10 @@ LATEX_HIDE_INDICES = YES -# If LATEX_SOURCE_CODE is set to YES then doxygen will include source -# code with syntax highlighting in the LaTeX output. Note that which -# sources are shown also depends on other settings such as -# SOURCE_BROWSER. +# If LATEX_SOURCE_CODE is set to YES then doxygen will include +# source code with syntax highlighting in the LaTeX output. +# Note that which sources are shown also depends on other settings +# such as SOURCE_BROWSER. LATEX_SOURCE_CODE = NO @@ -1448,37 +1523,37 @@ # instead of the = operator. PREDEFINED = __cplusplus \ - __GTHREADS \ - _GLIBCXX_HAS_GTHREADS \ - __GXX_EXPERIMENTAL_CXX0X__ \ - _GLIBCXX_INCLUDE_AS_CXX0X \ - "_GLIBCXX_STD_P= " \ - "_GLIBCXX_STD_D= " \ - _GLIBCXX_STD=std \ - "_GLIBCXX_TR1= " \ - "_GLIBCXX_BEGIN_NAMESPACE_TR1= " \ - "_GLIBCXX_END_NAMESPACE_TR1= " \ - "_GLIBCXX_BEGIN_NAMESPACE(name)=namespace name { " \ - "_GLIBCXX_BEGIN_NESTED_NAMESPACE(name, unused)=namespace name { " \ - _GLIBCXX_END_NAMESPACE=} \ - _GLIBCXX_END_NESTED_NAMESPACE=} \ - "_GLIBCXX_TEMPLATE_ARGS=... " \ - _GLIBCXX_DEPRECATED \ - _GLIBCXX_USE_WCHAR_T \ - _GLIBCXX_USE_LONG_LONG \ - _GLIBCXX_USE_C99_STDINT_TR1 \ - _GLIBCXX_ATOMIC_BUILTINS_1 \ - _GLIBCXX_ATOMIC_BUILTINS_2 \ - _GLIBCXX_ATOMIC_BUILTINS_4 \ - _GLIBCXX_ATOMIC_BUILTINS_8 \ - _GLIBCXX_USE_SCHED_YIELD \ - _GLIBCXX_USE_NANOSLEEP \ - __GXX_RTTI \ - __glibcxx_function_requires=// \ - __glibcxx_class_requires=// \ - __glibcxx_class_requires2=// \ - __glibcxx_class_requires3=// \ - __glibcxx_class_requires4=// + __GTHREADS \ + _GLIBCXX_HAS_GTHREADS \ + __GXX_EXPERIMENTAL_CXX0X__ \ + _GLIBCXX_INCLUDE_AS_CXX0X \ + "_GLIBCXX_STD_P= " \ + "_GLIBCXX_STD_D= " \ + _GLIBCXX_STD=std \ + "_GLIBCXX_TR1= " \ + "_GLIBCXX_BEGIN_NAMESPACE_TR1= " \ + "_GLIBCXX_END_NAMESPACE_TR1= " \ + "_GLIBCXX_BEGIN_NAMESPACE(name)=namespace name { " \ + "_GLIBCXX_BEGIN_NESTED_NAMESPACE(name, unused)=namespace name { " \ + _GLIBCXX_END_NAMESPACE=} \ + _GLIBCXX_END_NESTED_NAMESPACE=} \ + "_GLIBCXX_TEMPLATE_ARGS=... " \ + _GLIBCXX_DEPRECATED \ + _GLIBCXX_USE_WCHAR_T \ + _GLIBCXX_USE_LONG_LONG \ + _GLIBCXX_USE_C99_STDINT_TR1 \ + _GLIBCXX_ATOMIC_BUILTINS_1 \ + _GLIBCXX_ATOMIC_BUILTINS_2 \ + _GLIBCXX_ATOMIC_BUILTINS_4 \ + _GLIBCXX_ATOMIC_BUILTINS_8 \ + _GLIBCXX_USE_SCHED_YIELD \ + _GLIBCXX_USE_NANOSLEEP \ + __GXX_RTTI \ + __glibcxx_function_requires=// \ + __glibcxx_class_requires=// \ + __glibcxx_class_requires2=// \ + __glibcxx_class_requires3=// \ + __glibcxx_class_requires4=// # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then # this tag can be used to specify a list of macro names that should be expanded. @@ -1575,6 +1650,14 @@ HAVE_DOT = YES +# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is +# allowed to run in parallel. When set to 0 (the default) doxygen will +# base this on the number of processors available in the system. You can set it +# explicitly to a value larger than 0 to get control over the balance +# between CPU load and processing speed. + +DOT_NUM_THREADS = 0 + # By default doxygen will write a font called FreeSans.ttf to the # output directory and reference it in all dot files that doxygen # generates. This font does not include all possible unicode @@ -1590,7 +1673,7 @@ # The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. # The default size is 10pt. -DOT_FONTSIZE = 10 +DOT_FONTSIZE = 9 # By default doxygen will tell dot to use the output directory to look for the # FreeSans.ttf font (which doxygen will put there itself). If you specify a Index: libstdc++-v3/doc/doxygen/doxygroups.cc =================================================================== --- libstdc++-v3/doc/doxygen/doxygroups.cc (.../tags/gcc_4_5_1_release) (wersja 163628) +++ libstdc++-v3/doc/doxygen/doxygroups.cc (.../branches/gcc-4_5-branch) (wersja 163628) @@ -1,5 +1,6 @@ /* - Copyright (C) 2001, 2002, 2005, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2001, 2002, 2005, 2008, 2009, 2010 + Free Software Foundation, Inc. See license.html for license. This just provides documentation for stuff that doesn't need to be in the @@ -47,7 +48,7 @@ * Components generally useful that are not part of any standard. */ -/** @defgroup SGIextensions SGI STL extensions +/** @defgroup SGIextensions SGI * @ingroup extensions Because libstdc++ based its implementation of the STL subsections of the library on the SGI 3.3 implementation, we inherited their extensions @@ -115,7 +116,7 @@ tables. */ -/** @defgroup associative_containers Associative Containers +/** @defgroup associative_containers Associative * @ingroup containers Associative containers allow fast retrieval of data based on keys. @@ -126,7 +127,7 @@ tables. */ -/** @defgroup unordered_associative_containers Unordered Associative Containers +/** @defgroup unordered_associative_containers Unordered Associative * @ingroup containers Unordered associative containers allow fast retrieval of data based on keys. Index: libstdc++-v3/include/bits/stl_iterator_base_types.h =================================================================== --- libstdc++-v3/include/bits/stl_iterator_base_types.h (.../tags/gcc_4_5_1_release) (wersja 163628) +++ libstdc++-v3/include/bits/stl_iterator_base_types.h (.../branches/gcc-4_5-branch) (wersja 163628) @@ -69,6 +69,12 @@ /** * @defgroup iterators Iterators + * Abstractions for uniform iterating through various underlying types. + */ + //@{ + + /** + * @defgroup iterator_tags Iterator Tags * These are empty types, used to distinguish different iterators. The * distinction is not made by what they contain, but simply by what they * are. Different underlying algorithms can then be used based on the @@ -91,8 +97,8 @@ /// Random-access iterators support a superset of bidirectional /// iterator operations. struct random_access_iterator_tag : public bidirectional_iterator_tag { }; + //@} - /** * @brief Common %iterator class. * Index: libstdc++-v3/include/bits/stl_heap.h =================================================================== --- libstdc++-v3/include/bits/stl_heap.h (.../tags/gcc_4_5_1_release) (wersja 163628) +++ libstdc++-v3/include/bits/stl_heap.h (.../branches/gcc-4_5-branch) (wersja 163628) @@ -62,7 +62,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) /** - * @defgroup heap_algorithms Heap Algorithms + * @defgroup heap_algorithms Heap * @ingroup sorting_algorithms */ Index: libstdc++-v3/include/bits/forward_list.h =================================================================== --- libstdc++-v3/include/bits/forward_list.h (.../tags/gcc_4_5_1_release) (wersja 163628) +++ libstdc++-v3/include/bits/forward_list.h (.../branches/gcc-4_5-branch) (wersja 163628) @@ -461,7 +461,9 @@ * constructed elements. */ explicit - forward_list(size_type __n); + forward_list(size_type __n) + : _Base() + { _M_default_initialize(__n); } /** * @brief Creates a %forward_list with copies of an exemplar element. @@ -1207,6 +1209,14 @@ // Called by splice_after and insert_after. iterator _M_splice_after(const_iterator __pos, forward_list&& __list); + + // Called by forward_list(n). + void + _M_default_initialize(size_type __n); + + // Called by resize(sz). + void + _M_default_insert_after(const_iterator __pos, size_type __n); }; /** Index: libstdc++-v3/include/bits/move.h =================================================================== --- libstdc++-v3/include/bits/move.h (.../tags/gcc_4_5_1_release) (wersja 163628) +++ libstdc++-v3/include/bits/move.h (.../branches/gcc-4_5-branch) (wersja 163628) @@ -81,7 +81,7 @@ move(_Tp&& __t) { return static_cast::type&&>(__t); } - /// declval, defined in . + /// declval, from type_traits. _GLIBCXX_END_NAMESPACE Index: libstdc++-v3/include/bits/stl_iterator.h =================================================================== --- libstdc++-v3/include/bits/stl_iterator.h (.../tags/gcc_4_5_1_release) (wersja 163628) +++ libstdc++-v3/include/bits/stl_iterator.h (.../branches/gcc-4_5-branch) (wersja 163628) @@ -416,14 +416,21 @@ * the end, if you like). Assigning a value to the %iterator will * always append the value to the end of the container. */ +#ifndef __GXX_EXPERIMENTAL_CXX0X__ back_insert_iterator& operator=(typename _Container::const_reference __value) { container->push_back(__value); return *this; } +#else + back_insert_iterator& + operator=(const typename _Container::value_type& __value) + { + container->push_back(__value); + return *this; + } -#ifdef __GXX_EXPERIMENTAL_CXX0X__ back_insert_iterator& operator=(typename _Container::value_type&& __value) { @@ -499,14 +506,21 @@ * the front, if you like). Assigning a value to the %iterator will * always prepend the value to the front of the container. */ +#ifndef __GXX_EXPERIMENTAL_CXX0X__ front_insert_iterator& operator=(typename _Container::const_reference __value) { container->push_front(__value); return *this; } +#else + front_insert_iterator& + operator=(const typename _Container::value_type& __value) + { + container->push_front(__value); + return *this; + } -#ifdef __GXX_EXPERIMENTAL_CXX0X__ front_insert_iterator& operator=(typename _Container::value_type&& __value) { @@ -603,6 +617,7 @@ * // vector v contains A, 1, 2, 3, and Z * @endcode */ +#ifndef __GXX_EXPERIMENTAL_CXX0X__ insert_iterator& operator=(typename _Container::const_reference __value) { @@ -610,8 +625,15 @@ ++iter; return *this; } +#else + insert_iterator& + operator=(const typename _Container::value_type& __value) + { + iter = container->insert(iter, __value); + ++iter; + return *this; + } -#ifdef __GXX_EXPERIMENTAL_CXX0X__ insert_iterator& operator=(typename _Container::value_type&& __value) { Index: libstdc++-v3/include/bits/forward_list.tcc =================================================================== --- libstdc++-v3/include/bits/forward_list.tcc (.../tags/gcc_4_5_1_release) (wersja 163628) +++ libstdc++-v3/include/bits/forward_list.tcc (.../branches/gcc-4_5-branch) (wersja 163628) @@ -114,7 +114,7 @@ _M_fill_initialize(size_type __n, const value_type& __value) { _Node_base* __to = &this->_M_impl._M_head; - for (; __n > 0; --__n) + for (; __n; --__n) { __to->_M_next = this->_M_create_node(__value); __to = __to->_M_next; @@ -122,12 +122,12 @@ } template + void forward_list<_Tp, _Alloc>:: - forward_list(size_type __n) - : _Base() + _M_default_initialize(size_type __n) { _Node_base* __to = &this->_M_impl._M_head; - for (; __n > 0; --__n) + for (; __n; --__n) { __to->_M_next = this->_M_create_node(); __to = __to->_M_next; @@ -164,6 +164,24 @@ template void forward_list<_Tp, _Alloc>:: + _M_default_insert_after(const_iterator __pos, size_type __n) + { + const_iterator __saved_pos = __pos; + __try + { + for (; __n; --__n) + __pos = emplace_after(__pos); + } + __catch(...) + { + erase_after(__saved_pos, ++__pos); + __throw_exception_again; + } + } + + template + void + forward_list<_Tp, _Alloc>:: resize(size_type __sz) { iterator __k = before_begin(); @@ -177,10 +195,7 @@ if (__len == __sz) erase_after(__k, end()); else - { - forward_list __tmp(__sz - __len); - splice_after(__k, std::move(__tmp)); - } + _M_default_insert_after(__k, __sz - __len); } template Index: libstdc++-v3/include/bits/algorithmfwd.h =================================================================== --- libstdc++-v3/include/bits/algorithmfwd.h (.../tags/gcc_4_5_1_release) (wersja 163628) +++ libstdc++-v3/include/bits/algorithmfwd.h (.../branches/gcc-4_5-branch) (wersja 163628) @@ -134,22 +134,22 @@ */ /** - * @defgroup mutating_algorithms Mutating Algorithms + * @defgroup mutating_algorithms Mutating * @ingroup algorithms */ /** - * @defgroup non_mutating_algorithms Non-Mutating Algorithms + * @defgroup non_mutating_algorithms Non-Mutating * @ingroup algorithms */ /** - * @defgroup sorting_algorithms Sorting Algorithms + * @defgroup sorting_algorithms Sorting * @ingroup algorithms */ /** - * @defgroup set_algorithms Set Operation Algorithms + * @defgroup set_algorithms Set Operation * @ingroup sorting_algorithms * * These algorithms are common set operations performed on sequences @@ -158,7 +158,7 @@ */ /** - * @defgroup binary_search_algorithms Binary Search Algorithms + * @defgroup binary_search_algorithms Binary Search * @ingroup sorting_algorithms * * These algorithms are variations of a classic binary search, and Index: libstdc++-v3/include/bits/random.h =================================================================== --- libstdc++-v3/include/bits/random.h (.../tags/gcc_4_5_1_release) (wersja 163628) +++ libstdc++-v3/include/bits/random.h (.../branches/gcc-4_5-branch) (wersja 163628) @@ -1614,7 +1614,7 @@ */ /** - * @addtogroup random_distributions_uniform Uniform Distributions + * @addtogroup random_distributions_uniform Uniform * @ingroup random_distributions * @{ */ @@ -1972,7 +1972,7 @@ /* @} */ // group random_distributions_uniform /** - * @addtogroup random_distributions_normal Normal Distributions + * @addtogroup random_distributions_normal Normal * @ingroup random_distributions * @{ */ @@ -3226,7 +3226,7 @@ /* @} */ // group random_distributions_normal /** - * @addtogroup random_distributions_bernoulli Bernoulli Distributions + * @addtogroup random_distributions_bernoulli Bernoulli * @ingroup random_distributions * @{ */ @@ -3957,7 +3957,7 @@ /* @} */ // group random_distributions_bernoulli /** - * @addtogroup random_distributions_poisson Poisson Distributions + * @addtogroup random_distributions_poisson Poisson * @ingroup random_distributions * @{ */ Index: libstdc++-v3/ChangeLog =================================================================== --- libstdc++-v3/ChangeLog (.../tags/gcc_4_5_1_release) (wersja 163628) +++ libstdc++-v3/ChangeLog (.../branches/gcc-4_5-branch) (wersja 163628) @@ -1,3 +1,78 @@ +2010-08-26 Benjamin Kosnik + + * include/bits/stl_iterator_base_types.h: Fix doxygen warning. + + Merge in other doc patches. + + 2010-07-08 Benjamin Kosnik + + * include/bits/stl_heap.h: Update markup. + * include/bits/move.h: Same. + * include/bits/algorithmfwd.h: Same. + * include/bits/random.h: Same. + * doc/doxygen/doxygroups.cc: Same. + * doc/doxygen/user.cfg.in: Remove include/tr1_impl/regex from + input file list. + * doc/Makefile.am (doc-pdf-doxygen): Add comment, put generated + pdf in location consistent with docbook pdf generation. + * doc/Makefile.in: Regenerate. + + 2010-07-13 Benjamin Kosnik + * doc/Makefile.in: Regenerate. + * doc/Makefile.am: Edit pdf rules, expand default rules. + * doc/doxygen/user.cfg.in: Update to Doxygen 1.7.1. + + 2010-07-19 Benjamin Kosnik + + * doc/Makefile.am (doc-texinfo): New rule. + (doc-texinfo-docbook): New rule. + (DB2TEXI_FLAGS): New. + (doc-xml-single-docbook): Just the manual, not the set. Tweak flags. + * doc/Makefile.in: Regenerate. + + 2010-07-19 Benjamin Kosnik + + * doc/xml/manual/appendix_contributing.xml: Update for new reality. + * doc/Makefile.am (doc-xml): New default rule for XML output. + (doc-xml-single-doxygen): Standardize output names. + * doc/Makefile.in: Regenerate. + + * doc/doxygen/user.cfg.in: Tweak. + +2010-08-15 Jonathan Wakely + + PR libstdc++/45283 + * testsuite/performance/30_threads/future/polling.cc: Replace calls to + shared_future::is_ready. + +2010-08-08 Paolo Carlini + + * include/bits/forward_list.h (_M_default_initialize, + _M_default_insert_after): Declare. + (forward_list<>::forward_list(size_type), resize(size_type)): Fix, + use the latter. + * include/bits/forward_list.tcc (forward_list<>::_M_default_append, + * testsuite/23_containers/forward_list/requirements/dr438/ + assign_neg.cc: Adjust dg-error line numbers. + * testsuite/23_containers/forward_list/requirements/dr438/ + insert_neg.cc: Likewise. + * testsuite/23_containers/forward_list/requirements/dr438/ + constructor_1_neg.cc: Likewise. + * testsuite/23_containers/forward_list/requirements/dr438/ + constructor_2_neg.cc: Likewise. + +2010-08-08 Paolo Carlini + + PR libstdc++/44963 + * include/bits/stl_iterator.h (insert_iterator<>:: + operator=(const typename _Container::value_type&, + back_insert_iterator<>:: + operator=(const typename _Container::value_type&), + front_insert_iterator<>:: + operator=(const typename _Container::value_type&))): Add + in C++0x mode. + * testsuite/ext/rope/44963.cc: New. + 2010-07-31 Release Manager * GCC 4.5.1 released. Index: libstdc++-v3/testsuite/ext/rope/44963.cc =================================================================== --- libstdc++-v3/testsuite/ext/rope/44963.cc (.../tags/gcc_4_5_1_release) (wersja 0) +++ libstdc++-v3/testsuite/ext/rope/44963.cc (.../branches/gcc-4_5-branch) (wersja 163628) @@ -0,0 +1,31 @@ +// { dg-options "-std=gnu++0x" } +// { dg-do compile } + +// Copyright (C) 2010 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// . + +#include + +// libstdc++/44963 +void test01() +{ + __gnu_cxx::crope line("test"); + auto ii(std::back_inserter(line)); + + *ii++ = 'm'; + *ii++ = 'e'; +} Index: libstdc++-v3/testsuite/performance/30_threads/future/polling.cc =================================================================== --- libstdc++-v3/testsuite/performance/30_threads/future/polling.cc (.../tags/gcc_4_5_1_release) (wersja 163628) +++ libstdc++-v3/testsuite/performance/30_threads/future/polling.cc (.../branches/gcc-4_5-branch) (wersja 163628) @@ -1,4 +1,4 @@ -// Copyright (C) 2009 Free Software Foundation, Inc. +// Copyright (C) 2009, 2010 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -20,9 +20,14 @@ #include #include +inline bool is_ready(std::shared_future& f) +{ + return f.wait_for(std::chrono::microseconds(1)); +} + void poll(std::shared_future f) { - while (!f.is_ready()) + while (!is_ready(f)) { } } @@ -46,7 +51,7 @@ start_counters(time, resource); for (int i = 0; i < 1000000; ++i) - (void)f.is_ready(); + (void)is_ready(f); p.set_value(); for (int i=0; i < n; ++i) Index: libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/assign_neg.cc =================================================================== --- libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/assign_neg.cc (.../tags/gcc_4_5_1_release) (wersja 163628) +++ libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/assign_neg.cc (.../branches/gcc-4_5-branch) (wersja 163628) @@ -1,6 +1,6 @@ // { dg-do compile } // { dg-options "-std=gnu++0x" } -// { dg-error "no matching" "" { target *-*-* } 1194 } +// { dg-error "no matching" "" { target *-*-* } 1196 } // { dg-excess-errors "" } // Copyright (C) 2009, 2010 Free Software Foundation Index: libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/insert_neg.cc =================================================================== --- libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/insert_neg.cc (.../tags/gcc_4_5_1_release) (wersja 163628) +++ libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/insert_neg.cc (.../branches/gcc-4_5-branch) (wersja 163628) @@ -1,6 +1,6 @@ // { dg-do compile } // { dg-options "-std=gnu++0x" } -// { dg-error "no matching" "" { target *-*-* } 1194 } +// { dg-error "no matching" "" { target *-*-* } 1196 } // { dg-excess-errors "" } // Copyright (C) 2009, 2010 Free Software Foundation Index: libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor_1_neg.cc =================================================================== --- libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor_1_neg.cc (.../tags/gcc_4_5_1_release) (wersja 163628) +++ libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor_1_neg.cc (.../branches/gcc-4_5-branch) (wersja 163628) @@ -1,6 +1,6 @@ // { dg-do compile } // { dg-options "-std=gnu++0x" } -// { dg-error "no matching" "" { target *-*-* } 1194 } +// { dg-error "no matching" "" { target *-*-* } 1196 } // { dg-excess-errors "" } // Copyright (C) 2009, 2010 Free Software Foundation Index: libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor_2_neg.cc =================================================================== --- libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor_2_neg.cc (.../tags/gcc_4_5_1_release) (wersja 163628) +++ libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor_2_neg.cc (.../branches/gcc-4_5-branch) (wersja 163628) @@ -1,6 +1,6 @@ // { dg-do compile } // { dg-options "-std=gnu++0x" } -// { dg-error "no matching" "" { target *-*-* } 1194 } +// { dg-error "no matching" "" { target *-*-* } 1196 } // { dg-excess-errors "" } // Copyright (C) 2009, 2010 Free Software Foundation Index: libjava/classpath/javax/print/attribute/standard/JobStateReasons.java =================================================================== --- libjava/classpath/javax/print/attribute/standard/JobStateReasons.java (.../tags/gcc_4_5_1_release) (wersja 163628) +++ libjava/classpath/javax/print/attribute/standard/JobStateReasons.java (.../branches/gcc-4_5-branch) (wersja 163628) @@ -129,7 +129,7 @@ if (o == null) throw new NullPointerException("reason is null"); - return add(o); + return super.add(o); } /** Index: libjava/classpath/ChangeLog =================================================================== --- libjava/classpath/ChangeLog (.../tags/gcc_4_5_1_release) (wersja 163628) +++ libjava/classpath/ChangeLog (.../branches/gcc-4_5-branch) (wersja 163628) @@ -1,3 +1,23 @@ +2010-04-27 Andrew Haley + + * java/util/concurrent/CopyOnWriteArrayList.java: Fix for empty + list. + +2010-04-27 Andrew Haley + + * gnu/javax/print/ipp/IppResponse.java (parseAttributes): Handle + IppValueTag.UNKNOWN. + * gnu/javax/print/ipp/IppRequest.java (writeOperationAttributes): + Handle RequestedAttributes. + * gnu/javax/print/ipp/IppPrintService.java (processResponse): Add + DocFlavor.SERVICE_FORMATTED.PAGEABLE and + DocFlavor.SERVICE_FORMATTED.PRINTABLE. + +2010-07-30 Andrew Haley + + * javax/print/attribute/standard/JobStateReasons.java (add): Fix + infinite recursion with call to super. + 2010-07-31 Release Manager * GCC 4.5.1 released. Index: libjava/classpath/gnu/javax/print/ipp/IppRequest.java =================================================================== --- libjava/classpath/gnu/javax/print/ipp/IppRequest.java (.../tags/gcc_4_5_1_release) (wersja 163628) +++ libjava/classpath/gnu/javax/print/ipp/IppRequest.java (.../branches/gcc-4_5-branch) (wersja 163628) @@ -434,6 +434,8 @@ PrinterURI printerUri = (PrinterURI) attributes.get(PrinterURI.class); JobUri jobUri = (JobUri) attributes.get(JobUri.class); JobId jobId = (JobId) attributes.get(JobId.class); + RequestedAttributes reqAttrs + = (RequestedAttributes)attributes.get(RequestedAttributes.class); if (printerUri != null && jobId == null && jobUri == null) { write(printerUri); @@ -467,6 +469,12 @@ logger.log(Component.IPP, "Attribute: Name: <" + jobUri.getCategory() .getName() + "> Value: <" + jobUri.toString() + ">"); } + else if (reqAttrs != null) + { + write(reqAttrs); + attributes.remove(RequestedAttributes.class); + logger.log(Component.IPP, "RequestedAttributes: <" + reqAttrs + ">"); + } else { throw new IppException("Unknown target operation attribute combination."); Index: libjava/classpath/gnu/javax/print/ipp/IppPrintService.java =================================================================== --- libjava/classpath/gnu/javax/print/ipp/IppPrintService.java (.../tags/gcc_4_5_1_release) (wersja 163628) +++ libjava/classpath/gnu/javax/print/ipp/IppPrintService.java (.../branches/gcc-4_5-branch) (wersja 163628) @@ -356,8 +356,17 @@ // should not happen, all fields are public } } + + if (this.getClass() + .isAssignableFrom(gnu.javax.print.CupsPrintService.class)) + { +// CUPS always provides filters to convert from Postscript. +// This logic looks odd, but it's what OpenJDK does. + flavors.add(DocFlavor.SERVICE_FORMATTED.PAGEABLE); + flavors.add(DocFlavor.SERVICE_FORMATTED.PRINTABLE); + } } - + // printer uris Set uris = getPrinterAttributeSet(PrinterUriSupported.class); printerUris = new ArrayList(uris.size()); Index: libjava/classpath/gnu/javax/print/ipp/IppResponse.java =================================================================== --- libjava/classpath/gnu/javax/print/ipp/IppResponse.java (.../tags/gcc_4_5_1_release) (wersja 163628) +++ libjava/classpath/gnu/javax/print/ipp/IppResponse.java (.../branches/gcc-4_5-branch) (wersja 163628) @@ -302,11 +302,14 @@ // out-of-band values case IppValueTag.UNSUPPORTED: case IppValueTag.UNKNOWN: + // TODO implement out-of-band handling + // We currently throw an exception to see when it occurs - not yet :-) + throw new IppException( + "Unexpected name value for out-of-band value tag " + tag); case IppValueTag.NO_VALUE: - // TODO implement out-of-band handling - // We currently throw an exception to see when it occurs - not yet :-) - throw new IppException( - "Unexpected name value for out-of-band value tag"); + attribute = null; + + break; case IppValueTag.INTEGER: int intValue = IppUtilities.convertToInt(value); attribute = IppUtilities.getIntegerAttribute(name, intValue); Index: libjava/classpath/lib/java/util/concurrent/CopyOnWriteArrayList$3.class =================================================================== Nie można wyświetlić: plik binarny. svn:mime-type = application/octet-stream Index: libjava/classpath/lib/java/util/concurrent/CopyOnWriteArrayList$2.class =================================================================== Nie można wyświetlić: plik binarny. svn:mime-type = application/octet-stream Index: libjava/classpath/lib/java/util/concurrent/CopyOnWriteArrayList.class =================================================================== Nie można wyświetlić: plik binarny. svn:mime-type = application/octet-stream Index: libjava/classpath/lib/java/util/concurrent/CopyOnWriteArrayList$1.class =================================================================== Nie można wyświetlić: plik binarny. svn:mime-type = application/octet-stream Index: libjava/classpath/lib/java/util/concurrent/CopyOnWriteArrayList$SubList.class =================================================================== Nie można wyświetlić: plik binarny. svn:mime-type = application/octet-stream Index: libjava/classpath/lib/java/util/concurrent/CopyOnWriteArrayList$RandomAccessSubList.class =================================================================== Nie można wyświetlić: plik binarny. svn:mime-type = application/octet-stream Index: libjava/classpath/lib/gnu/javax/print/ipp/IppRequest$RequestWriter.class =================================================================== Nie można wyświetlić: plik binarny. svn:mime-type = application/octet-stream Index: libjava/classpath/lib/gnu/javax/print/ipp/IppResponse$ResponseReader.class =================================================================== Nie można wyświetlić: plik binarny. svn:mime-type = application/octet-stream Index: libjava/classpath/lib/gnu/javax/print/ipp/IppRequest.class =================================================================== Nie można wyświetlić: plik binarny. svn:mime-type = application/octet-stream Index: libjava/classpath/lib/gnu/javax/print/ipp/IppPrintService.class =================================================================== Nie można wyświetlić: plik binarny. svn:mime-type = application/octet-stream Index: libjava/classpath/lib/gnu/javax/print/ipp/IppResponse.class =================================================================== Nie można wyświetlić: plik binarny. svn:mime-type = application/octet-stream Index: libjava/classpath/lib/javax/print/attribute/standard/JobStateReasons.class =================================================================== Nie można wyświetlić: plik binarny. svn:mime-type = application/octet-stream Index: libjava/classpath/java/util/concurrent/CopyOnWriteArrayList.java =================================================================== --- libjava/classpath/java/util/concurrent/CopyOnWriteArrayList.java (.../tags/gcc_4_5_1_release) (wersja 163628) +++ libjava/classpath/java/util/concurrent/CopyOnWriteArrayList.java (.../branches/gcc-4_5-branch) (wersja 163628) @@ -452,7 +452,12 @@ public synchronized boolean remove(Object element) { E[] snapshot = this.data; - E[] newData = (E[]) new Object[snapshot.length - 1]; + int len = snapshot.length; + + if (len == 0) + return false; + + E[] newData = (E[]) new Object[len - 1]; // search the element to remove while filling the backup array // this way we can run this method in O(n)