2 ===================================================================
3 --- configure (.../tags/gcc_4_6_2_release) (wersja 182722)
4 +++ configure (.../branches/gcc-4_6-branch) (wersja 182722)
6 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_cv_cc_gcc_supports_ada" >&5
7 $as_echo "$acx_cv_cc_gcc_supports_ada" >&6; }
9 -if test x$GNATBIND != xno && test x$GNATMAKE != xno && test x$acx_cv_cc_gcc_supports_ada != xno; then
10 +if test "x$GNATBIND" != xno && test "x$GNATMAKE" != xno && test x$acx_cv_cc_gcc_supports_ada != xno; then
14 @@ -6944,10 +6944,6 @@
15 extra_arflags_for_target=" -X32_64"
16 extra_nmflags_for_target=" -B -X32_64"
19 - # ranlib before Darwin10 requires the -c flag to look at common symbols.
20 - extra_ranlibflags_for_target=" -c"
22 mips*-*-pe | sh*-*-pe | *arm-wince-pe)
23 target_makefile_frag="config/mt-wince"
25 Index: libgcc/config.host
26 ===================================================================
27 --- libgcc/config.host (.../tags/gcc_4_6_2_release) (wersja 182722)
28 +++ libgcc/config.host (.../branches/gcc-4_6-branch) (wersja 182722)
30 asm_hidden_op=.private_extern
31 tmake_file="t-darwin ${cpu_type}/t-darwin t-slibgcc-darwin"
33 -*-*-freebsd[12] | *-*-freebsd[12].* | *-*-freebsd*aout*)
34 - # This is the place-holder for the generic a.out configuration
35 - # of FreeBSD. No actual configuration resides here since
36 - # there was only ever a bare-bones ix86 configuration for
37 - # a.out and it exists solely in the machine-specific section.
38 - # This place-holder must exist to avoid dropping into
39 - # the generic ELF configuration of FreeBSD (i.e. it must be
40 - # ordered before that section).
43 # This is the generic ELF configuration of FreeBSD. Later
44 # machine-specific sections may refine and add to this
45 Index: libgcc/generic-morestack.c
46 ===================================================================
47 --- libgcc/generic-morestack.c (.../tags/gcc_4_6_2_release) (wersja 182722)
48 +++ libgcc/generic-morestack.c (.../branches/gcc-4_6-branch) (wersja 182722)
50 sigemptyset (&__morestack_initial_sp.mask);
52 sigfillset (&__morestack_fullmask);
54 - /* On Linux, the first two real time signals are used by the NPTL
56 + /* In glibc, the first two real time signals are used by the NPTL
57 threading library. By taking them out of the set of signals, we
58 avoiding copying the signal mask in pthread_sigmask. More
59 importantly, pthread_sigmask uses less stack space on x86_64. */
60 Index: libgcc/ChangeLog
61 ===================================================================
62 --- libgcc/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 182722)
63 +++ libgcc/ChangeLog (.../branches/gcc-4_6-branch) (wersja 182722)
65 +2011-12-15 H.J. Lu <hongjiu.lu@intel.com>
67 + Backport from mainline
68 + 2011-12-14 H.J. Lu <hongjiu.lu@intel.com>
70 + * generic-morestack.c (__generic_morestack_set_initial_sp): Check
71 + __GLIBC__ instead of __linux__ when using __SIGRTMIN.
73 +2011-11-23 Gerald Pfeifer <gerald@pfeifer.com>
75 + * config.host (*-*-freebsd[12], *-*-freebsd[12].*,
76 + *-*-freebsd*aout*): Remove.
78 2011-10-26 Release Manager
82 ===================================================================
83 --- libtool.m4 (.../tags/gcc_4_6_2_release) (wersja 182722)
84 +++ libtool.m4 (.../branches/gcc-4_6-branch) (wersja 182722)
86 objformat=`/usr/bin/objformat`
89 - freebsd[[123]]*) objformat=aout ;;
90 + freebsd[[23]].*) objformat=aout ;;
96 shlibpath_var=LD_LIBRARY_PATH
100 shlibpath_overrides_runpath=yes
102 freebsd3.[[01]]* | freebsdelf3.[[01]]*)
103 @@ -4804,7 +4804,7 @@
106 # Unfortunately, older versions of FreeBSD 2 do not have this feature.
109 _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
110 _LT_TAGVAR(hardcode_direct, $1)=yes
111 _LT_TAGVAR(hardcode_minus_L, $1)=yes
112 @@ -5751,7 +5751,7 @@
118 # C++ shared libraries reported to be fairly broken before
120 _LT_TAGVAR(ld_shlibs, $1)=no
121 Index: libgomp/configure
122 ===================================================================
123 --- libgomp/configure (.../tags/gcc_4_6_2_release) (wersja 182722)
124 +++ libgomp/configure (.../branches/gcc-4_6-branch) (wersja 182722)
125 @@ -9317,7 +9317,7 @@
128 # Unfortunately, older versions of FreeBSD 2 do not have this feature.
131 archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
134 @@ -10230,7 +10230,7 @@
135 objformat=`/usr/bin/objformat`
138 - freebsd[123]*) objformat=aout ;;
139 + freebsd[23].*) objformat=aout ;;
143 @@ -10248,7 +10248,7 @@
145 shlibpath_var=LD_LIBRARY_PATH
149 shlibpath_overrides_runpath=yes
151 freebsd3.[01]* | freebsdelf3.[01]*)
152 @@ -13164,7 +13164,7 @@
155 # Unfortunately, older versions of FreeBSD 2 do not have this feature.
158 archive_cmds_FC='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
159 hardcode_direct_FC=yes
160 hardcode_minus_L_FC=yes
161 @@ -13869,7 +13869,7 @@
162 objformat=`/usr/bin/objformat`
165 - freebsd[123]*) objformat=aout ;;
166 + freebsd[23].*) objformat=aout ;;
170 @@ -13887,7 +13887,7 @@
172 shlibpath_var=LD_LIBRARY_PATH
176 shlibpath_overrides_runpath=yes
178 freebsd3.[01]* | freebsdelf3.[01]*)
179 Index: libgomp/ChangeLog
180 ===================================================================
181 --- libgomp/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 182722)
182 +++ libgomp/ChangeLog (.../branches/gcc-4_6-branch) (wersja 182722)
184 +2011-11-20 Andreas Tobler <andreast@fgznet.ch>
186 + * configure: Regenerate.
188 2011-10-26 Release Manager
190 * GCC 4.6.2 released.
191 Index: libquadmath/configure
192 ===================================================================
193 --- libquadmath/configure (.../tags/gcc_4_6_2_release) (wersja 182722)
194 +++ libquadmath/configure (.../branches/gcc-4_6-branch) (wersja 182722)
195 @@ -8727,7 +8727,7 @@
198 # Unfortunately, older versions of FreeBSD 2 do not have this feature.
201 archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
204 @@ -9643,7 +9643,7 @@
205 objformat=`/usr/bin/objformat`
208 - freebsd[123]*) objformat=aout ;;
209 + freebsd[23].*) objformat=aout ;;
213 @@ -9661,7 +9661,7 @@
215 shlibpath_var=LD_LIBRARY_PATH
219 shlibpath_overrides_runpath=yes
221 freebsd3.[01]* | freebsdelf3.[01]*)
222 Index: libquadmath/ChangeLog
223 ===================================================================
224 --- libquadmath/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 182722)
225 +++ libquadmath/ChangeLog (.../branches/gcc-4_6-branch) (wersja 182722)
227 +2011-11-20 Andreas Tobler <andreast@fgznet.ch>
229 + * configure: Regenerate.
231 2011-10-26 Release Manager
233 * GCC 4.6.2 released.
234 Index: gcc/c-family/ChangeLog
235 ===================================================================
236 --- gcc/c-family/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 182722)
237 +++ gcc/c-family/ChangeLog (.../branches/gcc-4_6-branch) (wersja 182722)
239 +2011-11-04 Eric Botcazou <ebotcazou@adacore.com>
242 + * c-common.c (c_fully_fold_internal) <ADDR_EXPR>: Call fold_offsetof_1.
243 + (fold_offsetof_1): Make global. Remove STOP_REF argument and adjust.
244 + <INDIRECT_REF>: Return the argument.
245 + <ARRAY_REF>: Remove special code for negative offset.
246 + Call fold_build_pointer_plus instead of size_binop.
247 + (fold_offsetof): Remove STOP_REF argument and adjust.
248 + * c-common.h (fold_offsetof_1): Declare.
249 + (fold_offsetof): Remove STOP_REF argument.
251 2011-10-26 Release Manager
253 * GCC 4.6.2 released.
254 Index: gcc/c-family/c-common.c
255 ===================================================================
256 --- gcc/c-family/c-common.c (.../tags/gcc_4_6_2_release) (wersja 182722)
257 +++ gcc/c-family/c-common.c (.../branches/gcc-4_6-branch) (wersja 182722)
258 @@ -1236,13 +1236,7 @@
259 && (op1 = get_base_address (op0)) != NULL_TREE
260 && TREE_CODE (op1) == INDIRECT_REF
261 && TREE_CONSTANT (TREE_OPERAND (op1, 0)))
263 - tree offset = fold_offsetof (op0, op1);
265 - = fold_convert_loc (loc, TREE_TYPE (expr), TREE_OPERAND (op1, 0));
266 - ret = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (expr), op1,
269 + ret = fold_convert_loc (loc, TREE_TYPE (expr), fold_offsetof_1 (op0));
270 else if (op0 != orig_op0 || in_init)
272 ? fold_build1_initializer_loc (loc, code, TREE_TYPE (expr), op0)
273 @@ -8459,20 +8453,15 @@
277 -/* Build the result of __builtin_offsetof. EXPR is a nested sequence of
278 - component references, with STOP_REF, or alternatively an INDIRECT_REF of
279 - NULL, at the bottom; much like the traditional rendering of offsetof as a
280 - macro. Returns the folded and properly cast result. */
281 +/* Fold an offsetof-like expression. EXPR is a nested sequence of component
282 + references with an INDIRECT_REF of a constant at the bottom; much like the
283 + traditional rendering of offsetof as a macro. Return the folded result. */
286 -fold_offsetof_1 (tree expr, tree stop_ref)
288 +fold_offsetof_1 (tree expr)
290 - enum tree_code code = PLUS_EXPR;
293 - if (expr == stop_ref && TREE_CODE (expr) != ERROR_MARK)
294 - return size_zero_node;
296 switch (TREE_CODE (expr))
299 @@ -8489,15 +8478,15 @@
303 - if (!integer_zerop (TREE_OPERAND (expr, 0)))
304 + if (!TREE_CONSTANT (TREE_OPERAND (expr, 0)))
306 error ("cannot apply %<offsetof%> to a non constant address");
307 return error_mark_node;
309 - return size_zero_node;
310 + return TREE_OPERAND (expr, 0);
313 - base = fold_offsetof_1 (TREE_OPERAND (expr, 0), stop_ref);
314 + base = fold_offsetof_1 (TREE_OPERAND (expr, 0));
315 if (base == error_mark_node)
318 @@ -8515,21 +8504,14 @@
322 - base = fold_offsetof_1 (TREE_OPERAND (expr, 0), stop_ref);
323 + base = fold_offsetof_1 (TREE_OPERAND (expr, 0));
324 if (base == error_mark_node)
327 t = TREE_OPERAND (expr, 1);
328 - if (TREE_CODE (t) == INTEGER_CST && tree_int_cst_sgn (t) < 0)
331 - t = fold_build1_loc (input_location, NEGATE_EXPR, TREE_TYPE (t), t);
333 - t = convert (sizetype, t);
334 - off = size_binop (MULT_EXPR, TYPE_SIZE_UNIT (TREE_TYPE (expr)), t);
336 /* Check if the offset goes beyond the upper bound of the array. */
337 - if (code == PLUS_EXPR && TREE_CODE (t) == INTEGER_CST)
338 + if (TREE_CODE (t) == INTEGER_CST && tree_int_cst_sgn (t) >= 0)
340 tree upbound = array_ref_up_bound (expr);
341 if (upbound != NULL_TREE
342 @@ -8569,26 +8551,30 @@
347 + t = convert (sizetype, t);
348 + off = size_binop (MULT_EXPR, TYPE_SIZE_UNIT (TREE_TYPE (expr)), t);
352 /* Handle static members of volatile structs. */
353 t = TREE_OPERAND (expr, 1);
354 gcc_assert (TREE_CODE (t) == VAR_DECL);
355 - return fold_offsetof_1 (t, stop_ref);
356 + return fold_offsetof_1 (t);
362 - return size_binop (code, base, off);
363 + return fold_build2 (POINTER_PLUS_EXPR, TREE_TYPE (base), base, off);
366 +/* Likewise, but convert it to the return type of offsetof. */
369 -fold_offsetof (tree expr, tree stop_ref)
370 +fold_offsetof (tree expr)
372 - /* Convert back from the internal sizetype to size_t. */
373 - return convert (size_type_node, fold_offsetof_1 (expr, stop_ref));
374 + return convert (size_type_node, fold_offsetof_1 (expr));
377 /* Warn for A ?: C expressions (with B omitted) where A is a boolean
378 Index: gcc/c-family/c-common.h
379 ===================================================================
380 --- gcc/c-family/c-common.h (.../tags/gcc_4_6_2_release) (wersja 182722)
381 +++ gcc/c-family/c-common.h (.../branches/gcc-4_6-branch) (wersja 182722)
384 extern void verify_sequence_points (tree);
386 -extern tree fold_offsetof (tree, tree);
387 +extern tree fold_offsetof_1 (tree);
388 +extern tree fold_offsetof (tree);
390 /* Places where an lvalue, or modifiable lvalue, may be required.
391 Used to select diagnostic messages in lvalue_error and
393 ===================================================================
394 --- gcc/DATESTAMP (.../tags/gcc_4_6_2_release) (wersja 182722)
395 +++ gcc/DATESTAMP (.../branches/gcc-4_6-branch) (wersja 182722)
400 ===================================================================
401 --- gcc/configure (.../tags/gcc_4_6_2_release) (wersja 182722)
402 +++ gcc/configure (.../branches/gcc-4_6-branch) (wersja 182722)
403 @@ -7442,17 +7442,7 @@
404 RANLIB="$ac_cv_prog_RANLIB"
409 - # By default, the Darwin ranlib will not treat common symbols as
410 - # definitions when building the archive table of contents. Other
411 - # ranlibs do that; pass an option to the Darwin ranlib that makes
412 - # it behave similarly.
421 # Find a good install program. We prefer a C program (faster),
422 @@ -15740,7 +15730,7 @@
425 # Unfortunately, older versions of FreeBSD 2 do not have this feature.
428 archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
431 @@ -16653,7 +16643,7 @@
432 objformat=`/usr/bin/objformat`
435 - freebsd[123]*) objformat=aout ;;
436 + freebsd[23].*) objformat=aout ;;
440 @@ -16671,7 +16661,7 @@
442 shlibpath_var=LD_LIBRARY_PATH
446 shlibpath_overrides_runpath=yes
448 freebsd3.[01]* | freebsdelf3.[01]*)
449 @@ -17505,7 +17495,7 @@
450 lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
451 lt_status=$lt_dlunknown
452 cat > conftest.$ac_ext <<_LT_EOF
453 -#line 17508 "configure"
454 +#line 17498 "configure"
455 #include "confdefs.h"
458 @@ -17611,7 +17601,7 @@
459 lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
460 lt_status=$lt_dlunknown
461 cat > conftest.$ac_ext <<_LT_EOF
462 -#line 17614 "configure"
463 +#line 17604 "configure"
464 #include "confdefs.h"
467 @@ -18537,7 +18527,7 @@
473 # C++ shared libraries reported to be fairly broken before
476 @@ -20312,7 +20302,7 @@
477 objformat=`/usr/bin/objformat`
480 - freebsd[123]*) objformat=aout ;;
481 + freebsd[23].*) objformat=aout ;;
485 @@ -20330,7 +20320,7 @@
487 shlibpath_var=LD_LIBRARY_PATH
491 shlibpath_overrides_runpath=yes
493 freebsd3.[01]* | freebsdelf3.[01]*)
494 Index: gcc/objc/objc-next-runtime-abi-01.c
495 ===================================================================
496 --- gcc/objc/objc-next-runtime-abi-01.c (.../tags/gcc_4_6_2_release) (wersja 182722)
497 +++ gcc/objc/objc-next-runtime-abi-01.c (.../branches/gcc-4_6-branch) (wersja 182722)
498 @@ -2871,12 +2871,15 @@
502 +/* For NeXT ABI 0 and 1, the personality routines are just those of the
503 + underlying language. */
506 objc_eh_personality (void)
508 if (!objc_eh_personality_decl)
510 - objc_eh_personality_decl = build_personality_function ("objc");
511 + objc_eh_personality_decl = build_personality_function ("gcc");
513 objc_eh_personality_decl = build_personality_function ("gxx");
515 Index: gcc/objc/objc-act.c
516 ===================================================================
517 --- gcc/objc/objc-act.c (.../tags/gcc_4_6_2_release) (wersja 182722)
518 +++ gcc/objc/objc-act.c (.../branches/gcc-4_6-branch) (wersja 182722)
519 @@ -3136,9 +3136,8 @@
520 struct string_descriptor *desc, key;
523 - /* Prep the string argument. */
524 - string = fix_string_type (string);
525 - TREE_SET_CODE (string, STRING_CST);
526 + /* We should be passed a STRING_CST. */
527 + gcc_checking_assert (TREE_CODE (string) == STRING_CST);
528 length = TREE_STRING_LENGTH (string) - 1;
530 /* The target may have different ideas on how to construct an ObjC string
531 Index: gcc/objc/ChangeLog
532 ===================================================================
533 --- gcc/objc/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 182722)
534 +++ gcc/objc/ChangeLog (.../branches/gcc-4_6-branch) (wersja 182722)
536 +2011-11-12 Iain Sandoe <iains@gcc.gnu.org>
538 + Backport from mainline
539 + 2011-10-29 Iain Sandoe <iains@gcc.gnu.org>
542 + * objc-act.c (objc_build_string_object): Remove redundant second
543 + call to fix_string_type (). Add a checking assert that we are,
544 + indeed, passed a STRING_CST.
546 +2011-11-12 Iain Sandoe <iains@gcc.gnu.org>
548 + * objc-next-runtime-abi-01.c (objc_eh_personality): Use gcc personality
549 + for Objective-C m32.
551 2011-10-26 Release Manager
553 * GCC 4.6.2 released.
555 ===================================================================
556 --- gcc/reorg.c (.../tags/gcc_4_6_2_release) (wersja 182722)
557 +++ gcc/reorg.c (.../branches/gcc-4_6-branch) (wersja 182722)
558 @@ -3554,9 +3554,11 @@
562 + /* See if we have a simple (conditional) jump that is useless. */
563 if (! INSN_ANNULLED_BRANCH_P (delay_insn)
564 + && ! condjump_in_parallel_p (delay_insn)
565 && prev_active_insn (target_label) == insn
566 - && ! condjump_in_parallel_p (delay_insn)
567 + && ! BARRIER_P (prev_nonnote_insn (target_label))
569 /* If the last insn in the delay slot sets CC0 for some insn,
570 various code assumes that it is in a delay slot. We could
572 ===================================================================
573 --- gcc/DEV-PHASE (.../tags/gcc_4_6_2_release) (wersja 182722)
574 +++ gcc/DEV-PHASE (.../branches/gcc-4_6-branch) (wersja 182722)
578 ===================================================================
579 --- gcc/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 182722)
580 +++ gcc/ChangeLog (.../branches/gcc-4_6-branch) (wersja 182722)
582 +2011-12-28 Michael Meissner <meissner@linux.vnet.ibm.com>
584 + Backport from mainline
585 + 2011-12-28 Michael Meissner <meissner@linux.vnet.ibm.com>
588 + * config/rs6000/rs6000.c (rs6000_assemble_integer): Don't call
589 + unlikely_text_section_p. Instead check for being in a code
592 +2011-12-23 Richard Guenther <rguenther@suse.de>
594 + PR rtl-optimization/50396
595 + * simplify-rtx.c (simplify_binary_operation_1): Properly
596 + guard code that only works for integers.
598 +2011-12-22 Doug Kwan <dougkwan@google.com>
600 + Backport from mainline
601 + 2011-03-23 Julian Brown <julian@codesourcery.com>
603 + * expr.c (expand_expr_real_1): Only use BLKmode for volatile
604 + accesses which are not naturally aligned.
606 + 2011-11-20 Joey Ye <joey.ye@arm.com>
608 + * expr.c (expand_expr_real_1): Correctly handle strict volatile
609 + bitfield loads smaller than mode size.
611 +2011-12-21 Richard Earnshaw <rearnsha@arm.com>
614 + * arm.c (arm_function_ok_for_sibcall): Use DECL_WEAK in previous
617 +2011-12-21 Richard Earnshaw <rearnsha@arm.com>
620 + * arm.c (arm_function_ok_for_sibcall): Don't try to tailcall a
621 + weak function on bare-metal EABI targets.
623 +2011-12-21 Uros Bizjak <ubizjak@gmail.com>
625 + Backport from mainline
626 + 2011-12-21 Richard Guenther <rguenther@suse.de>
629 + * tree-outof-ssa.c (insert_value_copy_on_edge): Use the
630 + mode of the pseudo as destination mode. Only assert that
631 + is equal to the promoted mode of the decl if it is a REG.
633 +2011-12-21 Uros Bizjak <ubizjak@gmail.com>
635 + * config/alpha/linux-unwind.h: Update copyright years.
636 + (MD_FROB_UPDATE_CONTEXT): New define.
637 + (alpha_frob_update_context): New function.
639 +2011-12-19 Martin Jambor <mjambor@suse.cz>
641 + PR tree-optimization/51583
642 + * tree-sra.c (load_assign_lhs_subreplacements): Call
643 + force_gimple_operand_gsi when necessary also in case of no
644 + corresponding replacement on the RHS.
646 +2011-12-16 Eric Botcazou <ebotcazou@adacore.com>
648 + * config/sparc/sparc.md (UNSPEC_FRAME_BLOCKAGE): New constant.
649 + (frame_blockage): New expander.
650 + (frame_blockage<P:mode>): New instruction.
651 + * config/sparc/sparc.c (sparc_expand_prologue): When the sequence of
652 + instructions establishing the frame isn't atomic, emit frame blockage.
654 +2011-12-15 H.J. Lu <hongjiu.lu@intel.com>
656 + Backport from mainline.
657 + 2011-10-28 Chung-Lin Tang <cltang@codesourcery.com>
659 + PR rtl-optimization/49720
660 + * simplify-rtx.c (simplify_relational_operation_1): Detect
661 + infinite recursion condition in "(eq/ne (plus x cst1) cst2)
662 + simplifies to (eq/ne x (cst2 - cst1))" case.
664 +2011-12-15 Andreas Tobler <andreast@fgznet.ch>
666 + Backport from mainline.
667 + 2011-12-15 Andreas Tobler <andreast@fgznet.ch>
669 + * config/i386/freebsd.h (TARGET_ASM_FILE_END): Define.
671 +2011-12-13 Eric Botcazou <ebotcazou@adacore.com>
673 + * lto-streamer-out.c (write_symbol): Use proper 64-bit host type.
674 + * lto-cgraph.c (input_cgraph_opt_section): Use 'int' for offsets.
675 + * lto-streamer-in.c (lto_read_body): Likewise.
676 + (lto_input_toplevel_asms): Likewise.
677 + * lto-section-in.c (lto_create_simple_input_block): Likewise.
678 + * lto-opts.c (lto_read_file_options): Likewise.
679 + * ipa-prop.c (ipa_prop_read_section): Likewise.
681 + * df.h (DF_NOTE): Fix typo in comment.
683 +2011-12-13 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
685 + * regmove.c (fixup_match_2): Only access call_used_regs with hard
688 +2011-12-12 Jakub Jelinek <jakub@redhat.com>
690 + PR middle-end/51510
691 + * calls.c (internal_arg_pointer_based_exp_scan): Don't use
692 + VEC_safe_grow_cleared if idx is smaller than VEC_length.
694 + Backported from mainline
695 + 2011-12-11 Jakub Jelinek <jakub@redhat.com>
697 + PR tree-optimization/51485
698 + * tree-vect-data-refs.c (vect_analyze_data_refs): Give up on
701 +2011-12-12 Eric Botcazou <ebotcazou@adacore.com>
703 + PR tree-optimization/50569
704 + * tree-sra.c (build_ref_for_model): Replicate a chain of COMPONENT_REFs
705 + in the expression of MODEL instead of just the last one.
707 +2011-12-09 Michael Meissner <meissner@the-meissners.org>
709 + Backport from mainline
710 + 2011-12-09 Michael Meissner <meissner@the-meissners.org>
712 + PR rtl-optimization/51469
713 + * varasm.c (default_binds_local_p_1): If the symbol is a gnu
714 + indirect function, mark the symbol as non-local.
716 +2011-12-09 Jakub Jelinek <jakub@redhat.com>
718 + Backport from mainline
719 + 2011-12-08 Jakub Jelinek <jakub@redhat.com>
721 + PR tree-optimization/51466
722 + * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also copy
725 + 2011-11-28 Jakub Jelinek <jakub@redhat.com>
727 + PR tree-optimization/50078
728 + * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Copy over
729 + TREE_THIS_VOLATILE also from the old to new lhs resp. rhs.
731 +2011-12-09 Kazu Hirata <kazu@codesourcery.com>
733 + Backport from mainline:
735 + 2011-12-05 Kazu Hirata <kazu@codesourcery.com>
738 + * config/arm/arm.md (*minmax_arithsi): Always require the else
739 + clause in the MINUS case.
741 +2011-12-08 Teresa Johnson <tejohnson@google.com>
743 + Backport from mainline:
745 + 2011-08-05 Uros Bizjak <ubizjak@gmail.com>
747 + * config/i386/i386.md (*movdi_internal_rex64): Use "!o" constraint
748 + instead of "!m" for operand 0, alternative 4.
749 + (*movdf_internal_rex64): Ditto for operand 0, alernative 6.
751 +2011-12-08 Jakub Jelinek <jakub@redhat.com>
753 + Backport from mainline
754 + 2011-12-05 Jakub Jelinek <jakub@redhat.com>
757 + * c-decl.c (pop_scope): Don't add DECL_EXTERNAL decls
758 + for debug info if scope is file_scope.
761 + * c-decl.c (c_finish_incomplete_decl, finish_decl): Call
762 + relayout_decl instead of layout_decl.
764 + 2011-12-05 Jakub Jelinek <jakub@redhat.com>
765 + Eric Botcazou <ebotcazou@adacore.com>
767 + PR middle-end/51323
768 + PR middle-end/50074
769 + * calls.c (internal_arg_pointer_exp_state): New variable.
770 + (internal_arg_pointer_based_exp_1,
771 + internal_arg_pointer_exp_scan): New functions.
772 + (internal_arg_pointer_based_exp): New function.
773 + (mem_overlaps_already_clobbered_arg_p): Use it.
774 + (expand_call): Free internal_arg_pointer_exp_state.cache vector
775 + and clear internal_arg_pointer_exp_state.scan_start.
777 + 2011-11-30 Jakub Jelinek <jakub@redhat.com>
779 + PR rtl-optimization/48721
780 + * sched-deps.c (sched_analyze_insn): For SIBLING_CALL_P set
781 + reg_pending_barrier to TRUE_BARRIER.
783 + 2011-11-26 Joern Rennecke <joern.rennecke@embecosm.com>
785 + PR middle-end/50074
786 + * calls.c (mem_overlaps_already_clobbered_arg_p):
787 + Return false if no outgoing arguments have been stored so far.
789 +2011-12-08 Eric Botcazou <ebotcazou@adacore.com>
791 + PR tree-optimization/51315
792 + * tree-sra.c (tree_non_mode_aligned_mem_p): Rename to...
793 + (tree_non_aligned_mem_p): ...this. Add ALIGN parameter. Look into
794 + MEM_REFs and use get_object_or_type_alignment for them.
795 + (build_accesses_from_assign): Adjust for above change.
796 + (access_precludes_ipa_sra_p): Likewise.
798 +2011-12-06 Martin Jambor <mjambor@suse.cz>
800 + Backport from mainline:
802 + 2011-12-02 Martin Jambor <mjambor@suse.cz>
804 + PR tree-optimization/50622
805 + * tree-sra.c (load_assign_lhs_subreplacements): Force gimple operand
806 + if both lacc and racc are grp_partial_lhs.
808 +2011-12-06 Iain Sandoe <iains@gcc.gnu.org>
810 + * config/rs6000/rs6000.c (darwin_rs6000_override_options): Initialize
811 + rs6000_current_abi.
813 +2011-12-06 Alan Modra <amodra@gmail.com>
816 + * config/rs6000/rs6000.c (rs6000_emit_prologue <TARGET_SPE_ABI>):
817 + Do not mark r11 setup as frame-related. Pass correct offset to
818 + rs6000_emit_savres_rtx. Correct out-of-line rs6000_frame_related
819 + arguments. Correct sp_offset. Remove "offset" fudge from
820 + in-line rs6000_frame_related call. Rename misleading variable.
821 + Fix comments and whitespace. Tidy some expressions.
822 + (rs6000_emit_epilogue <TARGET_SPE_ABI>): Always set frame_reg_rtx
823 + to r11 in out-of-line case. Correct sp_offset. Pass correct
824 + offset to rs6000_emit_savres_rtx. Rename misleading variable.
825 + Fix comments and whitespace. Tidy some expressions.
826 + (rs6000_emit_epilogue <non-TARGET_SPE_ABI>): Add sp_offset
827 + adjustment when !saving_GPRs_inline. Correct register mode
828 + used in address calcs.
829 + (rs6000_emit_epilogue <non-TARGET_SPE_ABI>): Similarly when
830 + !restoring_GPRs_inline.
832 +2011-12-04 Jérémie Detrey <Jeremie.Detrey@loria.fr>
835 + * config/i386/avxintrin.h (_mm256_insert_epi64): Declare second
836 + parameter as long long.
838 +2011-12-02 Georg-Johann Lay <avr@gjlay.de>
842 + * config/avr/libgcc.S (__prologue_saves__, __epilogue_restores__):
843 + Enclose parts using __SP_H__ in !defined (__AVR_HAVE_8BIT_SP__).
844 + Add FIXME comments.
845 + * config/avr/avr.md (movhi_sp_r_irq_off, movhi_sp_r_irq_on): Set
846 + insn condition to !AVR_HAVE_8BIT_SP.
847 + * config/avr/avr.c (output_movhi): "clr%B0" instead of "in
848 + %B0,__SP_H__" if AVR_HAVE_8BIT_SP.
849 + (avr_file_start): Only print "__SP_H__ = 0x3e" if !AVR_HAVE_8BIT_SP.
850 + * config/avr/avr-devices.c (avr_mcu_types): ATtiny4313 and
851 + AT86RF401 have a 16-bit SP (their manual is bogus).
853 +2011-11-25 Richard Sandiford <richard.sandiford@linaro.org>
855 + Backport from mainline:
857 + 2011-03-29 Richard Sandiford <richard.sandiford@linaro.org>
860 + * dwarf2out.c (dw_loc_list_node): Add resolved_addr and replaced.
861 + (cached_dw_loc_list_def): New structure.
862 + (cached_dw_loc_list): New typedef.
863 + (cached_dw_loc_list_table): New variable.
864 + (cached_dw_loc_list_table_hash): New function.
865 + (cached_dw_loc_list_table_eq): Likewise.
866 + (add_location_or_const_value_attribute): Take a bool cache_p.
867 + Cache the list when the parameter is true.
868 + (gen_formal_parameter_die): Update caller.
869 + (gen_variable_die): Likewise.
870 + (dwarf2out_finish): Likewise.
871 + (dwarf2out_abstract_function): Nullify cached_dw_loc_list_table
872 + while generating debug info for the decl.
873 + (dwarf2out_function_decl): Clear cached_dw_loc_list_table.
874 + (dwarf2out_init): Initialize cached_dw_loc_list_table.
875 + (resolve_addr): Cache the result of resolving a chain of
878 +2011-11-24 Enkovich Ilya <ilya.enkovich@intel.com>
881 + * i386.c (distance_non_agu_define): Fix insn attr check.
883 +2011-11-20 Andreas Tobler <andreast@fgznet.ch>
885 + * configure: Regenerate.
887 +2011-11-19 Eric Botcazou <ebotcazou@adacore.com>
889 + PR rtl-optimization/51187
890 + * reorg.c (relax_delay_slots): Do not consider a jump useless if there
891 + is a barrier between the jump and its target label.
893 +2011-11-19 Richard Earnshaw <rearnsha@arm.com>
896 + * config/arm/arm.c (neon_disambiguate_copy): Correctly handle partial
897 + overlap of src and dest operands.
899 +2011-11-18 Iain Sandoe <iains@gcc.gnu.org>
902 + * configure.ac: Remove ranlib special-casing for Darwin.
903 + * configure: Regenerate.
905 +2011-11-16 Richard Earnshaw <rearnsha@arm.com>
906 + Bernd Schmidt <bernds@coudesourcery.com>
907 + Sebastian Huber <sebastian.huber@embedded-brains.de>
910 + * config/arm/arm.c (store_multiple_sequence): Avoid cases where
911 + the base reg is stored iff compiling for Thumb1.
913 +2011-11-13 Iain Sandoe <iains@gcc.gnu.org>
916 + Backport from mainline r180523
917 + * config/darwin.c (top level): Amend comments concerning LTO output.
918 + (lto_section_num): New variable. (darwin_lto_section_e): New GTY.
919 + (LTO_SECTS_SECTION, LTO_INDEX_SECTION): New.
920 + (LTO_NAMES_SECTION): Rename.
921 + (darwin_asm_named_section): Record LTO section counts and switches
922 + in a vec of darwin_lto_section_e.
923 + (darwin_file_start): Remove unused code.
924 + (darwin_file_end): Put an LTO section termination label. Handle
925 + output of the wrapped LTO sections, index and names table.
927 +2011-11-12 Iain Sandoe <iains@gcc.gnu.org>
930 + * config/rs6000/rs6000.c (rs6000_legitimize_reload_address):
931 + Only expand a symbol ref. into an access when the entity is defined
934 +2011-11-10 Jakub Jelinek <jakub@redhat.com>
936 + PR middle-end/51077
937 + * tree-object-size.c (addr_object_size): Check TREE_CODE of
938 + MEM_REF's operand rather than code of the MEM_REF itself.
940 +2011-11-07 Alan Modra <amodra@gmail.com>
943 + * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Always emit
944 + blockage for ABI_V4.
946 +2011-11-04 Eric Botcazou <ebotcazou@adacore.com>
949 + * c-parser.c (c_parser_postfix_expression) <RID_OFFSETOF>: Adjust call
951 + * c-typeck.c (build_unary_op) <ADDR_EXPR>: Call fold_offsetof_1.
953 +2011-11-04 Eric Botcazou <ebotcazou@adacore.com>
956 + * config/sparc/sparc.h (ASM_CPU_SPEC): Pass -Av8 if -mcpu=v8.
958 +2011-11-03 Uros Bizjak <ubizjak@gmail.com>
960 + * config/i386/i386.md (lround<X87MODEF:mode><SWI248x:mode>2,
961 + rint<mode>2, floor<mode>2, lfloor<MODEF:mode><SWI48:mode>2,
962 + btrunc<mode>2, lwp_lwpval<mode>3): Use operands[N] instead of operandN.
964 +2011-11-02 Eric Botcazou <ebotcazou@adacore.com>
967 + * config/sparc/sparc.md (movsf_insn): Reindent constraints.
968 + (movsf_insn_no_fpu): Likewise.
969 + (movdf_insn_sp32): Likewise.
970 + (movdf_insn_sp32_no_fpu): Likewise.
971 + (movdf_insn_sp32_v9): Likewise. Remove redundant GY constraint.
972 + (movdf_insn_sp32_v9_no_fpu): Likewise.
973 + (movdf_insn_sp64): Likewise.
974 + (movdf_insn_sp64_no_fpu): Likewise.
975 + (movtf_insn_sp32): Likewise.
976 + (movtf_insn_sp32_no_fpu): Likewise.
977 + (movtf_insn_sp64): Likewise.
978 + (movtf_insn_sp64_hq): Likewise.
979 + (movtf_insn_sp64_no_fpu): Likewise.
981 +2011-11-02 Bernd Schmidt <bernds@codesourcery.com>
983 + * cfgcleanup.c (try_head_merge_bb): If get_condition returns
984 + NULL for a jump that is a cc0 insn, pick the previous insn for
987 +2011-11-01 Uros Bizjak <ubizjak@gmail.com>
989 + * config/i386/i386.md (splitters for int-float conversion): Use
990 + SUBREG_REG on SUBREGs in splitter constraints.
992 +2011-11-01 Julian Brown <julian@codesourcery.com>
994 + PR rtl-optimization/47918
995 + * reload1.c (set_initial_label_offsets): Use initial offsets
996 + for labels on the nonlocal_goto_handler_labels chain.
998 +2011-10-29 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
1001 + * config/pa/pa.c (emit_move_sequence): Legitimize TLS symbol references.
1002 + * config/pa/pa.h (LEGITIMATE_CONSTANT_P): Return false for
1003 + TLS_MODEL_GLOBAL_DYNAMIC and TLS_MODEL_LOCAL_DYNAMIC symbol references.
1005 +2011-10-27 Uros Bizjak <ubizjak@gmail.com>
1008 + * config/i386/sse.md (*avx_unpcklpd256): Remove extra insn
1009 + constraints. Change alternative 1 to "x,m,1".
1011 +2011-10-26 Jakub Jelinek <jakub@redhat.com>
1013 + * BASE-VER: Set to 4.6.3.
1014 + * DEV-PHASE: Set to prerelease.
1016 2011-10-26 Release Manager
1018 * GCC 4.6.2 released.
1021 2011-10-07 Bernd Schmidt <bernds@codesourcery.com>
1024 - * config/arm/arm.md (arm_subsi3_insn): Lose the last alternative.
1026 + * config/arm/arm.md (arm_subsi3_insn): Lose the last alternative.
1028 2011-10-06 Jakub Jelinek <jakub@redhat.com>
1031 * config/rs6000/rs6000.md (probe_stack): Use explicit operand.
1032 * config/rs6000/rs6000.c (output_probe_stack_range): Likewise.
1034 -2011-09-14 Diego Novillo <dnovillo@google.com>
1035 +2011-09-14 Diego Novillo <dnovillo@google.com>
1037 * tree-vect-stmts.c (vect_transform_stmt): Remove unused
1038 local variable ORIG_SCALAR_STMT.
1039 Index: gcc/testsuite/gcc.target/arm/pr49641.c
1040 ===================================================================
1041 --- gcc/testsuite/gcc.target/arm/pr49641.c (.../tags/gcc_4_6_2_release) (wersja 0)
1042 +++ gcc/testsuite/gcc.target/arm/pr49641.c (.../branches/gcc-4_6-branch) (wersja 182722)
1044 +/* { dg-do compile } */
1045 +/* { dg-options "-mthumb -O2" } */
1046 +/* { dg-require-effective-target arm_thumb1_ok } */
1047 +/* { dg-final { scan-assembler-not "stmia\[\\t \]*r3!\[^\\n]*r3" } } */
1049 + void *t1, *t2, *t3;
1051 +extern volatile int y;
1052 +static inline void foo(z *x) {
1054 + x->t2 = ((void *)0);
1062 Index: gcc/testsuite/gcc.target/arm/sibcall-2.c
1063 ===================================================================
1064 --- gcc/testsuite/gcc.target/arm/sibcall-2.c (.../tags/gcc_4_6_2_release) (wersja 0)
1065 +++ gcc/testsuite/gcc.target/arm/sibcall-2.c (.../branches/gcc-4_6-branch) (wersja 182722)
1067 +/* { dg-require-effective-target arm_eabi } */
1068 +/* { dg-do compile } */
1069 +/* { dg-options "-O2 -mabi=aapcs" } */
1072 +extern void __attribute__((weak)) wfunc(void);
1075 + wfunc(); /* Must not tail-call. */
1078 +/* { dg-final { scan-assembler-not "b\[\\t \]+wfunc" } } */
1079 Index: gcc/testsuite/gcc.target/powerpc/pr51623.c
1080 ===================================================================
1081 --- gcc/testsuite/gcc.target/powerpc/pr51623.c (.../tags/gcc_4_6_2_release) (wersja 0)
1082 +++ gcc/testsuite/gcc.target/powerpc/pr51623.c (.../branches/gcc-4_6-branch) (wersja 182722)
1084 +/* PR target/51623 */
1085 +/* { dg-do compile { target { { powerpc*-*-linux* && ilp32 } || { powerpc-*-eabi* } } } } */
1086 +/* { dg-options "-mrelocatable -ffreestanding" } */
1088 +/* This generated an error, since the compiler was calling
1089 + unlikely_text_section_p in a context where it wasn't valid. */
1091 +typedef long long loff_t;
1092 +typedef unsigned size_t;
1096 + unsigned writesize;
1101 +extern int strcmp(const char *,const char *);
1102 +extern char * strchr(const char *,int);
1109 +int printf(const char *fmt, ...) __attribute__ ((format (__printf__, 1, 2)));
1110 +void* malloc(size_t);
1114 +extern int nand_curr_device;
1115 +extern struct mtd_info nand_info[];
1117 +static int nand_dump(struct mtd_info *nand, unsigned long off, int only_oob)
1120 + unsigned char *datbuf, *oobbuf, *p;
1122 + datbuf = malloc(nand->writesize + nand->oobsize);
1123 + oobbuf = malloc(nand->oobsize);
1124 + off &= ~(nand->writesize - 1);
1126 + printf("Page %08lx dump:\n", off);
1127 + i = nand->writesize >> 4;
1132 + printf("\t%02x %02x %02x %02x %02x %02x %02x %02x"
1133 + " %02x %02x %02x %02x %02x %02x %02x %02x\n",
1134 + p[0], p[1], p[2], p[3], p[4], p[5], p[6], p[7],
1135 + p[8], p[9], p[10], p[11], p[12], p[13], p[14],
1140 + i = nand->oobsize >> 3;
1147 +int do_nand(struct cmd_tbl_s * cmdtp, int flag, int argc, char *argv[])
1150 + unsigned long off;
1152 + struct mtd_info *nand;
1159 + if (strcmp(cmd, "info") == 0) {
1164 + if (strcmp(cmd, "device") == 0) {
1168 + dev = (int)simple_strtoul(argv[2], ((void *)0), 10);
1169 + nand_curr_device = dev;
1173 + if (strcmp(cmd, "bad") != 0 && strcmp(cmd, "erase") != 0 )
1176 + if (nand_curr_device < 0 ) {
1179 + nand = &nand_info[nand_curr_device];
1181 + if (strcmp(cmd, "erase") == 0 || strcmp(cmd, "scrub") == 0) {
1182 + int clean = argc > 2 && !strcmp("clean", argv[2]);
1183 + int scrub = !strcmp(cmd, "scrub");
1187 + if (strncmp(cmd, "dump", 4) == 0) {
1191 + s = strchr(cmd, '.');
1192 + off = (int)simple_strtoul(argv[2], ((void *)0), 16);
1194 + if (s != ((void *)0) && strcmp(s, ".oob") == 0)
1195 + nand_dump(nand, off, 1);
1197 + nand_dump(nand, off, 0);
1206 +void *ptr = do_nand;
1207 Index: gcc/testsuite/gcc.target/i386/pr51393.c
1208 ===================================================================
1209 --- gcc/testsuite/gcc.target/i386/pr51393.c (.../tags/gcc_4_6_2_release) (wersja 0)
1210 +++ gcc/testsuite/gcc.target/i386/pr51393.c (.../branches/gcc-4_6-branch) (wersja 182722)
1212 +/* { dg-do run } */
1213 +/* { dg-require-effective-target avx } */
1214 +/* { dg-require-effective-target lp64 } */
1215 +/* { dg-options "-O -mavx" } */
1217 +#include "avx-check.h"
1218 +#include <immintrin.h>
1221 +__attribute__((noinline))
1224 + long long in = 0x800000000ll;
1227 + __m256i zero = _mm256_setzero_si256();
1228 + __m256i tmp = _mm256_insert_epi64 (zero, in, 0);
1229 + out = _mm256_extract_epi64(tmp, 0);
1234 Index: gcc/testsuite/gcc.target/i386/pr48721.c
1235 ===================================================================
1236 --- gcc/testsuite/gcc.target/i386/pr48721.c (.../tags/gcc_4_6_2_release) (wersja 0)
1237 +++ gcc/testsuite/gcc.target/i386/pr48721.c (.../branches/gcc-4_6-branch) (wersja 182722)
1239 +/* PR rtl-optimization/48721 */
1240 +/* { dg-do compile } */
1241 +/* { dg-options "-O -foptimize-sibling-calls -fsched2-use-superblocks -fschedule-insns2 -mtune=core2" } */
1243 +extern unsigned char a[];
1244 +extern int b[], d[], e[], f[], g[], *h[], m[], *n[], o[];
1250 + int s2, s3, s4, s5, s6, s7, s8;
1253 +__attribute__((noinline, noclone)) int
1260 +bar (int x, struct S *y)
1268 + int t2, t4, t5, t6, t7, t8;
1270 + t8 = *n[m[x] * 5];
1273 + z = g[f[x] + y->s6];
1275 + t5 = d[c[x] + y->s3 * 17];
1278 + if (a[z] != y->s1)
1290 Index: gcc/testsuite/gcc.target/i386/movdi-rex64.c
1291 ===================================================================
1292 --- gcc/testsuite/gcc.target/i386/movdi-rex64.c (.../tags/gcc_4_6_2_release) (wersja 0)
1293 +++ gcc/testsuite/gcc.target/i386/movdi-rex64.c (.../branches/gcc-4_6-branch) (wersja 182722)
1295 +/* { dg-do compile { target *-*-linux* } } */
1296 +/* { dg-options "-fPIE" } */
1298 +char *strcpy (char *dest, const char *src);
1300 +static __thread char buffer[25];
1301 +const char * error_message (void)
1303 + strcpy (buffer, "Unknown code ");
1306 Index: gcc/testsuite/gfortran.dg/whole_file_35.f90
1307 ===================================================================
1308 --- gcc/testsuite/gfortran.dg/whole_file_35.f90 (.../tags/gcc_4_6_2_release) (wersja 0)
1309 +++ gcc/testsuite/gfortran.dg/whole_file_35.f90 (.../branches/gcc-4_6-branch) (wersja 182722)
1311 +! { dg-do compile }
1315 +! Contributed by Vittorio Zecca
1322 + module procedure uch
1326 + character (len=1), intent (in) :: c
1329 + uch%val = 127 - ichar (c)
1335 + print *,ichar('~') ! must print "1"
1338 +! { dg-final { cleanup-modules "m" } }
1339 Index: gcc/testsuite/gfortran.dg/move_alloc_8.f90
1340 ===================================================================
1341 --- gcc/testsuite/gfortran.dg/move_alloc_8.f90 (.../tags/gcc_4_6_2_release) (wersja 0)
1342 +++ gcc/testsuite/gfortran.dg/move_alloc_8.f90 (.../branches/gcc-4_6-branch) (wersja 182722)
1344 +! { dg-do compile }
1348 +! Module "bug" contributed by Martin Steghöfer.
1353 + INTEGER, ALLOCATABLE :: VALUE
1356 + SUBROUTINE POINTER_INTENT_IN_BUG_WORKING(POINTER_INTENT_IN_VARIABLE)
1357 + TYPE(MY_TYPE), POINTER, INTENT(IN) :: POINTER_INTENT_IN_VARIABLE
1358 + TYPE(MY_TYPE), POINTER :: POINTER_VARIABLE_LOCAL
1359 + INTEGER, ALLOCATABLE :: LOCAL_VALUE
1361 + POINTER_VARIABLE_LOCAL=>POINTER_INTENT_IN_VARIABLE
1362 + CALL MOVE_ALLOC(POINTER_VARIABLE_LOCAL%VALUE, LOCAL_VALUE)
1365 + END SUBROUTINE POINTER_INTENT_IN_BUG_WORKING
1367 + SUBROUTINE POINTER_INTENT_IN_BUG_FAILING(POINTER_INTENT_IN_VARIABLE)
1368 + TYPE(MY_TYPE), POINTER, INTENT(IN) :: POINTER_INTENT_IN_VARIABLE
1369 + INTEGER, ALLOCATABLE :: LOCAL_VALUE
1371 + CALL MOVE_ALLOC(POINTER_INTENT_IN_VARIABLE%VALUE, LOCAL_VALUE)
1374 + END SUBROUTINE POINTER_INTENT_IN_BUG_FAILING
1379 + INTEGER, ALLOCATABLE :: VALUE
1382 + SUBROUTINE sub (dt)
1383 + type(MY_TYPE), intent(in) :: dt
1384 + INTEGER, ALLOCATABLE :: lv
1385 + call move_alloc(dt%VALUE, lv) ! { dg-error "cannot be INTENT.IN." }
1387 +end subroutine test1
1389 +subroutine test2 (x, px)
1392 + integer, allocatable :: a
1396 + type(t), pointer :: ptr
1397 + integer, allocatable :: a
1400 + type(t2), intent(in) :: x
1401 + type(t2), pointer, intent(in) :: px
1403 + integer, allocatable :: a
1404 + type(t2), pointer :: ta
1406 + call move_alloc (px, ta) ! { dg-error "cannot be INTENT.IN." }
1407 + call move_alloc (x%a, a) ! { dg-error "cannot be INTENT.IN." }
1408 + call move_alloc (x%ptr%a, a) ! OK (3)
1409 + call move_alloc (px%a, a) ! OK (4)
1410 + call move_alloc (px%ptr%a, a) ! OK (5)
1411 +end subroutine test2
1413 +subroutine test3 (x, px)
1416 + integer, allocatable :: a
1420 + class(t), pointer :: ptr
1421 + integer, allocatable :: a
1424 + type(t2), intent(in) :: x
1425 + class(t2), pointer, intent(in) :: px
1427 + integer, allocatable :: a
1428 + class(t2), pointer :: ta
1430 + call move_alloc (px, ta) ! { dg-error "cannot be INTENT.IN." }
1431 + call move_alloc (x%a, a) ! { dg-error "cannot be INTENT.IN." }
1432 + call move_alloc (x%ptr%a, a) ! OK (6)
1433 + call move_alloc (px%a, a) ! OK (7)
1434 + call move_alloc (px%ptr%a, a) ! OK (8)
1435 +end subroutine test3
1439 + INTEGER, ALLOCATABLE :: VALUE
1442 + SUBROUTINE sub (dt)
1443 + CLASS(MY_TYPE), intent(in) :: dt
1444 + INTEGER, ALLOCATABLE :: lv
1445 + call move_alloc(dt%VALUE, lv) ! { dg-error "cannot be INTENT.IN." }
1447 +end subroutine test4
1449 +! { dg-final { cleanup-modules "bug" } }
1450 Index: gcc/testsuite/gfortran.dg/realloc_on_assign_8.f90
1451 ===================================================================
1452 --- gcc/testsuite/gfortran.dg/realloc_on_assign_8.f90 (.../tags/gcc_4_6_2_release) (wersja 0)
1453 +++ gcc/testsuite/gfortran.dg/realloc_on_assign_8.f90 (.../branches/gcc-4_6-branch) (wersja 182722)
1455 +! { dg-do compile }
1459 +! Contribued by François Willot
1467 + DOUBLE PRECISION, ALLOCATABLE :: x(:)
1472 Index: gcc/testsuite/gfortran.dg/default_initialization_5.f90
1473 ===================================================================
1474 --- gcc/testsuite/gfortran.dg/default_initialization_5.f90 (.../tags/gcc_4_6_2_release) (wersja 0)
1475 +++ gcc/testsuite/gfortran.dg/default_initialization_5.f90 (.../branches/gcc-4_6-branch) (wersja 182722)
1478 +! { dg-options "-fdump-tree-original" }
1482 +! Contributed by darmar.xxl@gmail.com
1486 + real(8), dimension(:), allocatable :: rsk
1492 +!*********************
1497 + type(arr_t2), target :: tgt
1500 + type(arr_t), pointer :: head => null()
1503 + type(arr_t2), pointer :: head => tgt
1506 +!***********************
1512 + type(my_list) :: my_data
1513 + end type data_all_t
1515 + type(my_list2) :: my_data
1516 + end type data_all_t2
1518 + subroutine do_job()
1519 + type(data_all_t) :: dum
1520 + type(data_all_t2) :: dum2
1522 + if (associated(dum%my_data%head)) then
1525 + print *, 'OK: do_job my_data%head is NOT associated'
1528 + if (dum2%my_data%head%a /= 77) &
1539 +! { dg-final { scan-tree-dump-times "my_data.head = 0B" 1 "original" } }
1540 +! { dg-final { scan-tree-dump-times "my_data.head = &tgt" 1 "original" } }
1541 +! { dg-final { cleanup-tree-dump "original" } }
1542 +! { dg-final { cleanup-modules "arr_m list_m worker_mod" } }
1543 Index: gcc/testsuite/gfortran.dg/pr50875.f90
1544 ===================================================================
1545 --- gcc/testsuite/gfortran.dg/pr50875.f90 (.../tags/gcc_4_6_2_release) (wersja 0)
1546 +++ gcc/testsuite/gfortran.dg/pr50875.f90 (.../branches/gcc-4_6-branch) (wersja 182722)
1548 +! { dg-do compile { target { i?86-*-* x86_64-*-* } } }
1549 +! { dg-options "-O3 -mavx" }
1551 +! PR fortran/50875.f90
1557 + integer, parameter :: dp=kind(1.d0)
1561 + real(kind=dp), allocatable :: real_array_A(:),real_array_B(:,:)
1562 + complex(kind=dp), allocatable :: cmplx_array_A(:)
1566 + subroutine routine_A
1570 + allocate(cmplx_array_A(P),real_array_B(P,P),real_array_A(P))
1576 + cmplx_array_A = cmplx(real_array_B(:,i),0.0_dp,dp)
1577 + cmplx_array_A = cmplx_array_A * exp(cmplx(0.0_dp,real_array_A+1))
1580 + deallocate(cmplx_array_A,real_array_B,real_array_A)
1582 + end subroutine routine_A
1586 +! { dg-final { cleanup-modules "test" } }
1587 Index: gcc/testsuite/gfortran.dg/warn_function_without_result_2.f90
1588 ===================================================================
1589 --- gcc/testsuite/gfortran.dg/warn_function_without_result_2.f90 (.../tags/gcc_4_6_2_release) (wersja 0)
1590 +++ gcc/testsuite/gfortran.dg/warn_function_without_result_2.f90 (.../branches/gcc-4_6-branch) (wersja 182722)
1592 +! { dg-do compile }
1593 +! { dg-options "-Wall" }
1599 + integer pure function f() ! { dg-warning "Return value of function 'f' at .1. not set" }
1601 + integer pure function g() result(h) ! { dg-warning "Return value 'h' of function 'g' declared at .1. not set" }
1603 + integer pure function i()
1606 + integer pure function j() result(k)
1610 +! { dg-final { cleanup-modules "mod" } }
1611 Index: gcc/testsuite/gfortran.dg/implicit_pure_1.f90
1612 ===================================================================
1613 --- gcc/testsuite/gfortran.dg/implicit_pure_1.f90 (.../tags/gcc_4_6_2_release) (wersja 0)
1614 +++ gcc/testsuite/gfortran.dg/implicit_pure_1.f90 (.../branches/gcc-4_6-branch) (wersja 182722)
1620 +! Contributed by Harald Anlauf
1625 + integer :: neval = 0
1627 + subroutine inc_eval
1629 + end subroutine inc_eval
1636 + function f(x) ! Should be implicit pure
1638 + real, intent(in) :: x
1642 + function g(x) ! Should NOT be implicit pure
1644 + real, intent(in) :: x
1654 + real :: x = 1, y = 1, t, u, v, w
1655 + if (neval /= 0) call abort ()
1657 + if (neval /= 0) call abort ()
1658 + u = f(x)*f(y) + f(x)*f(y)
1659 + if (neval /= 0) call abort ()
1661 + if (neval /= 2) call abort ()
1662 + w = g(x)*g(y) + g(x)*g(y)
1663 + if (neval /= 6) call abort ()
1664 + if (t /= 1.0 .or. u /= 2.0 .or. v /= 1.0 .or. w /= 2) call abort ()
1665 +end program gfcbug114a
1667 +! { dg-final { scan-module "b" "IMPLICIT_PURE" } }
1668 +! { dg-final { cleanup-modules "b" } }
1669 Index: gcc/testsuite/gcc.c-torture/execute/pr51466.c
1670 ===================================================================
1671 --- gcc/testsuite/gcc.c-torture/execute/pr51466.c (.../tags/gcc_4_6_2_release) (wersja 0)
1672 +++ gcc/testsuite/gcc.c-torture/execute/pr51466.c (.../branches/gcc-4_6-branch) (wersja 182722)
1674 +/* PR tree-optimization/51466 */
1676 +extern void abort (void);
1678 +__attribute__((noinline, noclone)) int
1681 + volatile int v[4];
1684 + p = (int *) &v[i];
1688 +__attribute__((noinline, noclone)) int
1691 + volatile int v[4];
1694 + p = (int *) &v[i];
1699 +__attribute__((noinline, noclone)) int
1702 + volatile int v[4];
1705 + p = (int *) &v[0];
1713 + if (foo (3) != 6 || bar (2) != 8 || baz (0) != 8 || baz (1) != 6)
1717 Index: gcc/testsuite/gcc.c-torture/execute/20111212-1.c
1718 ===================================================================
1719 --- gcc/testsuite/gcc.c-torture/execute/20111212-1.c (.../tags/gcc_4_6_2_release) (wersja 0)
1720 +++ gcc/testsuite/gcc.c-torture/execute/20111212-1.c (.../branches/gcc-4_6-branch) (wersja 182722)
1722 +/* PR tree-optimization/50569 */
1723 +/* Reported by Paul Koning <pkoning@gcc.gnu.org> */
1724 +/* Reduced testcase by Mikael Pettersson <mikpe@it.uu.se> */
1729 + } sent __attribute__((packed));
1732 +void __attribute__((noinline,noclone)) frob_entry(char *buf)
1734 + struct event event;
1736 + __builtin_memcpy(&event, buf, sizeof(event));
1737 + if (event.sent.sec < 64) {
1738 + event.sent.sec = -1U;
1739 + __builtin_memcpy(buf, &event, sizeof(event));
1746 + char buf[1 + sizeof(struct event)];
1750 + __builtin_memset(&u, 0, sizeof u);
1752 + frob_entry(&u.buf[1]);
1756 Index: gcc/testsuite/gcc.c-torture/execute/pr51323.c
1757 ===================================================================
1758 --- gcc/testsuite/gcc.c-torture/execute/pr51323.c (.../tags/gcc_4_6_2_release) (wersja 0)
1759 +++ gcc/testsuite/gcc.c-torture/execute/pr51323.c (.../branches/gcc-4_6-branch) (wersja 182722)
1761 +/* PR middle-end/51323 */
1763 +extern void abort (void);
1764 +struct S { int a, b, c; };
1767 +__attribute__((noinline, noclone)) void
1768 +foo (int x, int y, int z)
1770 + if (x != v || y != 0 || z != 9)
1775 +baz (const struct S *p)
1780 +__attribute__((noinline, noclone)) void
1781 +bar (int x, struct S y)
1783 + foo (baz (&y), 0, x);
1790 + v = 3; s.a = v - 1; s.b = v; s.c = v + 1;
1792 + v = 17; s.a = v - 1; s.b = v; s.c = v + 1;
1796 Index: gcc/testsuite/gcc.c-torture/execute/20111208-1.c
1797 ===================================================================
1798 --- gcc/testsuite/gcc.c-torture/execute/20111208-1.c (.../tags/gcc_4_6_2_release) (wersja 0)
1799 +++ gcc/testsuite/gcc.c-torture/execute/20111208-1.c (.../branches/gcc-4_6-branch) (wersja 182722)
1801 +/* PR tree-optimization/51315 */
1802 +/* Reported by Jurij Smakov <jurij@wooyd.org> */
1804 +typedef unsigned int size_t;
1806 +extern void *memcpy (void *__restrict __dest,
1807 + __const void *__restrict __src, size_t __n)
1808 + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
1810 +extern size_t strlen (__const char *__s)
1811 + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
1813 +typedef short int int16_t;
1814 +typedef int int32_t;
1816 +extern void abort (void);
1820 +static void __attribute__ ((noinline,noclone))
1821 +do_something (int item)
1827 +pack_unpack (char *s, char *p)
1829 + char *send, *pend;
1833 + send = s + strlen (s);
1834 + pend = p + strlen (p);
1844 + goto unpack_integer;
1848 + goto unpack_integer;
1851 + switch (integer_size)
1858 + char a[sizeof (int16_t)];
1861 + memcpy (v.a, s, sizeof (int16_t));
1862 + s += sizeof (int16_t);
1863 + do_something (v.i);
1872 + char a[sizeof (int32_t)];
1875 + memcpy (v.a, s, sizeof (int32_t));
1876 + s += sizeof (int32_t);
1877 + do_something (v.i);
1890 + int n = pack_unpack ("\200\001\377\376\035\300", "sl");
1895 Index: gcc/testsuite/gcc.c-torture/compile/pr51077.c
1896 ===================================================================
1897 --- gcc/testsuite/gcc.c-torture/compile/pr51077.c (.../tags/gcc_4_6_2_release) (wersja 0)
1898 +++ gcc/testsuite/gcc.c-torture/compile/pr51077.c (.../branches/gcc-4_6-branch) (wersja 182722)
1900 +/* PR middle-end/51077 */
1902 +struct S { unsigned char s, t[256]; };
1905 +foo (const struct S *x, struct S *y, int z)
1908 + for (i = 0; i < 8; i++)
1910 + const struct S *a = &x[i];
1911 + __builtin___memcpy_chk (y->t, a->t, z, __builtin_object_size (y->t, 0));
1912 + y = (struct S *) &y->t[z];
1915 Index: gcc/testsuite/gcc.c-torture/compile/20110913-1.c
1916 ===================================================================
1917 --- gcc/testsuite/gcc.c-torture/compile/20110913-1.c (.../tags/gcc_4_6_2_release) (wersja 0)
1918 +++ gcc/testsuite/gcc.c-torture/compile/20110913-1.c (.../branches/gcc-4_6-branch) (wersja 182722)
1920 +struct ieee754_double {
1923 +extern const float __exp_deltatable[178];
1924 +float __ieee754_expf (float x)
1926 + static const float himark = 88.72283935546875;
1927 + static const float lomark = -103.972084045410;
1928 + if (__builtin_isless(x, himark) && __builtin_isgreater(x, lomark))
1931 + double x22, t, result, dx;
1933 + struct ieee754_double ex2_u;
1935 + tval = (int) (t * 512.0);
1937 + delta = - __exp_deltatable[tval];
1939 + delta = __exp_deltatable[-tval];
1940 + x22 = (0.5000000496709180453 * dx + 1.0000001192102037084) * dx + delta;
1941 + result = x22 * ex2_u.d + ex2_u.d;
1942 + return (float) result;
1946 Index: gcc/testsuite/gnat.dg/frame_overflow.adb
1947 ===================================================================
1948 --- gcc/testsuite/gnat.dg/frame_overflow.adb (.../tags/gcc_4_6_2_release) (wersja 182722)
1949 +++ gcc/testsuite/gnat.dg/frame_overflow.adb (.../branches/gcc-4_6-branch) (wersja 182722)
1951 -- { dg-do compile }
1954 +package body Frame_Overflow is
1956 -procedure frame_overflow is
1958 - type Bitpos_Range_T is range 1..2**(System.Word_Size-1)-1;
1959 - type Bitmap_Array_T is array (Bitpos_Range_T) of Boolean;
1961 - type Bitmap_T is record
1962 - Bits : Bitmap_Array_T := (others => False);
1966 + function -- { dg-error "too large" }
1967 Set_In (Bitmap : Bitmap_T; Bitpos : Bitpos_Range_T) return Bitmap_T
1969 - Result: Bitmap_T := Bitmap; -- { dg-error "Storage_Error" }
1970 + Result: Bitmap_T := Bitmap;
1972 Result.Bits (Bitpos) := True;
1976 - function Negate (Bitmap : Bitmap_T) return Bitmap_T is
1977 - Result: Bitmap_T; -- { dg-error "Storage_Error" }
1978 + function -- { dg-error "too large" }
1979 + Negate (Bitmap : Bitmap_T) return Bitmap_T
1983 for E in Bitpos_Range_T loop
1984 Result.Bits (E) := not Bitmap.Bits (E);
1992 +end Frame_Overflow;
1993 Index: gcc/testsuite/gnat.dg/frame_overflow.ads
1994 ===================================================================
1995 --- gcc/testsuite/gnat.dg/frame_overflow.ads (.../tags/gcc_4_6_2_release) (wersja 0)
1996 +++ gcc/testsuite/gnat.dg/frame_overflow.ads (.../branches/gcc-4_6-branch) (wersja 182722)
2000 +package Frame_Overflow is
2002 + type Bitpos_Range_T is range 1..2**(System.Word_Size-1)-1;
2003 + type Bitmap_Array_T is array (Bitpos_Range_T) of Boolean;
2005 + type Bitmap_T is record
2006 + Bits : Bitmap_Array_T := (others => False);
2010 + Set_In (Bitmap : Bitmap_T; Bitpos : Bitpos_Range_T) return Bitmap_T;
2012 + function Negate (Bitmap : Bitmap_T) return Bitmap_T;
2014 +end Frame_Overflow;
2015 Index: gcc/testsuite/gnat.dg/specs/addr1.ads
2016 ===================================================================
2017 --- gcc/testsuite/gnat.dg/specs/addr1.ads (.../tags/gcc_4_6_2_release) (wersja 182722)
2018 +++ gcc/testsuite/gnat.dg/specs/addr1.ads (.../branches/gcc-4_6-branch) (wersja 182722)
2021 for Rec2'Size use 64;
2027 for Obj1'Address use A'Address; -- { dg-bogus "alignment" }
2028 Index: gcc/testsuite/gcc.dg/pr45819.c
2029 ===================================================================
2030 --- gcc/testsuite/gcc.dg/pr45819.c (.../tags/gcc_4_6_2_release) (wersja 182722)
2031 +++ gcc/testsuite/gcc.dg/pr45819.c (.../branches/gcc-4_6-branch) (wersja 182722)
2033 /* { dg-do compile } */
2034 -/* { dg-options "-O2 -fdump-tree-optimized" } */
2035 +/* { dg-options "-O2 -fdump-tree-optimized -w" } */
2039 Index: gcc/testsuite/gcc.dg/gomp/pr51339.c
2040 ===================================================================
2041 --- gcc/testsuite/gcc.dg/gomp/pr51339.c (.../tags/gcc_4_6_2_release) (wersja 0)
2042 +++ gcc/testsuite/gcc.dg/gomp/pr51339.c (.../branches/gcc-4_6-branch) (wersja 182722)
2045 +/* { dg-do compile } */
2046 +/* { dg-options "-fopenmp" } */
2053 +#pragma omp parallel sections firstprivate (g) lastprivate (g)
2055 + #pragma omp section
2059 Index: gcc/testsuite/gcc.dg/cpp/assert4.c
2060 ===================================================================
2061 --- gcc/testsuite/gcc.dg/cpp/assert4.c (.../tags/gcc_4_6_2_release) (wersja 182722)
2062 +++ gcc/testsuite/gcc.dg/cpp/assert4.c (.../branches/gcc-4_6-branch) (wersja 182722)
2064 -/* Copyright (C) 2003, 2006, 2008 Free Software Foundation, Inc.
2065 +/* Copyright (C) 2003, 2006, 2008, 2009, 2011 Free Software Foundation, Inc.
2066 Test builtin preprocessor assertions.
2067 By Kaveh Ghazi <ghazi@caip.rutgers.edu>. */
2071 /* Check for #system assertions. */
2073 -#if defined __gnu_linux__
2074 +#if defined __linux__
2075 # if !#system(linux) || !#system(unix) || !#system(posix)
2078 Index: gcc/testsuite/gcc.dg/pr50078.c
2079 ===================================================================
2080 --- gcc/testsuite/gcc.dg/pr50078.c (.../tags/gcc_4_6_2_release) (wersja 0)
2081 +++ gcc/testsuite/gcc.dg/pr50078.c (.../branches/gcc-4_6-branch) (wersja 182722)
2083 +/* PR tree-optimization/50078 */
2084 +/* { dg-do compile } */
2085 +/* { dg-options "-O2" } */
2087 +unsigned nonvolvar[2];
2092 + unsigned v = *(volatile unsigned *) (&nonvolvar[arg]);
2093 + *(volatile unsigned *) (&nonvolvar[arg]) = v;
2096 +/* { dg-final { scan-assembler-times "movl\[^\n\r\]*nonvolvar" 2 { target { { i?86-*-* x86_64-*-* } && nonpic } } } } */
2097 Index: gcc/testsuite/gcc.dg/debug/dwarf2/pr51410.c
2098 ===================================================================
2099 --- gcc/testsuite/gcc.dg/debug/dwarf2/pr51410.c (.../tags/gcc_4_6_2_release) (wersja 0)
2100 +++ gcc/testsuite/gcc.dg/debug/dwarf2/pr51410.c (.../branches/gcc-4_6-branch) (wersja 182722)
2102 +/* PR debug/51410 */
2103 +/* { dg-do compile } */
2104 +/* { dg-options "-O0 -gdwarf-2 -dA -fno-merge-debug-strings" } */
2114 +/* { dg-final { scan-assembler-times "\\(DIE\[^\\r\\n\]*DW_TAG_variable\\)" 1 } } */
2115 Index: gcc/testsuite/gcc.dg/volatile-bitfields-1.c
2116 ===================================================================
2117 --- gcc/testsuite/gcc.dg/volatile-bitfields-1.c (.../tags/gcc_4_6_2_release) (wersja 0)
2118 +++ gcc/testsuite/gcc.dg/volatile-bitfields-1.c (.../branches/gcc-4_6-branch) (wersja 182722)
2120 +/* { dg-options "-fstrict-volatile-bitfields" } */
2121 +/* { dg-do run } */
2123 +extern int puts(const char *);
2124 +extern void abort(void) __attribute__((noreturn));
2127 + volatile unsigned short a:8, b:8;
2130 +BitStruct bits = {1, 2};
2132 +void check(int i, int j)
2134 + if (i != 1 || j != 2) puts("FAIL"), abort();
2139 + check(bits.a, bits.b);
2143 Index: gcc/testsuite/gcc.dg/pr51408.c
2144 ===================================================================
2145 --- gcc/testsuite/gcc.dg/pr51408.c (.../tags/gcc_4_6_2_release) (wersja 0)
2146 +++ gcc/testsuite/gcc.dg/pr51408.c (.../branches/gcc-4_6-branch) (wersja 182722)
2148 +/* This testcase used to fail because of a bug in
2149 + arm.md:*minmax_arithsi. */
2151 +/* { dg-do run } */
2152 +/* { dg-options "-O1" } */
2154 +extern void abort (void);
2156 +int __attribute__((noinline))
2159 + int max = (b > 0) ? b : 0;
2166 + if (foo (3, -1) != -3)
2170 Index: gcc/testsuite/gcc.dg/torture/pr50396.c
2171 ===================================================================
2172 --- gcc/testsuite/gcc.dg/torture/pr50396.c (.../tags/gcc_4_6_2_release) (wersja 0)
2173 +++ gcc/testsuite/gcc.dg/torture/pr50396.c (.../branches/gcc-4_6-branch) (wersja 182722)
2175 +/* { dg-do run } */
2176 +/* { dg-add-options ieee } */
2178 +extern void abort (void);
2179 +typedef float vf128 __attribute__((vector_size(16)));
2180 +typedef float vf64 __attribute__((vector_size(8)));
2183 +#if !__FINITE_MATH_ONLY__
2184 +#if __FLT_HAS_QUIET_NAN__
2185 + vf128 v = (vf128){ 0.f, 0.f, 0.f, 0.f };
2186 + vf64 u = (vf64){ 0.f, 0.f };
2187 + v = v / (vf128){ 0.f, 0.f, 0.f, 0.f };
2190 + u = u / (vf64){ 0.f, 0.f };
2197 Index: gcc/testsuite/gcc.dg/tree-ssa/pr51583.c
2198 ===================================================================
2199 --- gcc/testsuite/gcc.dg/tree-ssa/pr51583.c (.../tags/gcc_4_6_2_release) (wersja 0)
2200 +++ gcc/testsuite/gcc.dg/tree-ssa/pr51583.c (.../branches/gcc-4_6-branch) (wersja 182722)
2202 +/* { dg-do compile } */
2203 +/* { dg-options "-O1" } */
2205 +typedef __complex__ double Value;
2210 + char c[sizeof(Value)];
2232 + __imag__ s.u.v += s.i;
2236 Index: gcc/testsuite/gcc.dg/delay-slot-2.c
2237 ===================================================================
2238 --- gcc/testsuite/gcc.dg/delay-slot-2.c (.../tags/gcc_4_6_2_release) (wersja 0)
2239 +++ gcc/testsuite/gcc.dg/delay-slot-2.c (.../branches/gcc-4_6-branch) (wersja 182722)
2241 +/* PR rtl-optimization/51187 */
2242 +/* Reported by Jurij Smakov <jurij@wooyd.org> */
2244 +/* { dg-do compile } */
2245 +/* { dg-options "-g -O2" } */
2247 +extern int printf (__const char *__restrict __format, ...);
2248 +extern void print_c_condition (const char *);
2253 + DT_mode, DT_code, DT_veclen,
2254 + DT_elt_zero_int, DT_elt_one_int, DT_elt_zero_wide, DT_elt_zero_wide_safe,
2256 + DT_veclen_ge, DT_dup, DT_pred, DT_c_test,
2257 + DT_accept_op, DT_accept_insn
2260 +struct decision_test
2262 + struct decision_test *next;
2263 + enum decision_type type;
2274 + const char *c_test;
2283 + int num_clobbers_to_add;
2288 +enum routine_type {
2289 + RECOG, SPLIT, PEEPHOLE2
2293 +write_cond (struct decision_test *p, int depth,
2294 + enum routine_type subroutine_type)
2298 + case DT_num_insns:
2299 + printf ("peep2_current_count >= %d", p->u.num_insns);
2303 + printf ("GET_CODE (x%d) == ", depth);
2307 + printf ("XVECLEN (x%d, 0) == %d", depth, p->u.veclen);
2310 + case DT_elt_zero_int:
2311 + printf ("XINT (x%d, 0) == %d", depth, (int) p->u.intval);
2314 + case DT_elt_one_int:
2315 + printf ("XINT (x%d, 1) == %d", depth, (int) p->u.intval);
2318 + case DT_elt_zero_wide:
2319 + case DT_elt_zero_wide_safe:
2320 + printf ("XWINT (x%d, 0) == ", depth);
2321 + print_host_wide_int (p->u.intval);
2324 + case DT_const_int:
2325 + printf ("x%d == const_int_rtx[MAX_SAVED_CONST_INT + (%d)]",
2326 + depth, (int) p->u.intval);
2329 + case DT_veclen_ge:
2330 + printf ("XVECLEN (x%d, 0) >= %d", depth, p->u.veclen);
2334 + printf ("rtx_equal_p (x%d, operands[%d])", depth, p->u.dup);
2338 + printf ("%s (x%d)", p->u.pred.name, depth);
2342 + print_c_condition (p->u.c_test);
2345 + case DT_accept_insn:
2346 + ((void)(__builtin_expect(!(subroutine_type == RECOG), 0) ? __builtin_unreachable(), 0 : 0));
2347 + ((void)(__builtin_expect(!(p->u.insn.num_clobbers_to_add), 0) ? __builtin_unreachable(), 0 : 0));
2348 + printf ("pnum_clobbers != NULL");
2352 + __builtin_unreachable();
2356 +/* { dg-final { scan-assembler "printf" } } */
2357 Index: gcc/testsuite/ChangeLog
2358 ===================================================================
2359 --- gcc/testsuite/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 182722)
2360 +++ gcc/testsuite/ChangeLog (.../branches/gcc-4_6-branch) (wersja 182722)
2362 +2011-12-28 Michael Meissner <meissner@linux.vnet.ibm.com>
2364 + Backport from mainline
2365 + 2011-12-28 Michael Meissner <meissner@linux.vnet.ibm.com>
2368 + * gcc.target/powerpc/pr51623.c: New file.
2370 +2011-12-28 Uros Bizjak <ubizjak@gmail.com>
2372 + * gcc.dg/torture/pr50396.c: Use dg-add-options ieee.
2374 +2011-12-23 Richard Guenther <rguenther@suse.de>
2376 + PR rtl-optimization/50396
2377 + * gcc.dg/torture/pr50396.c: New testcase.
2379 +2011-12-22 Doug Kwan <dougkwan@google.com>
2381 + Backport from mainline
2382 + 2011-11-20 Joey Ye <joey.ye@arm.com>
2384 + * gcc.dg/volatile-bitfields-1.c: New.
2386 +2011-12-21 Richard Earnshaw <rearnsha@arm.com>
2389 + * gcc.target/arm/sibcall-2.c: New test.
2391 +2011-12-19 Martin Jambor <mjambor@suse.cz>
2393 + PR tree-optimization/51583
2394 + * gcc.dg/tree-ssa/pr51583.c: New test.
2396 +2011-12-16 Jason Merrill <jason@redhat.com>
2399 + * g++.dg/cpp0x/auto31.C: New.
2401 +2011-12-16 Jason Merrill <jason@redhat.com>
2404 + * g++.dg/init/value10.C: New.
2406 +2011-12-15 H.J. Lu <hongjiu.lu@intel.com>
2408 + Backport from mainline.
2409 + 2011-10-28 Chung-Lin Tang <cltang@codesourcery.com>
2411 + PR rtl-optimization/49720
2412 + * g++.dg/torture/pr49720.C: New test.
2414 +2011-12-14 Jason Merrill <jason@redhat.com>
2417 + * g++.dg/other/enum2.C: New.
2419 +2011-12-13 Jason Merrill <jason@redhat.com>
2423 + * g++.dg/cpp0x/rv-cast3.C: New.
2424 + * g++.dg/cpp0x/rv-cast4.C: New.
2426 +2011-12-12 Jakub Jelinek <jakub@redhat.com>
2428 + PR testsuite/51511
2429 + * gcc.dg/pr45819.c: Add -w to dg-options.
2431 + Backported from mainline
2432 + 2011-12-11 Jakub Jelinek <jakub@redhat.com>
2434 + PR tree-optimization/51485
2435 + * g++.dg/vect/pr51485.cc: New test.
2437 +2011-12-12 Eric Botcazou <ebotcazou@adacore.com>
2439 + * gcc.c-torture/execute/20111212-1.c: New test.
2441 +2011-12-11 Tobias Burnus <burnus@net-b.de>
2444 + * gfortran.dg/warn_function_without_result_2.f90: New.
2446 +2011-12-11 Thomas Koenig <tkoenig@gcc.gnu.org>
2449 + Backport from trunk
2450 + * gfortran.dg/assumed_charlen_substring_1.f90: New test.
2452 +2011-12-09 Jakub Jelinek <jakub@redhat.com>
2454 + Backport from mainline
2455 + 2011-12-08 Jakub Jelinek <jakub@redhat.com>
2457 + PR tree-optimization/51466
2458 + * gcc.c-torture/execute/pr51466.c: New test.
2460 + 2011-11-28 Jakub Jelinek <jakub@redhat.com>
2462 + PR tree-optimization/50078
2463 + * gcc.dg/pr50078.c: New test.
2465 +2011-12-09 Kazu Hirata <kazu@codesourcery.com>
2467 + Backport from mainline:
2469 + 2011-12-05 Kazu Hirata <kazu@codesourcery.com>
2472 + * gcc.dg/pr51408.c: New.
2474 +2011-12-08 Tobias Burnus <burnus@net-b.de>
2477 + * gfortran.dg/realloc_on_assign_8.f90: New.
2479 +2011-12-08 Teresa Johnson <tejohnson@google.com>
2481 + * gcc.target/i386/movdi-rex64.c: Remove unnecessary
2484 +2011-12-08 Teresa Johnson <tejohnson@google.com>
2486 + * gcc.target/i386/movdi-rex64.c: Remove unnecessary
2487 + -Wwrite-strings option.
2489 +2011-12-08 Teresa Johnson <tejohnson@google.com>
2491 + * gcc.target/i386/movdi-rex64.c: New.
2493 +2011-12-08 Jakub Jelinek <jakub@redhat.com>
2495 + Backport from mainline
2496 + 2011-12-05 Jakub Jelinek <jakub@redhat.com>
2499 + * gcc.dg/debug/dwarf2/pr51410.c: New test.
2502 + * gcc.dg/gomp/pr51339.c: New test.
2504 + 2011-12-05 Jakub Jelinek <jakub@redhat.com>
2505 + Eric Botcazou <ebotcazou@adacore.com>
2507 + PR middle-end/51323
2508 + PR middle-end/50074
2509 + * gcc.c-torture/execute/pr51323.c: New test.
2511 + 2011-11-30 Jakub Jelinek <jakub@redhat.com>
2513 + PR rtl-optimization/48721
2514 + * gcc.target/i386/pr48721.c: New test.
2516 +2011-12-08 Eric Botcazou <ebotcazou@adacore.com>
2518 + * gcc.c-torture/execute/20111208-1.c: New test.
2520 + Backport from mainline
2521 + 2011-09-25 Eric Botcazou <ebotcazou@adacore.com>
2523 + * gnat.dg/frame_overflow.ads: New.
2524 + * gnat.dg/frame_overflow.adb: Adjust.
2525 + * gnat.dg/specs/addr1.ads: Likewise.
2527 +2011-12-06 Tobias Burnus <burnus@net-b.de>
2530 + * gfortran.dg/default_initialization_5.f90: New.
2532 +2011-12-06 Martin Jambor <mjambor@suse.cz>
2534 + PR tree-optimization/50622
2535 + * g++.dg/tree-ssa/pr50622.C: New test.
2537 +2011-12-04 Uros Bizjak <ubizjak@gmail.com>
2538 + Jérémie Detrey <Jeremie.Detrey@loria.fr>
2541 + * gcc.target/i386/pr51393.c: New test.
2543 +2011-12-03 Tobias Burnus <burnus@net-b.de>
2546 + * gfortran.dg/move_alloc_8.f90: New.
2548 +2011-11-25 Tobias Burnus <burnus@net-b.de>
2551 + * gfortran.dg/whole_file_35.f90: New.
2553 +2011-11-24 Tobias Burnus <burnus@net-b.de>
2556 + * resolve.c (pure_subroutine): If called subroutine is
2557 + impure, unset implicit_pure.
2558 + (resolve_function): Move impure check to simplify code.
2560 +2011-11-22 Paolo Carlini <paolo.carlini@oracle.com>
2563 + * g++.dg/cpp0x/decltype36.C: New.
2565 +2011-11-19 Eric Botcazou <ebotcazou@adacore.com>
2567 + * gcc.dg/delay-slot-2.c: New test.
2569 +2011-11-18 Joseph Myers <joseph@codesourcery.com>
2571 + * gcc.dg/cpp/assert4.c: Test __linux__, not __gnu_linux__.
2573 +2011-11-18 Paolo Carlini <paolo.carlini@oracle.com>
2576 + * g++.dg/cpp0x/pr51150.C: New.
2578 +2011-11-16 Richard Earnshaw <rearnsha@arm.com>
2579 + Bernd Schmidt <bernds@coudesourcery.com>
2580 + Sebastian Huber <sebastian.huber@embedded-brains.de>
2583 + * gcc.target/arm/pr49641.c: New test.
2585 +2011-11-10 Jakub Jelinek <jakub@redhat.com>
2587 + PR middle-end/51077
2588 + * gcc.c-torture/compile/pr51077.c: New test.
2590 +2011-11-07 Jason Merrill <jason@redhat.com>
2593 + * g++.dg/cpp0x/decltype35.C: New.
2595 +2011-11-04 Eric Botcazou <ebotcazou@adacore.com>
2597 + * g++.dg/other/offsetof7.C: New test.
2599 +2011-11-02 Bernd Schmidt <bernds@codesourcery.com>
2601 + * gcc.c-torture/compile/20110907.c: New file.
2603 +2011-10-29 Paolo Carlini <paolo.carlini@oracle.com>
2606 + * g++.dg/cpp0x/pr50901.C: New.
2608 +2011-10-27 Uros Bizjak <ubizjak@gmail.com>
2609 + Steven G. Kargl <kargl@gcc.gnu.org>
2612 + * gfortran.dg/pr50875.f90: New test.
2614 2011-10-26 Release Manager
2616 * GCC 4.6.2 released.
2619 2011-10-20 Uros Bizjak <ubizjak@gmail.com>
2621 - * gcc.dg/ipa/ipa-sra-2.c: Add dg-require-effective-target
2623 - * gcc.dg/ipa/ipa-sra-6.c: Ditto.
2624 + * gcc.dg/ipa/ipa-sra-2.c: Add dg-require-effective-target
2626 + * gcc.dg/ipa/ipa-sra-6.c: Ditto.
2628 2011-10-19 Jason Merrill <jason@redhat.com>
2630 Index: gcc/testsuite/g++.dg/vect/pr51485.cc
2631 ===================================================================
2632 --- gcc/testsuite/g++.dg/vect/pr51485.cc (.../tags/gcc_4_6_2_release) (wersja 0)
2633 +++ gcc/testsuite/g++.dg/vect/pr51485.cc (.../branches/gcc-4_6-branch) (wersja 182722)
2635 +/* { dg-do compile } */
2637 +struct A { A (); unsigned int a; };
2638 +double bar (A a) throw () __attribute__((pure));
2641 +foo (unsigned int x, double *y, A *z)
2644 + for (i = 0; i < x; i++)
2645 + y[i] = bar (z[i]);
2648 +/* { dg-final { cleanup-tree-dump "vect" } } */
2649 Index: gcc/testsuite/g++.dg/init/value10.C
2650 ===================================================================
2651 --- gcc/testsuite/g++.dg/init/value10.C (.../tags/gcc_4_6_2_release) (wersja 0)
2652 +++ gcc/testsuite/g++.dg/init/value10.C (.../branches/gcc-4_6-branch) (wersja 182722)
2664 +struct B: public virtual A {
2667 +struct C: public virtual A {
2670 +struct D: public B, virtual public C {
2671 + D(): B(), C() {} // note an explicit call to C() which is auto-generated
2677 + // Crashes here with the following message:
2678 + // *** glibc detected *** ./test: free(): invalid next size (fast)
2681 Index: gcc/testsuite/g++.dg/other/enum2.C
2682 ===================================================================
2683 --- gcc/testsuite/g++.dg/other/enum2.C (.../tags/gcc_4_6_2_release) (wersja 0)
2684 +++ gcc/testsuite/g++.dg/other/enum2.C (.../branches/gcc-4_6-branch) (wersja 182722)
2688 +enum E { e = sizeof(const E*) };
2689 Index: gcc/testsuite/g++.dg/other/offsetof7.C
2690 ===================================================================
2691 --- gcc/testsuite/g++.dg/other/offsetof7.C (.../tags/gcc_4_6_2_release) (wersja 0)
2692 +++ gcc/testsuite/g++.dg/other/offsetof7.C (.../branches/gcc-4_6-branch) (wersja 182722)
2695 +// Testcase by <dberger@oubliette.org>
2696 +// { dg-do compile }
2702 +struct B: public A {
2710 +int fails = __builtin_offsetof (C, b.offset);
2711 Index: gcc/testsuite/g++.dg/tree-ssa/pr50622.C
2712 ===================================================================
2713 --- gcc/testsuite/g++.dg/tree-ssa/pr50622.C (.../tags/gcc_4_6_2_release) (wersja 0)
2714 +++ gcc/testsuite/g++.dg/tree-ssa/pr50622.C (.../branches/gcc-4_6-branch) (wersja 182722)
2716 +// { dg-do compile }
2717 +// { dg-options "-O2" }
2719 +typedef __complex__ double Value;
2720 +struct LorentzVector
2722 + LorentzVector & operator+=(const LorentzVector & a) {
2736 +inline LorentzVector
2737 +operator+(LorentzVector a, const LorentzVector & b) {
2742 +LorentzVector sum() {
2743 + LorentzVector v1; v1.theX =ex; v1.theY =ex+et; v1.theZ =ex-et; v1.theT =et;
2746 Index: gcc/testsuite/g++.dg/cpp0x/auto31.C
2747 ===================================================================
2748 --- gcc/testsuite/g++.dg/cpp0x/auto31.C (.../tags/gcc_4_6_2_release) (wersja 0)
2749 +++ gcc/testsuite/g++.dg/cpp0x/auto31.C (.../branches/gcc-4_6-branch) (wersja 182722)
2752 +// { dg-options "-std=c++0x" }
2754 +template<typename T, typename... U> void foo(T, U... u)
2756 + auto foo(u...); // { dg-error "auto" }
2763 Index: gcc/testsuite/g++.dg/cpp0x/pr50901.C
2764 ===================================================================
2765 --- gcc/testsuite/g++.dg/cpp0x/pr50901.C (.../tags/gcc_4_6_2_release) (wersja 0)
2766 +++ gcc/testsuite/g++.dg/cpp0x/pr50901.C (.../branches/gcc-4_6-branch) (wersja 182722)
2768 +// { dg-options "-std=c++0x" }
2770 +template<class T> int foo(int a)
2772 + const unsigned b = a < 0 ? -a : a;
2776 +int i = foo<float>(1);
2777 Index: gcc/testsuite/g++.dg/cpp0x/variadic103.C
2778 ===================================================================
2779 --- gcc/testsuite/g++.dg/cpp0x/variadic103.C (.../tags/gcc_4_6_2_release) (wersja 182722)
2780 +++ gcc/testsuite/g++.dg/cpp0x/variadic103.C (.../branches/gcc-4_6-branch) (wersja 182722)
2783 template<class T, class... Args>
2785 - T t(create<Args>()...); // { dg-error "unknown bound" }
2786 + T t(create<Args>()...); // { dg-error "incomplete" }
2790 Index: gcc/testsuite/g++.dg/cpp0x/decltype35.C
2791 ===================================================================
2792 --- gcc/testsuite/g++.dg/cpp0x/decltype35.C (.../tags/gcc_4_6_2_release) (wersja 0)
2793 +++ gcc/testsuite/g++.dg/cpp0x/decltype35.C (.../branches/gcc-4_6-branch) (wersja 182722)
2796 +// { dg-options -std=c++0x }
2801 + template <class T> static T create();
2804 +template <class T, class U, class V, class
2805 + = decltype(impl<V>::template create<T>()
2806 + -> impl<V>::template create<U>())>
2809 +tester<impl<float>*, int, float> ti;
2810 Index: gcc/testsuite/g++.dg/cpp0x/decltype36.C
2811 ===================================================================
2812 --- gcc/testsuite/g++.dg/cpp0x/decltype36.C (.../tags/gcc_4_6_2_release) (wersja 0)
2813 +++ gcc/testsuite/g++.dg/cpp0x/decltype36.C (.../branches/gcc-4_6-branch) (wersja 182722)
2816 +// { dg-options -std=c++0x }
2823 +template<typename X>
2826 +template<typename X, X ff>
2829 + c<decltype(ff)>();
2834 + xx<int(Funny::*)(int), &Funny::print>();
2836 Index: gcc/testsuite/g++.dg/cpp0x/pr51150.C
2837 ===================================================================
2838 --- gcc/testsuite/g++.dg/cpp0x/pr51150.C (.../tags/gcc_4_6_2_release) (wersja 0)
2839 +++ gcc/testsuite/g++.dg/cpp0x/pr51150.C (.../branches/gcc-4_6-branch) (wersja 182722)
2842 +// { dg-options "-std=c++0x" }
2847 +template <class T> void Foo(Clock* clock) {
2848 + const int now = clock->Now();
2851 +template void Foo<float>(Clock*);
2853 +template <class T> void Boo(int val) {
2854 + const int now1 = (double)(val);
2855 + const int now2 = const_cast<double>(val); // { dg-error "invalid" }
2856 + const int now3 = static_cast<double>(val);
2857 + const int now4 = reinterpret_cast<double>(val); // { dg-error "invalid" }
2860 +template void Boo<float>(int);
2861 Index: gcc/testsuite/g++.dg/cpp0x/rv-cast3.C
2862 ===================================================================
2863 --- gcc/testsuite/g++.dg/cpp0x/rv-cast3.C (.../tags/gcc_4_6_2_release) (wersja 0)
2864 +++ gcc/testsuite/g++.dg/cpp0x/rv-cast3.C (.../branches/gcc-4_6-branch) (wersja 182722)
2868 +// { dg-options "-std=c++0x" }
2870 +extern "C" int printf(const char *,...);
2871 +extern "C" void abort();
2873 +struct A { int a; A() : a(1) {} };
2874 +struct B { int b; B() : b(2) {} };
2875 +struct X : A, B {};
2879 + int a=static_cast<A&&>(x).a;
2880 + int b=static_cast<B&&>(x).b;
2881 + // printf ("%d %d\n", a, b);
2882 + if (a!=1 || b!=2) abort();
2884 Index: gcc/testsuite/g++.dg/cpp0x/rv-cast4.C
2885 ===================================================================
2886 --- gcc/testsuite/g++.dg/cpp0x/rv-cast4.C (.../tags/gcc_4_6_2_release) (wersja 0)
2887 +++ gcc/testsuite/g++.dg/cpp0x/rv-cast4.C (.../branches/gcc-4_6-branch) (wersja 182722)
2890 +// { dg-options "-std=c++0x" }
2900 + static_cast<A &&>(d); // { dg-error "ambiguous" }
2902 Index: gcc/testsuite/g++.dg/torture/pr49720.C
2903 ===================================================================
2904 --- gcc/testsuite/g++.dg/torture/pr49720.C (.../tags/gcc_4_6_2_release) (wersja 0)
2905 +++ gcc/testsuite/g++.dg/torture/pr49720.C (.../branches/gcc-4_6-branch) (wersja 182722)
2907 +/* { dg-do compile } */
2909 +extern char t_start[], t_end[], t_size[];
2912 + long size = reinterpret_cast<long>(t_size);
2913 + return (size == t_end - t_start);
2915 Index: gcc/cp/typeck.c
2916 ===================================================================
2917 --- gcc/cp/typeck.c (.../tags/gcc_4_6_2_release) (wersja 182722)
2918 +++ gcc/cp/typeck.c (.../branches/gcc-4_6-branch) (wersja 182722)
2919 @@ -4835,9 +4835,7 @@
2920 && TREE_CONSTANT (TREE_OPERAND (val, 0)))
2922 tree type = build_pointer_type (argtype);
2923 - tree op0 = fold_convert (type, TREE_OPERAND (val, 0));
2924 - tree op1 = fold_convert (sizetype, fold_offsetof (arg, val));
2925 - return fold_build2 (POINTER_PLUS_EXPR, type, op0, op1);
2926 + return fold_convert (type, fold_offsetof_1 (arg));
2929 /* Handle complex lvalues (when permitted)
2930 @@ -5772,8 +5770,18 @@
2931 && reference_related_p (TREE_TYPE (type), intype)
2932 && (c_cast_p || at_least_as_qualified_p (TREE_TYPE (type), intype)))
2934 - expr = build_typed_address (expr, type);
2935 - return convert_from_reference (expr);
2936 + /* Handle the lvalue case here by casting to lvalue reference and
2937 + then changing it to an rvalue reference. Casting an xvalue to
2938 + rvalue reference will be handled by the main code path. */
2939 + tree lref = cp_build_reference_type (TREE_TYPE (type), false);
2940 + result = (perform_direct_initialization_if_possible
2941 + (lref, expr, c_cast_p, complain));
2942 + result = cp_fold_convert (type, result);
2943 + /* Make sure we don't fold back down to a named rvalue reference,
2944 + because that would be an lvalue. */
2945 + if (DECL_P (result))
2946 + result = build1 (NON_LVALUE_EXPR, type, result);
2947 + return convert_from_reference (result);
2950 /* Resolve overloaded address here rather than once in
2951 Index: gcc/cp/init.c
2952 ===================================================================
2953 --- gcc/cp/init.c (.../tags/gcc_4_6_2_release) (wersja 182722)
2954 +++ gcc/cp/init.c (.../branches/gcc-4_6-branch) (wersja 182722)
2956 zero-initialization does not simply mean filling the storage with
2957 zero bytes. FIELD_SIZE, if non-NULL, is the bit size of the field,
2958 subfields with bit positions at or above that bit size shouldn't
2960 + be added. Note that this only works when the result is assigned
2961 + to a base COMPONENT_REF; if we only have a pointer to the base subobject,
2962 + expand_assignment will end up clearing the full size of TYPE. */
2965 build_zero_init_1 (tree type, tree nelts, bool static_storage_p,
2966 @@ -368,6 +370,12 @@
2968 build_value_init_noctor (tree type, tsubst_flags_t complain)
2970 + if (!COMPLETE_TYPE_P (type))
2972 + if (complain & tf_error)
2973 + error ("value-initialization of incomplete type %qT", type);
2974 + return error_mark_node;
2976 if (CLASS_TYPE_P (type))
2978 gcc_assert (!TYPE_NEEDS_CONSTRUCTING (type));
2979 Index: gcc/cp/class.c
2980 ===================================================================
2981 --- gcc/cp/class.c (.../tags/gcc_4_6_2_release) (wersja 182722)
2982 +++ gcc/cp/class.c (.../branches/gcc-4_6-branch) (wersja 182722)
2983 @@ -464,7 +464,14 @@
2984 /* Is this the base field created by build_base_field? */
2985 if (TREE_CODE (field) == FIELD_DECL
2986 && DECL_FIELD_IS_BASE (field)
2987 - && TREE_TYPE (field) == type)
2988 + && TREE_TYPE (field) == type
2989 + /* If we're looking for a field in the most-derived class,
2990 + also check the field offset; we can have two base fields
2991 + of the same type if one is an indirect virtual base and one
2992 + is a direct non-virtual base. */
2993 + && (BINFO_INHERITANCE_CHAIN (d_binfo)
2994 + || tree_int_cst_equal (byte_position (field),
2995 + BINFO_OFFSET (binfo))))
2997 /* We don't use build_class_member_access_expr here, as that
2998 has unnecessary checks, and more importantly results in
2999 @@ -541,6 +548,10 @@
3003 + /* If this is a non-empty base, use a COMPONENT_REF. */
3004 + if (!is_empty_class (BINFO_TYPE (base)))
3005 + return build_simple_base_path (expr, base);
3007 pointer_type = build_pointer_type (expr_type);
3009 /* We use fold_build2 and fold_convert below to simplify the trees
3010 Index: gcc/cp/decl.c
3011 ===================================================================
3012 --- gcc/cp/decl.c (.../tags/gcc_4_6_2_release) (wersja 182722)
3013 +++ gcc/cp/decl.c (.../branches/gcc-4_6-branch) (wersja 182722)
3014 @@ -11540,15 +11540,19 @@
3016 copy_type_enum (tree dst, tree src)
3018 - TYPE_MIN_VALUE (dst) = TYPE_MIN_VALUE (src);
3019 - TYPE_MAX_VALUE (dst) = TYPE_MAX_VALUE (src);
3020 - TYPE_SIZE (dst) = TYPE_SIZE (src);
3021 - TYPE_SIZE_UNIT (dst) = TYPE_SIZE_UNIT (src);
3022 - SET_TYPE_MODE (dst, TYPE_MODE (src));
3023 - TYPE_PRECISION (dst) = TYPE_PRECISION (src);
3024 - TYPE_ALIGN (dst) = TYPE_ALIGN (src);
3025 - TYPE_USER_ALIGN (dst) = TYPE_USER_ALIGN (src);
3026 - TYPE_UNSIGNED (dst) = TYPE_UNSIGNED (src);
3028 + for (t = dst; t; t = TYPE_NEXT_VARIANT (t))
3030 + TYPE_MIN_VALUE (t) = TYPE_MIN_VALUE (src);
3031 + TYPE_MAX_VALUE (t) = TYPE_MAX_VALUE (src);
3032 + TYPE_SIZE (t) = TYPE_SIZE (src);
3033 + TYPE_SIZE_UNIT (t) = TYPE_SIZE_UNIT (src);
3034 + SET_TYPE_MODE (dst, TYPE_MODE (src));
3035 + TYPE_PRECISION (t) = TYPE_PRECISION (src);
3036 + TYPE_ALIGN (t) = TYPE_ALIGN (src);
3037 + TYPE_USER_ALIGN (t) = TYPE_USER_ALIGN (src);
3038 + TYPE_UNSIGNED (t) = TYPE_UNSIGNED (src);
3042 /* Begin compiling the definition of an enumeration type.
3043 @@ -11903,9 +11907,12 @@
3047 - /* Here there should not be any variants of this type. */
3048 + /* If this is a forward declaration, there should not be any variants,
3049 + though we can get a variant in the middle of an enum-specifier with
3050 + wacky code like 'enum E { e = sizeof(const E*) };' */
3051 gcc_assert (enumtype == TYPE_MAIN_VARIANT (enumtype)
3052 - && !TYPE_NEXT_VARIANT (enumtype));
3053 + && (TYPE_VALUES (enumtype)
3054 + || !TYPE_NEXT_VARIANT (enumtype)));
3057 /* Build and install a CONST_DECL for an enumeration constant of the
3058 Index: gcc/cp/ChangeLog
3059 ===================================================================
3060 --- gcc/cp/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 182722)
3061 +++ gcc/cp/ChangeLog (.../branches/gcc-4_6-branch) (wersja 182722)
3063 +2011-12-16 Jason Merrill <jason@redhat.com>
3066 + * init.c (build_value_init_noctor): Check for incomplete type.
3068 +2011-12-16 Jason Merrill <jason@redhat.com>
3071 + * class.c (convert_to_base_statically): Just call
3072 + build_simple_base_path.
3073 + (build_simple_base_path): Check field offset.
3075 +2011-12-14 Jason Merrill <jason@redhat.com>
3078 + * decl.c (copy_type_enum): Also update variants.
3079 + (finish_enum): Allow variants of complete enums.
3081 +2011-12-13 Jason Merrill <jason@redhat.com>
3085 + * typeck.c (build_static_cast_1): Fix cast of lvalue to
3086 + base rvalue reference.
3088 +2011-11-22 Paolo Carlini <paolo.carlini@oracle.com>
3091 + * semantics.c (finish_decltype_type): Handle PTRMEM_CST.
3093 +2011-11-18 Paolo Carlini <paolo.carlini@oracle.com>
3096 + * pt.c (tsubst_copy_and_build): Handle FIX_TRUNC_EXPR.
3098 +2011-11-07 Jason Merrill <jason@redhat.com>
3101 + * pt.c (tsubst_copy): Handle NAMESPACE_DECL.
3102 + (tsubst_copy_and_build) [COMPONENT_REF]: Handle a still-dependent
3105 +2011-11-04 Eric Botcazou <ebotcazou@adacore.com>
3108 + * semantics.c (finish_offsetof): Adjust call to fold_offsetof.
3109 + * typeck.c (cp_build_addr_expr_1): Call fold_offsetof_1.
3111 +2011-10-29 Paolo Carlini <paolo.carlini@oracle.com>
3114 + * call.c (build_new_op_1): Handle ABS_EXPR together with the
3117 2011-10-26 Release Manager
3119 * GCC 4.6.2 released.
3121 ===================================================================
3122 --- gcc/cp/pt.c (.../tags/gcc_4_6_2_release) (wersja 182722)
3123 +++ gcc/cp/pt.c (.../branches/gcc-4_6-branch) (wersja 182722)
3124 @@ -11439,6 +11439,9 @@
3128 + case NAMESPACE_DECL:
3132 /* An OVERLOAD will always be a non-dependent overload set; an
3133 overload set from function scope will just be represented with an
3134 @@ -12704,6 +12707,10 @@
3135 return build_x_unary_op (TREE_CODE (t), RECUR (TREE_OPERAND (t, 0)),
3138 + case FIX_TRUNC_EXPR:
3139 + return cp_build_unary_op (FIX_TRUNC_EXPR, RECUR (TREE_OPERAND (t, 0)),
3143 op1 = TREE_OPERAND (t, 0);
3144 if (TREE_CODE (op1) == LABEL_DECL)
3145 @@ -13179,7 +13186,9 @@
3146 if (member == error_mark_node)
3147 return error_mark_node;
3149 - if (object_type && !CLASS_TYPE_P (object_type))
3150 + if (type_dependent_expression_p (object))
3151 + /* We can't do much here. */;
3152 + else if (!CLASS_TYPE_P (object_type))
3154 if (SCALAR_TYPE_P (object_type))
3156 Index: gcc/cp/semantics.c
3157 ===================================================================
3158 --- gcc/cp/semantics.c (.../tags/gcc_4_6_2_release) (wersja 182722)
3159 +++ gcc/cp/semantics.c (.../branches/gcc-4_6-branch) (wersja 182722)
3160 @@ -3348,7 +3348,7 @@
3162 if (TREE_CODE (expr) == INDIRECT_REF && REFERENCE_REF_P (expr))
3163 expr = TREE_OPERAND (expr, 0);
3164 - return fold_offsetof (expr, NULL_TREE);
3165 + return fold_offsetof (expr);
3168 /* Replace the AGGR_INIT_EXPR at *TP with an equivalent CALL_EXPR. This
3169 @@ -4927,8 +4927,9 @@
3174 /* We can get here when the id-expression refers to an
3176 + enumerator or non-type template parameter. */
3177 type = TREE_TYPE (expr);
3180 Index: gcc/cp/call.c
3181 ===================================================================
3182 --- gcc/cp/call.c (.../tags/gcc_4_6_2_release) (wersja 182722)
3183 +++ gcc/cp/call.c (.../branches/gcc-4_6-branch) (wersja 182722)
3184 @@ -4996,6 +4996,7 @@
3185 case POSTDECREMENT_EXPR:
3189 return cp_build_unary_op (code, arg1, candidates != 0, complain);
3192 Index: gcc/lto-cgraph.c
3193 ===================================================================
3194 --- gcc/lto-cgraph.c (.../tags/gcc_4_6_2_release) (wersja 182722)
3195 +++ gcc/lto-cgraph.c (.../branches/gcc-4_6-branch) (wersja 182722)
3196 @@ -1792,9 +1792,9 @@
3198 const struct lto_function_header *header =
3199 (const struct lto_function_header *) data;
3200 - const int32_t cfg_offset = sizeof (struct lto_function_header);
3201 - const int32_t main_offset = cfg_offset + header->cfg_size;
3202 - const int32_t string_offset = main_offset + header->main_size;
3203 + const int cfg_offset = sizeof (struct lto_function_header);
3204 + const int main_offset = cfg_offset + header->cfg_size;
3205 + const int string_offset = main_offset + header->main_size;
3206 struct data_in *data_in;
3207 struct lto_input_block ib_main;
3209 Index: gcc/lto-streamer-out.c
3210 ===================================================================
3211 --- gcc/lto-streamer-out.c (.../tags/gcc_4_6_2_release) (wersja 182722)
3212 +++ gcc/lto-streamer-out.c (.../branches/gcc-4_6-branch) (wersja 182722)
3213 @@ -2408,7 +2408,7 @@
3214 enum gcc_plugin_symbol_kind kind;
3215 enum gcc_plugin_symbol_visibility visibility;
3218 + unsigned HOST_WIDEST_INT size;
3222 @@ -2466,7 +2466,7 @@
3223 when symbol has attribute (visibility("hidden")) specified.
3224 targetm.binds_local_p check DECL_VISIBILITY_SPECIFIED and gets this
3228 if (DECL_EXTERNAL (t)
3229 && !targetm.binds_local_p (t))
3230 visibility = GCCPV_DEFAULT;
3231 @@ -2488,14 +2488,9 @@
3234 if (kind == GCCPK_COMMON
3236 - && TREE_CODE (DECL_SIZE (t)) == INTEGER_CST)
3238 - size = (HOST_BITS_PER_WIDE_INT >= 64)
3239 - ? (uint64_t) int_size_in_bytes (TREE_TYPE (t))
3240 - : (((uint64_t) TREE_INT_CST_HIGH (DECL_SIZE_UNIT (t))) << 32)
3241 - | TREE_INT_CST_LOW (DECL_SIZE_UNIT (t));
3243 + && DECL_SIZE_UNIT (t)
3244 + && TREE_CODE (DECL_SIZE_UNIT (t)) == INTEGER_CST)
3245 + size = TREE_INT_CST_LOW (DECL_SIZE_UNIT (t));
3249 Index: gcc/dwarf2out.c
3250 ===================================================================
3251 --- gcc/dwarf2out.c (.../tags/gcc_4_6_2_release) (wersja 182722)
3252 +++ gcc/dwarf2out.c (.../branches/gcc-4_6-branch) (wersja 182722)
3253 @@ -4431,6 +4431,11 @@
3254 const char *section; /* Section this loclist is relative to */
3255 dw_loc_descr_ref expr;
3257 + /* True if all addresses in this and subsequent lists are known to be
3259 + bool resolved_addr;
3260 + /* True if this list has been replaced by dw_loc_next. */
3265 @@ -6091,6 +6096,19 @@
3266 /* Table of decl location linked lists. */
3267 static GTY ((param_is (var_loc_list))) htab_t decl_loc_table;
3269 +/* A cached location list. */
3270 +struct GTY (()) cached_dw_loc_list_def {
3271 + /* The DECL_UID of the decl that this entry describes. */
3272 + unsigned int decl_id;
3274 + /* The cached location list. */
3275 + dw_loc_list_ref loc_list;
3277 +typedef struct cached_dw_loc_list_def cached_dw_loc_list;
3279 +/* Table of cached location lists. */
3280 +static GTY ((param_is (cached_dw_loc_list))) htab_t cached_dw_loc_list_table;
3282 /* A pointer to the base of a list of references to DIE's that
3283 are uniquely identified by their tag, presence/absence of
3284 children DIE's, and list of attribute/value pairs. */
3285 @@ -6439,7 +6457,7 @@
3286 static void insert_double (double_int, unsigned char *);
3287 static void insert_float (const_rtx, unsigned char *);
3288 static rtx rtl_for_decl_location (tree);
3289 -static bool add_location_or_const_value_attribute (dw_die_ref, tree,
3290 +static bool add_location_or_const_value_attribute (dw_die_ref, tree, bool,
3291 enum dwarf_attribute);
3292 static bool tree_add_const_value_attribute (dw_die_ref, tree);
3293 static bool tree_add_const_value_attribute_for_decl (dw_die_ref, tree);
3294 @@ -8173,6 +8191,24 @@
3295 htab_find_with_hash (decl_loc_table, decl, DECL_UID (decl));
3298 +/* Returns a hash value for X (which really is a cached_dw_loc_list_list). */
3301 +cached_dw_loc_list_table_hash (const void *x)
3303 + return (hashval_t) ((const cached_dw_loc_list *) x)->decl_id;
3306 +/* Return nonzero if decl_id of cached_dw_loc_list X is the same as
3307 + UID of decl *Y. */
3310 +cached_dw_loc_list_table_eq (const void *x, const void *y)
3312 + return (((const cached_dw_loc_list *) x)->decl_id
3313 + == DECL_UID ((const_tree) y));
3316 /* Equate a DIE to a particular declaration. */
3319 @@ -16995,15 +17031,22 @@
3320 these things can crop up in other ways also.) Note that one type of
3321 constant value which can be passed into an inlined function is a constant
3322 pointer. This can happen for example if an actual argument in an inlined
3323 - function call evaluates to a compile-time constant address. */
3324 + function call evaluates to a compile-time constant address.
3326 + CACHE_P is true if it is worth caching the location list for DECL,
3327 + so that future calls can reuse it rather than regenerate it from scratch.
3328 + This is true for BLOCK_NONLOCALIZED_VARS in inlined subroutines,
3329 + since we will need to refer to them each time the function is inlined. */
3332 -add_location_or_const_value_attribute (dw_die_ref die, tree decl,
3333 +add_location_or_const_value_attribute (dw_die_ref die, tree decl, bool cache_p,
3334 enum dwarf_attribute attr)
3337 dw_loc_list_ref list;
3338 var_loc_list *loc_list;
3339 + cached_dw_loc_list *cache;
3342 if (TREE_CODE (decl) == ERROR_MARK)
3344 @@ -17040,7 +17083,33 @@
3345 && add_const_value_attribute (die, rtl))
3348 - list = loc_list_from_tree (decl, decl_by_reference_p (decl) ? 0 : 2);
3349 + /* If this decl is from BLOCK_NONLOCALIZED_VARS, we might need its
3350 + list several times. See if we've already cached the contents. */
3352 + if (loc_list == NULL || cached_dw_loc_list_table == NULL)
3356 + cache = (cached_dw_loc_list *)
3357 + htab_find_with_hash (cached_dw_loc_list_table, decl, DECL_UID (decl));
3359 + list = cache->loc_list;
3363 + list = loc_list_from_tree (decl, decl_by_reference_p (decl) ? 0 : 2);
3364 + /* It is usually worth caching this result if the decl is from
3365 + BLOCK_NONLOCALIZED_VARS and if the list has at least two elements. */
3366 + if (cache_p && list && list->dw_loc_next)
3368 + slot = htab_find_slot_with_hash (cached_dw_loc_list_table, decl,
3369 + DECL_UID (decl), INSERT);
3370 + cache = ggc_alloc_cleared_cached_dw_loc_list ();
3371 + cache->decl_id = DECL_UID (decl);
3372 + cache->loc_list = list;
3378 add_AT_location_description (die, attr, list);
3379 @@ -18738,7 +18807,7 @@
3380 equate_decl_number_to_die (node, parm_die);
3381 if (! DECL_ABSTRACT (node_or_origin))
3382 add_location_or_const_value_attribute (parm_die, node_or_origin,
3384 + node == NULL, DW_AT_location);
3388 @@ -18923,6 +18992,7 @@
3391 htab_t old_decl_loc_table;
3392 + htab_t old_cached_dw_loc_list_table;
3394 /* Make sure we have the actual abstract inline, not a clone. */
3395 decl = DECL_ORIGIN (decl);
3396 @@ -18937,6 +19007,8 @@
3397 get locations in abstract instantces. */
3398 old_decl_loc_table = decl_loc_table;
3399 decl_loc_table = NULL;
3400 + old_cached_dw_loc_list_table = cached_dw_loc_list_table;
3401 + cached_dw_loc_list_table = NULL;
3403 /* Be sure we've emitted the in-class declaration DIE (if any) first, so
3404 we don't get confused by DECL_ABSTRACT. */
3405 @@ -18961,6 +19033,7 @@
3407 current_function_decl = save_fn;
3408 decl_loc_table = old_decl_loc_table;
3409 + cached_dw_loc_list_table = old_cached_dw_loc_list_table;
3413 @@ -19745,9 +19818,8 @@
3414 && !TREE_SYMBOL_REFERENCED (DECL_ASSEMBLER_NAME (decl_or_origin)))
3415 defer_location (decl_or_origin, var_die);
3417 - add_location_or_const_value_attribute (var_die,
3420 + add_location_or_const_value_attribute (var_die, decl_or_origin,
3421 + decl == NULL, DW_AT_location);
3422 add_pubname (decl_or_origin, var_die);
3425 @@ -21534,6 +21606,7 @@
3426 dwarf2out_decl (decl);
3428 htab_empty (decl_loc_table);
3429 + htab_empty (cached_dw_loc_list_table);
3432 /* Output a marker (i.e. a label) for the beginning of the generated code for
3433 @@ -22267,6 +22340,11 @@
3434 decl_loc_table = htab_create_ggc (10, decl_loc_table_hash,
3435 decl_loc_table_eq, NULL);
3437 + /* Allocate the cached_dw_loc_list_table. */
3438 + cached_dw_loc_list_table
3439 + = htab_create_ggc (10, cached_dw_loc_list_table_hash,
3440 + cached_dw_loc_list_table_eq, NULL);
3442 /* Allocate the initial hunk of the decl_scope_table. */
3443 decl_scope_table = VEC_alloc (tree, gc, 256);
3445 @@ -22907,30 +22985,53 @@
3449 - dw_loc_list_ref *curr;
3450 + dw_loc_list_ref *curr, *start, loc;
3453 FOR_EACH_VEC_ELT (dw_attr_node, die->die_attr, ix, a)
3454 switch (AT_class (a))
3456 case dw_val_class_loc_list:
3457 - curr = AT_loc_list_ptr (a);
3459 + start = curr = AT_loc_list_ptr (a);
3462 + /* The same list can be referenced more than once. See if we have
3463 + already recorded the result from a previous pass. */
3464 + if (loc->replaced)
3465 + *curr = loc->dw_loc_next;
3466 + else if (!loc->resolved_addr)
3468 - if (!resolve_addr_in_expr ((*curr)->expr))
3469 + /* As things stand, we do not expect or allow one die to
3470 + reference a suffix of another die's location list chain.
3471 + References must be identical or completely separate.
3472 + There is therefore no need to cache the result of this
3473 + pass on any list other than the first; doing so
3474 + would lead to unnecessary writes. */
3477 - dw_loc_list_ref next = (*curr)->dw_loc_next;
3478 - if (next && (*curr)->ll_symbol)
3479 + gcc_assert (!(*curr)->replaced && !(*curr)->resolved_addr);
3480 + if (!resolve_addr_in_expr ((*curr)->expr))
3482 - gcc_assert (!next->ll_symbol);
3483 - next->ll_symbol = (*curr)->ll_symbol;
3484 + dw_loc_list_ref next = (*curr)->dw_loc_next;
3485 + if (next && (*curr)->ll_symbol)
3487 + gcc_assert (!next->ll_symbol);
3488 + next->ll_symbol = (*curr)->ll_symbol;
3494 + curr = &(*curr)->dw_loc_next;
3496 + if (loc == *start)
3497 + loc->resolved_addr = 1;
3499 - curr = &(*curr)->dw_loc_next;
3501 + loc->replaced = 1;
3502 + loc->dw_loc_next = *start;
3505 - if (!AT_loc_list (a))
3508 remove_AT (die, a->dw_attr);
3510 @@ -23359,6 +23460,7 @@
3511 add_location_or_const_value_attribute (
3512 VEC_index (deferred_locations, deferred_locations_list, i)->die,
3513 VEC_index (deferred_locations, deferred_locations_list, i)->variable,
3519 ===================================================================
3520 --- gcc/expr.c (.../tags/gcc_4_6_2_release) (wersja 182722)
3521 +++ gcc/expr.c (.../branches/gcc-4_6-branch) (wersja 182722)
3522 @@ -9189,8 +9189,16 @@
3523 && modifier != EXPAND_CONST_ADDRESS
3524 && modifier != EXPAND_INITIALIZER)
3525 /* If the field is volatile, we always want an aligned
3527 - || (volatilep && flag_strict_volatile_bitfields > 0)
3528 + access. Do this in following two situations:
3529 + 1. the access is not already naturally
3530 + aligned, otherwise "normal" (non-bitfield) volatile fields
3531 + become non-addressable.
3532 + 2. the bitsize is narrower than the access size. Need
3533 + to extract bitfields from the access. */
3534 + || (volatilep && flag_strict_volatile_bitfields > 0
3535 + && (bitpos % GET_MODE_ALIGNMENT (mode) != 0
3536 + || (mode1 != BLKmode
3537 + && bitsize < GET_MODE_SIZE (mode1) * BITS_PER_UNIT)))
3538 /* If the field isn't aligned enough to fetch as a memref,
3539 fetch it as a bit field. */
3540 || (mode1 != BLKmode
3541 Index: gcc/ada/mlib-tgt-specific-darwin.adb
3542 ===================================================================
3543 --- gcc/ada/mlib-tgt-specific-darwin.adb (.../tags/gcc_4_6_2_release) (wersja 182722)
3544 +++ gcc/ada/mlib-tgt-specific-darwin.adb (.../branches/gcc-4_6-branch) (wersja 182722)
3547 -- Non default subprograms
3549 - function Archive_Indexer_Options return String_List_Access;
3551 procedure Build_Dynamic_Library
3552 (Ofiles : Argument_List;
3553 Options : Argument_List;
3555 (1 => Flat_Namespace'Access,
3556 2 => Shared_Libgcc'Access);
3558 - -----------------------------
3559 - -- Archive_Indexer_Options --
3560 - -----------------------------
3562 - function Archive_Indexer_Options return String_List_Access is
3564 - return new String_List'(1 => new String'("-c"));
3565 - end Archive_Indexer_Options;
3567 ---------------------------
3568 -- Build_Dynamic_Library --
3569 ---------------------------
3574 - Archive_Indexer_Options_Ptr := Archive_Indexer_Options'Access;
3575 Build_Dynamic_Library_Ptr := Build_Dynamic_Library'Access;
3576 DLL_Ext_Ptr := DLL_Ext'Access;
3577 Dynamic_Option_Ptr := Dynamic_Option'Access;
3578 Index: gcc/ada/init.c
3579 ===================================================================
3580 --- gcc/ada/init.c (.../tags/gcc_4_6_2_release) (wersja 182722)
3581 +++ gcc/ada/init.c (.../branches/gcc-4_6-branch) (wersja 182722)
3582 @@ -2216,12 +2216,33 @@
3586 +#define HAVE_GNAT_ADJUST_CONTEXT_FOR_RAISE
3589 +__gnat_adjust_context_for_raise (int signo ATTRIBUTE_UNUSED,
3590 + void *ucontext ATTRIBUTE_UNUSED)
3592 +#if defined (__x86_64__)
3593 + /* Work around radar #10302855/pr50678, where the unwinders (libunwind or
3594 + libgcc_s depending on the system revision) and the DWARF unwind data for
3595 + the sigtramp have different ideas about register numbering (causing rbx
3596 + and rdx to be transposed).. */
3597 + ucontext_t *uc = (ucontext_t *)ucontext ;
3598 + unsigned long t = uc->uc_mcontext->__ss.__rbx;
3600 + uc->uc_mcontext->__ss.__rbx = uc->uc_mcontext->__ss.__rdx;
3601 + uc->uc_mcontext->__ss.__rdx = t;
3606 -__gnat_error_handler (int sig, siginfo_t *si, void *ucontext ATTRIBUTE_UNUSED)
3607 +__gnat_error_handler (int sig, siginfo_t *si, void *ucontext)
3609 struct Exception_Data *exception;
3612 + __gnat_adjust_context_for_raise (sig, ucontext);
3617 Index: gcc/ada/ChangeLog
3618 ===================================================================
3619 --- gcc/ada/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 182722)
3620 +++ gcc/ada/ChangeLog (.../branches/gcc-4_6-branch) (wersja 182722)
3622 +2011-12-08 Eric Botcazou <ebotcazou@adacore.com>
3624 + PR tree-optimization/51315
3625 + Backport from mainline
3626 + 2011-09-25 Eric Botcazou <ebotcazou@adacore.com>
3628 + * gcc-interface/decl.c (gnat_to_gnu_entity) <object>: Do not promote
3629 + the alignment if this doesn't prevent BLKmode access to the object.
3631 +2011-11-13 Iain Sandoe <iains@gcc.gnu.org>
3633 + Backport from mainline r181474
3635 + * init.c (__gnat_error_handler) [Darwin]: Move work-around to the
3636 + bug filed as radar #10302855 from __gnat_error_handler ...
3637 + ... to (__gnat_adjust_context_for_raise) [Darwin]: New.
3638 + (HAVE_GNAT_ADJUST_CONTEXT_FOR_RAISE) [Darwin]: Define.
3639 + (__gnat_error_handler) [Darwin]: Use __gnat_adjust_context_for_raise.
3641 +2011-11-18 Tristan Gingold <gingold@adacore.com>
3642 + Iain Sandoe <iains@gcc.gnu.org>
3645 + * mlib-tgt-specific-darwin.adb (Archive_Indexer_Options): Remove.
3646 + * gcc-interface/Makefile.in (darwin): Remove ranlib special-casing
3649 +2011-11-13 Iain Sandoe <iains@gcc.gnu.org>
3651 + Backport from mainline r181319
3652 + * gcc-interface/Makefile.in (stamp-gnatlib-$(RTSDIR)): Don't link
3654 + (OSCONS_CPP, OSCONS_EXTRACT): New.
3655 + (./bldtools/oscons/xoscons): New Target.
3656 + ($(RTSDIR)/s-oscons.ads): New Target.
3657 + (gnatlib): Depend on $(RTSDIR)/s-oscons.ads.
3658 + * Make-generated.in: Remove machinery to generate xoscons and
3661 2011-10-26 Release Manager
3663 * GCC 4.6.2 released.
3664 Index: gcc/ada/gcc-interface/Makefile.in
3665 ===================================================================
3666 --- gcc/ada/gcc-interface/Makefile.in (.../tags/gcc_4_6_2_release) (wersja 182722)
3667 +++ gcc/ada/gcc-interface/Makefile.in (.../branches/gcc-4_6-branch) (wersja 182722)
3668 @@ -2189,7 +2189,6 @@
3671 GNATLIB_SHARED = gnatlib-shared-darwin
3672 - RANLIB = ranlib -c
3674 LIBRARY_VERSION := $(LIB_VERSION)
3676 @@ -2447,21 +2446,52 @@
3677 $(foreach PAIR,$(LIBGNAT_TARGET_PAIRS), \
3678 $(LN_S) $(fsrcpfx)ada/$(word 2,$(subst <, ,$(PAIR))) \
3679 $(RTSDIR)/$(word 1,$(subst <, ,$(PAIR)));)
3680 -# Copy generated target dependent sources
3681 - $(RM) $(RTSDIR)/s-oscons.ads
3682 - (cd $(RTSDIR); $(LN_S) ../s-oscons.ads s-oscons.ads)
3684 + $(CP) $(srcdir)/tsystem.h $(RTSDIR)
3685 $(RM) ../stamp-gnatlib-$(RTSDIR)
3686 touch ../stamp-gnatlib1-$(RTSDIR)
3688 # GNULLI End #############################################################
3690 +ifeq ($(strip $(filter-out alpha64 ia64 dec hp vms% openvms% alphavms%,$(subst -, ,$(host)))),)
3691 +OSCONS_CPP=../../$(DECC) -E /comment=as_is -DNATIVE \
3692 + -DTARGET='""$(target)""' $(fsrcpfx)ada/s-oscons-tmplt.c
3694 +OSCONS_EXTRACT=../../$(DECC) -DNATIVE \
3695 + -DTARGET='""$(target)""' $(fsrcpfx)ada/s-oscons-tmplt.c ; \
3696 + ld -o s-oscons-tmplt.exe s-oscons-tmplt.obj; \
3697 + ./s-oscons-tmplt.exe > s-oscons-tmplt.s
3700 +# GCC_FOR_TARGET has paths relative to the gcc directory, so we need to adjust
3701 +# for running it from $(RTSDIR)
3702 +OSCONS_CC=`echo "$(GCC_FOR_TARGET)" \
3703 + | sed -e 's^\./xgcc^../../xgcc^' -e 's^-B./^-B../../^'`
3704 +OSCONS_CPP=$(OSCONS_CC) $(GNATLIBCFLAGS) -E -C \
3705 + -DTARGET=\"$(target)\" $(fsrcpfx)ada/s-oscons-tmplt.c > s-oscons-tmplt.i
3706 +OSCONS_EXTRACT=$(OSCONS_CC) -S s-oscons-tmplt.i
3709 +./bldtools/oscons/xoscons: xoscons.adb xutil.ads xutil.adb
3710 + -$(MKDIR) ./bldtools/oscons
3711 + $(RM) $(addprefix ./bldtools/oscons/,$(notdir $^))
3712 + $(CP) $^ ./bldtools/oscons
3713 + (cd ./bldtools/oscons ; gnatmake -q xoscons)
3715 +$(RTSDIR)/s-oscons.ads: ../stamp-gnatlib1-$(RTSDIR) s-oscons-tmplt.c gsocket.h ./bldtools/oscons/xoscons
3716 + $(RM) $(RTSDIR)/s-oscons-tmplt.i $(RTSDIR)/s-oscons-tmplt.s
3719 + $(OSCONS_EXTRACT) ; \
3720 + ../bldtools/oscons/xoscons)
3722 # Don't use semicolon separated shell commands that involve list expansions.
3723 # The semicolon triggers a call to DCL on VMS and DCL can't handle command
3724 # line lengths in excess of 256 characters.
3725 # Example: cd $(RTSDIR); ar rc libfoo.a $(LONG_LIST_OF_OBJS)
3726 # is guaranteed to overflow the buffer.
3728 -gnatlib: ../stamp-gnatlib1-$(RTSDIR) ../stamp-gnatlib2-$(RTSDIR)
3729 +gnatlib: ../stamp-gnatlib1-$(RTSDIR) ../stamp-gnatlib2-$(RTSDIR) $(RTSDIR)/s-oscons.ads
3730 $(MAKE) -C $(RTSDIR) \
3731 CC="`echo \"$(GCC_FOR_TARGET)\" \
3732 | sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'`" \
3733 Index: gcc/ada/gcc-interface/decl.c
3734 ===================================================================
3735 --- gcc/ada/gcc-interface/decl.c (.../tags/gcc_4_6_2_release) (wersja 182722)
3736 +++ gcc/ada/gcc-interface/decl.c (.../branches/gcc-4_6-branch) (wersja 182722)
3737 @@ -808,16 +808,30 @@
3738 && No (Address_Clause (gnat_entity))))
3739 && TREE_CODE (TYPE_SIZE (gnu_type)) == INTEGER_CST)
3741 - /* No point in jumping through all the hoops needed in order
3742 + unsigned int size_cap, align_cap;
3744 + /* No point in promoting the alignment if this doesn't prevent
3745 + BLKmode access to the object, in particular block copy, as
3746 + this will for example disable the NRV optimization for it.
3747 + No point in jumping through all the hoops needed in order
3748 to support BIGGEST_ALIGNMENT if we don't really have to.
3749 So we cap to the smallest alignment that corresponds to
3750 a known efficient memory access pattern of the target. */
3751 - unsigned int align_cap = Is_Atomic (gnat_entity)
3752 - ? BIGGEST_ALIGNMENT
3753 - : get_mode_alignment (ptr_mode);
3754 + if (Is_Atomic (gnat_entity))
3756 + size_cap = UINT_MAX;
3757 + align_cap = BIGGEST_ALIGNMENT;
3761 + size_cap = MAX_FIXED_MODE_SIZE;
3762 + align_cap = get_mode_alignment (ptr_mode);
3765 if (!host_integerp (TYPE_SIZE (gnu_type), 1)
3766 - || compare_tree_int (TYPE_SIZE (gnu_type), align_cap) >= 0)
3767 + || compare_tree_int (TYPE_SIZE (gnu_type), size_cap) > 0)
3769 + else if (compare_tree_int (TYPE_SIZE (gnu_type), align_cap) > 0)
3772 align = ceil_alignment (tree_low_cst (TYPE_SIZE (gnu_type), 1));
3773 Index: gcc/ada/Make-generated.in
3774 ===================================================================
3775 --- gcc/ada/Make-generated.in (.../tags/gcc_4_6_2_release) (wersja 182722)
3776 +++ gcc/ada/Make-generated.in (.../branches/gcc-4_6-branch) (wersja 182722)
3778 $(CP) $^ $(ADA_GEN_SUBDIR)/bldtools/nmake_s
3779 (cd $(ADA_GEN_SUBDIR)/bldtools/nmake_s; gnatmake -q xnmake ; ./xnmake -s ../../nmake.ads )
3781 -ifeq ($(strip $(filter-out alpha64 ia64 dec hp vms% openvms% alphavms%,$(subst -, ,$(host)))),)
3782 -OSCONS_CPP=../../../$(DECC) -E /comment=as_is -DNATIVE \
3783 - -DTARGET='""$(target)""' s-oscons-tmplt.c
3785 -OSCONS_EXTRACT=../../../$(DECC) -DNATIVE \
3786 - -DTARGET='""$(target)""' s-oscons-tmplt.c ; \
3787 - ld -o s-oscons-tmplt.exe s-oscons-tmplt.obj; \
3788 - ./s-oscons-tmplt.exe > s-oscons-tmplt.s
3791 -# GCC_FOR_TARGET has paths relative to the gcc directory, so we need to ajust
3792 -# for running it from $(ADA_GEN_SUBDIR)/bldtools/oscons
3793 -OSCONS_CC=`echo "$(GCC_FOR_TARGET)" \
3794 - | sed -e 's^\./xgcc^../../../xgcc^' -e 's^-B./^-B../../../^'`
3795 -OSCONS_CPP=$(OSCONS_CC) $(GNATLIBCFLAGS) -E -C \
3796 - -DTARGET=\"$(target)\" s-oscons-tmplt.c > s-oscons-tmplt.i
3797 -OSCONS_EXTRACT=$(OSCONS_CC) -S s-oscons-tmplt.i
3800 -$(ADA_GEN_SUBDIR)/s-oscons.ads : $(ADA_GEN_SUBDIR)/s-oscons-tmplt.c $(ADA_GEN_SUBDIR)/gsocket.h $(ADA_GEN_SUBDIR)/xoscons.adb $(ADA_GEN_SUBDIR)/xutil.ads $(ADA_GEN_SUBDIR)/xutil.adb
3801 - -$(MKDIR) $(ADA_GEN_SUBDIR)/bldtools/oscons
3802 - $(RM) $(addprefix $(ADA_GEN_SUBDIR)/bldtools/oscons/,$(notdir $^))
3803 - $(CP) $^ $(ADA_GEN_SUBDIR)/bldtools/oscons
3804 - (cd $(ADA_GEN_SUBDIR)/bldtools/oscons ; gnatmake -q xoscons ; \
3805 - $(RM) s-oscons-tmplt.i s-oscons-tmplt.s ; \
3807 - $(OSCONS_EXTRACT) ; \
3809 - $(RM) ../../s-oscons.ads ; \
3810 - $(CP) s-oscons.ads s-oscons.h ../../)
3812 $(ADA_GEN_SUBDIR)/sdefault.adb: $(ADA_GEN_SUBDIR)/stamp-sdefault ; @true
3813 $(ADA_GEN_SUBDIR)/stamp-sdefault : $(srcdir)/version.c Makefile
3814 $(ECHO) "pragma Style_Checks (Off);" >tmp-sdefault.adb
3815 Index: gcc/lto-streamer-in.c
3816 ===================================================================
3817 --- gcc/lto-streamer-in.c (.../tags/gcc_4_6_2_release) (wersja 182722)
3818 +++ gcc/lto-streamer-in.c (.../branches/gcc-4_6-branch) (wersja 182722)
3819 @@ -1366,9 +1366,9 @@
3821 const struct lto_function_header *header;
3822 struct data_in *data_in;
3823 - int32_t cfg_offset;
3824 - int32_t main_offset;
3825 - int32_t string_offset;
3828 + int string_offset;
3829 struct lto_input_block ib_cfg;
3830 struct lto_input_block ib_main;
3833 ===================================================================
3834 --- gcc/c-decl.c (.../tags/gcc_4_6_2_release) (wersja 182722)
3835 +++ gcc/c-decl.c (.../branches/gcc-4_6-branch) (wersja 182722)
3838 complete_array_type (&TREE_TYPE (decl), NULL_TREE, true);
3840 - layout_decl (decl, 0);
3841 + relayout_decl (decl);
3845 @@ -1200,7 +1200,7 @@
3846 DECL_CHAIN (p) = BLOCK_VARS (block);
3847 BLOCK_VARS (block) = p;
3849 - else if (VAR_OR_FUNCTION_DECL_P (p))
3850 + else if (VAR_OR_FUNCTION_DECL_P (p) && scope != file_scope)
3852 /* For block local externs add a special
3853 DECL_EXTERNAL decl for debug info generation. */
3854 @@ -4261,7 +4261,7 @@
3855 if (DECL_INITIAL (decl))
3856 TREE_TYPE (DECL_INITIAL (decl)) = type;
3858 - layout_decl (decl, 0);
3859 + relayout_decl (decl);
3862 if (TREE_CODE (decl) == VAR_DECL)
3863 Index: gcc/fortran/trans-array.c
3864 ===================================================================
3865 --- gcc/fortran/trans-array.c (.../tags/gcc_4_6_2_release) (wersja 182722)
3866 +++ gcc/fortran/trans-array.c (.../branches/gcc-4_6-branch) (wersja 182722)
3867 @@ -6772,8 +6772,17 @@
3868 gfc_array_index_type, cond,
3869 lbound, gfc_index_one_node);
3871 - else if (expr->expr_type == EXPR_VARIABLE)
3873 + if (expr->expr_type == EXPR_FUNCTION)
3875 + /* A conversion function, so use the argument. */
3876 + gcc_assert (expr->value.function.isym
3877 + && expr->value.function.isym->conversion);
3878 + expr = expr->value.function.actual->expr;
3881 + if (expr->expr_type == EXPR_VARIABLE)
3883 tmp = TREE_TYPE (expr->symtree->n.sym->backend_decl);
3884 for (ref = expr->ref; ref; ref = ref->next)
3886 @@ -6785,15 +6794,6 @@
3888 return GFC_TYPE_ARRAY_LBOUND(tmp, dim);
3890 - else if (expr->expr_type == EXPR_FUNCTION)
3892 - /* A conversion function, so use the argument. */
3893 - expr = expr->value.function.actual->expr;
3894 - if (expr->expr_type != EXPR_VARIABLE)
3895 - return gfc_index_one_node;
3896 - desc = TREE_TYPE (expr->symtree->n.sym->backend_decl);
3897 - return get_std_lbound (expr, desc, dim, assumed_size);
3900 return gfc_index_one_node;
3902 Index: gcc/fortran/ChangeLog
3903 ===================================================================
3904 --- gcc/fortran/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 182722)
3905 +++ gcc/fortran/ChangeLog (.../branches/gcc-4_6-branch) (wersja 182722)
3907 +2011-12-22 Toon Moene <toon@moene.org>
3910 + * resolve.c (build_default_init_expr): Allow non-allocatable,
3911 + non-compile-time-constant-shape arrays to have a default
3913 + * invoke.texi: Delete the restriction on automatic arrays not
3914 + being initialized by -finit-<type>=<constant>.
3916 +2011-12-15 Tobias Burnus <burnus@net-b.de>
3922 + * resolve.c (resolve_fl_derived0): Print not-implemented error
3923 + for deferred-length character components.
3925 +2011-12-11 Tobias Burnus <burnus@net-b.de>
3928 + * trans-decl.c (generate_local_decl): Set TREE_NO_WARNING only
3929 + if the front end has printed a warning.
3930 + (gfc_generate_function_code): Fix unset-result warning.
3932 +2011-12-11 Thomas Koenig <tkoenig@gcc.gnu.org>
3935 + Backport from trunk
3936 + * dependency.c (are_identical_variables): Handle case where
3937 + end fields of substring references are NULL.
3939 +2011-12-08 Toon Moene <toon@moene.org>
3942 + * invoke.texi: Itemize the cases for which
3943 + -finit-<type>=<constant> doesn't work.
3945 +2011-12-08 Tobias Burnus <burnus@net-b.de>
3948 + * fortran/trans-array.c (get_std_lbound): Fix handling of
3949 + conversion functions.
3951 +2011-12-06 Tobias Burnus <burnus@net-b.de>
3954 + * expr.c (gfc_has_default_initializer): Fix handling of
3955 + DT with initialized pointer components.
3957 +2011-12-03 Tobias Burnus <burnus@net-b.de>
3960 + * check.c (variable_check): Fix intent(in) check.
3962 +2011-11-25 Tobias Burnus <burnus@net-b.de>
3965 + * trans-decl.c (gfc_get_module_backend_decl): Also copy
3966 + ts.u.derived from the gsym if the ts.type is BT_CLASS.
3967 + (gfc_get_extern_function_decl): Copy also the backend_decl
3968 + for the symbol's ts.u.{derived,cl} from the gsym.
3969 + * trans-types.c (gfc_copy_dt_decls_ifequal): Directly
3970 + return if "from" and "to" are the same.
3972 +2011-11-24 Tobias Burnus <burnus@net-b.de>
3975 + * gfortran.dg/implicit_pure_1.f90: New.
3977 2011-10-26 Release Manager
3979 * GCC 4.6.2 released.
3980 Index: gcc/fortran/expr.c
3981 ===================================================================
3982 --- gcc/fortran/expr.c (.../tags/gcc_4_6_2_release) (wersja 182722)
3983 +++ gcc/fortran/expr.c (.../branches/gcc-4_6-branch) (wersja 182722)
3984 @@ -3679,6 +3679,8 @@
3985 if (!c->attr.pointer
3986 && gfc_has_default_initializer (c->ts.u.derived))
3988 + if (c->attr.pointer && c->initializer)
3993 @@ -3689,6 +3691,7 @@
3998 /* Get an expression for a default initializer. */
4001 Index: gcc/fortran/invoke.texi
4002 ===================================================================
4003 --- gcc/fortran/invoke.texi (.../tags/gcc_4_6_2_release) (wersja 182722)
4004 +++ gcc/fortran/invoke.texi (.../branches/gcc-4_6-branch) (wersja 182722)
4005 @@ -1438,10 +1438,16 @@
4006 the real and imaginary parts of local @code{COMPLEX} variables),
4007 @option{-finit-logical=@var{<true|false>}}, and
4008 @option{-finit-character=@var{n}} (where @var{n} is an ASCII character
4009 -value) options. These options do not initialize components of derived
4010 -type variables, nor do they initialize variables that appear in an
4011 -@code{EQUIVALENCE} statement. (This limitation may be removed in
4013 +value) options. These options do not initialize
4018 +components of derived type variables
4020 +variables that appear in an @code{EQUIVALENCE} statement.
4022 +(These limitations may be removed in future releases).
4024 Note that the @option{-finit-real=nan} option initializes @code{REAL}
4025 and @code{COMPLEX} variables with a quiet NaN. For a signalling NaN
4026 Index: gcc/fortran/trans-types.c
4027 ===================================================================
4028 --- gcc/fortran/trans-types.c (.../tags/gcc_4_6_2_release) (wersja 182722)
4029 +++ gcc/fortran/trans-types.c (.../branches/gcc-4_6-branch) (wersja 182722)
4030 @@ -2092,6 +2092,9 @@
4031 gfc_component *to_cm;
4032 gfc_component *from_cm;
4037 if (from->backend_decl == NULL
4038 || !gfc_compare_derived_types (from, to))
4040 Index: gcc/fortran/resolve.c
4041 ===================================================================
4042 --- gcc/fortran/resolve.c (.../tags/gcc_4_6_2_release) (wersja 182722)
4043 +++ gcc/fortran/resolve.c (.../branches/gcc-4_6-branch) (wersja 182722)
4044 @@ -3132,11 +3132,11 @@
4045 "procedure within a PURE procedure", name, &expr->where);
4049 + if (gfc_implicit_pure (NULL))
4050 + gfc_current_ns->proc_name->attr.implicit_pure = 0;
4053 - if (!pure_function (expr, &name) && name && gfc_implicit_pure (NULL))
4054 - gfc_current_ns->proc_name->attr.implicit_pure = 0;
4056 /* Functions without the RECURSIVE attribution are not allowed to
4057 * call themselves. */
4058 if (expr->value.function.esym && !expr->value.function.esym->attr.recursive)
4059 @@ -3195,6 +3195,9 @@
4060 else if (gfc_pure (NULL))
4061 gfc_error ("Subroutine call to '%s' at %L is not PURE", sym->name,
4064 + if (gfc_implicit_pure (NULL))
4065 + gfc_current_ns->proc_name->attr.implicit_pure = 0;
4069 @@ -9687,7 +9690,7 @@
4072 /* These symbols should never have a default initialization. */
4073 - if ((sym->attr.dimension && !gfc_is_compile_time_shape (sym->as))
4074 + if (sym->attr.allocatable
4075 || sym->attr.external
4077 || sym->attr.pointer
4078 @@ -11394,6 +11397,14 @@
4080 for (c = sym->components; c != NULL; c = c->next)
4082 + /* See PRs 51550, 47545, 48654, 49050, 51075 - and 45170. */
4083 + if (c->ts.type == BT_CHARACTER && c->ts.deferred)
4085 + gfc_error ("Deferred-length character component '%s' at %L is not "
4086 + "yet supported", c->name, &c->loc);
4091 if (c->attr.codimension /* FIXME: c->as check due to PR 43412. */
4092 && (!c->attr.allocatable || (c->as && c->as->type != AS_DEFERRED)))
4093 Index: gcc/fortran/trans-decl.c
4094 ===================================================================
4095 --- gcc/fortran/trans-decl.c (.../tags/gcc_4_6_2_release) (wersja 182722)
4096 +++ gcc/fortran/trans-decl.c (.../branches/gcc-4_6-branch) (wersja 182722)
4099 else if (s->backend_decl)
4101 - if (sym->ts.type == BT_DERIVED)
4102 + if (sym->ts.type == BT_DERIVED || sym->ts.type == BT_CLASS)
4103 gfc_copy_dt_decls_ifequal (s->ts.u.derived, sym->ts.u.derived,
4105 else if (sym->ts.type == BT_CHARACTER)
4106 @@ -1602,6 +1602,11 @@
4107 gfc_find_symbol (sym->name, gsym->ns, 0, &s);
4108 if (s && s->backend_decl)
4110 + if (sym->ts.type == BT_DERIVED || sym->ts.type == BT_CLASS)
4111 + gfc_copy_dt_decls_ifequal (s->ts.u.derived, sym->ts.u.derived,
4113 + else if (sym->ts.type == BT_CHARACTER)
4114 + sym->ts.u.cl->backend_decl = s->ts.u.cl->backend_decl;
4115 sym->backend_decl = s->backend_decl;
4116 return sym->backend_decl;
4118 @@ -4179,10 +4184,16 @@
4119 "declared INTENT(OUT) but was not set and "
4120 "does not have a default initializer",
4121 sym->name, &sym->declared_at);
4122 + if (sym->backend_decl != NULL_TREE)
4123 + TREE_NO_WARNING(sym->backend_decl) = 1;
4125 else if (gfc_option.warn_unused_dummy_argument)
4126 - gfc_warning ("Unused dummy argument '%s' at %L", sym->name,
4128 + gfc_warning ("Unused dummy argument '%s' at %L", sym->name,
4130 + if (sym->backend_decl != NULL_TREE)
4131 + TREE_NO_WARNING(sym->backend_decl) = 1;
4135 /* Warn for unused variables, but not if they're inside a common
4136 @@ -4227,11 +4238,6 @@
4137 mark the symbol now, as well as in traverse_ns, to prevent
4138 getting stuck in a circular dependency. */
4141 - /* We do not want the middle-end to warn about unused parameters
4142 - as this was already done above. */
4143 - if (sym->attr.dummy && sym->backend_decl != NULL_TREE)
4144 - TREE_NO_WARNING(sym->backend_decl) = 1;
4146 else if (sym->attr.flavor == FL_PARAMETER)
4148 @@ -4846,11 +4852,11 @@
4149 if (result == NULL_TREE)
4151 /* TODO: move to the appropriate place in resolve.c. */
4152 - if (warn_return_type && !sym->attr.referenced && sym == sym->result)
4153 + if (warn_return_type && sym == sym->result)
4154 gfc_warning ("Return value of function '%s' at %L not set",
4155 sym->name, &sym->declared_at);
4157 - TREE_NO_WARNING(sym->backend_decl) = 1;
4158 + if (warn_return_type)
4159 + TREE_NO_WARNING(sym->backend_decl) = 1;
4162 gfc_add_expr_to_block (&body, gfc_generate_return ());
4163 Index: gcc/fortran/check.c
4164 ===================================================================
4165 --- gcc/fortran/check.c (.../tags/gcc_4_6_2_release) (wersja 182722)
4166 +++ gcc/fortran/check.c (.../branches/gcc-4_6-branch) (wersja 182722)
4167 @@ -485,10 +485,31 @@
4168 && (gfc_current_intrinsic_arg[n]->intent == INTENT_OUT
4169 || gfc_current_intrinsic_arg[n]->intent == INTENT_INOUT))
4171 - gfc_error ("'%s' argument of '%s' intrinsic at %L cannot be INTENT(IN)",
4172 - gfc_current_intrinsic_arg[n]->name, gfc_current_intrinsic,
4176 + bool pointer = e->symtree->n.sym->ts.type == BT_CLASS
4177 + && CLASS_DATA (e->symtree->n.sym)
4178 + ? CLASS_DATA (e->symtree->n.sym)->attr.class_pointer
4179 + : e->symtree->n.sym->attr.pointer;
4181 + for (ref = e->ref; ref; ref = ref->next)
4183 + if (pointer && ref->type == REF_COMPONENT)
4185 + if (ref->type == REF_COMPONENT
4186 + && ((ref->u.c.component->ts.type == BT_CLASS
4187 + && CLASS_DATA (ref->u.c.component)->attr.class_pointer)
4188 + || (ref->u.c.component->ts.type != BT_CLASS
4189 + && ref->u.c.component->attr.pointer)))
4195 + gfc_error ("'%s' argument of '%s' intrinsic at %L cannot be "
4196 + "INTENT(IN)", gfc_current_intrinsic_arg[n]->name,
4197 + gfc_current_intrinsic, &e->where);
4202 if (e->expr_type == EXPR_VARIABLE
4203 Index: gcc/fortran/dependency.c
4204 ===================================================================
4205 --- gcc/fortran/dependency.c (.../tags/gcc_4_6_2_release) (wersja 182722)
4206 +++ gcc/fortran/dependency.c (.../branches/gcc-4_6-branch) (wersja 182722)
4207 @@ -163,9 +163,19 @@
4211 - if (gfc_dep_compare_expr (r1->u.ss.start, r2->u.ss.start) != 0
4212 - || gfc_dep_compare_expr (r1->u.ss.end, r2->u.ss.end) != 0)
4213 + if (gfc_dep_compare_expr (r1->u.ss.start, r2->u.ss.start) != 0)
4216 + /* If both are NULL, the end length compares equal, because we
4217 + are looking at the same variable. This can only happen for
4218 + assumed- or deferred-length character arguments. */
4220 + if (r1->u.ss.end == NULL && r2->u.ss.end == NULL)
4223 + if (gfc_dep_compare_expr (r1->u.ss.end, r2->u.ss.end) != 0)
4229 Index: gcc/regmove.c
4230 ===================================================================
4231 --- gcc/regmove.c (.../tags/gcc_4_6_2_release) (wersja 182722)
4232 +++ gcc/regmove.c (.../branches/gcc-4_6-branch) (wersja 182722)
4234 if (REG_N_CALLS_CROSSED (REGNO (src)) == 0)
4237 - if (call_used_regs [REGNO (dst)]
4238 + if ((HARD_REGISTER_P (dst) && call_used_regs [REGNO (dst)])
4239 || find_reg_fusage (p, CLOBBER, dst))
4242 Index: gcc/configure.ac
4243 ===================================================================
4244 --- gcc/configure.ac (.../tags/gcc_4_6_2_release) (wersja 182722)
4245 +++ gcc/configure.ac (.../branches/gcc-4_6-branch) (wersja 182722)
4246 @@ -807,17 +807,7 @@
4252 - # By default, the Darwin ranlib will not treat common symbols as
4253 - # definitions when building the archive table of contents. Other
4254 - # ranlibs do that; pass an option to the Darwin ranlib that makes
4255 - # it behave similarly.
4262 AC_SUBST(ranlib_flags)
4266 ===================================================================
4267 --- gcc/BASE-VER (.../tags/gcc_4_6_2_release) (wersja 182722)
4268 +++ gcc/BASE-VER (.../branches/gcc-4_6-branch) (wersja 182722)
4273 ===================================================================
4274 --- gcc/df.h (.../tags/gcc_4_6_2_release) (wersja 182722)
4275 +++ gcc/df.h (.../branches/gcc-4_6-branch) (wersja 182722)
4277 #define DF_RD 3 /* Reaching Defs. */
4278 #define DF_CHAIN 4 /* Def-Use and/or Use-Def Chains. */
4279 #define DF_WORD_LR 5 /* Subreg tracking lr. */
4280 -#define DF_NOTE 6 /* REG_DEF and REG_UNUSED notes. */
4281 +#define DF_NOTE 6 /* REG_DEAD and REG_UNUSED notes. */
4282 #define DF_MD 7 /* Multiple Definitions. */
4284 #define DF_LAST_PROBLEM_PLUS1 (DF_MD + 1)
4285 Index: gcc/lto-section-in.c
4286 ===================================================================
4287 --- gcc/lto-section-in.c (.../tags/gcc_4_6_2_release) (wersja 182722)
4288 +++ gcc/lto-section-in.c (.../branches/gcc-4_6-branch) (wersja 182722)
4290 = (const struct lto_simple_header *) data;
4292 struct lto_input_block* ib_main;
4293 - int32_t main_offset = sizeof (struct lto_simple_header);
4294 + int main_offset = sizeof (struct lto_simple_header);
4298 Index: gcc/tree-vect-data-refs.c
4299 ===================================================================
4300 --- gcc/tree-vect-data-refs.c (.../tags/gcc_4_6_2_release) (wersja 182722)
4301 +++ gcc/tree-vect-data-refs.c (.../branches/gcc-4_6-branch) (wersja 182722)
4302 @@ -2631,6 +2631,16 @@
4306 + if (is_gimple_call (stmt))
4308 + if (vect_print_dump_info (REPORT_UNVECTORIZED_LOCATIONS))
4310 + fprintf (vect_dump, "not vectorized: dr in a call ");
4311 + print_gimple_stmt (vect_dump, stmt, 0, TDF_SLIM);
4316 /* Update DR field in stmt_vec_info struct. */
4318 /* If the dataref is in an inner-loop of the loop that is considered for
4319 Index: gcc/c-typeck.c
4320 ===================================================================
4321 --- gcc/c-typeck.c (.../tags/gcc_4_6_2_release) (wersja 182722)
4322 +++ gcc/c-typeck.c (.../branches/gcc-4_6-branch) (wersja 182722)
4323 @@ -3802,11 +3802,7 @@
4324 if (val && TREE_CODE (val) == INDIRECT_REF
4325 && TREE_CONSTANT (TREE_OPERAND (val, 0)))
4327 - tree op0 = fold_convert_loc (location, sizetype,
4328 - fold_offsetof (arg, val)), op1;
4330 - op1 = fold_convert_loc (location, argtype, TREE_OPERAND (val, 0));
4331 - ret = fold_build2_loc (location, POINTER_PLUS_EXPR, argtype, op1, op0);
4332 + ret = fold_convert_loc (location, argtype, fold_offsetof_1 (arg));
4333 goto return_build_unary_op;
4337 ===================================================================
4338 --- gcc/calls.c (.../tags/gcc_4_6_2_release) (wersja 182722)
4339 +++ gcc/calls.c (.../branches/gcc-4_6-branch) (wersja 182722)
4340 @@ -1548,6 +1548,131 @@
4344 +/* Internal state for internal_arg_pointer_based_exp and its helpers. */
4347 + /* Last insn that has been scanned by internal_arg_pointer_based_exp_scan,
4348 + or NULL_RTX if none has been scanned yet. */
4350 + /* Vector indexed by REGNO - FIRST_PSEUDO_REGISTER, recording if a pseudo is
4351 + based on crtl->args.internal_arg_pointer. The element is NULL_RTX if the
4352 + pseudo isn't based on it, a CONST_INT offset if the pseudo is based on it
4353 + with fixed offset, or PC if this is with variable or unknown offset. */
4354 + VEC(rtx, heap) *cache;
4355 +} internal_arg_pointer_exp_state;
4357 +static rtx internal_arg_pointer_based_exp (rtx, bool);
4359 +/* Helper function for internal_arg_pointer_based_exp. Scan insns in
4360 + the tail call sequence, starting with first insn that hasn't been
4361 + scanned yet, and note for each pseudo on the LHS whether it is based
4362 + on crtl->args.internal_arg_pointer or not, and what offset from that
4363 + that pointer it has. */
4366 +internal_arg_pointer_based_exp_scan (void)
4368 + rtx insn, scan_start = internal_arg_pointer_exp_state.scan_start;
4370 + if (scan_start == NULL_RTX)
4371 + insn = get_insns ();
4373 + insn = NEXT_INSN (scan_start);
4377 + rtx set = single_set (insn);
4378 + if (set && REG_P (SET_DEST (set)) && !HARD_REGISTER_P (SET_DEST (set)))
4380 + rtx val = NULL_RTX;
4381 + unsigned int idx = REGNO (SET_DEST (set)) - FIRST_PSEUDO_REGISTER;
4382 + /* Punt on pseudos set multiple times. */
4383 + if (idx < VEC_length (rtx, internal_arg_pointer_exp_state.cache)
4384 + && (VEC_index (rtx, internal_arg_pointer_exp_state.cache, idx)
4388 + val = internal_arg_pointer_based_exp (SET_SRC (set), false);
4389 + if (val != NULL_RTX)
4392 + >= VEC_length (rtx, internal_arg_pointer_exp_state.cache))
4393 + VEC_safe_grow_cleared (rtx, heap,
4394 + internal_arg_pointer_exp_state.cache,
4396 + VEC_replace (rtx, internal_arg_pointer_exp_state.cache,
4400 + if (NEXT_INSN (insn) == NULL_RTX)
4401 + scan_start = insn;
4402 + insn = NEXT_INSN (insn);
4405 + internal_arg_pointer_exp_state.scan_start = scan_start;
4408 +/* Helper function for internal_arg_pointer_based_exp, called through
4409 + for_each_rtx. Return 1 if *LOC is a register based on
4410 + crtl->args.internal_arg_pointer. Return -1 if *LOC is not based on it
4411 + and the subexpressions need not be examined. Otherwise return 0. */
4414 +internal_arg_pointer_based_exp_1 (rtx *loc, void *data ATTRIBUTE_UNUSED)
4416 + if (REG_P (*loc) && internal_arg_pointer_based_exp (*loc, false) != NULL_RTX)
4423 +/* Compute whether RTL is based on crtl->args.internal_arg_pointer. Return
4424 + NULL_RTX if RTL isn't based on it, a CONST_INT offset if RTL is based on
4425 + it with fixed offset, or PC if this is with variable or unknown offset.
4426 + TOPLEVEL is true if the function is invoked at the topmost level. */
4429 +internal_arg_pointer_based_exp (rtx rtl, bool toplevel)
4431 + if (CONSTANT_P (rtl))
4434 + if (rtl == crtl->args.internal_arg_pointer)
4435 + return const0_rtx;
4437 + if (REG_P (rtl) && HARD_REGISTER_P (rtl))
4440 + if (GET_CODE (rtl) == PLUS && CONST_INT_P (XEXP (rtl, 1)))
4442 + rtx val = internal_arg_pointer_based_exp (XEXP (rtl, 0), toplevel);
4443 + if (val == NULL_RTX || val == pc_rtx)
4445 + return plus_constant (val, INTVAL (XEXP (rtl, 1)));
4448 + /* When called at the topmost level, scan pseudo assignments in between the
4449 + last scanned instruction in the tail call sequence and the latest insn
4450 + in that sequence. */
4452 + internal_arg_pointer_based_exp_scan ();
4456 + unsigned int idx = REGNO (rtl) - FIRST_PSEUDO_REGISTER;
4457 + if (idx < VEC_length (rtx, internal_arg_pointer_exp_state.cache))
4458 + return VEC_index (rtx, internal_arg_pointer_exp_state.cache, idx);
4463 + if (for_each_rtx (&rtl, internal_arg_pointer_based_exp_1, NULL))
4469 /* Return true if and only if SIZE storage units (usually bytes)
4470 starting from address ADDR overlap with already clobbered argument
4471 area. This function is used to determine if we should give up a
4472 @@ -1557,20 +1682,17 @@
4473 mem_overlaps_already_clobbered_arg_p (rtx addr, unsigned HOST_WIDE_INT size)
4478 - if (addr == crtl->args.internal_arg_pointer)
4480 - else if (GET_CODE (addr) == PLUS
4481 - && XEXP (addr, 0) == crtl->args.internal_arg_pointer
4482 - && CONST_INT_P (XEXP (addr, 1)))
4483 - i = INTVAL (XEXP (addr, 1));
4484 - /* Return true for arg pointer based indexed addressing. */
4485 - else if (GET_CODE (addr) == PLUS
4486 - && (XEXP (addr, 0) == crtl->args.internal_arg_pointer
4487 - || XEXP (addr, 1) == crtl->args.internal_arg_pointer))
4488 + if (sbitmap_empty_p (stored_args_map))
4490 + val = internal_arg_pointer_based_exp (addr, true);
4491 + if (val == NULL_RTX)
4493 + else if (val == pc_rtx)
4499 #ifdef ARGS_GROW_DOWNWARD
4501 @@ -3175,6 +3297,8 @@
4504 sbitmap_free (stored_args_map);
4505 + internal_arg_pointer_exp_state.scan_start = NULL_RTX;
4506 + VEC_free (rtx, heap, internal_arg_pointer_exp_state.cache);
4510 Index: gcc/cfgcleanup.c
4511 ===================================================================
4512 --- gcc/cfgcleanup.c (.../tags/gcc_4_6_2_release) (wersja 182722)
4513 +++ gcc/cfgcleanup.c (.../branches/gcc-4_6-branch) (wersja 182722)
4514 @@ -1969,7 +1969,14 @@
4516 cond = get_condition (jump, &move_before, true, false);
4517 if (cond == NULL_RTX)
4518 - move_before = jump;
4521 + if (reg_mentioned_p (cc0_rtx, jump))
4522 + move_before = prev_nonnote_nondebug_insn (jump);
4525 + move_before = jump;
4528 for (ix = 0; ix < nedges; ix++)
4529 if (EDGE_SUCC (bb, ix)->dest == EXIT_BLOCK_PTR)
4530 @@ -2131,7 +2138,14 @@
4531 jump = BB_END (final_dest_bb);
4532 cond = get_condition (jump, &move_before, true, false);
4533 if (cond == NULL_RTX)
4534 - move_before = jump;
4537 + if (reg_mentioned_p (cc0_rtx, jump))
4538 + move_before = prev_nonnote_nondebug_insn (jump);
4541 + move_before = jump;
4546 Index: gcc/simplify-rtx.c
4547 ===================================================================
4548 --- gcc/simplify-rtx.c (.../tags/gcc_4_6_2_release) (wersja 182722)
4549 +++ gcc/simplify-rtx.c (.../branches/gcc-4_6-branch) (wersja 182722)
4550 @@ -2777,7 +2777,7 @@
4555 + else if (SCALAR_INT_MODE_P (mode))
4557 /* 0/x is 0 (or x&0 if x has side-effects). */
4558 if (trueop0 == CONST0_RTX (mode)
4559 @@ -4177,10 +4177,20 @@
4561 rtx x = XEXP (op0, 0);
4562 rtx c = XEXP (op0, 1);
4563 + enum rtx_code invcode = op0code == PLUS ? MINUS : PLUS;
4564 + rtx tem = simplify_gen_binary (invcode, cmp_mode, op1, c);
4566 - c = simplify_gen_binary (op0code == PLUS ? MINUS : PLUS,
4567 - cmp_mode, op1, c);
4568 - return simplify_gen_relational (code, mode, cmp_mode, x, c);
4569 + /* Detect an infinite recursive condition, where we oscillate at this
4570 + simplification case between:
4571 + A + B == C <---> C - B == A,
4572 + where A, B, and C are all constants with non-simplifiable expressions,
4573 + usually SYMBOL_REFs. */
4574 + if (GET_CODE (tem) == invcode
4576 + && rtx_equal_p (c, XEXP (tem, 1)))
4579 + return simplify_gen_relational (code, mode, cmp_mode, x, tem);
4582 /* (ne:SI (zero_extract:SI FOO (const_int 1) BAR) (const_int 0))) is
4583 Index: gcc/tree-sra.c
4584 ===================================================================
4585 --- gcc/tree-sra.c (.../tags/gcc_4_6_2_release) (wersja 182722)
4586 +++ gcc/tree-sra.c (.../branches/gcc-4_6-branch) (wersja 182722)
4587 @@ -1020,26 +1020,28 @@
4591 -/* Return true iff type of EXP is not sufficiently aligned. */
4592 +/* Return true if EXP is a memory reference less aligned than ALIGN. This is
4593 + invoked only on strict-alignment targets. */
4596 -tree_non_mode_aligned_mem_p (tree exp)
4597 +tree_non_aligned_mem_p (tree exp, unsigned int align)
4599 - enum machine_mode mode = TYPE_MODE (TREE_TYPE (exp));
4600 - unsigned int align;
4601 + unsigned int exp_align;
4603 if (TREE_CODE (exp) == VIEW_CONVERT_EXPR)
4604 exp = TREE_OPERAND (exp, 0);
4606 - if (TREE_CODE (exp) == SSA_NAME
4607 - || TREE_CODE (exp) == MEM_REF
4608 - || mode == BLKmode
4609 - || is_gimple_min_invariant (exp)
4610 - || !STRICT_ALIGNMENT)
4611 + if (TREE_CODE (exp) == SSA_NAME || is_gimple_min_invariant (exp))
4614 - align = get_object_alignment (exp, BIGGEST_ALIGNMENT);
4615 - if (GET_MODE_ALIGNMENT (mode) > align)
4616 + /* get_object_alignment will fall back to BITS_PER_UNIT if it cannot
4617 + compute an explicit alignment. Pretend that dereferenced pointers
4618 + are always aligned on strict-alignment targets. */
4619 + exp_align = get_object_alignment (exp, BIGGEST_ALIGNMENT);
4620 + if (TREE_CODE (exp) == MEM_REF || TREE_CODE (exp) == TARGET_MEM_REF)
4621 + exp_align = MAX (TYPE_ALIGN (TREE_TYPE (exp)), exp_align);
4623 + if (exp_align < align)
4627 @@ -1071,7 +1073,11 @@
4630 lacc->grp_assignment_write = 1;
4631 - lacc->grp_unscalarizable_region |= tree_non_mode_aligned_mem_p (rhs);
4632 + if (STRICT_ALIGNMENT
4633 + && tree_non_aligned_mem_p (rhs,
4634 + get_object_alignment (lhs,
4635 + BIGGEST_ALIGNMENT)))
4636 + lacc->grp_unscalarizable_region = 1;
4640 @@ -1080,7 +1086,11 @@
4641 if (should_scalarize_away_bitmap && !gimple_has_volatile_ops (stmt)
4642 && !is_gimple_reg_type (racc->type))
4643 bitmap_set_bit (should_scalarize_away_bitmap, DECL_UID (racc->base));
4644 - racc->grp_unscalarizable_region |= tree_non_mode_aligned_mem_p (lhs);
4645 + if (STRICT_ALIGNMENT
4646 + && tree_non_aligned_mem_p (lhs,
4647 + get_object_alignment (rhs,
4648 + BIGGEST_ALIGNMENT)))
4649 + racc->grp_unscalarizable_region = 1;
4653 @@ -1435,29 +1445,61 @@
4654 return fold_build2_loc (loc, MEM_REF, exp_type, base, off);
4657 +DEF_VEC_ALLOC_P_STACK (tree);
4658 +#define VEC_tree_stack_alloc(alloc) VEC_stack_alloc (tree, alloc)
4660 /* Construct a memory reference to a part of an aggregate BASE at the given
4661 - OFFSET and of the same type as MODEL. In case this is a reference to a
4662 - component, the function will replicate the last COMPONENT_REF of model's
4663 - expr to access it. GSI and INSERT_AFTER have the same meaning as in
4664 - build_ref_for_offset. */
4665 + OFFSET and of the type of MODEL. In case this is a chain of references
4666 + to component, the function will replicate the chain of COMPONENT_REFs of
4667 + the expression of MODEL to access it. GSI and INSERT_AFTER have the same
4668 + meaning as in build_ref_for_offset. */
4671 build_ref_for_model (location_t loc, tree base, HOST_WIDE_INT offset,
4672 struct access *model, gimple_stmt_iterator *gsi,
4675 + tree type = model->type, t;
4676 + VEC(tree,stack) *cr_stack = NULL;
4678 if (TREE_CODE (model->expr) == COMPONENT_REF)
4680 - tree t, exp_type, fld = TREE_OPERAND (model->expr, 1);
4681 - offset -= int_bit_position (fld);
4682 - exp_type = TREE_TYPE (TREE_OPERAND (model->expr, 0));
4683 - t = build_ref_for_offset (loc, base, offset, exp_type, gsi, insert_after);
4684 - return fold_build3_loc (loc, COMPONENT_REF, TREE_TYPE (fld), t, fld,
4686 + tree expr = model->expr;
4688 + /* Create a stack of the COMPONENT_REFs so later we can walk them in
4689 + order from inner to outer. */
4690 + cr_stack = VEC_alloc (tree, stack, 6);
4693 + tree field = TREE_OPERAND (expr, 1);
4694 + offset -= int_bit_position (field);
4696 + VEC_safe_push (tree, stack, cr_stack, expr);
4698 + expr = TREE_OPERAND (expr, 0);
4699 + type = TREE_TYPE (expr);
4700 + } while (TREE_CODE (expr) == COMPONENT_REF);
4703 - return build_ref_for_offset (loc, base, offset, model->type,
4704 - gsi, insert_after);
4706 + t = build_ref_for_offset (loc, base, offset, type, gsi, insert_after);
4708 + if (TREE_CODE (model->expr) == COMPONENT_REF)
4713 + /* Now replicate the chain of COMPONENT_REFs from inner to outer. */
4714 + FOR_EACH_VEC_ELT_REVERSE (tree, cr_stack, i, expr)
4716 + tree field = TREE_OPERAND (expr, 1);
4717 + t = fold_build3_loc (loc, COMPONENT_REF, TREE_TYPE (field), t, field,
4721 + VEC_free (tree, stack, cr_stack);
4727 /* Construct a memory reference consisting of component_refs and array_refs to
4728 @@ -2594,6 +2636,10 @@
4729 rhs = get_access_replacement (racc);
4730 if (!useless_type_conversion_p (lacc->type, racc->type))
4731 rhs = fold_build1_loc (loc, VIEW_CONVERT_EXPR, lacc->type, rhs);
4733 + if (racc->grp_partial_lhs && lacc->grp_partial_lhs)
4734 + rhs = force_gimple_operand_gsi (old_gsi, rhs, true, NULL_TREE,
4735 + true, GSI_SAME_STMT);
4739 @@ -2609,6 +2655,9 @@
4741 rhs = build_ref_for_model (loc, top_racc->base, offset, lacc,
4743 + if (lacc->grp_partial_lhs)
4744 + rhs = force_gimple_operand_gsi (new_gsi, rhs, true, NULL_TREE,
4745 + false, GSI_NEW_STMT);
4748 stmt = gimple_build_assign (get_access_replacement (lacc), rhs);
4749 @@ -3604,7 +3653,8 @@
4750 || gimple_code (access->stmt) == GIMPLE_ASM))
4753 - if (tree_non_mode_aligned_mem_p (access->expr))
4754 + if (STRICT_ALIGNMENT
4755 + && tree_non_aligned_mem_p (access->expr, TYPE_ALIGN (access->type)))
4759 Index: gcc/lto/lto.c
4760 ===================================================================
4761 --- gcc/lto/lto.c (.../tags/gcc_4_6_2_release) (wersja 182722)
4762 +++ gcc/lto/lto.c (.../branches/gcc-4_6-branch) (wersja 182722)
4770 decl = lto_streamer_cache_get (data_in->reader_cache, (int) ix);
4771 if (TREE_CODE (decl) != FUNCTION_DECL)
4773 VEC(ld_plugin_symbol_resolution_t,heap) *resolutions)
4775 const struct lto_decl_header *header = (const struct lto_decl_header *) data;
4776 - const int32_t decl_offset = sizeof (struct lto_decl_header);
4777 - const int32_t main_offset = decl_offset + header->decl_state_size;
4778 - const int32_t string_offset = main_offset + header->main_size;
4779 + const int decl_offset = sizeof (struct lto_decl_header);
4780 + const int main_offset = decl_offset + header->decl_state_size;
4781 + const int string_offset = main_offset + header->main_size;
4782 struct lto_input_block ib_main;
4783 struct data_in *data_in;
4785 @@ -291,17 +291,20 @@
4787 if (data_ptr != data_end)
4788 internal_error ("bytecode stream: garbage at the end of symbols section");
4791 /* Set the current decl state to be the global state. */
4792 decl_data->current_decl_state = decl_data->global_decl_state;
4794 lto_data_in_delete (data_in);
4797 -/* strtoll is not portable. */
4799 -lto_parse_hex (const char *p) {
4801 +/* Custom version of strtoll, which is not portable. */
4803 +static HOST_WIDEST_INT
4804 +lto_parse_hex (const char *p)
4806 + HOST_WIDEST_INT ret = 0;
4808 for (; *p != '\0'; ++p)
4812 internal_error ("could not parse hex number");
4824 + HOST_WIDEST_INT offset;
4825 t = fscanf (resolution, "@0x%16s", offset_p);
4827 internal_error ("could not parse file offset");
4828 Index: gcc/lto/lto.h
4829 ===================================================================
4830 --- gcc/lto/lto.h (.../tags/gcc_4_6_2_release) (wersja 182722)
4831 +++ gcc/lto/lto.h (.../branches/gcc-4_6-branch) (wersja 182722)
4836 -int64_t lto_parse_hex (const char *p);
4839 Index: gcc/lto/ChangeLog
4840 ===================================================================
4841 --- gcc/lto/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 182722)
4842 +++ gcc/lto/ChangeLog (.../branches/gcc-4_6-branch) (wersja 182722)
4844 +2011-12-13 Eric Botcazou <ebotcazou@adacore.com>
4846 + * lto.h (lto_parse_hex): Delete.
4847 + * lto.c (lto_read_decls): Use 'int' for offsets.
4848 + (lto_parse_hex): Make static and return proper 64-bit host type.
4849 + (lto_resolution_read): Use proper 64-bit host type.
4851 2011-10-26 Release Manager
4853 * GCC 4.6.2 released.
4854 Index: gcc/ipa-prop.c
4855 ===================================================================
4856 --- gcc/ipa-prop.c (.../tags/gcc_4_6_2_release) (wersja 182722)
4857 +++ gcc/ipa-prop.c (.../branches/gcc-4_6-branch) (wersja 182722)
4858 @@ -2868,9 +2868,9 @@
4860 const struct lto_function_header *header =
4861 (const struct lto_function_header *) data;
4862 - const int32_t cfg_offset = sizeof (struct lto_function_header);
4863 - const int32_t main_offset = cfg_offset + header->cfg_size;
4864 - const int32_t string_offset = main_offset + header->main_size;
4865 + const int cfg_offset = sizeof (struct lto_function_header);
4866 + const int main_offset = cfg_offset + header->cfg_size;
4867 + const int string_offset = main_offset + header->main_size;
4868 struct data_in *data_in;
4869 struct lto_input_block ib_main;
4871 Index: gcc/po/ChangeLog
4872 ===================================================================
4873 --- gcc/po/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 182722)
4874 +++ gcc/po/ChangeLog (.../branches/gcc-4_6-branch) (wersja 182722)
4876 +2011-10-30 Joseph Myers <joseph@codesourcery.com>
4880 2011-10-26 Release Manager
4882 * GCC 4.6.2 released.
4884 ===================================================================
4885 --- gcc/po/ja.po (.../tags/gcc_4_6_2_release) (wersja 182722)
4886 +++ gcc/po/ja.po (.../branches/gcc-4_6-branch) (wersja 182722)
4888 "Project-Id-Version: gcc 4.6.1\n"
4889 "Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n"
4890 "POT-Creation-Date: 2011-06-21 10:27+0000\n"
4891 -"PO-Revision-Date: 2011-10-25 22:36+0900\n"
4892 +"PO-Revision-Date: 2011-10-30 18:48+0900\n"
4893 "Last-Translator: Yasuaki Taniguchi <yasuakit@gmail.com>\n"
4894 "Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n"
4896 @@ -834,12 +834,12 @@
4899 msgid " -a, --all-blocks Show information for every basic block\n"
4901 +msgstr " -a, --all-blocks 各基本ブロックに関する情報を表示する\n"
4905 msgid " -b, --branch-probabilities Include branch probabilities in output\n"
4907 +msgstr " -b, --branch-probabilities 出力に分岐可能性情報を含める\n"
4912 " -c, --branch-counts Given counts of branches taken\n"
4913 " rather than percentages\n"
4915 +" -c, --branch-counts 分岐に関する百分率では無く行われた\n"
4920 @@ -859,21 +861,23 @@
4921 " -l, --long-file-names Use long output file names for included\n"
4924 +" -l, --long-file-names インクルードされたソースファイルに関する長い\n"
4929 msgid " -f, --function-summaries Output summaries for each function\n"
4931 +msgstr " -f, --function-summaries 各関数に関する要約を出力する\n"
4935 msgid " -o, --object-directory DIR|FILE Search for object files in DIR or called FILE\n"
4937 +msgstr " -o, --object-directory DIR|FILE オブジェクトファイルを DIR 内または呼び出し用 FILE 内で検索する\n"
4941 msgid " -p, --preserve-paths Preserve all pathname components\n"
4943 +msgstr " -p, --preserve-paths すべてのパス名要素を保護する\n"
4950 msgid "%s:cannot open data file, assuming not executed\n"
4952 +msgstr "%s:データファイルを開けません。実行されていないと見なします\n"
4956 @@ -1027,7 +1031,7 @@
4959 msgid "%s:graph is unsolvable for '%s'\n"
4961 +msgstr "%s: '%s' 用のグラフが解決できません\n"
4965 @@ -1037,7 +1041,7 @@
4968 msgid "Lines executed:%s of %d\n"
4970 +msgstr "実行された行:%s of %d\n"
4974 @@ -1047,7 +1051,7 @@
4977 msgid "Branches executed:%s of %d\n"
4979 +msgstr "実行された分岐:%s of %d\n"
4983 @@ -1057,12 +1061,12 @@
4986 msgid "No branches\n"
4988 +msgstr "分岐がありません\n"
4992 msgid "Calls executed:%s of %d\n"
4994 +msgstr "実行された呼び出し:%s of %d\n"
4998 @@ -1075,24 +1079,24 @@
4999 msgstr "%s: '%s' に対する行がありません\n"
5004 msgid "call %2d returned %s\n"
5005 -msgstr "呼び出し %d の戻り = %d\n"
5011 msgid "call %2d never executed\n"
5012 -msgstr "呼び出し %d は一度も実行せず\n"
5018 msgid "branch %2d taken %s%s\n"
5019 -msgstr "ブランチ %d 受理 = %d%%\n"
5025 msgid "branch %2d never executed\n"
5026 -msgstr "ブランチ %d は一度も実行されず\n"
5031 @@ -1100,9 +1104,9 @@
5037 msgid "unconditional %2d never executed\n"
5038 -msgstr "呼び出し %d は一度も実行せず\n"
5043 @@ -1412,11 +1416,11 @@
5046 msgid "The following options take separate arguments"
5048 +msgstr "次のオプションは分離した引数を取ります"
5051 msgid "The following options take joined arguments"
5053 +msgstr "次のオプションは結合した引数を取ります"
5056 msgid "The following options are language-related"
5057 @@ -1472,7 +1476,7 @@
5060 msgid "created and used with differing settings of '%s'"
5062 +msgstr "作成時と使用時で '%s' の設定が異なります"
5065 msgid "out of memory"
5066 @@ -1480,11 +1484,11 @@
5069 msgid "created and used with different settings of -fpic"
5071 +msgstr "作成時と使用時で -fpic の設定が異なります"
5074 msgid "created and used with different settings of -fpie"
5076 +msgstr "作成時と使用時で -fpie の設定が異なります"
5080 @@ -1717,11 +1721,11 @@
5083 msgid "The maximum depth of recursive inlining for inline functions"
5085 +msgstr "インライン関数を再帰的にインライン化する時の最大深度"
5088 msgid "The maximum depth of recursive inlining for non-inline functions"
5090 +msgstr "非インライン関数を再帰的にインライン化する時の最大深度"
5093 msgid "Inline recursively only when the probability of call being executed exceeds the parameter"
5094 @@ -1761,16 +1765,15 @@
5097 msgid "The size of function body to be considered large"
5099 +msgstr "大きいと見なされる関数本体のサイズ"
5102 msgid "Maximal growth due to inlining of large function (in percent)"
5107 msgid "The size of translation unit to be considered large"
5108 -msgstr "翻訳単位全体をファイルにダンプする"
5109 +msgstr "大きいと見なされる翻訳単位のサイズ"
5112 msgid "How much can given compilation unit grow because of the inlining (in percent)"
5113 @@ -1786,20 +1789,19 @@
5116 msgid "The size of stack frame to be considered large"
5118 +msgstr "大きいと見なされるスタックフレームのサイズ"
5121 msgid "Maximal stack frame growth due to inlining (in percent)"
5123 +msgstr "インライン化によって増加するスタックフレームの最大量 (百分率)"
5126 msgid "The maximum amount of memory to be allocated by GCSE"
5128 +msgstr "GCSE によって配置されるメモリの最大量"
5132 msgid "The maximum ratio of insertions to deletions of expressions in GCSE"
5133 -msgstr "RPTS 用の最大反復数を指定する"
5137 msgid "The threshold ratio for performing partial redundancy elimination after reload"
5138 @@ -1963,9 +1965,8 @@
5143 msgid "Bound on number of iv uses in loop optimized in iv optimizations"
5144 -msgstr "目立たない、コストのかかる最適化を行なう"
5148 msgid "If number of candidates in the set is smaller, we always try to remove unused ivs during its optimization"
5149 @@ -2044,9 +2045,8 @@
5154 msgid "The maximum number of iterations through CFG to extend regions"
5155 -msgstr "RPTS 用の最大反復数を指定する"
5159 msgid "The maximum conflict delay for an insn to be considered for speculative motion"
5160 @@ -2077,9 +2077,8 @@
5165 msgid "The upper bound for sharing integer constants"
5166 -msgstr "`%s' の列挙値が整数定数ではありません"
5167 +msgstr "整数定数を共有するための上限値"
5170 msgid "Minimum number of virtual mappings to consider switching to full virtual renames"
5171 @@ -2111,11 +2110,11 @@
5174 msgid "The number of insns executed before prefetch is completed"
5176 +msgstr "プリフェッチが完了する前に実行される命令数"
5179 msgid "The number of prefetches that can run at the same time"
5181 +msgstr "同時に実行可能なプリフェッチの数"
5184 msgid "The size of L1 cache"
5185 @@ -2162,9 +2161,8 @@
5190 msgid "maximum number of parameters in a SCoP"
5191 -msgstr "RPTS 用の最大反復数を指定する"
5192 +msgstr "SCoP 内のパラメータの最大数"
5195 msgid "maximum number of basic blocks per function to be analyzed by Graphite"
5196 @@ -2597,9 +2595,9 @@
5199 #: config/alpha/alpha.c:5431 config/alpha/alpha.c:5479
5202 msgid "unknown relocation unspec"
5203 -msgstr "不明な設定済コンストラクタ型です"
5206 #: config/alpha/alpha.c:5440 config/crx/crx.c:1119
5207 #: config/rs6000/rs6000.c:16490 config/spu/spu.c:1726
5208 @@ -3000,32 +2998,32 @@
5209 #: config/i386/i386.c:14106 config/i386/i386.c:14146
5211 msgid "operand is not a condition code, invalid operand code 'D'"
5213 +msgstr "被演算子は条件コードではありません。無効な被演算子コード 'D' です"
5215 #: config/i386/i386.c:14172
5217 msgid "operand is neither a constant nor a condition code, invalid operand code 'C'"
5219 +msgstr "被演算子は定数でも条件コードでもありません。無効な被演算子コード 'C' です"
5221 #: config/i386/i386.c:14182
5223 msgid "operand is neither a constant nor a condition code, invalid operand code 'F'"
5225 +msgstr "被演算子は定数でも条件コードでもありません。無効な被演算子コード 'F' です"
5227 #: config/i386/i386.c:14200
5229 msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
5231 +msgstr "被演算子は定数でも条件コードでもありません。無効な被演算子コード 'c' です"
5233 #: config/i386/i386.c:14210
5235 msgid "operand is neither a constant nor a condition code, invalid operand code 'f'"
5237 +msgstr "被演算子は定数でも条件コードでもありません。無効な被演算子コード 'f' です"
5239 #: config/i386/i386.c:14313
5241 msgid "operand is not a condition code, invalid operand code 'Y'"
5243 +msgstr "被演算子は条件コードではありません。無効な被演算子コード 'Y' です"
5245 #: config/i386/i386.c:14339
5247 @@ -3098,7 +3096,7 @@
5248 #: config/lm32/lm32.c:529
5250 msgid "only 0.0 can be loaded as an immediate"
5252 +msgstr "即値としてロードできるのは 0.0 のみです"
5254 #: config/lm32/lm32.c:599
5256 @@ -3138,15 +3136,15 @@
5258 #: config/m32r/m32r.c:2290
5259 msgid "pre-increment address is not a register"
5261 +msgstr "前置増分アドレスがレジスタではありません"
5263 #: config/m32r/m32r.c:2297
5264 msgid "pre-decrement address is not a register"
5266 +msgstr "前置減分アドレスがレジスタではありません"
5268 #: config/m32r/m32r.c:2304
5269 msgid "post-increment address is not a register"
5271 +msgstr "後置増分アドレスがレジスタではありません"
5273 #: config/m32r/m32r.c:2380 config/m32r/m32r.c:2394
5274 #: config/rs6000/rs6000.c:25500
5275 @@ -3252,7 +3250,7 @@
5277 #: config/mmix/mmix.c:1589 config/mmix/mmix.c:1719
5278 msgid "MMIX Internal: Expected a CONST_INT, not this"
5280 +msgstr "MMIX 内部: CONST_INT が予期されますが、異なっています"
5282 #: config/mmix/mmix.c:1668
5283 msgid "MMIX Internal: Bad value for 'm', not a CONST_INT"
5284 @@ -3260,11 +3258,11 @@
5286 #: config/mmix/mmix.c:1687
5287 msgid "MMIX Internal: Expected a register, not this"
5289 +msgstr "MMIX 内部: レジスタが予期されますが、異なっています"
5291 #: config/mmix/mmix.c:1697
5292 msgid "MMIX Internal: Expected a constant, not this"
5294 +msgstr "MMIX 内部: 定数が予期されますが、異なっています"
5296 #. We need the original here.
5297 #: config/mmix/mmix.c:1781
5298 @@ -3301,7 +3299,7 @@
5300 #: config/picochip/picochip.c:2983 config/picochip/picochip.c:3015
5301 msgid "Bad address, not (reg+disp):"
5303 +msgstr "誤ったアドレスです。 (reg+disp) ではありません:"
5305 #: config/picochip/picochip.c:3029
5306 msgid "Bad address, not register:"
5307 @@ -3526,15 +3524,15 @@
5309 #: config/sh/sh.c:9271
5310 msgid "created and used with different architectures / ABIs"
5312 +msgstr "作成時と使用時で アーキテクチャ/ABI が異なります"
5314 #: config/sh/sh.c:9273
5315 msgid "created and used with different ABIs"
5317 +msgstr "作成時と使用時で ABI が異なります"
5319 #: config/sh/sh.c:9275
5320 msgid "created and used with different endianness"
5322 +msgstr "作成時と使用時でエンディアンが異なります"
5324 #: config/sparc/sparc.c:7445 config/sparc/sparc.c:7451
5326 @@ -3617,7 +3615,7 @@
5327 #: config/vax/vax.c:427
5329 msgid "symbol with offset used in PIC mode"
5331 +msgstr "PIC モードで使用されるオフセット付きのシンボルです"
5333 #: config/vax/vax.c:513
5335 @@ -3837,19 +3835,19 @@
5336 msgstr "%s:%d:%d: ここから再帰的に実体化されました"
5341 msgid "%s:%d:%d: instantiated from here"
5342 msgstr "%s:%d:%d: ここから実体化されました"
5346 msgid "%s:%d: recursively instantiated from here"
5348 +msgstr "%s:%d: ここから再帰的に実体化されました"
5353 msgid "%s:%d: instantiated from here"
5354 -msgstr "%s:%d: ここで実体化されました\n"
5355 +msgstr "%s:%d: ここから実体化されました"
5359 @@ -4029,22 +4027,21 @@
5360 #: fortran/expr.c:607
5362 msgid "Constant expression required at %C"
5364 +msgstr "%C では定数式が要求されます"
5366 #: fortran/expr.c:610
5368 msgid "Integer expression required at %C"
5370 +msgstr "%C では整数式が要求されます"
5372 #: fortran/expr.c:615
5375 msgid "Integer value too large in expression at %C"
5376 -msgstr "式の整数がオーバーフローしました"
5377 +msgstr "%C の式内で整数値が大きすぎます"
5379 #: fortran/expr.c:3147
5381 msgid "array assignment"
5385 #: fortran/gfortranspec.c:303
5387 @@ -4080,7 +4077,7 @@
5390 msgid "Unexpected element '%c' in format string at %L"
5392 +msgstr "予期しない要素 '%c' が書式文字列内 (位置 %L) にあります"
5395 msgid "Unexpected end of format string"
5396 @@ -4088,15 +4085,15 @@
5399 msgid "Zero width in format descriptor"
5401 +msgstr "幅 0 の書式記述子です"
5404 msgid "Missing leading left parenthesis"
5406 +msgstr "前に左小括弧がありません"
5409 msgid "Left parenthesis required after '*'"
5411 +msgstr "'*' の後には左小括弧が必要です"
5414 msgid "Expected P edit descriptor"
5415 @@ -4116,9 +4113,8 @@
5420 msgid "E specifier not allowed with g0 descriptor"
5421 -msgstr "型指定子 `%s' は struct や class の後には使えません"
5425 msgid "Positive exponent width required"
5426 @@ -4362,9 +4358,8 @@
5429 #: fortran/resolve.c:6233
5431 msgid "End expression in DO loop"
5432 -msgstr "オペランドとして無効な式"
5435 #: fortran/resolve.c:6237
5436 msgid "Step expression in DO loop"
5437 @@ -4564,7 +4559,7 @@
5438 #: java/jcf-dump.c:1148
5440 msgid " --extdirs PATH Set extensions directory path\n"
5442 +msgstr " --extdirs PATH 拡張のディレクトリパスを設定する\n"
5444 #: java/jcf-dump.c:1149
5446 @@ -4734,18 +4729,18 @@
5447 #: config/pa/pa-hpux11.h:111 config/pa/pa64-hpux.h:30 config/pa/pa64-hpux.h:33
5448 #: config/pa/pa64-hpux.h:42 config/pa/pa64-hpux.h:45
5449 msgid "warning: consider linking with '-static' as system libraries with"
5451 +msgstr "警告: システムライブラリとリンクする時は '-static' を指定することを検討してください"
5453 #: config/pa/pa-hpux10.h:90 config/pa/pa-hpux10.h:93 config/pa/pa-hpux10.h:101
5454 #: config/pa/pa-hpux10.h:104 config/pa/pa-hpux11.h:109
5455 #: config/pa/pa-hpux11.h:112 config/pa/pa64-hpux.h:31 config/pa/pa64-hpux.h:34
5456 #: config/pa/pa64-hpux.h:43 config/pa/pa64-hpux.h:46
5457 msgid " profiling support are only provided in archive format"
5459 +msgstr " プロファイリングサポートは書庫フォーマット内でのみ提供されます"
5461 #: config/rs6000/darwin.h:99
5462 msgid " conflicting code gen style switches are used"
5464 +msgstr " 競合しているコード生成スタイルスイッチが使用されています"
5466 #: config/arm/arm.h:178
5467 msgid "-msoft-float and -mhard_float may not be used together"
5468 @@ -4805,7 +4800,7 @@
5470 #: config/i386/linux-unwind.h:186
5471 msgid "ax ; {int $0x80 | syscall"
5473 +msgstr "ax ; {int $0x80 | syscall"
5475 #: config/s390/tpf.h:120
5476 msgid "static is not supported on TPF-OS"
5477 @@ -4869,7 +4864,7 @@
5479 #: java/lang.opt:206
5480 msgid "--extdirs=<path>\tSet the extension directory path"
5482 +msgstr "--extdirs=<path>\t拡張のディレクトリパスを設定する"
5484 #: java/lang.opt:216
5485 msgid "Input file is a file with a list of filenames to compile"
5486 @@ -5388,7 +5383,7 @@
5488 #: config/frv/frv.opt:31
5489 msgid "Enable label alignment optimizations"
5491 +msgstr "ラベル整列最適化を有効にする"
5493 #: config/frv/frv.opt:35
5494 msgid "Dynamically allocate cc registers"
5495 @@ -5452,7 +5447,7 @@
5497 #: config/frv/frv.opt:116
5498 msgid "Enable use of GPREL for read-only data in FDPIC"
5500 +msgstr "FDPIC 内の読み取り専用データ用 GPREL の使用を有効にする"
5502 #: config/frv/frv.opt:120 config/rs6000/rs6000.opt:216
5503 #: config/pdp11/pdp11.opt:67
5504 @@ -5460,9 +5455,8 @@
5505 msgstr "ハードウェア浮動小数点を利用する"
5507 #: config/frv/frv.opt:124 config/bfin/bfin.opt:77
5509 msgid "Enable inlining of PLT in function calls"
5510 -msgstr "関数呼び出しの前後でレジスタの保存を有効にする"
5511 +msgstr "関数呼び出し内で PLT のインライン化を有効にする"
5513 #: config/frv/frv.opt:128
5514 msgid "Enable PIC support for building libraries"
5515 @@ -5478,7 +5472,7 @@
5517 #: config/frv/frv.opt:140
5518 msgid "Use media instructions"
5520 +msgstr "media 命令を使用する"
5522 #: config/frv/frv.opt:144
5523 msgid "Use multiply add/subtract instructions"
5524 @@ -5494,7 +5488,7 @@
5526 #: config/frv/frv.opt:157
5527 msgid "Do not mark ABI switches in e_flags"
5529 +msgstr "e_flags 内の ABI スイッチをマークしない"
5531 #: config/frv/frv.opt:161
5532 msgid "Remove redundant membars"
5533 @@ -5506,7 +5500,7 @@
5535 #: config/frv/frv.opt:169
5536 msgid "Enable setting GPRs to the result of comparisons"
5538 +msgstr "比較結果を汎用レジスタに設定することを有効にする"
5540 #: config/frv/frv.opt:173
5541 msgid "Change the amount of scheduler lookahead"
5542 @@ -5565,9 +5559,8 @@
5545 #: config/mn10300/mn10300.opt:56
5547 msgid "Allow gcc to generate LIW instructions"
5548 -msgstr "gcc が repeat/erepeat 命令を使用することを許可する"
5549 +msgstr "gcc が LIW 命令を生成することを許可する"
5551 #: config/s390/tpf.opt:23
5552 msgid "Enable TPF-OS tracing code"
5553 @@ -5640,11 +5633,11 @@
5555 #: config/s390/s390.opt:91
5556 msgid "Warn if a function uses alloca or creates an array with dynamic size"
5558 +msgstr "関数で alloca を使用するか、または動的サイズの配列を作成した場合に、警告する"
5560 #: config/s390/s390.opt:95
5561 msgid "Warn if a single function's framesize exceeds the given framesize"
5563 +msgstr "一つの関数のフレームサイズが与えられたフレームサイズを超過する場合に警告する"
5565 #: config/s390/s390.opt:99
5566 msgid "z/Architecture"
5567 @@ -5692,7 +5685,7 @@
5569 #: config/ia64/ia64.opt:56
5570 msgid "gp is constant (but save/restore gp on indirect calls)"
5571 -msgstr "gp を定数とする(但、間接呼び出しでは gp を save/restore する)"
5572 +msgstr "gp を定数とする(ただし、間接呼び出しでは gp を save/restore する)"
5574 #: config/ia64/ia64.opt:60
5575 msgid "Generate self-relocatable code"
5576 @@ -5741,39 +5734,39 @@
5577 #: config/ia64/ia64.opt:107 config/spu/spu.opt:72 config/sh/sh.opt:258
5578 #: config/pa/pa.opt:51
5579 msgid "Specify range of registers to make fixed"
5581 +msgstr "固定するレジスタの範囲を指定する"
5583 #: config/ia64/ia64.opt:119
5584 msgid "Use data speculation before reload"
5586 +msgstr "reload 前にデータ投機を使用する"
5588 #: config/ia64/ia64.opt:123
5589 msgid "Use data speculation after reload"
5591 +msgstr "reload 後にデータ投機を使用する"
5593 #: config/ia64/ia64.opt:127
5594 msgid "Use control speculation"
5598 #: config/ia64/ia64.opt:131
5599 msgid "Use in block data speculation before reload"
5601 +msgstr "reload 前にブロック内データ投機を使用する"
5603 #: config/ia64/ia64.opt:135
5604 msgid "Use in block data speculation after reload"
5606 +msgstr "reload 後にブロック内データ投機を使用する"
5608 #: config/ia64/ia64.opt:139
5609 msgid "Use in block control speculation"
5611 +msgstr "ブロック内制御投機を使用する"
5613 #: config/ia64/ia64.opt:143
5614 msgid "Use simple data speculation check"
5616 +msgstr "単純データ投機検査を使用する"
5618 #: config/ia64/ia64.opt:147
5619 msgid "Use simple data speculation check for control speculation"
5621 +msgstr "制御投機用の単純データ投機検査を使用する"
5623 #: config/ia64/ia64.opt:151
5624 msgid "If set, data speculative instructions will be chosen for schedule only if there are no other choices at the moment "
5625 @@ -5789,7 +5782,7 @@
5627 #: config/ia64/ia64.opt:163
5628 msgid "Place a stop bit after every cycle when scheduling"
5630 +msgstr "スケジューリング時の各サイクル後にストップビットを配置する"
5632 #: config/ia64/ia64.opt:167
5633 msgid "Assume that floating-point stores and loads are not likely to cause conflict when placed into one instruction group"
5634 @@ -5805,7 +5798,7 @@
5636 #: config/ia64/ia64.opt:179
5637 msgid "Don't generate checks for control speculation in selective scheduling"
5639 +msgstr "選択的スケジューリング内では制御投機用の検査を生成しない"
5641 #: config/ia64/vms_symvec_libgcc_s.opt:3
5642 msgid "! It would be better to auto-generate this file."
5643 @@ -6109,7 +6102,7 @@
5645 #: config/m68k/m68k.opt:160 config/bfin/bfin.opt:61
5646 msgid "Enable separate data segment"
5648 +msgstr "分離データセグメントを有効にする"
5650 #: config/m68k/m68k.opt:164 config/bfin/bfin.opt:57
5651 msgid "ID of shared library to build"
5652 @@ -6149,7 +6142,7 @@
5654 #: config/i386/mingw.opt:23
5655 msgid "Warn about none ISO msvcrt scanf/printf width extensions"
5657 +msgstr "非 ISO の msvcrt scanf/printf の幅拡張に関して警告する"
5659 #: config/i386/mingw.opt:27
5660 msgid "For nested functions on stack executable permission is set."
5661 @@ -6201,7 +6194,7 @@
5663 #: config/i386/i386.opt:114
5664 msgid "Data greater than given threshold will go into .ldata section in x86-64 medium model"
5666 +msgstr "x86-64 メディアモデルでは与えられた閾値より大きいデータを .ldata セクションに配置する"
5668 #: config/i386/i386.opt:118
5669 msgid "Use given x86-64 code model"
5670 @@ -6217,16 +6210,15 @@
5672 #: config/i386/i386.opt:129
5673 msgid "Always use Dynamic Realigned Argument Pointer (DRAP) to realign stack"
5675 +msgstr "スタックを再整列するために動的再整列引数ポインタ (Dynamic Realigned Argument Pointer, DRAP) を常に使用する"
5677 #: config/i386/i386.opt:133
5678 msgid "Return values of functions in FPU registers"
5679 msgstr "FPU レジスタ内の機能の値を返す"
5681 #: config/i386/i386.opt:137
5683 msgid "Generate floating point mathematics using given instruction set"
5684 -msgstr "ハードウェア浮動小数点命令を使用する"
5685 +msgstr "与えられた命令集合を使用して浮動小数数値計算を生成する"
5687 #: config/i386/i386.opt:149
5688 msgid "Inline all known string operations"
5689 @@ -6314,8 +6306,9 @@
5690 msgstr "8 バイトベクトルをメモリに返す"
5692 #: config/i386/i386.opt:253
5694 msgid "Generate reciprocals instead of divss and sqrtss."
5696 +msgstr "divss および sqrtss の代わりに逆数 (reciprocal) を生成する"
5698 #: config/i386/i386.opt:257
5699 msgid "Generate cld instruction in the function prologue."
5700 @@ -6331,7 +6324,7 @@
5702 #: config/i386/i386.opt:271
5703 msgid "Use 128-bit AVX instructions instead of 256-bit AVX instructions in the auto-vectorizer."
5705 +msgstr "自動ベクトル化で 256 ビット AVX 命令の代わりに 128 ビット AVX 命令を使用する"
5707 #: config/i386/i386.opt:277
5708 msgid "Generate 32bit i386 code"
5709 @@ -6382,9 +6375,8 @@
5710 msgstr "SSE4.1 と SSE4.2 の組み込み関数とコード生成をサポートしない"
5712 #: config/i386/i386.opt:328
5714 msgid "%<-msse5%> was removed"
5715 -msgstr "'-msse5' は削除されました"
5716 +msgstr "%<-msse5%> は削除されました"
5718 #: config/i386/i386.opt:333
5719 msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2 and AVX built-in functions and code generation"
5720 @@ -6544,7 +6536,7 @@
5722 #: config/rs6000/rs6000.opt:152
5723 msgid "Use PowerPC General Purpose group optional instructions"
5724 -msgstr "PowerPC 一般用途グループオプション命令を使用する"
5725 +msgstr "PowerPC 汎用グループオプション命令を使用する"
5727 #: config/rs6000/rs6000.opt:156
5728 msgid "Use PowerPC Graphics group optional instructions"
5729 @@ -7002,7 +6994,7 @@
5731 #: config/mcore/mcore.opt:56 config/fr30/fr30.opt:27
5732 msgid "Assume that run-time support has been provided, so omit -lsim from the linker command line"
5734 +msgstr "実行時サポートが提供されると見なし、リンカコマンドラインに -lsim を含めない"
5736 #: config/mcore/mcore.opt:60
5737 msgid "Use arbitrary sized immediates in bit operations"
5738 @@ -7014,7 +7006,7 @@
5740 #: config/mcore/mcore.opt:71
5741 msgid "Set the maximum amount for a single stack increment operation"
5742 -msgstr "単一のスタックインクリメント操作の最大値を設定する"
5743 +msgstr "単一のスタック増分操作の最大値を設定する"
5745 #: config/mcore/mcore.opt:75
5746 msgid "Always treat bitfields as int-sized"
5747 @@ -7234,7 +7226,7 @@
5749 #: config/sh/sh.opt:246
5750 msgid "Division strategy, one of: call, call2, fp, inv, inv:minlat, inv20u, inv20l, inv:call, inv:call2, inv:fp, call-div1, call-fp, call-table"
5752 +msgstr "除算戦略、次のいずれか: call, call2, fp, inv, inv:minlat, inv20u, inv20l, inv:call, inv:call2, inv:fp, call-div1, call-fp, call-table"
5754 #: config/sh/sh.opt:250
5755 msgid "Specify name for 32 bit signed division function"
5756 @@ -7282,7 +7274,7 @@
5758 #: config/sh/sh.opt:298
5759 msgid "Mark MAC register as call-clobbered"
5761 +msgstr "MAC レジスタを呼び出しで破壊されるとマークする"
5763 #: config/sh/sh.opt:304
5764 msgid "Make structs a multiple of 4 bytes (warning: ABI altered)"
5765 @@ -7960,7 +7952,7 @@
5767 #: config/m68hc11/m68hc11.opt:49
5768 msgid "Auto pre/post decrement increment allowed"
5769 -msgstr "自動 pre/post デクリメント インクリメントを許容する"
5770 +msgstr "自動 前置/後置 減分/増分 を許容する"
5772 #: config/m68hc11/m68hc11.opt:53
5773 msgid "Min/max instructions allowed"
5774 @@ -7972,7 +7964,7 @@
5776 #: config/m68hc11/m68hc11.opt:61
5777 msgid "Auto pre/post decrement increment not allowed"
5778 -msgstr "自動 pre/post デクリメント インクリメントを許容しない"
5779 +msgstr "自動 前置/後置 減分/増分を許容しない"
5781 #: config/m68hc11/m68hc11.opt:65
5782 msgid "Use jsr and rts for function calls and returns"
5783 @@ -8346,7 +8338,7 @@
5785 #: config/bfin/bfin.opt:69
5786 msgid "Link with the fast floating-point library"
5788 +msgstr "高速な浮動小数ライブラリとリンクする"
5790 #: config/bfin/bfin.opt:81
5791 msgid "Do stack checking using bounds in L1 scratch memory"
5792 @@ -8382,7 +8374,7 @@
5794 #: config/picochip/picochip.opt:31
5795 msgid "Specify whether the byte access instructions should be used. Enabled by default."
5797 +msgstr "バイトアクセス命令を使用するかどうかを指定する。デフォルトでは有効となる"
5799 #: config/picochip/picochip.opt:35
5800 msgid "Enable debug output to be generated."
5801 @@ -8390,11 +8382,11 @@
5803 #: config/picochip/picochip.opt:39
5804 msgid "Allow a symbol value to be used as an immediate value in an instruction."
5806 +msgstr "命令内でシンボル値が即値として使用されることを許可する"
5808 #: config/picochip/picochip.opt:43
5809 msgid "Generate warnings when inefficient code is known to be generated."
5811 +msgstr "非効率なコードが生成された時に警告する"
5813 #: config/vxworks.opt:36
5814 msgid "Assume the VxWorks RTP environment"
5815 @@ -8418,7 +8410,7 @@
5817 #: config/darwin.opt:205
5818 msgid "Warn if constant CFString objects contain non-portable characters"
5820 +msgstr "定数 CFString オブジェクトが移植性の無い文字を含む場合に警告する"
5822 #: config/darwin.opt:210
5823 msgid "Generate AT&T-style stubs for Mach-O"
5824 @@ -8430,7 +8422,7 @@
5826 #: config/darwin.opt:218
5827 msgid "Generate code suitable for fast turn around debugging"
5829 +msgstr "デバッグを高速に行うために適したコードを生成する"
5831 #: config/darwin.opt:227
5832 msgid "The earliest MacOS X version on which this program will run"
5833 @@ -8442,15 +8434,15 @@
5835 #: config/darwin.opt:235
5836 msgid "Generate code for darwin loadable kernel extensions"
5838 +msgstr "darwin ロード可能カーネル拡張用のコードを生成する"
5840 #: config/darwin.opt:239
5841 msgid "Generate code for the kernel or loadable kernel extensions"
5843 +msgstr "カーネル用、またはロード可能カーネル拡張用のコードを生成する"
5845 #: config/darwin.opt:243
5846 msgid "-iframework <dir>\tAdd <dir> to the end of the system framework include path"
5848 +msgstr "-iframework <dir>\t<dir> をシステムフレームワークインクルードパスの末尾に加える"
5850 #: config/lynx.opt:23
5851 msgid "Support legacy multi-threading"
5852 @@ -8737,7 +8729,6 @@
5855 #: config/microblaze/microblaze.opt:92
5857 msgid "Use hardware floating point conversion instructions"
5858 msgstr "ハードウェア浮動小数点変換命令を使用する"
5860 @@ -8862,7 +8853,7 @@
5862 #: c-family/c.opt:249
5863 msgid "-MT <target>\tAdd an unquoted target"
5865 +msgstr "-MT <target>\tターゲット (引用符を付けない) を追加する"
5867 #: c-family/c.opt:253
5868 msgid "Do not generate #line directives"
5869 @@ -8898,11 +8889,11 @@
5871 #: c-family/c.opt:288
5872 msgid "Warn about C constructs that are not in the common subset of C and C++"
5874 +msgstr "C と C++ の共通部分集合では無い C 構文に関して警告する"
5876 #: c-family/c.opt:292
5877 msgid "Warn about C++ constructs whose meaning differs between ISO C++ 1998 and ISO C++ 200x"
5879 +msgstr "ISO C++ 1998 と ISO C++ 200x で意味が異なる C++ 構文に関して警告する"
5881 #: c-family/c.opt:296
5882 msgid "Warn about casts which discard qualifiers"
5883 @@ -8962,7 +8953,7 @@
5885 #: c-family/c.opt:352
5886 msgid "Warn about stray tokens after #elif and #endif"
5888 +msgstr "#elif および #endif の後にあるはぐれたトークンに関して警告する"
5890 #: c-family/c.opt:356
5891 msgid "Warn about comparison of different enum types"
5892 @@ -8977,9 +8968,8 @@
5893 msgstr "浮動小数点数の等価比較に関して警告する"
5895 #: c-family/c.opt:372
5897 msgid "Warn about printf/scanf/strftime/strfmon format string anomalies"
5898 -msgstr "printf/scanf/strftime/strfmon 形式の変則的なものに関して警告する"
5899 +msgstr "printf/scanf/strftime/strfmon 書式文字列異常に関して警告する"
5901 #: c-family/c.opt:376
5902 msgid "Warn if passing too many arguments to a function for its format string"
5903 @@ -8998,9 +8988,8 @@
5904 msgstr "セキュリティ問題になる可能性がある書式関数に関して警告する"
5906 #: c-family/c.opt:392
5908 msgid "Warn about strftime formats yielding 2-digit years"
5909 -msgstr "strftime 形式が二桁で年を表している時の警告しない"
5910 +msgstr "strftime 書式が 2 桁の年の場合に警告する"
5912 #: c-family/c.opt:396
5913 msgid "Warn about zero-length formats"
5914 @@ -9409,7 +9398,7 @@
5916 #: c-family/c.opt:823
5917 msgid "Don't emit dllexported inline functions unless needed"
5919 +msgstr "必要が無い限り dllexported インライン関数を発行しない"
5921 #: c-family/c.opt:830
5922 msgid "Allow implicit conversions between vectors with differing numbers of subparts and/or differing element types."
5923 @@ -9501,7 +9490,7 @@
5925 #: c-family/c.opt:942
5926 msgid "Generate run time type descriptor information"
5928 +msgstr "実行時型記述子情報を生成する"
5930 #: c-family/c.opt:946
5931 msgid "Use the same size for double as for float"
5932 @@ -9889,19 +9878,16 @@
5933 msgstr "関数が __attribute__((pure)) の候補となりそうな場合に警告する"
5937 msgid "Warn about enumerated switches, with no default, missing a case"
5938 -msgstr "列挙定数の switch で case 指定が欠けているものに関して警告する"
5939 +msgstr "列挙定数を使用した switch 文で default 文が無いか特定の case が無い場合に警告する"
5943 msgid "Warn about enumerated switches missing a \"default:\" statement"
5944 -msgstr "列挙定数の switch で case 指定が欠けているものに関して警告する"
5945 +msgstr "列挙定数を使用した switch 文で \"default:\" 文が無い場合に警告する"
5949 msgid "Warn about all enumerated switches missing a specific case"
5950 -msgstr "列挙定数の switch で case 指定が欠けているものに関して警告する"
5951 +msgstr "列挙定数を使用した switch 文で特定の case が無い場合に警告する"
5954 msgid "Do not suppress warnings from system headers"
5955 @@ -10000,9 +9986,8 @@
5956 msgstr "自動増加/減少命令を生成する"
5960 msgid "Generate code to check bounds before indexing arrays"
5961 -msgstr "配列の添字と添字境界を検査するコードを生成する"
5962 +msgstr "配列の添え字を使用する前に境界検査を行うコードを生成する"
5966 @@ -10043,7 +10028,7 @@
5969 msgid "Looks for opportunities to reduce stack adjustments and stack references."
5971 +msgstr "スタック調整およびスタック参照を削減する機会を探す"
5974 msgid "Do not put uninitialized globals in the common section"
5975 @@ -10058,18 +10043,16 @@
5980 msgid "Perform comparison elimination after register allocation has finished"
5981 -msgstr "グローバル共通部分式を除去する"
5982 +msgstr "レジスタは位置が完了した後に比較の除去を行う"
5985 msgid "Do not perform optimizations increasing noticeably stack usage"
5987 +msgstr "スタック使用量を著しく増加させる最適化を行わない"
5991 msgid "Perform a register copy-propagation optimization pass"
5992 -msgstr "最適化過程のレジスタつけ変えを行なう"
5996 msgid "Perform cross-jumping optimization"
5997 @@ -10101,7 +10084,7 @@
6000 msgid "Map one directory name to another in debug information"
6002 +msgstr "デバッグ情報内のディレクトリー名を他のものにマップする"
6005 msgid "Defer popping functions args from stack until later"
6006 @@ -10116,9 +10099,8 @@
6007 msgstr "無意味な null ポインタ検査を削除する"
6011 msgid "Try to convert virtual calls to direct ones."
6012 -msgstr "リンカが PIC 呼び出しを直接呼び出しに変更することを許可するように試みる"
6013 +msgstr "仮想呼び出しを直接呼び出しに変換することを試みる"
6017 @@ -10137,7 +10119,7 @@
6020 msgid "-fdump-final-insns=filename\tDump to filename the insns at the end of translation"
6022 +msgstr "-fdump-final-insns=filename\t翻訳終了時に filename へ命令をダンプする"
6025 msgid "-fdump-go-spec=filename\tWrite all declarations to file as Go code"
6026 @@ -10173,7 +10155,7 @@
6028 #: common.opt:1014 common.opt:1018
6029 msgid "Perform unused type elimination in debug info"
6031 +msgstr "デバッグ情報内で使用されていない型の除去を行う"
6034 msgid "Do not suppress C++ class debug information."
6035 @@ -10181,25 +10163,24 @@
6038 msgid "Generate debug information to support Identical Code Folding (ICF)"
6040 +msgstr "Identical Code Folding (ICF) をサポートするためのデバッグ情報を生成する"
6043 msgid "Enable exception handling"
6048 msgid "Perform a number of minor, expensive optimizations"
6049 -msgstr "目立たない、コストのかかる最適化を行なう"
6050 +msgstr "多くの、目立たないがコストが高い最適化を行う"
6053 msgid "-fexcess-precision=[fast|standard]\tSpecify handling of excess floating-point precision"
6055 +msgstr "-fexcess-precision=[fast|standard]\t余分な浮動小数点精度の取り扱いを指定する"
6059 msgid "unknown excess precision style %qs"
6061 +msgstr "不明な余分な精度スタイル %qs です"
6064 msgid "Assume no NaNs or infinities are generated"
6065 @@ -10222,52 +10203,45 @@
6071 msgid "unknown floating point contraction style %qs"
6072 -msgstr "浮動小数点定数を TOC 内に配置する"
6073 +msgstr "不明な浮動小数短縮形 %qs です"
6076 msgid "Allow function addresses to be held in registers"
6077 msgstr "関数アドレスをレジスタに持たせる事を許可する"
6081 msgid "Place each function into its own section"
6082 -msgstr "各々の関数をそれ自身のセクションに配置する"
6083 +msgstr "それぞれの関数をそれ自身のセクションに配置する"
6087 msgid "Perform global common subexpression elimination"
6088 -msgstr "グローバル共通部分式を除去する"
6089 +msgstr "大域共通部分式の除去を行う"
6093 msgid "Perform enhanced load motion during global common subexpression elimination"
6094 -msgstr "グローバル共通部分式を除去する"
6099 msgid "Perform store motion after global common subexpression elimination"
6100 -msgstr "グローバル共通部分式を除去する"
6104 msgid "Perform redundant load after store elimination in global common subexpression"
6109 msgid "Perform global common subexpression elimination after register allocation"
6110 -msgstr "グローバル共通部分式を除去する"
6111 +msgstr "レジスタ配置後に大域共通部分式の除去を行う"
6115 msgid "Enable in and out of Graphite representation"
6116 -msgstr "自動テンプレート実体化を有効にする"
6121 msgid "Enable Graphite Identity transformation"
6122 -msgstr "呼び出しグラフ情報を送出する"
6126 msgid "Mark all loops as parallel"
6127 @@ -10306,9 +10280,8 @@
6132 msgid "Perform conversion of conditional jumps to conditional execution"
6133 -msgstr "条件的な実行への変更のための閾値を変更する"
6137 msgid "Convert conditional jumps in innermost loops to branchless equivalents"
6138 @@ -10376,13 +10349,12 @@
6143 msgid "Discover pure and const functions"
6144 -msgstr "使われない仮想関数を切り捨てる"
6145 +msgstr "純粋および定数関数を見つける"
6148 msgid "Discover readonly and non addressable static variables"
6150 +msgstr "読み取り専用およびアドレス付けできない静的変数を見つける"
6153 msgid "Perform matrix layout flattening and transposing based"
6154 @@ -10415,9 +10387,8 @@
6159 msgid "Share slots for saving different hard registers."
6160 -msgstr "引数レジスタにローカルのものを格納する"
6164 msgid "Share stack slots for spilled pseudo-registers."
6165 @@ -10621,19 +10592,19 @@
6168 msgid "Enable basic program profiling code"
6170 +msgstr "基本プログラムプロファイリングコードを有効にする"
6173 msgid "Insert arc-based program profiling code"
6175 +msgstr "円弧ベースプログラムプロファイリングコードを挿入する"
6178 msgid "Set the top-level directory for storing the profile data."
6180 +msgstr "プロファイルデータ保存用の最上位ディレクリーを設定する"
6183 msgid "Enable correction of flow inconsistent profile data input"
6185 +msgstr "フロー一貫性が無いデータ入力の訂正を有効にする"
6188 msgid "Enable common options for generating profile info for profile feedback directed optimizations"
6189 @@ -10653,7 +10624,7 @@
6192 msgid "Insert code to profile values of expressions"
6194 +msgstr "式の値をプロファイルするためのコードを挿入する"
6197 msgid "-frandom-seed=<string>\tMake compile reproducible using <string>"
6198 @@ -11836,7 +11807,7 @@
6200 #, gcc-internal-format
6201 msgid "nested function %q+D declared but never defined"
6203 +msgstr "入れ子になった関数 %q+D が宣言されましたが定義されていません"
6206 #, gcc-internal-format
6207 @@ -11893,7 +11864,7 @@
6209 #, gcc-internal-format
6210 msgid "prototype for %q+D follows non-prototype definition"
6212 +msgstr "非プロトタイプ定義に続いて %q+D 用のプロトタイプがあります"
6215 #, gcc-internal-format
6216 @@ -11969,9 +11940,9 @@
6217 msgstr "%q+D が異なる型で再定義されました"
6220 -#, fuzzy, gcc-internal-format
6221 +#, gcc-internal-format
6222 msgid "redefinition of typedef %q+D with variably modified type"
6223 -msgstr "%q+D が異なる型で再定義されました"
6227 #, gcc-internal-format
6228 @@ -12016,17 +11987,17 @@
6230 #, gcc-internal-format
6231 msgid "extern declaration of %q+D follows declaration with no linkage"
6233 +msgstr "リンク無し宣言の後に %q+D の extern 宣言が続いています"
6236 #, gcc-internal-format
6237 msgid "declaration of %q+D with no linkage follows extern declaration"
6239 +msgstr "extern 宣言の後にリンク無し %q+D の宣言が続いています"
6242 #, gcc-internal-format
6243 msgid "redeclaration of %q+D with no linkage"
6245 +msgstr "リンク無し %q+D の再定義です"
6248 #, gcc-internal-format
6249 @@ -12354,7 +12325,7 @@
6251 #, gcc-internal-format
6252 msgid "defining a type in a compound literal is invalid in C++"
6254 +msgstr "複合リテラル内での型定義は C++ では無効です"
6256 #: c-decl.c:4666 c-decl.c:4681
6257 #, gcc-internal-format
6258 @@ -13393,23 +13364,23 @@
6260 #, gcc-internal-format
6261 msgid "expression in static assertion is not an integer"
6263 +msgstr "静的アサーション内の式が整数ではありません"
6266 #, gcc-internal-format
6267 msgid "expression in static assertion is not an integer constant expression"
6269 +msgstr "静的アサーション内の式が整数定数式ではありません"
6272 #, gcc-internal-format
6273 msgid "expression in static assertion is not constant"
6275 +msgstr "静的アサーション内の式が定数ではありません"
6277 #. Report the error.
6278 #: c-parser.c:1846 cp/semantics.c:4719
6279 #, gcc-internal-format
6280 msgid "static assertion failed: %E"
6282 +msgstr "静的アサーションに失敗しました: %E"
6284 #: c-parser.c:2207 c-parser.c:3063 c-parser.c:3709 c-parser.c:3983
6285 #: c-parser.c:5084 c-parser.c:5175 c-parser.c:5800 c-parser.c:6083
6286 @@ -14125,12 +14096,12 @@
6288 #, gcc-internal-format
6289 msgid "increment of enumeration value is invalid in C++"
6290 -msgstr "列挙値のインクリメントは C++ では無効です"
6291 +msgstr "列挙値の増分は C++ では無効です"
6294 #, gcc-internal-format
6295 msgid "decrement of enumeration value is invalid in C++"
6296 -msgstr "列挙値のデクリメントは C++ では無効です"
6297 +msgstr "列挙値の減分は C++ では無効です"
6300 #, gcc-internal-format
6301 @@ -14140,22 +14111,22 @@
6302 #: c-typeck.c:3613 c-typeck.c:3645
6303 #, gcc-internal-format
6304 msgid "wrong type argument to increment"
6305 -msgstr "インクリメントする引数の型が間違っています"
6306 +msgstr "増分する引数の型が間違っています"
6308 #: c-typeck.c:3615 c-typeck.c:3648
6309 #, gcc-internal-format
6310 msgid "wrong type argument to decrement"
6311 -msgstr "デクリメントする引数の型が間違っています"
6312 +msgstr "減分する引数の型が間違っています"
6315 #, gcc-internal-format
6316 msgid "increment of pointer to unknown structure"
6317 -msgstr "不明な構造体へのポインタのインクリメントです"
6318 +msgstr "不明な構造体へのポインタの増分です"
6321 #, gcc-internal-format
6322 msgid "decrement of pointer to unknown structure"
6323 -msgstr "不明な構造体へのポインタのデクリメントです"
6324 +msgstr "不明な構造体へのポインタの減分です"
6327 #, gcc-internal-format
6328 @@ -14170,12 +14141,12 @@
6329 #: c-typeck.c:3895 c-family/c-common.c:8658
6330 #, gcc-internal-format
6331 msgid "increment of read-only location %qE"
6332 -msgstr "読み取り専用位置 %qE のインクリメントです"
6333 +msgstr "読み取り専用位置 %qE の増分です"
6335 #: c-typeck.c:3898 c-family/c-common.c:8659
6336 #, gcc-internal-format
6337 msgid "decrement of read-only location %qE"
6338 -msgstr "読み取り専用位置 %qE のデクリメントです"
6339 +msgstr "読み取り専用位置 %qE の減分です"
6342 #, gcc-internal-format
6343 @@ -19787,12 +19758,12 @@
6344 #: c-family/c-common.c:8611
6345 #, gcc-internal-format
6346 msgid "increment of member %qD in read-only object"
6347 -msgstr "読み取り専用オブジェクト内のメンバ %qD のインクリメントです"
6348 +msgstr "読み取り専用オブジェクト内のメンバ %qD の増分です"
6350 #: c-family/c-common.c:8613
6351 #, gcc-internal-format
6352 msgid "decrement of member %qD in read-only object"
6353 -msgstr "読み取り専用オブジェクト内のメンバ %qD のデクリメントです"
6354 +msgstr "読み取り専用オブジェクト内のメンバ %qD の減分です"
6356 #: c-family/c-common.c:8615
6357 #, gcc-internal-format
6358 @@ -19807,12 +19778,12 @@
6359 #: c-family/c-common.c:8620
6360 #, gcc-internal-format
6361 msgid "increment of read-only member %qD"
6362 -msgstr "読み取り専用メンバ %qD のインクリメントです"
6363 +msgstr "読み取り専用メンバ %qD の増分です"
6365 #: c-family/c-common.c:8621
6366 #, gcc-internal-format
6367 msgid "decrement of read-only member %qD"
6368 -msgstr "読み取り専用メンバ %qD のデクリメントです"
6369 +msgstr "読み取り専用メンバ %qD の減分です"
6371 #: c-family/c-common.c:8622
6372 #, gcc-internal-format
6373 @@ -19827,12 +19798,12 @@
6374 #: c-family/c-common.c:8627
6375 #, gcc-internal-format
6376 msgid "increment of read-only variable %qD"
6377 -msgstr "読み取り専用変数 %qD のインクリメントです"
6378 +msgstr "読み取り専用変数 %qD の増分です"
6380 #: c-family/c-common.c:8628
6381 #, gcc-internal-format
6382 msgid "decrement of read-only variable %qD"
6383 -msgstr "読み取り専用変数 %qD のデクリメントです"
6384 +msgstr "読み取り専用変数 %qD の減分です"
6386 #: c-family/c-common.c:8629
6387 #, gcc-internal-format
6388 @@ -19847,12 +19818,12 @@
6389 #: c-family/c-common.c:8633
6390 #, gcc-internal-format
6391 msgid "increment of read-only parameter %qD"
6392 -msgstr "読み取り専用パラメータ %qD のインクリメントです"
6393 +msgstr "読み取り専用パラメータ %qD の増分です"
6395 #: c-family/c-common.c:8634
6396 #, gcc-internal-format
6397 msgid "decrement of read-only parameter %qD"
6398 -msgstr "読み取り専用パラメータ %qD のデクリメントです"
6399 +msgstr "読み取り専用パラメータ %qD の減分です"
6401 #: c-family/c-common.c:8635
6402 #, gcc-internal-format
6403 @@ -19867,12 +19838,12 @@
6404 #: c-family/c-common.c:8642
6405 #, gcc-internal-format
6406 msgid "increment of read-only named return value %qD"
6407 -msgstr "読み取り専用名前付き戻り値 %qD のインクリメントです"
6408 +msgstr "読み取り専用名前付き戻り値 %qD の増分です"
6410 #: c-family/c-common.c:8644
6411 #, gcc-internal-format
6412 msgid "decrement of read-only named return value %qD"
6413 -msgstr "読み取り専用名前付き戻り値 %qD のデクリメントです"
6414 +msgstr "読み取り専用名前付き戻り値 %qD の減分です"
6416 #: c-family/c-common.c:8646
6417 #, gcc-internal-format
6418 @@ -19887,12 +19858,12 @@
6419 #: c-family/c-common.c:8652
6420 #, gcc-internal-format
6421 msgid "increment of function %qD"
6422 -msgstr "関数 %qD のインクリメントです"
6423 +msgstr "関数 %qD の増分です"
6425 #: c-family/c-common.c:8653
6426 #, gcc-internal-format
6427 msgid "decrement of function %qD"
6428 -msgstr "関数 %qD のデクリメントです"
6429 +msgstr "関数 %qD の減分です"
6431 #: c-family/c-common.c:8654
6432 #, gcc-internal-format
6433 @@ -19912,12 +19883,12 @@
6434 #: c-family/c-common.c:8677
6435 #, gcc-internal-format
6436 msgid "lvalue required as increment operand"
6437 -msgstr "インクリメントの被演算子として左辺値が必要です"
6438 +msgstr "増分の被演算子として左辺値が必要です"
6440 #: c-family/c-common.c:8680
6441 #, gcc-internal-format
6442 msgid "lvalue required as decrement operand"
6443 -msgstr "デクリメントの被演算子として左辺値が必要です"
6444 +msgstr "減分の被演算子として左辺値が必要です"
6446 #: c-family/c-common.c:8683
6447 #, gcc-internal-format
6448 @@ -20556,12 +20527,12 @@
6449 #: c-family/c-omp.c:375 cp/semantics.c:4431
6450 #, gcc-internal-format
6451 msgid "missing increment expression"
6452 -msgstr "インクリメント式がありません"
6455 #: c-family/c-omp.c:444 cp/semantics.c:4287
6456 #, gcc-internal-format
6457 msgid "invalid increment expression"
6458 -msgstr "無効なインクリメント式です"
6461 #: c-family/c-opts.c:303
6462 #, gcc-internal-format
6463 @@ -20571,7 +20542,7 @@
6464 #: c-family/c-opts.c:306
6465 #, gcc-internal-format
6466 msgid "obsolete option -I- used, please use -iquote instead"
6467 -msgstr "廃止あれたオプション -I- が使用されています。代わりに -iquote を使用してください"
6468 +msgstr "廃止されたオプション -I- が使用されています。代わりに -iquote を使用してください"
6470 #: c-family/c-opts.c:486
6471 #, gcc-internal-format
6472 Index: gcc/tree-ssa-forwprop.c
6473 ===================================================================
6474 --- gcc/tree-ssa-forwprop.c (.../tags/gcc_4_6_2_release) (wersja 182722)
6475 +++ gcc/tree-ssa-forwprop.c (.../branches/gcc-4_6-branch) (wersja 182722)
6477 TREE_TYPE (gimple_assign_rhs1 (use_stmt))))
6479 tree *def_rhs_basep = &TREE_OPERAND (def_rhs, 0);
6480 - tree new_offset, new_base, saved;
6481 + tree new_offset, new_base, saved, new_lhs;
6482 while (handled_component_p (*def_rhs_basep))
6483 def_rhs_basep = &TREE_OPERAND (*def_rhs_basep, 0);
6484 saved = *def_rhs_basep;
6485 @@ -891,9 +891,12 @@
6486 *def_rhs_basep = build2 (MEM_REF, TREE_TYPE (*def_rhs_basep),
6487 new_base, new_offset);
6488 TREE_THIS_VOLATILE (*def_rhs_basep) = TREE_THIS_VOLATILE (lhs);
6489 + TREE_SIDE_EFFECTS (*def_rhs_basep) = TREE_SIDE_EFFECTS (lhs);
6490 TREE_THIS_NOTRAP (*def_rhs_basep) = TREE_THIS_NOTRAP (lhs);
6491 - gimple_assign_set_lhs (use_stmt,
6492 - unshare_expr (TREE_OPERAND (def_rhs, 0)));
6493 + new_lhs = unshare_expr (TREE_OPERAND (def_rhs, 0));
6494 + gimple_assign_set_lhs (use_stmt, new_lhs);
6495 + TREE_THIS_VOLATILE (new_lhs) = TREE_THIS_VOLATILE (lhs);
6496 + TREE_SIDE_EFFECTS (new_lhs) = TREE_SIDE_EFFECTS (lhs);
6497 *def_rhs_basep = saved;
6498 tidy_after_forward_propagate_addr (use_stmt);
6499 /* Continue propagating into the RHS if this was not the
6501 TREE_TYPE (TREE_OPERAND (def_rhs, 0))))
6503 tree *def_rhs_basep = &TREE_OPERAND (def_rhs, 0);
6504 - tree new_offset, new_base, saved;
6505 + tree new_offset, new_base, saved, new_rhs;
6506 while (handled_component_p (*def_rhs_basep))
6507 def_rhs_basep = &TREE_OPERAND (*def_rhs_basep, 0);
6508 saved = *def_rhs_basep;
6509 @@ -972,9 +975,12 @@
6510 *def_rhs_basep = build2 (MEM_REF, TREE_TYPE (*def_rhs_basep),
6511 new_base, new_offset);
6512 TREE_THIS_VOLATILE (*def_rhs_basep) = TREE_THIS_VOLATILE (rhs);
6513 + TREE_SIDE_EFFECTS (*def_rhs_basep) = TREE_SIDE_EFFECTS (rhs);
6514 TREE_THIS_NOTRAP (*def_rhs_basep) = TREE_THIS_NOTRAP (rhs);
6515 - gimple_assign_set_rhs1 (use_stmt,
6516 - unshare_expr (TREE_OPERAND (def_rhs, 0)));
6517 + new_rhs = unshare_expr (TREE_OPERAND (def_rhs, 0));
6518 + gimple_assign_set_rhs1 (use_stmt, new_rhs);
6519 + TREE_THIS_VOLATILE (new_rhs) = TREE_THIS_VOLATILE (rhs);
6520 + TREE_SIDE_EFFECTS (new_rhs) = TREE_SIDE_EFFECTS (rhs);
6521 *def_rhs_basep = saved;
6522 fold_stmt_inplace (use_stmt);
6523 tidy_after_forward_propagate_addr (use_stmt);
6525 ===================================================================
6526 --- gcc/varasm.c (.../tags/gcc_4_6_2_release) (wersja 182722)
6527 +++ gcc/varasm.c (.../branches/gcc-4_6-branch) (wersja 182722)
6528 @@ -6751,11 +6751,14 @@
6529 /* A non-decl is an entry in the constant pool. */
6532 - /* Weakrefs may not bind locally, even though the weakref itself is
6533 - always static and therefore local.
6534 - FIXME: We can resolve this more curefuly by looking at the weakref
6536 - else if (lookup_attribute ("weakref", DECL_ATTRIBUTES (exp)))
6537 + /* Weakrefs may not bind locally, even though the weakref itself is always
6538 + static and therefore local. Similarly, the resolver for ifunc functions
6539 + might resolve to a non-local function.
6540 + FIXME: We can resolve the weakref case more curefuly by looking at the
6542 + else if (lookup_attribute ("weakref", DECL_ATTRIBUTES (exp))
6543 + || (TREE_CODE (exp) == FUNCTION_DECL
6544 + && lookup_attribute ("ifunc", DECL_ATTRIBUTES (exp))))
6546 /* Static variables are always local. */
6547 else if (! TREE_PUBLIC (exp))
6548 Index: gcc/sched-deps.c
6549 ===================================================================
6550 --- gcc/sched-deps.c (.../tags/gcc_4_6_2_release) (wersja 182722)
6551 +++ gcc/sched-deps.c (.../branches/gcc-4_6-branch) (wersja 182722)
6552 @@ -2687,7 +2687,11 @@
6554 sched_analyze_2 (deps, XEXP (link, 0), insn);
6556 - if (find_reg_note (insn, REG_SETJMP, NULL))
6557 + /* Don't schedule anything after a tail call, tail call needs
6558 + to use at least all call-saved registers. */
6559 + if (SIBLING_CALL_P (insn))
6560 + reg_pending_barrier = TRUE_BARRIER;
6561 + else if (find_reg_note (insn, REG_SETJMP, NULL))
6562 reg_pending_barrier = MOVE_BARRIER;
6565 Index: gcc/tree-object-size.c
6566 ===================================================================
6567 --- gcc/tree-object-size.c (.../tags/gcc_4_6_2_release) (wersja 182722)
6568 +++ gcc/tree-object-size.c (.../branches/gcc-4_6-branch) (wersja 182722)
6570 unsigned HOST_WIDE_INT sz;
6572 if (!osi || (object_size_type & 1) != 0
6573 - || TREE_CODE (pt_var) != SSA_NAME)
6574 + || TREE_CODE (TREE_OPERAND (pt_var, 0)) != SSA_NAME)
6576 sz = compute_builtin_object_size (TREE_OPERAND (pt_var, 0),
6577 object_size_type & ~1);
6578 Index: gcc/tree-outof-ssa.c
6579 ===================================================================
6580 --- gcc/tree-outof-ssa.c (.../tags/gcc_4_6_2_release) (wersja 182722)
6581 +++ gcc/tree-outof-ssa.c (.../branches/gcc-4_6-branch) (wersja 182722)
6582 @@ -237,9 +237,10 @@
6584 var = SSA_NAME_VAR (partition_to_var (SA.map, dest));
6585 src_mode = TYPE_MODE (TREE_TYPE (src));
6586 - dest_mode = promote_decl_mode (var, &unsignedp);
6587 + dest_mode = GET_MODE (SA.partition_to_pseudo[dest]);
6588 gcc_assert (src_mode == TYPE_MODE (TREE_TYPE (var)));
6589 - gcc_assert (dest_mode == GET_MODE (SA.partition_to_pseudo[dest]));
6590 + gcc_assert (!REG_P (SA.partition_to_pseudo[dest])
6591 + || dest_mode == promote_decl_mode (var, &unsignedp));
6593 if (src_mode != dest_mode)
6595 Index: gcc/lto-opts.c
6596 ===================================================================
6597 --- gcc/lto-opts.c (.../tags/gcc_4_6_2_release) (wersja 182722)
6598 +++ gcc/lto-opts.c (.../branches/gcc-4_6-branch) (wersja 182722)
6600 size_t len, l, skip;
6601 const char *data, *p;
6602 const struct lto_simple_header *header;
6603 - int32_t opts_offset;
6605 struct lto_input_block ib;
6607 data = lto_get_section_data (file_data, LTO_section_opts, NULL, &len);
6608 @@ -379,10 +379,10 @@
6610 lto_check_version (header->lto_header.major_version,
6611 header->lto_header.minor_version);
6614 LTO_INIT_INPUT_BLOCK (ib, p + opts_offset, 0, header->main_size);
6615 input_options (&ib);
6618 skip = header->main_size + opts_offset;
6621 Index: gcc/c-parser.c
6622 ===================================================================
6623 --- gcc/c-parser.c (.../tags/gcc_4_6_2_release) (wersja 182722)
6624 +++ gcc/c-parser.c (.../branches/gcc-4_6-branch) (wersja 182722)
6625 @@ -6294,7 +6294,7 @@
6626 c_parser_error (parser, "expected identifier");
6627 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN,
6629 - expr.value = fold_offsetof (offsetof_ref, NULL_TREE);
6630 + expr.value = fold_offsetof (offsetof_ref);
6633 case RID_CHOOSE_EXPR:
6634 Index: gcc/config/alpha/linux-unwind.h
6635 ===================================================================
6636 --- gcc/config/alpha/linux-unwind.h (.../tags/gcc_4_6_2_release) (wersja 182722)
6637 +++ gcc/config/alpha/linux-unwind.h (.../branches/gcc-4_6-branch) (wersja 182722)
6639 /* DWARF2 EH unwinding support for Alpha Linux.
6640 - Copyright (C) 2004, 2005, 2009 Free Software Foundation, Inc.
6641 + Copyright (C) 2004, 2005, 2009, 2011 Free Software Foundation, Inc.
6643 This file is part of GCC.
6647 unsigned int *pc = context->ra;
6648 struct sigcontext *sc;
6653 if (pc[0] != 0x47fe0410 /* mov $30,$16 */
6654 - || pc[2] != 0x00000083 /* callsys */)
6655 + || pc[2] != 0x00000083) /* callsys */
6656 return _URC_END_OF_STACK;
6657 if (context->cfa == 0)
6658 return _URC_END_OF_STACK;
6659 if (pc[1] == 0x201f0067) /* lda $0,NR_sigreturn */
6661 - else if (pc[1] == 0x201f015f) /* lda $0,NR_rt_sigreturn */
6662 + else if (pc[1] == 0x201f015f) /* lda $0,NR_rt_sigreturn */
6664 struct rt_sigframe {
6665 struct siginfo info;
6669 return _URC_END_OF_STACK;
6671 new_cfa = sc->sc_regs[30];
6672 fs->regs.cfa_how = CFA_REG_OFFSET;
6673 fs->regs.cfa_reg = 30;
6676 fs->regs.reg[i].how = REG_SAVED_OFFSET;
6677 fs->regs.reg[i].loc.offset
6678 - = (long)&sc->sc_regs[i] - new_cfa;
6679 + = (long) &sc->sc_regs[i] - new_cfa;
6681 for (i = 0; i < 31; ++i)
6683 fs->regs.reg[i+32].how = REG_SAVED_OFFSET;
6684 fs->regs.reg[i+32].loc.offset
6685 - = (long)&sc->sc_fpregs[i] - new_cfa;
6686 + = (long) &sc->sc_fpregs[i] - new_cfa;
6688 fs->regs.reg[64].how = REG_SAVED_OFFSET;
6689 fs->regs.reg[64].loc.offset = (long)&sc->sc_pc - new_cfa;
6692 return _URC_NO_REASON;
6695 +#define MD_FROB_UPDATE_CONTEXT alpha_frob_update_context
6697 +/* Fix up for signal handlers that don't have S flag set. */
6700 +alpha_frob_update_context (struct _Unwind_Context *context,
6701 + _Unwind_FrameState *fs ATTRIBUTE_UNUSED)
6703 + unsigned int *pc = context->ra;
6705 + if (pc[0] == 0x47fe0410 /* mov $30,$16 */
6706 + && pc[2] == 0x00000083 /* callsys */
6707 + && (pc[1] == 0x201f0067 /* lda $0,NR_sigreturn */
6708 + || pc[1] == 0x201f015f)) /* lda $0,NR_rt_sigreturn */
6709 + _Unwind_SetSignalFrame (context, 1);
6711 Index: gcc/config/sparc/sparc.md
6712 ===================================================================
6713 --- gcc/config/sparc/sparc.md (.../tags/gcc_4_6_2_release) (wersja 182722)
6714 +++ gcc/config/sparc/sparc.md (.../branches/gcc-4_6-branch) (wersja 182722)
6716 [(UNSPEC_MOVE_PIC 0)
6717 (UNSPEC_UPDATE_RETURN 1)
6718 (UNSPEC_LOAD_PCREL_SYM 2)
6719 + (UNSPEC_FRAME_BLOCKAGE 3)
6720 (UNSPEC_MOVE_PIC_LABEL 5)
6723 @@ -1813,8 +1814,8 @@
6726 (define_insn "*movsf_insn"
6727 - [(set (match_operand:V32 0 "nonimmediate_operand" "=d,f,*r,*r,*r,f,*r,m,m")
6728 - (match_operand:V32 1 "input_operand" "GY,f,*rRY,Q,S,m,m,f,*rGY"))]
6729 + [(set (match_operand:V32 0 "nonimmediate_operand" "=d,f, *r,*r,*r,f,*r,m, m")
6730 + (match_operand:V32 1 "input_operand" "GY,f,*rRY, Q, S,m, m,f,*rGY"))]
6732 && (register_operand (operands[0], <V32:MODE>mode)
6733 || register_or_zero_operand (operands[1], <V32:MODE>mode))"
6734 @@ -1861,8 +1862,8 @@
6737 (define_insn "*movsf_insn_no_fpu"
6738 - [(set (match_operand:SF 0 "nonimmediate_operand" "=r,r,r,r,m")
6739 - (match_operand:SF 1 "input_operand" "rR,Q,S,m,rG"))]
6740 + [(set (match_operand:SF 0 "nonimmediate_operand" "=r,r,r,r, m")
6741 + (match_operand:SF 1 "input_operand" "rR,Q,S,m,rG"))]
6743 && (register_operand (operands[0], SFmode)
6744 || register_or_zero_operand (operands[1], SFmode))"
6745 @@ -1948,8 +1949,8 @@
6747 ;; Be careful, fmovd does not exist when !v9.
6748 (define_insn "*movdf_insn_sp32"
6749 - [(set (match_operand:DF 0 "nonimmediate_operand" "=e,W,U,T,o,e,*r,o,e,o")
6750 - (match_operand:DF 1 "input_operand" "W#F,e,T,U,G,e,*rFo,*r,o#F,e"))]
6751 + [(set (match_operand:DF 0 "nonimmediate_operand" "= e,W,U,T,o,e, *r, o, e,o")
6752 + (match_operand:DF 1 "input_operand" "W#F,e,T,U,G,e,*rFo,*r,o#F,e"))]
6755 && (register_operand (operands[0], DFmode)
6756 @@ -1969,8 +1970,8 @@
6757 (set_attr "length" "*,*,*,*,2,2,2,2,2,2")])
6759 (define_insn "*movdf_insn_sp32_no_fpu"
6760 - [(set (match_operand:DF 0 "nonimmediate_operand" "=U,T,o,r,o")
6761 - (match_operand:DF 1 "input_operand" "T,U,G,ro,r"))]
6762 + [(set (match_operand:DF 0 "nonimmediate_operand" "=U,T,o, r,o")
6763 + (match_operand:DF 1 "input_operand" " T,U,G,ro,r"))]
6766 && (register_operand (operands[0], DFmode)
6767 @@ -1986,8 +1987,8 @@
6769 ;; We have available v9 double floats but not 64-bit integer registers.
6770 (define_insn "*movdf_insn_sp32_v9"
6771 - [(set (match_operand:V64 0 "nonimmediate_operand" "=b,e,e,T,W,U,T,f,*r,o")
6772 - (match_operand:V64 1 "input_operand" "GY,e,W#F,GY,e,T,U,o#F,*roGYDF,*rGYf"))]
6773 + [(set (match_operand:V64 0 "nonimmediate_operand" "=b,e, e, T,W,U,T, f, *r, o")
6774 + (match_operand:V64 1 "input_operand" "GY,e,W#F,GY,e,T,U,o#F,*roFD,*rGYf"))]
6778 @@ -2009,8 +2010,8 @@
6779 (set_attr "fptype" "double,double,*,*,*,*,*,*,*,*")])
6781 (define_insn "*movdf_insn_sp32_v9_no_fpu"
6782 - [(set (match_operand:DF 0 "nonimmediate_operand" "=U,T,T,r,o")
6783 - (match_operand:DF 1 "input_operand" "T,U,G,ro,rG"))]
6784 + [(set (match_operand:DF 0 "nonimmediate_operand" "=U,T,T, r, o")
6785 + (match_operand:DF 1 "input_operand" " T,U,G,ro,rG"))]
6789 @@ -2027,8 +2028,8 @@
6791 ;; We have available both v9 double floats and 64-bit integer registers.
6792 (define_insn "*movdf_insn_sp64"
6793 - [(set (match_operand:V64 0 "nonimmediate_operand" "=b,e,e,W,*r,*r,m,*r")
6794 - (match_operand:V64 1 "input_operand" "GY,e,W#F,e,*rGY,m,*rGY,DF"))]
6795 + [(set (match_operand:V64 0 "nonimmediate_operand" "=b,e, e,W, *r,*r, m,*r")
6796 + (match_operand:V64 1 "input_operand" "GY,e,W#F,e,*rGY, m,*rGY,FD"))]
6799 && (register_operand (operands[0], <V64:MODE>mode)
6800 @@ -2047,8 +2048,8 @@
6801 (set_attr "fptype" "double,double,*,*,*,*,*,*")])
6803 (define_insn "*movdf_insn_sp64_no_fpu"
6804 - [(set (match_operand:DF 0 "nonimmediate_operand" "=r,r,m")
6805 - (match_operand:DF 1 "input_operand" "r,m,rG"))]
6806 + [(set (match_operand:DF 0 "nonimmediate_operand" "=r,r, m")
6807 + (match_operand:DF 1 "input_operand" "r,m,rG"))]
6810 && (register_operand (operands[0], DFmode)
6811 @@ -2288,8 +2289,8 @@
6814 (define_insn "*movtf_insn_sp32"
6815 - [(set (match_operand:TF 0 "nonimmediate_operand" "=b,e,o,U,r")
6816 - (match_operand:TF 1 "input_operand" "G,oe,GeUr,o,roG"))]
6817 + [(set (match_operand:TF 0 "nonimmediate_operand" "=b, e, o,U, r")
6818 + (match_operand:TF 1 "input_operand" " G,oe,GeUr,o,roG"))]
6821 && (register_operand (operands[0], TFmode)
6822 @@ -2302,8 +2303,8 @@
6825 (define_insn "*movtf_insn_sp32_no_fpu"
6826 - [(set (match_operand:TF 0 "nonimmediate_operand" "=o,U,o,r,o")
6827 - (match_operand:TF 1 "input_operand" "G,o,U,roG,r"))]
6828 + [(set (match_operand:TF 0 "nonimmediate_operand" "=o,U,o, r,o")
6829 + (match_operand:TF 1 "input_operand" " G,o,U,roG,r"))]
6832 && (register_operand (operands[0], TFmode)
6833 @@ -2312,8 +2313,8 @@
6834 [(set_attr "length" "4")])
6836 (define_insn "*movtf_insn_sp64"
6837 - [(set (match_operand:TF 0 "nonimmediate_operand" "=b,e,o,r")
6838 - (match_operand:TF 1 "input_operand" "G,oe,Ger,roG"))]
6839 + [(set (match_operand:TF 0 "nonimmediate_operand" "=b, e, o, r")
6840 + (match_operand:TF 1 "input_operand" "G,oe,Ger,roG"))]
6843 && ! TARGET_HARD_QUAD
6844 @@ -2323,8 +2324,8 @@
6845 [(set_attr "length" "2")])
6847 (define_insn "*movtf_insn_sp64_hq"
6848 - [(set (match_operand:TF 0 "nonimmediate_operand" "=b,e,e,m,o,r")
6849 - (match_operand:TF 1 "input_operand" "G,e,m,e,rG,roG"))]
6850 + [(set (match_operand:TF 0 "nonimmediate_operand" "=b,e,e,m, o, r")
6851 + (match_operand:TF 1 "input_operand" "G,e,m,e,rG,roG"))]
6855 @@ -2341,8 +2342,8 @@
6856 (set_attr "length" "2,*,*,*,2,2")])
6858 (define_insn "*movtf_insn_sp64_no_fpu"
6859 - [(set (match_operand:TF 0 "nonimmediate_operand" "=r,o")
6860 - (match_operand:TF 1 "input_operand" "orG,rG"))]
6861 + [(set (match_operand:TF 0 "nonimmediate_operand" "= r, o")
6862 + (match_operand:TF 1 "input_operand" "orG,rG"))]
6865 && (register_operand (operands[0], TFmode)
6866 @@ -6338,6 +6339,25 @@
6868 [(set_attr "length" "0")])
6870 +;; Do not schedule instructions accessing memory before this point.
6872 +(define_expand "frame_blockage"
6873 + [(set (match_dup 0)
6874 + (unspec:BLK [(match_dup 1)] UNSPEC_FRAME_BLOCKAGE))]
6877 + operands[0] = gen_rtx_MEM (BLKmode, gen_rtx_SCRATCH (Pmode));
6878 + MEM_VOLATILE_P (operands[0]) = 1;
6879 + operands[1] = stack_pointer_rtx;
6882 +(define_insn "*frame_blockage<P:mode>"
6883 + [(set (match_operand:BLK 0 "" "")
6884 + (unspec:BLK [(match_operand:P 1 "" "")] UNSPEC_FRAME_BLOCKAGE))]
6887 + [(set_attr "length" "0")])
6889 (define_expand "probe_stack"
6890 [(set (match_operand 0 "memory_operand" "") (const_int 0))]
6892 Index: gcc/config/sparc/sparc.c
6893 ===================================================================
6894 --- gcc/config/sparc/sparc.c (.../tags/gcc_4_6_2_release) (wersja 182722)
6895 +++ gcc/config/sparc/sparc.c (.../branches/gcc-4_6-branch) (wersja 182722)
6896 @@ -4569,8 +4569,9 @@
6897 else if (actual_fsize <= 8192)
6899 insn = emit_insn (gen_stack_pointer_inc (GEN_INT (-4096)));
6900 + RTX_FRAME_RELATED_P (insn) = 1;
6902 /* %sp is still the CFA register. */
6903 - RTX_FRAME_RELATED_P (insn) = 1;
6905 = emit_insn (gen_stack_pointer_inc (GEN_INT (4096-actual_fsize)));
6907 @@ -4592,8 +4593,18 @@
6908 else if (actual_fsize <= 8192)
6910 insn = emit_insn (gen_save_register_window (GEN_INT (-4096)));
6912 /* %sp is not the CFA register anymore. */
6913 emit_insn (gen_stack_pointer_inc (GEN_INT (4096-actual_fsize)));
6915 + /* Make sure no %fp-based store is issued until after the frame is
6916 + established. The offset between the frame pointer and the stack
6917 + pointer is calculated relative to the value of the stack pointer
6918 + at the end of the function prologue, and moving instructions that
6919 + access the stack via the frame pointer between the instructions
6920 + that decrement the stack pointer could result in accessing the
6921 + register window save area, which is volatile. */
6922 + emit_insn (gen_frame_blockage ());
6926 Index: gcc/config/sparc/sparc.h
6927 ===================================================================
6928 --- gcc/config/sparc/sparc.h (.../tags/gcc_4_6_2_release) (wersja 182722)
6929 +++ gcc/config/sparc/sparc.h (.../branches/gcc-4_6-branch) (wersja 182722)
6931 %{mcpu=sparclite:-Asparclite} \
6932 %{mcpu=sparclite86x:-Asparclite} \
6933 %{mcpu=f930:-Asparclite} %{mcpu=f934:-Asparclite} \
6935 %{mv8plus:-Av8plus} \
6937 %{mcpu=ultrasparc:%{!mv8plus:-Av9a}} \
6938 Index: gcc/config/i386/i386.md
6939 ===================================================================
6940 --- gcc/config/i386/i386.md (.../tags/gcc_4_6_2_release) (wersja 182722)
6941 +++ gcc/config/i386/i386.md (.../branches/gcc-4_6-branch) (wersja 182722)
6942 @@ -1960,7 +1960,7 @@
6944 (define_insn "*movdi_internal_rex64"
6945 [(set (match_operand:DI 0 "nonimmediate_operand"
6946 - "=r,r ,r,m ,!m,*y,*y,?r ,m ,?*Ym,?*y,*x,*x,?r ,m,?*Yi,*x,?*x,?*Ym")
6947 + "=r,r ,r,m ,!o,*y,*y,?r ,m ,?*Ym,?*y,*x,*x,?r ,m,?*Yi,*x,?*x,?*Ym")
6948 (match_operand:DI 1 "general_operand"
6949 "Z ,rem,i,re,n ,C ,*y,*Ym,*y,r ,m ,C ,*x,*Yi,*x,r ,m ,*Ym,*x"))]
6950 "TARGET_64BIT && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
6951 @@ -2905,7 +2905,7 @@
6953 (define_insn "*movdf_internal_rex64"
6954 [(set (match_operand:DF 0 "nonimmediate_operand"
6955 - "=f,m,f,r ,m,!r,!m,Y2*x,Y2*x,Y2*x,m ,Yi,r ")
6956 + "=f,m,f,r ,m,!r,!o,Y2*x,Y2*x,Y2*x,m ,Yi,r ")
6957 (match_operand:DF 1 "general_operand"
6958 "fm,f,G,rm,r,F ,F ,C ,Y2*x,m ,Y2*x,r ,Yi"))]
6959 "TARGET_64BIT && !(MEM_P (operands[0]) && MEM_P (operands[1]))
6960 @@ -5103,7 +5103,7 @@
6962 && (SSE_REG_P (operands[0])
6963 || (GET_CODE (operands[0]) == SUBREG
6964 - && SSE_REG_P (operands[0])))"
6965 + && SSE_REG_P (SUBREG_REG (operands[0]))))"
6966 [(set (match_dup 0) (float:MODEF (match_dup 1)))])
6969 @@ -5116,7 +5116,7 @@
6971 && (SSE_REG_P (operands[0])
6972 || (GET_CODE (operands[0]) == SUBREG
6973 - && SSE_REG_P (operands[0])))"
6974 + && SSE_REG_P (SUBREG_REG (operands[0]))))"
6975 [(set (match_dup 2) (match_dup 1))
6976 (set (match_dup 0) (float:MODEF (match_dup 2)))])
6978 @@ -5207,7 +5207,7 @@
6980 && (SSE_REG_P (operands[0])
6981 || (GET_CODE (operands[0]) == SUBREG
6982 - && SSE_REG_P (operands[0])))"
6983 + && SSE_REG_P (SUBREG_REG (operands[0]))))"
6986 rtx op1 = operands[1];
6987 @@ -5248,7 +5248,7 @@
6989 && (SSE_REG_P (operands[0])
6990 || (GET_CODE (operands[0]) == SUBREG
6991 - && SSE_REG_P (operands[0])))"
6992 + && SSE_REG_P (SUBREG_REG (operands[0]))))"
6995 operands[3] = simplify_gen_subreg (<ssevecmode>mode, operands[0],
6996 @@ -5270,7 +5270,7 @@
6998 && (SSE_REG_P (operands[0])
6999 || (GET_CODE (operands[0]) == SUBREG
7000 - && SSE_REG_P (operands[0])))"
7001 + && SSE_REG_P (SUBREG_REG (operands[0]))))"
7004 rtx op1 = operands[1];
7005 @@ -5314,7 +5314,7 @@
7007 && (SSE_REG_P (operands[0])
7008 || (GET_CODE (operands[0]) == SUBREG
7009 - && SSE_REG_P (operands[0])))"
7010 + && SSE_REG_P (SUBREG_REG (operands[0]))))"
7013 operands[3] = simplify_gen_subreg (<ssevecmode>mode, operands[0],
7014 @@ -5375,7 +5375,7 @@
7016 && (SSE_REG_P (operands[0])
7017 || (GET_CODE (operands[0]) == SUBREG
7018 - && SSE_REG_P (operands[0])))"
7019 + && SSE_REG_P (SUBREG_REG (operands[0]))))"
7020 [(set (match_dup 0) (float:MODEF (match_dup 1)))])
7022 (define_insn "*float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit"
7023 @@ -5410,7 +5410,7 @@
7025 && (SSE_REG_P (operands[0])
7026 || (GET_CODE (operands[0]) == SUBREG
7027 - && SSE_REG_P (operands[0])))"
7028 + && SSE_REG_P (SUBREG_REG (operands[0]))))"
7029 [(set (match_dup 2) (match_dup 1))
7030 (set (match_dup 0) (float:MODEF (match_dup 2)))])
7032 @@ -5423,7 +5423,7 @@
7034 && (SSE_REG_P (operands[0])
7035 || (GET_CODE (operands[0]) == SUBREG
7036 - && SSE_REG_P (operands[0])))"
7037 + && SSE_REG_P (SUBREG_REG (operands[0]))))"
7038 [(set (match_dup 0) (float:MODEF (match_dup 1)))])
7040 (define_insn "*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp"
7041 @@ -14625,7 +14625,7 @@
7042 emit_insn (gen_sse4_1_round<mode>2
7043 (operands[0], operands[1], GEN_INT (0x04)));
7045 - ix86_expand_rint (operand0, operand1);
7046 + ix86_expand_rint (operands[0], operands[1]);
7050 @@ -14649,9 +14649,9 @@
7051 if (optimize_insn_for_size_p ())
7053 if (TARGET_64BIT || (<MODE>mode != DFmode))
7054 - ix86_expand_round (operand0, operand1);
7055 + ix86_expand_round (operands[0], operands[1]);
7057 - ix86_expand_rounddf_32 (operand0, operand1);
7058 + ix86_expand_rounddf_32 (operands[0], operands[1]);
7062 @@ -14796,7 +14796,7 @@
7064 if (optimize_insn_for_size_p ())
7066 - ix86_expand_lround (operand0, operand1);
7067 + ix86_expand_lround (operands[0], operands[1]);
7071 @@ -14871,9 +14871,9 @@
7072 emit_insn (gen_sse4_1_round<mode>2
7073 (operands[0], operands[1], GEN_INT (0x01)));
7074 else if (TARGET_64BIT || (<MODE>mode != DFmode))
7075 - ix86_expand_floorceil (operand0, operand1, true);
7076 + ix86_expand_floorceil (operands[0], operands[1], true);
7078 - ix86_expand_floorceildf_32 (operand0, operand1, true);
7079 + ix86_expand_floorceildf_32 (operands[0], operands[1], true);
7083 @@ -15053,7 +15053,7 @@
7085 if (TARGET_64BIT && optimize_insn_for_size_p ())
7087 - ix86_expand_lfloorceil (operand0, operand1, true);
7088 + ix86_expand_lfloorceil (operands[0], operands[1], true);
7092 @@ -15128,9 +15128,9 @@
7093 else if (optimize_insn_for_size_p ())
7095 else if (TARGET_64BIT || (<MODE>mode != DFmode))
7096 - ix86_expand_floorceil (operand0, operand1, false);
7097 + ix86_expand_floorceil (operands[0], operands[1], false);
7099 - ix86_expand_floorceildf_32 (operand0, operand1, false);
7100 + ix86_expand_floorceildf_32 (operands[0], operands[1], false);
7104 @@ -15308,7 +15308,7 @@
7105 "SSE_FLOAT_MODE_P (<MODEF:MODE>mode) && TARGET_SSE_MATH
7106 && !flag_trapping_math"
7108 - ix86_expand_lfloorceil (operand0, operand1, false);
7109 + ix86_expand_lfloorceil (operands[0], operands[1], false);
7113 @@ -15383,9 +15383,9 @@
7114 else if (optimize_insn_for_size_p ())
7116 else if (TARGET_64BIT || (<MODE>mode != DFmode))
7117 - ix86_expand_trunc (operand0, operand1);
7118 + ix86_expand_trunc (operands[0], operands[1]);
7120 - ix86_expand_truncdf_32 (operand0, operand1);
7121 + ix86_expand_truncdf_32 (operands[0], operands[1]);
7125 @@ -18285,8 +18285,8 @@
7126 (match_operand:SI 3 "const_int_operand" "i")]
7127 UNSPECV_LWPVAL_INTRINSIC)]
7129 - "/* Avoid unused variable warning. */
7130 - (void) operand0;")
7131 + ;; Avoid unused variable warning.
7132 + "(void) operands[0];")
7134 (define_insn "*lwp_lwpval<mode>3_1"
7135 [(unspec_volatile [(match_operand:SWI48 0 "register_operand" "r")
7136 Index: gcc/config/i386/sse.md
7137 ===================================================================
7138 --- gcc/config/i386/sse.md (.../tags/gcc_4_6_2_release) (wersja 182722)
7139 +++ gcc/config/i386/sse.md (.../branches/gcc-4_6-branch) (wersja 182722)
7140 @@ -4521,15 +4521,14 @@
7141 [(set (match_operand:V4DF 0 "register_operand" "=x,x")
7144 - (match_operand:V4DF 1 "nonimmediate_operand" "xm,x")
7145 - (match_operand:V4DF 2 "nonimmediate_operand" " 1,xm"))
7146 + (match_operand:V4DF 1 "nonimmediate_operand" " x,m")
7147 + (match_operand:V4DF 2 "nonimmediate_operand" "xm,1"))
7148 (parallel [(const_int 0) (const_int 4)
7149 (const_int 2) (const_int 6)])))]
7151 - && (!MEM_P (operands[1]) || rtx_equal_p (operands[1], operands[2]))"
7154 - vmovddup\t{%1, %0|%0, %1}
7155 - vunpcklpd\t{%2, %1, %0|%0, %1, %2}"
7156 + vunpcklpd\t{%2, %1, %0|%0, %1, %2}
7157 + vmovddup\t{%1, %0|%0, %1}"
7158 [(set_attr "type" "sselog")
7159 (set_attr "prefix" "vex")
7160 (set_attr "mode" "V4DF")])
7161 Index: gcc/config/i386/freebsd.h
7162 ===================================================================
7163 --- gcc/config/i386/freebsd.h (.../tags/gcc_4_6_2_release) (wersja 182722)
7164 +++ gcc/config/i386/freebsd.h (.../branches/gcc-4_6-branch) (wersja 182722)
7167 #define SUBTARGET32_DEFAULT_CPU "i486"
7170 +#define TARGET_ASM_FILE_END file_end_indicate_exec_stack
7172 Index: gcc/config/i386/avxintrin.h
7173 ===================================================================
7174 --- gcc/config/i386/avxintrin.h (.../tags/gcc_4_6_2_release) (wersja 182722)
7175 +++ gcc/config/i386/avxintrin.h (.../branches/gcc-4_6-branch) (wersja 182722)
7179 extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
7180 -_mm256_insert_epi64 (__m256i __X, int __D, int const __N)
7181 +_mm256_insert_epi64 (__m256i __X, long long __D, int const __N)
7183 __m128i __Y = _mm256_extractf128_si256 (__X, __N >> 1);
7184 __Y = _mm_insert_epi64 (__Y, __D, __N % 2);
7185 Index: gcc/config/i386/i386.c
7186 ===================================================================
7187 --- gcc/config/i386/i386.c (.../tags/gcc_4_6_2_release) (wersja 182722)
7188 +++ gcc/config/i386/i386.c (.../branches/gcc-4_6-branch) (wersja 182722)
7189 @@ -16329,7 +16329,6 @@
7190 basic_block bb = BLOCK_FOR_INSN (insn);
7193 - enum attr_type insn_type;
7195 if (insn != BB_HEAD (bb))
7197 @@ -16345,8 +16344,8 @@
7198 && (regno1 == DF_REF_REGNO (*def_rec)
7199 || regno2 == DF_REF_REGNO (*def_rec)))
7201 - insn_type = get_attr_type (prev);
7202 - if (insn_type != TYPE_LEA)
7203 + if (recog_memoized (prev) < 0
7204 + || get_attr_type (prev) != TYPE_LEA)
7208 @@ -16385,8 +16384,8 @@
7209 && (regno1 == DF_REF_REGNO (*def_rec)
7210 || regno2 == DF_REF_REGNO (*def_rec)))
7212 - insn_type = get_attr_type (prev);
7213 - if (insn_type != TYPE_LEA)
7214 + if (recog_memoized (prev) < 0
7215 + || get_attr_type (prev) != TYPE_LEA)
7219 Index: gcc/config/avr/libgcc.S
7220 ===================================================================
7221 --- gcc/config/avr/libgcc.S (.../tags/gcc_4_6_2_release) (wersja 182722)
7222 +++ gcc/config/avr/libgcc.S (.../branches/gcc-4_6-branch) (wersja 182722)
7223 @@ -582,7 +582,16 @@
7227 +#if defined (__AVR_HAVE_8BIT_SP__)
7228 +;; FIXME: __AVR_HAVE_8BIT_SP__ is set on device level, not on core level
7229 +;; so this lines are dead code. To make it work, devices without
7230 +;; SP_H must get their own multilib(s), see PR51345.
7242 out __SREG__,__tmp_reg__
7245 #if defined (__AVR_HAVE_EIJMP_EICALL__)
7248 @@ -625,6 +635,15 @@
7252 +#if defined (__AVR_HAVE_8BIT_SP__)
7253 +;; FIXME: __AVR_HAVE_8BIT_SP__ is set on device level, not on core level
7254 +;; so this lines are dead code. To make it work, devices without
7255 +;; SP_H must get their own multilib(s).
7263 adc r29,__zero_reg__
7271 #endif /* defined (L_epilogue) */
7272 Index: gcc/config/avr/avr.md
7273 ===================================================================
7274 --- gcc/config/avr/avr.md (.../tags/gcc_4_6_2_release) (wersja 182722)
7275 +++ gcc/config/avr/avr.md (.../branches/gcc-4_6-branch) (wersja 182722)
7277 [(set (match_operand:HI 0 "stack_register_operand" "=q")
7278 (unspec_volatile:HI [(match_operand:HI 1 "register_operand" "r")]
7279 UNSPECV_WRITE_SP_IRQ_OFF))]
7281 + "!AVR_HAVE_8BIT_SP"
7284 [(set_attr "length" "2")
7286 [(set (match_operand:HI 0 "stack_register_operand" "=q")
7287 (unspec_volatile:HI [(match_operand:HI 1 "register_operand" "r")]
7288 UNSPECV_WRITE_SP_IRQ_ON))]
7290 + "!AVR_HAVE_8BIT_SP"
7294 Index: gcc/config/avr/avr-devices.c
7295 ===================================================================
7296 --- gcc/config/avr/avr-devices.c (.../tags/gcc_4_6_2_release) (wersja 182722)
7297 +++ gcc/config/avr/avr-devices.c (.../branches/gcc-4_6-branch) (wersja 182722)
7299 { "attiny2313a", ARCH_AVR25, "__AVR_ATtiny2313A__", 1, 0x0060, "tn2313a" },
7300 { "attiny24", ARCH_AVR25, "__AVR_ATtiny24__", 1, 0x0060, "tn24" },
7301 { "attiny24a", ARCH_AVR25, "__AVR_ATtiny24A__", 1, 0x0060, "tn24a" },
7302 - { "attiny4313", ARCH_AVR25, "__AVR_ATtiny4313__", 1, 0x0060, "tn4313" },
7303 + { "attiny4313", ARCH_AVR25, "__AVR_ATtiny4313__", 0, 0x0060, "tn4313" },
7304 { "attiny44", ARCH_AVR25, "__AVR_ATtiny44__", 0, 0x0060, "tn44" },
7305 { "attiny44a", ARCH_AVR25, "__AVR_ATtiny44A__", 0, 0x0060, "tn44a" },
7306 { "attiny84", ARCH_AVR25, "__AVR_ATtiny84__", 0, 0x0060, "tn84" },
7308 { "attiny87", ARCH_AVR25, "__AVR_ATtiny87__", 0, 0x0100, "tn87" },
7309 { "attiny48", ARCH_AVR25, "__AVR_ATtiny48__", 0, 0x0100, "tn48" },
7310 { "attiny88", ARCH_AVR25, "__AVR_ATtiny88__", 0, 0x0100, "tn88" },
7311 - { "at86rf401", ARCH_AVR25, "__AVR_AT86RF401__", 1, 0x0060, "86401" },
7312 + { "at86rf401", ARCH_AVR25, "__AVR_AT86RF401__", 0, 0x0060, "86401" },
7313 /* Classic, > 8K, <= 64K. */
7314 { "avr3", ARCH_AVR3, NULL, 0, 0x0060, "43355" },
7315 { "at43usb355", ARCH_AVR3, "__AVR_AT43USB355__", 0, 0x0060, "43355" },
7316 Index: gcc/config/avr/avr.c
7317 ===================================================================
7318 --- gcc/config/avr/avr.c (.../tags/gcc_4_6_2_release) (wersja 182722)
7319 +++ gcc/config/avr/avr.c (.../branches/gcc-4_6-branch) (wersja 182722)
7320 @@ -1879,9 +1879,12 @@
7322 else if (test_hard_reg_class (STACK_REG, src))
7325 - return (AS2 (in,%A0,__SP_L__) CR_TAB
7326 - AS2 (in,%B0,__SP_H__));
7328 + return AVR_HAVE_8BIT_SP
7329 + ? (AS2 (in,%A0,__SP_L__) CR_TAB
7331 + : (AS2 (in,%A0,__SP_L__) CR_TAB
7332 + AS2 (in,%B0,__SP_H__));
7336 @@ -5173,10 +5176,10 @@
7338 default_file_start ();
7340 -/* fprintf (asm_out_file, "\t.arch %s\n", avr_mcu_name);*/
7341 - fputs ("__SREG__ = 0x3f\n"
7342 - "__SP_H__ = 0x3e\n"
7343 - "__SP_L__ = 0x3d\n", asm_out_file);
7344 + fputs ("__SREG__ = 0x3f\n", asm_out_file);
7345 + if (!AVR_HAVE_8BIT_SP)
7346 + fputs ("__SP_H__ = 0x3e\n", asm_out_file);
7347 + fputs ("__SP_L__ = 0x3d\n", asm_out_file);
7349 fputs ("__tmp_reg__ = 0\n"
7350 "__zero_reg__ = 1\n", asm_out_file);
7351 Index: gcc/config/rs6000/rs6000.c
7352 ===================================================================
7353 --- gcc/config/rs6000/rs6000.c (.../tags/gcc_4_6_2_release) (wersja 182722)
7354 +++ gcc/config/rs6000/rs6000.c (.../branches/gcc-4_6-branch) (wersja 182722)
7355 @@ -2612,6 +2612,7 @@
7357 rs6000_altivec_abi = 1;
7358 TARGET_ALTIVEC_VRSAVE = 1;
7359 + rs6000_current_abi = ABI_DARWIN;
7361 if (DEFAULT_ABI == ABI_DARWIN
7363 @@ -6824,6 +6825,7 @@
7365 && DEFAULT_ABI == ABI_DARWIN
7366 && (flag_pic || MACHO_DYNAMIC_NO_PIC_P)
7367 + && machopic_symbol_defined_p (x)
7369 && DEFAULT_ABI == ABI_V4
7371 @@ -16613,7 +16615,7 @@
7372 if (TARGET_RELOCATABLE
7373 && in_section != toc_section
7374 && in_section != text_section
7375 - && !unlikely_text_section_p (in_section)
7376 + && (in_section && (in_section->common.flags & SECTION_CODE)) == 0
7378 && GET_CODE (x) != CONST_INT
7379 && GET_CODE (x) != CONST_DOUBLE
7380 @@ -20227,7 +20229,7 @@
7382 /* This blockage is needed so that sched doesn't decide to move
7383 the sp change before the register restores. */
7384 - if (frame_reg_rtx != sp_reg_rtx
7385 + if (DEFAULT_ABI == ABI_V4
7387 && info->spe_64bit_regs_used != 0
7388 && info->first_gp_reg_save != 32))
7389 @@ -20644,56 +20646,52 @@
7392 rtx spe_save_area_ptr;
7394 + int save_ptr_to_sp;
7395 + int ool_adjust = 0;
7397 /* Determine whether we can address all of the registers that need
7398 - to be saved with an offset from the stack pointer that fits in
7399 + to be saved with an offset from frame_reg_rtx that fits in
7400 the small const field for SPE memory instructions. */
7401 - int spe_regs_addressable_via_sp
7402 - = (SPE_CONST_OFFSET_OK(info->spe_gp_save_offset + sp_offset
7403 - + (32 - info->first_gp_reg_save - 1) * reg_size)
7404 + int spe_regs_addressable
7405 + = (SPE_CONST_OFFSET_OK (info->spe_gp_save_offset + sp_offset
7406 + + reg_size * (32 - info->first_gp_reg_save - 1))
7407 && saving_GPRs_inline);
7410 - if (spe_regs_addressable_via_sp)
7412 + if (spe_regs_addressable)
7414 spe_save_area_ptr = frame_reg_rtx;
7415 + save_ptr_to_sp = info->total_size - sp_offset;
7416 spe_offset = info->spe_gp_save_offset + sp_offset;
7420 /* Make r11 point to the start of the SPE save area. We need
7421 to be careful here if r11 is holding the static chain. If
7422 - it is, then temporarily save it in r0. We would use r0 as
7423 - our base register here, but using r0 as a base register in
7424 - loads and stores means something different from what we
7426 - int ool_adjust = (saving_GPRs_inline
7428 - : (info->first_gp_reg_save
7429 - - (FIRST_SAVRES_REGISTER+1))*8);
7430 - HOST_WIDE_INT offset = (info->spe_gp_save_offset
7431 - + sp_offset - ool_adjust);
7432 + it is, then temporarily save it in r0. */
7435 + if (!saving_GPRs_inline)
7436 + ool_adjust = 8 * (info->first_gp_reg_save
7437 + - (FIRST_SAVRES_REGISTER + 1));
7438 + offset = info->spe_gp_save_offset + sp_offset - ool_adjust;
7439 + spe_save_area_ptr = gen_rtx_REG (Pmode, 11);
7440 + save_ptr_to_sp = info->total_size - sp_offset + offset;
7443 if (using_static_chain_p)
7445 rtx r0 = gen_rtx_REG (Pmode, 0);
7446 gcc_assert (info->first_gp_reg_save > 11);
7448 - emit_move_insn (r0, gen_rtx_REG (Pmode, 11));
7450 + emit_move_insn (r0, spe_save_area_ptr);
7453 - spe_save_area_ptr = gen_rtx_REG (Pmode, 11);
7454 - insn = emit_insn (gen_addsi3 (spe_save_area_ptr,
7456 - GEN_INT (offset)));
7457 - /* We need to make sure the move to r11 gets noted for
7458 - properly outputting unwind information. */
7459 - if (!saving_GPRs_inline)
7460 - rs6000_frame_related (insn, frame_reg_rtx, offset,
7461 - NULL_RTX, NULL_RTX);
7463 + emit_insn (gen_addsi3 (spe_save_area_ptr,
7464 + frame_reg_rtx, GEN_INT (offset)));
7465 + if (REGNO (frame_reg_rtx) == 11)
7466 + sp_offset = -info->spe_gp_save_offset + ool_adjust;
7470 if (saving_GPRs_inline)
7472 for (i = 0; i < 32 - info->first_gp_reg_save; i++)
7473 @@ -20705,36 +20703,34 @@
7474 /* We're doing all this to ensure that the offset fits into
7475 the immediate offset of 'evstdd'. */
7476 gcc_assert (SPE_CONST_OFFSET_OK (reg_size * i + spe_offset));
7479 offset = GEN_INT (reg_size * i + spe_offset);
7480 addr = gen_rtx_PLUS (Pmode, spe_save_area_ptr, offset);
7481 mem = gen_rtx_MEM (V2SImode, addr);
7484 insn = emit_move_insn (mem, reg);
7486 - rs6000_frame_related (insn, spe_save_area_ptr,
7487 - info->spe_gp_save_offset
7488 - + sp_offset + reg_size * i,
7489 - offset, const0_rtx);
7491 + rs6000_frame_related (insn,
7492 + spe_save_area_ptr, save_ptr_to_sp,
7493 + NULL_RTX, NULL_RTX);
7500 - par = rs6000_make_savres_rtx (info, gen_rtx_REG (Pmode, 11),
7502 + par = rs6000_make_savres_rtx (info, spe_save_area_ptr,
7503 + ool_adjust, reg_mode,
7504 /*savep=*/true, /*gpr=*/true,
7506 insn = emit_insn (par);
7507 - rs6000_frame_related (insn, frame_ptr_rtx, info->total_size,
7508 + rs6000_frame_related (insn, spe_save_area_ptr, save_ptr_to_sp,
7509 NULL_RTX, NULL_RTX);
7514 /* Move the static chain pointer back. */
7515 - if (using_static_chain_p && !spe_regs_addressable_via_sp)
7516 - emit_move_insn (gen_rtx_REG (Pmode, 11), gen_rtx_REG (Pmode, 0));
7517 + if (using_static_chain_p && !spe_regs_addressable)
7518 + emit_move_insn (spe_save_area_ptr, gen_rtx_REG (Pmode, 0));
7520 else if (!WORLD_SAVE_P (info) && !saving_GPRs_inline)
7522 @@ -20743,10 +20739,12 @@
7523 /* Need to adjust r11 (r12) if we saved any FPRs. */
7524 if (info->first_fp_reg_save != 64)
7526 - rtx dest_reg = gen_rtx_REG (reg_mode, DEFAULT_ABI == ABI_AIX
7528 - rtx offset = GEN_INT (sp_offset
7529 - + (-8 * (64-info->first_fp_reg_save)));
7530 + rtx dest_reg = gen_rtx_REG (Pmode, DEFAULT_ABI == ABI_AIX ? 12 : 11);
7531 + int save_off = 8 * (64 - info->first_fp_reg_save);
7532 + rtx offset = GEN_INT (sp_offset - save_off);
7534 + if (REGNO (dest_reg) == REGNO (frame_reg_rtx))
7535 + sp_offset = save_off;
7536 emit_insn (gen_add3_insn (dest_reg, frame_reg_rtx, offset));
7539 @@ -21622,40 +21620,39 @@
7540 && info->first_gp_reg_save != 32)
7542 /* Determine whether we can address all of the registers that need
7543 - to be saved with an offset from the stack pointer that fits in
7544 - the small const field for SPE memory instructions. */
7545 - int spe_regs_addressable_via_sp
7546 - = (SPE_CONST_OFFSET_OK(info->spe_gp_save_offset + sp_offset
7547 - + (32 - info->first_gp_reg_save - 1) * reg_size)
7548 + to be saved with an offset from frame_reg_rtx that fits in
7549 + the small const field for SPE memory instructions. */
7550 + int spe_regs_addressable
7551 + = (SPE_CONST_OFFSET_OK (info->spe_gp_save_offset + sp_offset
7552 + + reg_size * (32 - info->first_gp_reg_save - 1))
7553 && restoring_GPRs_inline);
7555 + int ool_adjust = 0;
7557 - if (spe_regs_addressable_via_sp)
7558 + if (spe_regs_addressable)
7559 spe_offset = info->spe_gp_save_offset + sp_offset;
7563 rtx old_frame_reg_rtx = frame_reg_rtx;
7564 - /* Make r11 point to the start of the SPE save area. We worried about
7565 - not clobbering it when we were saving registers in the prologue.
7566 - There's no need to worry here because the static chain is passed
7567 - anew to every function. */
7568 - int ool_adjust = (restoring_GPRs_inline
7570 - : (info->first_gp_reg_save
7571 - - (FIRST_SAVRES_REGISTER+1))*8);
7572 + /* Make r11 point to the start of the SPE save area. We worried about
7573 + not clobbering it when we were saving registers in the prologue.
7574 + There's no need to worry here because the static chain is passed
7575 + anew to every function. */
7577 - if (frame_reg_rtx == sp_reg_rtx)
7578 - frame_reg_rtx = gen_rtx_REG (Pmode, 11);
7579 - emit_insn (gen_addsi3 (frame_reg_rtx, old_frame_reg_rtx,
7580 + if (!restoring_GPRs_inline)
7581 + ool_adjust = 8 * (info->first_gp_reg_save
7582 + - (FIRST_SAVRES_REGISTER + 1));
7583 + frame_reg_rtx = gen_rtx_REG (Pmode, 11);
7584 + emit_insn (gen_addsi3 (frame_reg_rtx, old_frame_reg_rtx,
7585 GEN_INT (info->spe_gp_save_offset
7588 /* Keep the invariant that frame_reg_rtx + sp_offset points
7589 at the top of the stack frame. */
7590 - sp_offset = -info->spe_gp_save_offset;
7591 + sp_offset = -info->spe_gp_save_offset + ool_adjust;
7598 if (restoring_GPRs_inline)
7600 @@ -21695,8 +21692,8 @@
7604 - par = rs6000_make_savres_rtx (info, gen_rtx_REG (Pmode, 11),
7606 + par = rs6000_make_savres_rtx (info, frame_reg_rtx,
7607 + ool_adjust, reg_mode,
7608 /*savep=*/false, /*gpr=*/true,
7610 emit_jump_insn (par);
7611 @@ -21717,12 +21714,12 @@
7612 sp_offset, can_use_exit);
7615 - emit_insn (gen_add3_insn (gen_rtx_REG (Pmode, DEFAULT_ABI == ABI_AIX
7618 + rtx src_reg = gen_rtx_REG (Pmode, DEFAULT_ABI == ABI_AIX ? 12 : 11);
7620 + emit_insn (gen_add3_insn (src_reg, frame_reg_rtx,
7621 GEN_INT (sp_offset - info->fp_size)));
7622 - if (REGNO (frame_reg_rtx) == 11)
7623 - sp_offset += info->fp_size;
7624 + if (REGNO (frame_reg_rtx) == REGNO (src_reg))
7625 + sp_offset = info->fp_size;
7628 par = rs6000_make_savres_rtx (info, frame_reg_rtx,
7629 Index: gcc/config/darwin.c
7630 ===================================================================
7631 --- gcc/config/darwin.c (.../tags/gcc_4_6_2_release) (wersja 182722)
7632 +++ gcc/config/darwin.c (.../branches/gcc-4_6-branch) (wersja 182722)
7633 @@ -1753,19 +1753,51 @@
7634 return (!strncmp ((const char *)p, "_OBJC_", 6));
7637 -/* LTO support for Mach-O. */
7638 +/* LTO support for Mach-O.
7640 -/* Section names for LTO sections. */
7641 -static unsigned int lto_section_names_offset = 0;
7642 + This version uses three mach-o sections to encapsulate the (unlimited
7643 + number of) lto sections.
7645 -/* This is the obstack which we use to allocate the many strings. */
7646 -static struct obstack lto_section_names_obstack;
7647 + __GNU_LTO, __lto_sections contains the concatented GNU LTO section data.
7648 + __GNU_LTO, __section_names contains the GNU LTO section names.
7649 + __GNU_LTO, __section_index contains an array of values that index these.
7651 -/* Segment name for LTO sections. */
7653 + <section offset from the start of __GNU_LTO, __lto_sections>,
7655 + <name offset from the start of __GNU_LTO, __section_names,
7658 + At present, for both m32 and m64 mach-o files each of these fields is
7659 + represented by a uint32_t. This is because, AFAICT, a mach-o object
7660 + cannot exceed 4Gb because the section_64 offset field (see below) is 32bits.
7663 + "offset An integer specifying the offset to this section in the file." */
7665 +/* Count lto section numbers. */
7666 +static unsigned int lto_section_num = 0;
7668 +/* A vector of information about LTO sections, at present, we only have
7669 + the name. TODO: see if we can get the data length somehow. */
7670 +typedef struct GTY (()) darwin_lto_section_e {
7671 + const char *sectname;
7672 +} darwin_lto_section_e ;
7673 +DEF_VEC_O(darwin_lto_section_e);
7674 +DEF_VEC_ALLOC_O(darwin_lto_section_e, gc);
7676 +static GTY (()) VEC (darwin_lto_section_e, gc) * lto_section_names;
7678 +/* Segment for LTO data. */
7679 #define LTO_SEGMENT_NAME "__GNU_LTO"
7681 -/* Section name for LTO section names section. */
7682 -#define LTO_NAMES_SECTION "__section_names"
7683 +/* Section wrapper scheme (used here to wrap the unlimited number of LTO
7684 + sections into three Mach-O ones).
7685 + NOTE: These names MUST be kept in sync with those in
7686 + libiberty/simple-object-mach-o. */
7687 +#define LTO_SECTS_SECTION "__wrapper_sects"
7688 +#define LTO_NAMES_SECTION "__wrapper_names"
7689 +#define LTO_INDEX_SECTION "__wrapper_index"
7691 /* File to temporarily store LTO data. This is appended to asm_out_file
7692 in darwin_end_file. */
7693 @@ -1808,37 +1840,38 @@
7695 tree decl ATTRIBUTE_UNUSED)
7697 - /* LTO sections go in a special segment __GNU_LTO. We want to replace the
7698 - section name with something we can use to represent arbitrary-length
7699 - names (section names in Mach-O are at most 16 characters long). */
7700 + /* LTO sections go in a special section that encapsulates the (unlimited)
7701 + number of GNU LTO sections within a single mach-o one. */
7702 if (strncmp (name, LTO_SECTION_NAME_PREFIX,
7703 strlen (LTO_SECTION_NAME_PREFIX)) == 0)
7705 + darwin_lto_section_e e;
7706 /* We expect certain flags to be set... */
7707 gcc_assert ((flags & (SECTION_DEBUG | SECTION_NAMED))
7708 == (SECTION_DEBUG | SECTION_NAMED));
7710 - /* Add the section name to the things to output when we end the
7711 - current assembler output file.
7712 - This is all not very efficient, but that doesn't matter -- this
7713 - shouldn't be a hot path in the compiler... */
7714 - obstack_1grow (<o_section_names_obstack, '\t');
7715 - obstack_grow (<o_section_names_obstack, ".ascii ", 7);
7716 - obstack_1grow (<o_section_names_obstack, '"');
7717 - obstack_grow (<o_section_names_obstack, name, strlen (name));
7718 - obstack_grow (<o_section_names_obstack, "\\0\"\n", 4);
7720 - /* Output the dummy section name. */
7721 - fprintf (asm_out_file, "\t# %s\n", name);
7722 - fprintf (asm_out_file, "\t.section %s,__%08X,regular,debug\n",
7723 - LTO_SEGMENT_NAME, lto_section_names_offset);
7725 - /* Update the offset for the next section name. Make sure we stay
7726 - within reasonable length. */
7727 - lto_section_names_offset += strlen (name) + 1;
7728 - gcc_assert (lto_section_names_offset > 0
7729 - && lto_section_names_offset < ((unsigned) 1 << 31));
7731 + /* Switch to our combined section. */
7732 + fprintf (asm_out_file, "\t.section %s,%s,regular,debug\n",
7733 + LTO_SEGMENT_NAME, LTO_SECTS_SECTION);
7734 + /* Output a label for the start of this sub-section. */
7735 + fprintf (asm_out_file, "L_GNU_LTO%d:\t;# %s\n",
7736 + lto_section_num, name);
7737 + /* We have to jump through hoops to get the values of the intra-section
7739 + fprintf (asm_out_file, "\t.set L$gnu$lto$offs%d,L_GNU_LTO%d-L_GNU_LTO0\n",
7740 + lto_section_num, lto_section_num);
7741 + fprintf (asm_out_file,
7742 + "\t.set L$gnu$lto$size%d,L_GNU_LTO%d-L_GNU_LTO%d\n",
7743 + lto_section_num, lto_section_num+1, lto_section_num);
7744 + lto_section_num++;
7745 + e.sectname = xstrdup (name);
7746 + /* Keep the names, we'll need to make a table later.
7747 + TODO: check that we do not revisit sections, that would break
7748 + the assumption of how this is done. */
7749 + if (lto_section_names == NULL)
7750 + lto_section_names = VEC_alloc (darwin_lto_section_e, gc, 16);
7751 + VEC_safe_push (darwin_lto_section_e, gc, lto_section_names, &e);
7753 else if (strncmp (name, "__DWARF,", 8) == 0)
7754 darwin_asm_dwarf_section (name, flags, decl);
7756 @@ -2711,16 +2744,12 @@
7757 darwin_asm_output_dwarf_delta (file, size, lab, sname);
7760 -/* Called from the within the TARGET_ASM_FILE_START for each target.
7761 - Initialize the stuff we need for LTO long section names support. */
7762 +/* Called from the within the TARGET_ASM_FILE_START for each target. */
7765 darwin_file_start (void)
7767 - /* We fill this obstack with the complete section text for the lto section
7768 - names to write in darwin_file_end. */
7769 - obstack_init (<o_section_names_obstack);
7770 - lto_section_names_offset = 0;
7771 + /* Nothing to do. */
7774 /* Called for the TARGET_ASM_FILE_END hook.
7775 @@ -2731,8 +2760,6 @@
7777 darwin_file_end (void)
7779 - const char *lto_section_names;
7781 machopic_finish (asm_out_file);
7782 if (strcmp (lang_hooks.name, "GNU C++") == 0)
7784 @@ -2762,6 +2789,13 @@
7785 lto_asm_txt = buf = (char *) xmalloc (n + 1);
7786 while (fgets (lto_asm_txt, n, lto_asm_out_file))
7787 fputs (lto_asm_txt, asm_out_file);
7788 + /* Put a termination label. */
7789 + fprintf (asm_out_file, "\t.section %s,%s,regular,debug\n",
7790 + LTO_SEGMENT_NAME, LTO_SECTS_SECTION);
7791 + fprintf (asm_out_file, "L_GNU_LTO%d:\t;# end of lto\n",
7793 + /* Make sure our termination label stays in this section. */
7794 + fputs ("\t.space\t1\n", asm_out_file);
7797 /* Remove the temporary file. */
7798 @@ -2770,21 +2804,50 @@
7799 free (lto_asm_out_name);
7802 - /* Finish the LTO section names obstack. Don't output anything if
7803 - there are no recorded section names. */
7804 - obstack_1grow (<o_section_names_obstack, '\0');
7805 - lto_section_names = XOBFINISH (<o_section_names_obstack, const char *);
7806 - if (strlen (lto_section_names) > 0)
7807 + /* Output the names and indices. */
7808 + if (lto_section_names && VEC_length (darwin_lto_section_e, lto_section_names))
7810 - fprintf (asm_out_file,
7811 - "\t.section %s,%s,regular,debug\n",
7813 + darwin_lto_section_e *ref;
7814 + /* For now, we'll make the offsets 4 bytes and unaligned - we'll fix
7815 + the latter up ourselves. */
7816 + const char *op = integer_asm_op (4,0);
7818 + /* Emit the names. */
7819 + fprintf (asm_out_file, "\t.section %s,%s,regular,debug\n",
7820 LTO_SEGMENT_NAME, LTO_NAMES_SECTION);
7821 - fprintf (asm_out_file,
7822 - "\t# Section names in %s are offsets into this table\n",
7823 - LTO_SEGMENT_NAME);
7824 - fprintf (asm_out_file, "%s\n", lto_section_names);
7825 + FOR_EACH_VEC_ELT (darwin_lto_section_e, lto_section_names, count, ref)
7827 + fprintf (asm_out_file, "L_GNU_LTO_NAME%d:\n", count);
7828 + /* We have to jump through hoops to get the values of the intra-section
7830 + fprintf (asm_out_file,
7831 + "\t.set L$gnu$lto$noff%d,L_GNU_LTO_NAME%d-L_GNU_LTO_NAME0\n",
7833 + fprintf (asm_out_file,
7834 + "\t.set L$gnu$lto$nsiz%d,L_GNU_LTO_NAME%d-L_GNU_LTO_NAME%d\n",
7835 + count, count+1, count);
7836 + fprintf (asm_out_file, "\t.asciz\t\"%s\"\n", ref->sectname);
7838 + fprintf (asm_out_file, "L_GNU_LTO_NAME%d:\t;# end\n", lto_section_num);
7839 + /* make sure our termination label stays in this section. */
7840 + fputs ("\t.space\t1\n", asm_out_file);
7842 + /* Emit the Index. */
7843 + fprintf (asm_out_file, "\t.section %s,%s,regular,debug\n",
7844 + LTO_SEGMENT_NAME, LTO_INDEX_SECTION);
7845 + fputs ("\t.align\t2\n", asm_out_file);
7846 + fputs ("# Section offset, Section length, Name offset, Name length\n",
7848 + FOR_EACH_VEC_ELT (darwin_lto_section_e, lto_section_names, count, ref)
7850 + fprintf (asm_out_file, "%s L$gnu$lto$offs%d\t;# %s\n",
7851 + op, count, ref->sectname);
7852 + fprintf (asm_out_file, "%s L$gnu$lto$size%d\n", op, count);
7853 + fprintf (asm_out_file, "%s L$gnu$lto$noff%d\n", op, count);
7854 + fprintf (asm_out_file, "%s L$gnu$lto$nsiz%d\n", op, count);
7857 - obstack_free (<o_section_names_obstack, NULL);
7859 /* If we have section anchors, then we must prevent the linker from
7860 re-arranging data. */
7861 Index: gcc/config/arm/arm.c
7862 ===================================================================
7863 --- gcc/config/arm/arm.c (.../tags/gcc_4_6_2_release) (wersja 182722)
7864 +++ gcc/config/arm/arm.c (.../branches/gcc-4_6-branch) (wersja 182722)
7865 @@ -5077,6 +5077,14 @@
7866 if (IS_STACKALIGN (func_type))
7869 + /* The AAPCS says that, on bare-metal, calls to unresolved weak
7870 + references should become a NOP. Don't convert such calls into
7872 + if (TARGET_AAPCS_BASED
7873 + && arm_abi == ARM_ABI_AAPCS
7874 + && DECL_WEAK (decl))
7877 /* Everything else is ok. */
7880 @@ -9812,6 +9820,9 @@
7881 rtx base_reg_rtx = NULL;
7884 + /* Write back of base register is currently only supported for Thumb 1. */
7885 + int base_writeback = TARGET_THUMB1;
7887 /* Can only handle up to MAX_LDM_STM_OPS insns at present, though could be
7888 easily extended if required. */
7889 gcc_assert (nops >= 2 && nops <= MAX_LDM_STM_OPS);
7890 @@ -9869,7 +9880,9 @@
7891 /* If it isn't an integer register, then we can't do this. */
7892 if (unsorted_regs[i] < 0
7893 || (TARGET_THUMB1 && unsorted_regs[i] > LAST_LO_REGNUM)
7894 - || (TARGET_THUMB2 && unsorted_regs[i] == base_reg)
7895 + /* The effects are unpredictable if the base register is
7896 + both updated and stored. */
7897 + || (base_writeback && unsorted_regs[i] == base_reg)
7898 || (TARGET_THUMB2 && unsorted_regs[i] == SP_REGNUM)
7899 || unsorted_regs[i] > 14)
7901 @@ -19571,39 +19584,34 @@
7902 emit_move_insn (mem, tmp2);
7905 -/* Set up operands for a register copy from src to dest, taking care not to
7906 - clobber registers in the process.
7907 - FIXME: This has rather high polynomial complexity (O(n^3)?) but shouldn't
7908 - be called with a large N, so that should be OK. */
7909 +/* Set up OPERANDS for a register copy from SRC to DEST, taking care
7910 + not to early-clobber SRC registers in the process.
7912 + We assume that the operands described by SRC and DEST represent a
7913 + decomposed copy of OPERANDS[1] into OPERANDS[0]. COUNT is the
7914 + number of components into which the copy has been decomposed. */
7916 neon_disambiguate_copy (rtx *operands, rtx *dest, rtx *src, unsigned int count)
7918 - unsigned int copied = 0, opctr = 0;
7919 - unsigned int done = (1 << count) - 1;
7920 - unsigned int i, j;
7923 - while (copied != done)
7924 + if (!reg_overlap_mentioned_p (operands[0], operands[1])
7925 + || REGNO (operands[0]) < REGNO (operands[1]))
7927 for (i = 0; i < count; i++)
7931 - for (j = 0; good && j < count; j++)
7932 - if (i != j && (copied & (1 << j)) == 0
7933 - && reg_overlap_mentioned_p (src[j], dest[i]))
7938 - operands[opctr++] = dest[i];
7939 - operands[opctr++] = src[i];
7944 + operands[2 * i] = dest[i];
7945 + operands[2 * i + 1] = src[i];
7949 - gcc_assert (opctr == count * 2);
7952 + for (i = 0; i < count; i++)
7954 + operands[2 * i] = dest[count - i - 1];
7955 + operands[2 * i + 1] = src[count - i - 1];
7960 /* Expand an expression EXP that calls a built-in function,
7961 Index: gcc/config/arm/arm.md
7962 ===================================================================
7963 --- gcc/config/arm/arm.md (.../tags/gcc_4_6_2_release) (wersja 182722)
7964 +++ gcc/config/arm/arm.md (.../branches/gcc-4_6-branch) (wersja 182722)
7965 @@ -3272,7 +3272,7 @@
7968 if (which_alternative != 0 || operands[3] != const0_rtx
7969 - || (code != PLUS && code != MINUS && code != IOR && code != XOR))
7970 + || (code != PLUS && code != IOR && code != XOR))
7974 Index: gcc/config/pa/pa.c
7975 ===================================================================
7976 --- gcc/config/pa/pa.c (.../tags/gcc_4_6_2_release) (wersja 182722)
7977 +++ gcc/config/pa/pa.c (.../branches/gcc-4_6-branch) (wersja 182722)
7978 @@ -1863,6 +1863,11 @@
7979 /* Handle the most common case: storing into a register. */
7980 else if (register_operand (operand0, mode))
7982 + /* Legitimize TLS symbol references. This happens for references
7983 + that aren't a legitimate constant. */
7984 + if (PA_SYMBOL_REF_TLS_P (operand1))
7985 + operand1 = legitimize_tls_address (operand1);
7987 if (register_operand (operand1, mode)
7988 || (GET_CODE (operand1) == CONST_INT
7989 && cint_ok_for_move (INTVAL (operand1)))
7990 Index: gcc/config/pa/pa.h
7991 ===================================================================
7992 --- gcc/config/pa/pa.h (.../tags/gcc_4_6_2_release) (wersja 182722)
7993 +++ gcc/config/pa/pa.h (.../branches/gcc-4_6-branch) (wersja 182722)
7995 && (NEW_HP_ASSEMBLER \
7997 || GET_CODE (X) != LABEL_REF) \
7998 + && (!PA_SYMBOL_REF_TLS_P (X) \
7999 + || (SYMBOL_REF_TLS_MODEL (X) != TLS_MODEL_GLOBAL_DYNAMIC \
8000 + && SYMBOL_REF_TLS_MODEL (X) != TLS_MODEL_LOCAL_DYNAMIC)) \
8002 || GET_CODE (X) != CONST_DOUBLE) \
8004 Index: gcc/reload1.c
8005 ===================================================================
8006 --- gcc/reload1.c (.../tags/gcc_4_6_2_release) (wersja 182722)
8007 +++ gcc/reload1.c (.../branches/gcc-4_6-branch) (wersja 182722)
8008 @@ -3899,6 +3899,10 @@
8010 set_label_offsets (XEXP (x, 0), NULL_RTX, 1);
8012 + for (x = nonlocal_goto_handler_labels; x; x = XEXP (x, 1))
8014 + set_label_offsets (XEXP (x, 0), NULL_RTX, 1);
8016 for_each_eh_label (set_initial_eh_label_offset);
8019 Index: zlib/configure
8020 ===================================================================
8021 --- zlib/configure (.../tags/gcc_4_6_2_release) (wersja 182722)
8022 +++ zlib/configure (.../branches/gcc-4_6-branch) (wersja 182722)
8023 @@ -8600,7 +8600,7 @@
8026 # Unfortunately, older versions of FreeBSD 2 do not have this feature.
8029 archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
8031 hardcode_minus_L=yes
8032 @@ -9516,7 +9516,7 @@
8033 objformat=`/usr/bin/objformat`
8036 - freebsd[123]*) objformat=aout ;;
8037 + freebsd[23].*) objformat=aout ;;
8041 @@ -9534,7 +9534,7 @@
8043 shlibpath_var=LD_LIBRARY_PATH
8047 shlibpath_overrides_runpath=yes
8049 freebsd3.[01]* | freebsdelf3.[01]*)
8050 Index: zlib/ChangeLog
8051 ===================================================================
8052 --- zlib/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 182722)
8053 +++ zlib/ChangeLog (.../branches/gcc-4_6-branch) (wersja 182722)
8055 +2011-11-20 Andreas Tobler <andreast@fgznet.ch>
8057 + * configure: Regenerate.
8059 2011-10-26 Release Manager
8061 * GCC 4.6.2 released.
8062 Index: libstdc++-v3/configure
8063 ===================================================================
8064 --- libstdc++-v3/configure (.../tags/gcc_4_6_2_release) (wersja 182722)
8065 +++ libstdc++-v3/configure (.../branches/gcc-4_6-branch) (wersja 182722)
8066 @@ -9698,7 +9698,7 @@
8069 # Unfortunately, older versions of FreeBSD 2 do not have this feature.
8072 archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
8074 hardcode_minus_L=yes
8075 @@ -10614,7 +10614,7 @@
8076 objformat=`/usr/bin/objformat`
8079 - freebsd[123]*) objformat=aout ;;
8080 + freebsd[23].*) objformat=aout ;;
8084 @@ -10632,7 +10632,7 @@
8086 shlibpath_var=LD_LIBRARY_PATH
8090 shlibpath_overrides_runpath=yes
8092 freebsd3.[01]* | freebsdelf3.[01]*)
8093 @@ -12522,7 +12522,7 @@
8099 # C++ shared libraries reported to be fairly broken before
8102 @@ -14297,7 +14297,7 @@
8103 objformat=`/usr/bin/objformat`
8106 - freebsd[123]*) objformat=aout ;;
8107 + freebsd[23].*) objformat=aout ;;
8111 @@ -14315,7 +14315,7 @@
8113 shlibpath_var=LD_LIBRARY_PATH
8117 shlibpath_overrides_runpath=yes
8119 freebsd3.[01]* | freebsdelf3.[01]*)
8120 Index: libstdc++-v3/include/debug/unordered_map
8121 ===================================================================
8122 --- libstdc++-v3/include/debug/unordered_map (.../tags/gcc_4_6_2_release) (wersja 182722)
8123 +++ libstdc++-v3/include/debug/unordered_map (.../branches/gcc-4_6-branch) (wersja 182722)
8124 @@ -276,6 +276,10 @@
8128 + erase(iterator __it)
8129 + { return erase(const_iterator(__it)); }
8132 erase(const_iterator __first, const_iterator __last)
8134 __glibcxx_check_erase_range(__first, __last);
8135 @@ -558,6 +562,10 @@
8139 + erase(iterator __it)
8140 + { return erase(const_iterator(__it)); }
8143 erase(const_iterator __first, const_iterator __last)
8145 __glibcxx_check_erase_range(__first, __last);
8146 Index: libstdc++-v3/include/debug/unordered_set
8147 ===================================================================
8148 --- libstdc++-v3/include/debug/unordered_set (.../tags/gcc_4_6_2_release) (wersja 182722)
8149 +++ libstdc++-v3/include/debug/unordered_set (.../branches/gcc-4_6-branch) (wersja 182722)
8150 @@ -269,6 +269,10 @@
8154 + erase(iterator __it)
8155 + { return erase(const_iterator(__it)); }
8158 erase(const_iterator __first, const_iterator __last)
8160 __glibcxx_check_erase_range(__first, __last);
8161 @@ -539,6 +543,10 @@
8165 + erase(iterator __it)
8166 + { return erase(const_iterator(__it)); }
8169 erase(const_iterator __first, const_iterator __last)
8171 __glibcxx_check_erase_range(__first, __last);
8172 Index: libstdc++-v3/include/debug/map.h
8173 ===================================================================
8174 --- libstdc++-v3/include/debug/map.h (.../tags/gcc_4_6_2_release) (wersja 182722)
8175 +++ libstdc++-v3/include/debug/map.h (.../branches/gcc-4_6-branch) (wersja 182722)
8176 @@ -273,6 +273,10 @@
8177 this->_M_invalidate_if(_Equal(__position.base()));
8178 return iterator(_Base::erase(__position.base()), this);
8182 + erase(iterator __position)
8183 + { return erase(const_iterator(__position)); }
8186 erase(iterator __position)
8187 Index: libstdc++-v3/include/debug/multimap.h
8188 ===================================================================
8189 --- libstdc++-v3/include/debug/multimap.h (.../tags/gcc_4_6_2_release) (wersja 182722)
8190 +++ libstdc++-v3/include/debug/multimap.h (.../branches/gcc-4_6-branch) (wersja 182722)
8191 @@ -254,6 +254,10 @@
8192 this->_M_invalidate_if(_Equal(__position.base()));
8193 return iterator(_Base::erase(__position.base()), this);
8197 + erase(iterator __position)
8198 + { return erase(const_iterator(__position)); }
8201 erase(iterator __position)
8202 Index: libstdc++-v3/include/std/condition_variable
8203 ===================================================================
8204 --- libstdc++-v3/include/std/condition_variable (.../tags/gcc_4_6_2_release) (wersja 182722)
8205 +++ libstdc++-v3/include/std/condition_variable (.../branches/gcc-4_6-branch) (wersja 182722)
8206 @@ -198,10 +198,25 @@
8210 - unique_lock<mutex> __my_lock(_M_mutex);
8212 - _M_cond.wait(__my_lock);
8214 + // scoped unlock - unlocks in ctor, re-locks in dtor
8216 + explicit _Unlock(_Lock& __lk) : _M_lock(__lk) { __lk.unlock(); }
8217 + ~_Unlock() noexcept(false)
8219 + if (uncaught_exception())
8220 + __try { _M_lock.lock(); } __catch(...) { }
8227 + unique_lock<mutex> __my_lock(_M_mutex);
8228 + _Unlock __unlock(__lock);
8229 + // _M_mutex must be unlocked before re-locking __lock so move
8230 + // ownership of _M_mutex lock to an object with shorter lifetime.
8231 + unique_lock<mutex> __my_lock2(std::move(__my_lock));
8232 + _M_cond.wait(__my_lock2);
8236 Index: libstdc++-v3/include/std/complex
8237 ===================================================================
8238 --- libstdc++-v3/include/std/complex (.../tags/gcc_4_6_2_release) (wersja 182722)
8239 +++ libstdc++-v3/include/std/complex (.../branches/gcc-4_6-branch) (wersja 182722)
8241 // The template and inlines for the -*- C++ -*- complex number classes.
8243 // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
8244 -// 2006, 2007, 2008, 2009, 2010
8245 +// 2006, 2007, 2008, 2009, 2010, 2011
8246 // Free Software Foundation, Inc.
8248 // This file is part of the GNU ISO C++ Library. This library is free
8249 @@ -1695,12 +1695,9 @@
8251 __complex_acosh(const std::complex<_Tp>& __z)
8253 - std::complex<_Tp> __t((__z.real() - __z.imag())
8254 - * (__z.real() + __z.imag()) - _Tp(1.0),
8255 - _Tp(2.0) * __z.real() * __z.imag());
8256 - __t = std::sqrt(__t);
8258 - return std::log(__t + __z);
8259 + // Kahan's formula.
8260 + return _Tp(2.0) * std::log(std::sqrt(_Tp(0.5) * (__z + _Tp(1.0)))
8261 + + std::sqrt(_Tp(0.5) * (__z - _Tp(1.0))));
8264 #if _GLIBCXX_USE_C99_COMPLEX_TR1
8265 Index: libstdc++-v3/include/ext/type_traits.h
8266 ===================================================================
8267 --- libstdc++-v3/include/ext/type_traits.h (.../tags/gcc_4_6_2_release) (wersja 182722)
8268 +++ libstdc++-v3/include/ext/type_traits.h (.../branches/gcc-4_6-branch) (wersja 182722)
8272 -// Copyright (C) 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
8273 +// Copyright (C) 2005, 2006, 2007, 2009, 2010, 2011
8274 +// Free Software Foundation, Inc.
8276 // This file is part of the GNU ISO C++ Library. This library is free
8277 // software; you can redistribute it and/or modify it under the terms
8278 @@ -161,44 +162,50 @@
8280 { typedef double __type; };
8282 + // No nested __type member for non-integer non-floating point types,
8283 + // allows this type to be used for SFINAE to constrain overloads in
8284 + // <cmath> and <complex> to only the intended types.
8285 template<typename _Tp>
8286 struct __promote<_Tp, false>
8287 - { typedef _Tp __type; };
8290 - template<typename _Tp, typename _Up>
8292 + struct __promote<long double>
8293 + { typedef long double __type; };
8296 + struct __promote<double>
8297 + { typedef double __type; };
8300 + struct __promote<float>
8301 + { typedef float __type; };
8303 + template<typename _Tp, typename _Up,
8304 + typename _Tp2 = typename __promote<_Tp>::__type,
8305 + typename _Up2 = typename __promote<_Up>::__type>
8309 - typedef typename __promote<_Tp>::__type __type1;
8310 - typedef typename __promote<_Up>::__type __type2;
8313 - typedef __typeof__(__type1() + __type2()) __type;
8314 + typedef __typeof__(_Tp2() + _Up2()) __type;
8317 - template<typename _Tp, typename _Up, typename _Vp>
8318 + template<typename _Tp, typename _Up, typename _Vp,
8319 + typename _Tp2 = typename __promote<_Tp>::__type,
8320 + typename _Up2 = typename __promote<_Up>::__type,
8321 + typename _Vp2 = typename __promote<_Vp>::__type>
8325 - typedef typename __promote<_Tp>::__type __type1;
8326 - typedef typename __promote<_Up>::__type __type2;
8327 - typedef typename __promote<_Vp>::__type __type3;
8330 - typedef __typeof__(__type1() + __type2() + __type3()) __type;
8331 + typedef __typeof__(_Tp2() + _Up2() + _Vp2()) __type;
8334 - template<typename _Tp, typename _Up, typename _Vp, typename _Wp>
8335 + template<typename _Tp, typename _Up, typename _Vp, typename _Wp,
8336 + typename _Tp2 = typename __promote<_Tp>::__type,
8337 + typename _Up2 = typename __promote<_Up>::__type,
8338 + typename _Vp2 = typename __promote<_Vp>::__type,
8339 + typename _Wp2 = typename __promote<_Wp>::__type>
8343 - typedef typename __promote<_Tp>::__type __type1;
8344 - typedef typename __promote<_Up>::__type __type2;
8345 - typedef typename __promote<_Vp>::__type __type3;
8346 - typedef typename __promote<_Wp>::__type __type4;
8349 - typedef __typeof__(__type1() + __type2() + __type3() + __type4()) __type;
8350 + typedef __typeof__(_Tp2() + _Up2() + _Vp2() + _Wp2()) __type;
8353 _GLIBCXX_END_NAMESPACE_VERSION
8354 Index: libstdc++-v3/include/profile/map.h
8355 ===================================================================
8356 --- libstdc++-v3/include/profile/map.h (.../tags/gcc_4_6_2_release) (wersja 182722)
8357 +++ libstdc++-v3/include/profile/map.h (.../branches/gcc-4_6-branch) (wersja 182722)
8358 @@ -326,6 +326,10 @@
8359 __profcxx_map_to_unordered_map_erase(this, size(), 1);
8364 + erase(iterator __position)
8365 + { return erase(const_iterator(__position)); }
8368 erase(iterator __position)
8369 Index: libstdc++-v3/include/profile/multimap.h
8370 ===================================================================
8371 --- libstdc++-v3/include/profile/multimap.h (.../tags/gcc_4_6_2_release) (wersja 182722)
8372 +++ libstdc++-v3/include/profile/multimap.h (.../branches/gcc-4_6-branch) (wersja 182722)
8373 @@ -225,6 +225,10 @@
8375 erase(const_iterator __position)
8376 { return iterator(_Base::erase(__position)); }
8379 + erase(iterator __position)
8380 + { return iterator(_Base::erase(__position)); }
8383 erase(iterator __position)
8384 Index: libstdc++-v3/include/bits/hashtable.h
8385 ===================================================================
8386 --- libstdc++-v3/include/bits/hashtable.h (.../tags/gcc_4_6_2_release) (wersja 182722)
8387 +++ libstdc++-v3/include/bits/hashtable.h (.../branches/gcc-4_6-branch) (wersja 182722)
8388 @@ -440,6 +440,11 @@
8390 erase(const_iterator);
8394 + erase(iterator __it)
8395 + { return erase(const_iterator(__it)); }
8398 erase(const key_type&);
8400 Index: libstdc++-v3/include/bits/stl_map.h
8401 ===================================================================
8402 --- libstdc++-v3/include/bits/stl_map.h (.../tags/gcc_4_6_2_release) (wersja 182722)
8403 +++ libstdc++-v3/include/bits/stl_map.h (.../branches/gcc-4_6-branch) (wersja 182722)
8404 @@ -612,6 +612,11 @@
8406 erase(const_iterator __position)
8407 { return _M_t.erase(__position); }
8411 + erase(iterator __position)
8412 + { return _M_t.erase(__position); }
8415 * @brief Erases an element from a %map.
8416 Index: libstdc++-v3/include/bits/stl_multimap.h
8417 ===================================================================
8418 --- libstdc++-v3/include/bits/stl_multimap.h (.../tags/gcc_4_6_2_release) (wersja 182722)
8419 +++ libstdc++-v3/include/bits/stl_multimap.h (.../branches/gcc-4_6-branch) (wersja 182722)
8420 @@ -533,6 +533,11 @@
8422 erase(const_iterator __position)
8423 { return _M_t.erase(__position); }
8427 + erase(iterator __position)
8428 + { return _M_t.erase(__position); }
8431 * @brief Erases an element from a %multimap.
8432 Index: libstdc++-v3/include/bits/stl_numeric.h
8433 ===================================================================
8434 --- libstdc++-v3/include/bits/stl_numeric.h (.../tags/gcc_4_6_2_release) (wersja 182722)
8435 +++ libstdc++-v3/include/bits/stl_numeric.h (.../branches/gcc-4_6-branch) (wersja 182722)
8436 @@ -222,10 +222,10 @@
8438 * @brief Return list of partial sums
8440 - * Accumulates the values in the range [first,last) using operator+().
8441 + * Accumulates the values in the range [first,last) using the @c + operator.
8442 * As each successive input value is added into the total, that partial sum
8443 - * is written to @a result. Therefore, the first value in result is the
8444 - * first value of the input, the second value in result is the sum of the
8445 + * is written to @p result. Therefore, the first value in @p result is the
8446 + * first value of the input, the second value in @p result is the sum of the
8447 * first and second input values, and so on.
8449 * @param first Start of input range.
8450 @@ -261,15 +261,16 @@
8452 * @brief Return list of partial sums
8454 - * Accumulates the values in the range [first,last) using operator+().
8455 + * Accumulates the values in the range [first,last) using @p binary_op.
8456 * As each successive input value is added into the total, that partial sum
8457 - * is written to @a result. Therefore, the first value in result is the
8458 - * first value of the input, the second value in result is the sum of the
8459 + * is written to @a result. Therefore, the first value in @p result is the
8460 + * first value of the input, the second value in @p result is the sum of the
8461 * first and second input values, and so on.
8463 * @param first Start of input range.
8464 * @param last End of input range.
8465 * @param result Output to write sums to.
8466 + * @param binary_op Function object.
8467 * @return Iterator pointing just beyond the values written to result.
8469 template<typename _InputIterator, typename _OutputIterator,
8470 Index: libstdc++-v3/include/bits/stl_uninitialized.h
8471 ===================================================================
8472 --- libstdc++-v3/include/bits/stl_uninitialized.h (.../tags/gcc_4_6_2_release) (wersja 182722)
8473 +++ libstdc++-v3/include/bits/stl_uninitialized.h (.../branches/gcc-4_6-branch) (wersja 182722)
8475 // Raw memory manipulators -*- C++ -*-
8477 // Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
8479 +// 2009, 2010, 2011
8480 // Free Software Foundation, Inc.
8482 // This file is part of the GNU ISO C++ Library. This library is free
8483 @@ -530,7 +530,22 @@
8484 __uninit_default_n(__first, __n);
8487 + template<typename _Tp, typename _Allocator>
8489 + _Construct_default_a_impl(_Tp* __ptr, _Allocator& __alloc, void*)
8490 + -> decltype(__alloc.construct(__ptr))
8491 + { return __alloc.construct(__ptr); }
8493 + template<typename _Tp, typename _Allocator>
8495 + _Construct_default_a_impl(_Tp* __ptr, _Allocator& __alloc, ...)
8496 + { _Construct(__ptr); }
8498 + template<typename _Tp, typename _Allocator>
8500 + _Construct_default_a(_Tp* __ptr, _Allocator& __alloc)
8501 + { _Construct_default_a_impl(__ptr, __alloc, nullptr); }
8503 // __uninitialized_default_a
8504 // Fills [first, last) with std::distance(first, last) default
8505 // constructed value_types(s), constructed with the allocator alloc.
8509 for (; __cur != __last; ++__cur)
8510 - __alloc.construct(std::__addressof(*__cur));
8511 + _Construct_default_a(std::__addressof(*__cur), __alloc);
8518 for (; __n > 0; --__n, ++__cur)
8519 - __alloc.construct(std::__addressof(*__cur));
8520 + _Construct_default_a(std::__addressof(*__cur), __alloc);
8524 Index: libstdc++-v3/include/bits/stl_tree.h
8525 ===================================================================
8526 --- libstdc++-v3/include/bits/stl_tree.h (.../tags/gcc_4_6_2_release) (wersja 182722)
8527 +++ libstdc++-v3/include/bits/stl_tree.h (.../branches/gcc-4_6-branch) (wersja 182722)
8528 @@ -760,6 +760,16 @@
8529 _M_erase_aux(__position);
8530 return __result._M_const_cast();
8535 + erase(iterator __position)
8537 + iterator __result = __position;
8539 + _M_erase_aux(__position);
8544 erase(iterator __position)
8545 Index: libstdc++-v3/include/c_global/cmath
8546 ===================================================================
8547 --- libstdc++-v3/include/c_global/cmath (.../tags/gcc_4_6_2_release) (wersja 182722)
8548 +++ libstdc++-v3/include/c_global/cmath (.../branches/gcc-4_6-branch) (wersja 182722)
8550 // -*- C++ -*- C forwarding header.
8552 // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
8553 -// 2006, 2007, 2008, 2009, 2010
8554 +// 2006, 2007, 2008, 2009, 2010, 2011
8555 // Free Software Foundation, Inc.
8557 // This file is part of the GNU ISO C++ Library. This library is free
8558 @@ -156,10 +156,7 @@
8560 template<typename _Tp, typename _Up>
8562 - typename __gnu_cxx::__promote_2<
8563 - typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value
8564 - && __is_arithmetic<_Up>::__value,
8565 - _Tp>::__type, _Up>::__type
8566 + typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
8567 atan2(_Tp __y, _Up __x)
8569 typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
8570 @@ -374,10 +371,7 @@
8572 template<typename _Tp, typename _Up>
8574 - typename __gnu_cxx::__promote_2<
8575 - typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value
8576 - && __is_arithmetic<_Up>::__value,
8577 - _Tp>::__type, _Up>::__type
8578 + typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
8579 pow(_Tp __x, _Up __y)
8581 typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
8582 Index: libstdc++-v3/include/tr1/complex
8583 ===================================================================
8584 --- libstdc++-v3/include/tr1/complex (.../tags/gcc_4_6_2_release) (wersja 182722)
8585 +++ libstdc++-v3/include/tr1/complex (.../branches/gcc-4_6-branch) (wersja 182722)
8586 @@ -185,12 +185,9 @@
8588 __complex_acosh(const std::complex<_Tp>& __z)
8590 - std::complex<_Tp> __t((__z.real() - __z.imag())
8591 - * (__z.real() + __z.imag()) - _Tp(1.0),
8592 - _Tp(2.0) * __z.real() * __z.imag());
8593 - __t = std::sqrt(__t);
8595 - return std::log(__t + __z);
8596 + // Kahan's formula.
8597 + return _Tp(2.0) * std::log(std::sqrt(_Tp(0.5) * (__z + _Tp(1.0)))
8598 + + std::sqrt(_Tp(0.5) * (__z - _Tp(1.0))));
8601 #if _GLIBCXX_USE_C99_COMPLEX_TR1
8602 Index: libstdc++-v3/include/tr1/poly_hermite.tcc
8603 ===================================================================
8604 --- libstdc++-v3/include/tr1/poly_hermite.tcc (.../tags/gcc_4_6_2_release) (wersja 182722)
8605 +++ libstdc++-v3/include/tr1/poly_hermite.tcc (.../branches/gcc-4_6-branch) (wersja 182722)
8607 // Special functions -*- C++ -*-
8609 -// Copyright (C) 2006, 2007, 2008, 2009, 2010
8610 +// Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011
8611 // Free Software Foundation, Inc.
8613 // This file is part of the GNU ISO C++ Library. This library is free
8616 for (__H_nm2 = __H_0, __H_nm1 = __H_1, __i = 2; __i <= __n; ++__i)
8618 - __H_n = 2 * (__x * __H_nm1 + (__i - 1) * __H_nm2);
8619 + __H_n = 2 * (__x * __H_nm1 - (__i - 1) * __H_nm2);
8623 Index: libstdc++-v3/ChangeLog
8624 ===================================================================
8625 --- libstdc++-v3/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 182722)
8626 +++ libstdc++-v3/ChangeLog (.../branches/gcc-4_6-branch) (wersja 182722)
8628 +2011-12-19 Jonathan Wakely <jwakely.gcc@gmail.com>
8630 + PR libstdc++/51626
8631 + * include/bits/stl_uninitialized.h (_Construct_default_a_impl): Define
8632 + overloaded functions to conditionally use allocator::construct.
8633 + (_Construct_default_a): Define to dispatch to appropriate
8634 + _Construct_default_a_impl overload.
8635 + (__uninitialized_default_a, __uninitialized_default_n_a): Use
8636 + _Construct_default_a.
8637 + * testsuite/20_util/allocator/51626.cc: New.
8639 +2011-12-19 Jonathan Wakely <jwakely.gcc@gmail.com>
8641 + * testsuite/ext/type_traits/remove_unsigned_integer_neg.cc: Adjust
8642 + dg-error line numbers.
8643 + * testsuite/ext/type_traits/add_unsigned_floating_neg.cc: Likewise.
8644 + * testsuite/ext/type_traits/remove_unsigned_floating_neg.cc: Likewise.
8645 + * testsuite/ext/type_traits/add_unsigned_integer_neg.cc: Likewise.
8647 +2011-12-19 Jonathan Wakely <jwakely.gcc@gmail.com>
8649 + * include/c_global/cmath: Update copyright years.
8650 + * include/ext/type_traits.h: Likewise.
8652 +2011-12-19 Jonathan Wakely <jwakely.gcc@gmail.com>
8654 + Backport from mainline
8655 + 2011-11-13 Paolo Carlini <paolo.carlini@oracle.com>
8657 + * include/c_global/cmath (atan2, pow): Simplify constraining on the
8660 + Backport from mainline
8661 + 2011-11-12 Jonathan Wakely <jwakely.gcc@gmail.com>
8663 + PR libstdc++/51083
8664 + * include/ext/type_traits.h (__promote): Only define __type member
8665 + for integral and floating point types, to prevent math functions
8666 + participating in overload resolution for other types.
8667 + (__promote_2, __promote_3, __promote_4): Use __promote in default
8668 + template argument values, so deduction only succeeds for integral and
8669 + floating point types.
8670 + * testsuite/26_numerics/cmath/51083.cc: New.
8671 + * testsuite/26_numerics/complex/51083.cc: New.
8672 + * testsuite/tr1/8_c_compatibility/cmath/51083.cc: New.
8673 + * testsuite/tr1/8_c_compatibility/complex/51083.cc: New.
8675 +2011-12-19 Jonathan Wakely <jwakely.gcc@gmail.com>
8677 + PR libstdc++/50862
8678 + * include/std/condition_variable (condition_variable_any::wait): Fix
8679 + deadlock and ensure _Lock::lock() is called on exit.
8680 + * testsuite/30_threads/condition_variable_any/50862.cc: New.
8682 +2011-12-18 Jonathan Wakely <jwakely.gcc@gmail.com>
8684 + PR libstdc++/51540
8685 + * include/bits/stl_numeric.h (partial_sum): Adjust doxygen comments.
8687 +2011-11-20 Andreas Tobler <andreast@fgznet.ch>
8689 + * configure: Regenerate.
8691 +2011-11-16 Paolo Carlini <paolo.carlini@oracle.com>
8693 + PR libstdc++/51142
8694 + * include/debug/unordered_map (unordered_map<>::erase(iterator),
8695 + unordered_multimap<>::erase(iterator)): Add, consistently with
8697 + * include/debug/unordered_set (unordered_set<>::erase(iterator),
8698 + unordered_multiset<>::erase(iterator)): Likewise.
8699 + * include/debug/map.h (map<>::erase(iterator)): Likewise.
8700 + * include/debug/multimap.h (multimap<>::erase(iterator)): Likewise.
8701 + * include/profile/map.h (map<>::erase(iterator)): Likewise.
8702 + * include/profile/multimap.h (multimap<>::erase(iterator)): Likewise.
8703 + * include/bits/hashtable.h (_Hashtable<>::erase(iterator)): Likewise.
8704 + * include/bits/stl_map.h (map<>::erase(iterator)): Likewise.
8705 + * include/bits/stl_multimap.h (multimap<>::erase(iterator)): Likewise.
8706 + * include/bits/stl_tree.h (_Rb_tree<>::erase(iterator)): Likewise.
8707 + * testsuite/23_containers/unordered_map/erase/51142.cc: New.
8708 + * testsuite/23_containers/multimap/modifiers/erase/51142.cc: Likewise.
8709 + * testsuite/23_containers/set/modifiers/erase/51142.cc: Likewise.
8710 + * testsuite/23_containers/unordered_multimap/erase/51142.cc: Likewise.
8711 + * testsuite/23_containers/unordered_set/erase/51142.cc: Likewise.
8712 + * testsuite/23_containers/multiset/modifiers/erase/51142.cc: Likewise.
8713 + * testsuite/23_containers/unordered_multiset/erase/51142.cc: Likewise.
8714 + * testsuite/23_containers/map/modifiers/erase/51142.cc: Likewise.
8716 +2011-11-15 Jason Dick <dickphd@gmail.com>
8718 + PR libstdc++/51133
8719 + * include/tr1/poly_hermite.tcc (__poly_hermite_recursion): Fix
8720 + wrong sign in recursion relation.
8722 +2011-11-02 Richard B. Kreckel <kreckel@ginac.de>
8723 + Paolo Carlini <paolo.carlini@oracle.com>
8725 + PR libstdc++/50880
8726 + * include/std/complex (__complex_acosh): Fix in a better way,
8727 + use Kahan's formula.
8728 + * include/tr1/complex (__complex_acosh): Likewise.
8730 +2011-11-02 Richard B. Kreckel <kreckel@ginac.de>
8731 + Paolo Carlini <paolo.carlini@oracle.com>
8733 + PR libstdc++/50880
8734 + * include/std/complex (__complex_acosh): Fix for __z.real() < 0.
8735 + * include/tr1/complex (__complex_acosh): Likewise.
8736 + * testsuite/26_numerics/complex/50880.cc: New.
8737 + * testsuite/tr1/8_c_compatibility/complex/50880.cc: Likewise.
8739 2011-10-26 Release Manager
8741 * GCC 4.6.2 released.
8742 Index: libstdc++-v3/testsuite/26_numerics/complex/51083.cc
8743 ===================================================================
8744 --- libstdc++-v3/testsuite/26_numerics/complex/51083.cc (.../tags/gcc_4_6_2_release) (wersja 0)
8745 +++ libstdc++-v3/testsuite/26_numerics/complex/51083.cc (.../branches/gcc-4_6-branch) (wersja 182722)
8747 +// { dg-options "-std=gnu++0x" }
8749 +// Copyright (C) 2011 Free Software Foundation, Inc.
8751 +// This file is part of the GNU ISO C++ Library. This library is free
8752 +// software; you can redistribute it and/or modify it under the
8753 +// terms of the GNU General Public License as published by the
8754 +// Free Software Foundation; either version 3, or (at your option)
8755 +// any later version.
8757 +// This library is distributed in the hope that it will be useful,
8758 +// but WITHOUT ANY WARRANTY; without even the implied warranty of
8759 +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
8760 +// GNU General Public License for more details.
8762 +// You should have received a copy of the GNU General Public License along
8763 +// with this library; see the file COPYING3. If not see
8764 +// <http://www.gnu.org/licenses/>.
8770 + template<typename> class Mat { };
8772 + template<typename T> struct Mat2 : Mat<T> { };
8774 + template<typename T> int arg(Mat<T>) { return 1; }
8775 + template<typename T> int conj(Mat<T>) { return 1; }
8776 + template<typename T> int imag(Mat<T>) { return 1; }
8777 + template<typename T> int norm(Mat<T>) { return 1; }
8778 + template<typename T> int proj(Mat<T>) { return 1; }
8779 + template<typename T> int real(Mat<T>) { return 1; }
8781 + template<typename T, typename U> int pow(Mat<T>, U) { return 1; }
8782 + template<typename T, typename U> int pow(T, Mat<U>) { return 1; }
8787 + int __attribute__((unused)) i;
8789 + using namespace std;
8791 + a::Mat2< std::complex<double> > c;
8798 + i = pow(std::complex<float>(), c);
8799 + i = pow(c, std::complex<float>());
8801 Index: libstdc++-v3/testsuite/26_numerics/complex/50880.cc
8802 ===================================================================
8803 --- libstdc++-v3/testsuite/26_numerics/complex/50880.cc (.../tags/gcc_4_6_2_release) (wersja 0)
8804 +++ libstdc++-v3/testsuite/26_numerics/complex/50880.cc (.../branches/gcc-4_6-branch) (wersja 182722)
8806 +// { dg-options "-std=gnu++0x" }
8808 +// Copyright (C) 2011 Free Software Foundation, Inc.
8810 +// This file is part of the GNU ISO C++ Library. This library is free
8811 +// software; you can redistribute it and/or modify it under the
8812 +// terms of the GNU General Public License as published by the
8813 +// Free Software Foundation; either version 3, or (at your option)
8814 +// any later version.
8816 +// This library is distributed in the hope that it will be useful,
8817 +// but WITHOUT ANY WARRANTY; without even the implied warranty of
8818 +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
8819 +// GNU General Public License for more details.
8821 +// You should have received a copy of the GNU General Public License along
8822 +// with this library; see the file COPYING3. If not see
8823 +// <http://www.gnu.org/licenses/>.
8826 +#include <testsuite_hooks.h>
8828 +template<typename T>
8831 + bool test __attribute__((unused)) = true;
8833 + const std::complex<T> ca(T(-2), T(2));
8834 + const std::complex<T> cb(T(-2), T(0));
8835 + const std::complex<T> cc(T(-2), T(-2));
8837 + std::complex<T> cra = std::acosh(ca);
8838 + std::complex<T> crb = std::acosh(cb);
8839 + std::complex<T> crc = std::acosh(cc);
8841 + VERIFY( cra.real() > T(0) );
8842 + VERIFY( crb.real() > T(0) );
8843 + VERIFY( crc.real() > T(0) );
8849 + test01_do<float>();
8850 + test01_do<double>();
8851 + test01_do<long double>();
8859 Index: libstdc++-v3/testsuite/26_numerics/cmath/51083.cc
8860 ===================================================================
8861 --- libstdc++-v3/testsuite/26_numerics/cmath/51083.cc (.../tags/gcc_4_6_2_release) (wersja 0)
8862 +++ libstdc++-v3/testsuite/26_numerics/cmath/51083.cc (.../branches/gcc-4_6-branch) (wersja 182722)
8864 +// { dg-options "-std=gnu++0x" }
8866 +// Copyright (C) 2011 Free Software Foundation, Inc.
8868 +// This file is part of the GNU ISO C++ Library. This library is free
8869 +// software; you can redistribute it and/or modify it under the
8870 +// terms of the GNU General Public License as published by the
8871 +// Free Software Foundation; either version 3, or (at your option)
8872 +// any later version.
8874 +// This library is distributed in the hope that it will be useful,
8875 +// but WITHOUT ANY WARRANTY; without even the implied warranty of
8876 +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
8877 +// GNU General Public License for more details.
8879 +// You should have received a copy of the GNU General Public License along
8880 +// with this library; see the file COPYING3. If not see
8881 +// <http://www.gnu.org/licenses/>.
8887 + template<typename> class Mat { };
8889 + template<typename T> struct Mat2 : Mat<T> { };
8891 + template<typename T>
8892 + int fdim(Mat<T>) { return 1; }
8894 + template<typename T, typename U>
8895 + int floor(Mat<T>, U) { return 1; }
8896 + template<typename T, typename U>
8897 + int floor(T, Mat<U>) { return 1; }
8899 + template<typename T, typename U, typename V>
8900 + int fma(Mat<T>, U, V) { return 1; }
8901 + template<typename T, typename U, typename V>
8902 + int fma(T, Mat<U>, V) { return 1; }
8903 + template<typename T, typename U, typename V>
8904 + int fma(T, U, Mat<V>) { return 1; }
8909 + int __attribute__((unused)) i;
8911 + using namespace std;
8913 + a::Mat2<double> c;
8919 + i = fma(c, 0., 1.);
8920 + i = fma(0., c, 1.);
8921 + i = fma(0., 1., c);
8922 + i = fma(c, 0., 1);
8923 + i = fma(0., c, 1);
8924 + i = fma(0., 1, c);
8926 Index: libstdc++-v3/testsuite/30_threads/condition_variable_any/50862.cc
8927 ===================================================================
8928 --- libstdc++-v3/testsuite/30_threads/condition_variable_any/50862.cc (.../tags/gcc_4_6_2_release) (wersja 0)
8929 +++ libstdc++-v3/testsuite/30_threads/condition_variable_any/50862.cc (.../branches/gcc-4_6-branch) (wersja 182722)
8931 +// { dg-do run { target *-*-freebsd* *-*-netbsd* *-*-linux* *-*-solaris* *-*-cygwin *-*-darwin* alpha*-*-osf* mips-sgi-irix6* } }
8932 +// { dg-options " -std=gnu++0x -pthread" { target *-*-freebsd* *-*-netbsd* *-*-linux* alpha*-*-osf* mips-sgi-irix6* } }
8933 +// { dg-options " -std=gnu++0x -pthreads" { target *-*-solaris* } }
8934 +// { dg-options " -std=gnu++0x " { target *-*-cygwin *-*-darwin* } }
8935 +// { dg-require-cstdint "" }
8936 +// { dg-require-gthreads "" }
8937 +// { dg-require-sched-yield "" }
8939 +// Copyright (C) 2011 Free Software Foundation, Inc.
8941 +// This file is part of the GNU ISO C++ Library. This library is free
8942 +// software; you can redistribute it and/or modify it under the
8943 +// terms of the GNU General Public License as published by the
8944 +// Free Software Foundation; either version 3, or (at your option)
8945 +// any later version.
8947 +// This library is distributed in the hope that it will be useful,
8948 +// but WITHOUT ANY WARRANTY; without even the implied warranty of
8949 +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
8950 +// GNU General Public License for more details.
8952 +// You should have received a copy of the GNU General Public License along
8953 +// with this library; see the file COPYING3. If not see
8954 +// <http://www.gnu.org/licenses/>.
8956 +#include <condition_variable>
8962 +struct scoped_thread
8964 + ~scoped_thread() { if (t.joinable()) t.join(); }
8970 + typedef std::unique_lock<std::mutex> Lock;
8973 + std::condition_variable_any cond;
8974 + unsigned int product = 0;
8975 + const unsigned int count = 10;
8977 + // writing to stream causes timing changes which makes deadlock easier
8978 + // to reproduce - do not remove
8979 + std::ostringstream out;
8981 + // create consumers
8982 + std::array<scoped_thread, 2> threads;
8983 + for (std::size_t i = 0; i < threads.size(); ++i)
8985 + = std::thread( [&]
8987 + for (unsigned int i = 0; i < count; ++i)
8989 + std::this_thread::yield();
8991 + while(product == 0)
8993 + out << "got product "
8994 + << std::this_thread::get_id()
8995 + << ' ' << product << std::endl;
9000 + // single producer
9001 + for (std::size_t i = 0; i < threads.size() * count; ++i)
9003 + std::this_thread::yield();
9006 + out << "setting product " << std::this_thread::get_id()
9007 + << ' ' << product << std::endl;
9008 + cond.notify_one();
9011 Index: libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_integer_neg.cc
9012 ===================================================================
9013 --- libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_integer_neg.cc (.../tags/gcc_4_6_2_release) (wersja 182722)
9014 +++ libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_integer_neg.cc (.../branches/gcc-4_6-branch) (wersja 182722)
9018 // { dg-error "invalid use of incomplete" "" { target *-*-* } 28 }
9019 -// { dg-error "declaration of" "" { target *-*-* } 106 }
9020 +// { dg-error "declaration of" "" { target *-*-* } 107 }
9021 Index: libstdc++-v3/testsuite/ext/type_traits/add_unsigned_floating_neg.cc
9022 ===================================================================
9023 --- libstdc++-v3/testsuite/ext/type_traits/add_unsigned_floating_neg.cc (.../tags/gcc_4_6_2_release) (wersja 182722)
9024 +++ libstdc++-v3/testsuite/ext/type_traits/add_unsigned_floating_neg.cc (.../branches/gcc-4_6-branch) (wersja 182722)
9028 // { dg-error "instantiated from" "" { target *-*-* } 28 }
9029 -// { dg-error "no type" "" { target *-*-* } 69 }
9030 +// { dg-error "no type" "" { target *-*-* } 70 }
9031 Index: libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_floating_neg.cc
9032 ===================================================================
9033 --- libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_floating_neg.cc (.../tags/gcc_4_6_2_release) (wersja 182722)
9034 +++ libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_floating_neg.cc (.../branches/gcc-4_6-branch) (wersja 182722)
9038 // { dg-error "instantiated from" "" { target *-*-* } 28 }
9039 -// { dg-error "no type" "" { target *-*-* } 112 }
9040 +// { dg-error "no type" "" { target *-*-* } 113 }
9041 Index: libstdc++-v3/testsuite/ext/type_traits/add_unsigned_integer_neg.cc
9042 ===================================================================
9043 --- libstdc++-v3/testsuite/ext/type_traits/add_unsigned_integer_neg.cc (.../tags/gcc_4_6_2_release) (wersja 182722)
9044 +++ libstdc++-v3/testsuite/ext/type_traits/add_unsigned_integer_neg.cc (.../branches/gcc-4_6-branch) (wersja 182722)
9048 // { dg-error "invalid use of incomplete" "" { target *-*-* } 28 }
9049 -// { dg-error "declaration of" "" { target *-*-* } 63 }
9050 +// { dg-error "declaration of" "" { target *-*-* } 64 }
9051 Index: libstdc++-v3/testsuite/tr1/8_c_compatibility/complex/51083.cc
9052 ===================================================================
9053 --- libstdc++-v3/testsuite/tr1/8_c_compatibility/complex/51083.cc (.../tags/gcc_4_6_2_release) (wersja 0)
9054 +++ libstdc++-v3/testsuite/tr1/8_c_compatibility/complex/51083.cc (.../branches/gcc-4_6-branch) (wersja 182722)
9056 +// { dg-options "-std=gnu++0x" }
9058 +// Copyright (C) 2011 Free Software Foundation, Inc.
9060 +// This file is part of the GNU ISO C++ Library. This library is free
9061 +// software; you can redistribute it and/or modify it under the
9062 +// terms of the GNU General Public License as published by the
9063 +// Free Software Foundation; either version 3, or (at your option)
9064 +// any later version.
9066 +// This library is distributed in the hope that it will be useful,
9067 +// but WITHOUT ANY WARRANTY; without even the implied warranty of
9068 +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9069 +// GNU General Public License for more details.
9071 +// You should have received a copy of the GNU General Public License along
9072 +// with this library; see the file COPYING3. If not see
9073 +// <http://www.gnu.org/licenses/>.
9075 +#include <tr1/complex>
9079 + template<typename> class Mat { };
9081 + template<typename T> struct Mat2 : Mat<T> { };
9083 + template<typename T> int arg(Mat<T>) { return 1; }
9084 + template<typename T> int conj(Mat<T>) { return 1; }
9085 + template<typename T> int imag(Mat<T>) { return 1; }
9086 + template<typename T> int norm(Mat<T>) { return 1; }
9087 + template<typename T> int proj(Mat<T>) { return 1; }
9088 + template<typename T> int real(Mat<T>) { return 1; }
9090 + template<typename T, typename U> int pow(Mat<T>, U) { return 1; }
9091 + template<typename T, typename U> int pow(T, Mat<U>) { return 1; }
9096 + int __attribute__((unused)) i;
9098 + using namespace std::tr1;
9100 + a::Mat2< std::complex<double> > c;
9107 + i = pow(std::complex<float>(), c);
9108 + i = pow(c, std::complex<float>());
9110 Index: libstdc++-v3/testsuite/tr1/8_c_compatibility/complex/50880.cc
9111 ===================================================================
9112 --- libstdc++-v3/testsuite/tr1/8_c_compatibility/complex/50880.cc (.../tags/gcc_4_6_2_release) (wersja 0)
9113 +++ libstdc++-v3/testsuite/tr1/8_c_compatibility/complex/50880.cc (.../branches/gcc-4_6-branch) (wersja 182722)
9115 +// Copyright (C) 2011 Free Software Foundation, Inc.
9117 +// This file is part of the GNU ISO C++ Library. This library is free
9118 +// software; you can redistribute it and/or modify it under the
9119 +// terms of the GNU General Public License as published by the
9120 +// Free Software Foundation; either version 3, or (at your option)
9121 +// any later version.
9123 +// This library is distributed in the hope that it will be useful,
9124 +// but WITHOUT ANY WARRANTY; without even the implied warranty of
9125 +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9126 +// GNU General Public License for more details.
9128 +// You should have received a copy of the GNU General Public License along
9129 +// with this library; see the file COPYING3. If not see
9130 +// <http://www.gnu.org/licenses/>.
9132 +#include <tr1/complex>
9133 +#include <testsuite_hooks.h>
9135 +template<typename T>
9138 + bool test __attribute__((unused)) = true;
9140 + const std::complex<T> ca(T(-2), T(2));
9141 + const std::complex<T> cb(T(-2), T(0));
9142 + const std::complex<T> cc(T(-2), T(-2));
9144 + std::complex<T> cra = std::tr1::acosh(ca);
9145 + std::complex<T> crb = std::tr1::acosh(cb);
9146 + std::complex<T> crc = std::tr1::acosh(cc);
9148 + VERIFY( cra.real() > T(0) );
9149 + VERIFY( crb.real() > T(0) );
9150 + VERIFY( crc.real() > T(0) );
9156 + test01_do<float>();
9157 + test01_do<double>();
9158 + test01_do<long double>();
9166 Index: libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/51083.cc
9167 ===================================================================
9168 --- libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/51083.cc (.../tags/gcc_4_6_2_release) (wersja 0)
9169 +++ libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/51083.cc (.../branches/gcc-4_6-branch) (wersja 182722)
9171 +// { dg-options "-std=gnu++0x" }
9173 +// Copyright (C) 2011 Free Software Foundation, Inc.
9175 +// This file is part of the GNU ISO C++ Library. This library is free
9176 +// software; you can redistribute it and/or modify it under the
9177 +// terms of the GNU General Public License as published by the
9178 +// Free Software Foundation; either version 3, or (at your option)
9179 +// any later version.
9181 +// This library is distributed in the hope that it will be useful,
9182 +// but WITHOUT ANY WARRANTY; without even the implied warranty of
9183 +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9184 +// GNU General Public License for more details.
9186 +// You should have received a copy of the GNU General Public License along
9187 +// with this library; see the file COPYING3. If not see
9188 +// <http://www.gnu.org/licenses/>.
9190 +#include <tr1/cmath>
9194 + template<typename> class Mat { };
9196 + template<typename T> struct Mat2 : Mat<T> { };
9198 + template<typename T>
9199 + int fdim(Mat<T>) { return 1; }
9201 + template<typename T, typename U>
9202 + int floor(Mat<T>, U) { return 1; }
9203 + template<typename T, typename U>
9204 + int floor(T, Mat<U>) { return 1; }
9206 + template<typename T, typename U, typename V>
9207 + int fma(Mat<T>, U, V) { return 1; }
9208 + template<typename T, typename U, typename V>
9209 + int fma(T, Mat<U>, V) { return 1; }
9210 + template<typename T, typename U, typename V>
9211 + int fma(T, U, Mat<V>) { return 1; }
9216 + int __attribute__((unused)) i;
9218 + using namespace std::tr1;
9220 + a::Mat2<double> c;
9226 + i = fma(c, 0., 1.);
9227 + i = fma(0., c, 1.);
9228 + i = fma(0., 1., c);
9229 + i = fma(c, 0., 1);
9230 + i = fma(0., c, 1);
9231 + i = fma(0., 1, c);
9233 Index: libstdc++-v3/testsuite/23_containers/unordered_map/erase/51142.cc
9234 ===================================================================
9235 --- libstdc++-v3/testsuite/23_containers/unordered_map/erase/51142.cc (.../tags/gcc_4_6_2_release) (wersja 0)
9236 +++ libstdc++-v3/testsuite/23_containers/unordered_map/erase/51142.cc (.../branches/gcc-4_6-branch) (wersja 182722)
9238 +// Copyright (C) 2011 Free Software Foundation, Inc.
9240 +// This file is part of the GNU ISO C++ Library. This library is free
9241 +// software; you can redistribute it and/or modify it under the
9242 +// terms of the GNU General Public License as published by the
9243 +// Free Software Foundation; either version 3, or (at your option)
9244 +// any later version.
9246 +// This library is distributed in the hope that it will be useful,
9247 +// but WITHOUT ANY WARRANTY; without even the implied warranty of
9248 +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9249 +// GNU General Public License for more details.
9251 +// You should have received a copy of the GNU General Public License along
9252 +// with this library; see the file COPYING3. If not see
9253 +// <http://www.gnu.org/licenses/>.
9256 +// { dg-do compile }
9257 +// { dg-options "-std=gnu++0x" }
9259 +#include <unordered_map>
9263 + template<typename T>
9267 +bool operator==(const X&, const X&) { return false; }
9270 +void erasor(std::unordered_map<X, int>& s, X x)
9272 + std::unordered_map<X, int>::iterator it = s.find(x);
9273 + if (it != s.end())
9276 Index: libstdc++-v3/testsuite/23_containers/multimap/modifiers/erase/51142.cc
9277 ===================================================================
9278 --- libstdc++-v3/testsuite/23_containers/multimap/modifiers/erase/51142.cc (.../tags/gcc_4_6_2_release) (wersja 0)
9279 +++ libstdc++-v3/testsuite/23_containers/multimap/modifiers/erase/51142.cc (.../branches/gcc-4_6-branch) (wersja 182722)
9281 +// Copyright (C) 2011 Free Software Foundation, Inc.
9283 +// This file is part of the GNU ISO C++ Library. This library is free
9284 +// software; you can redistribute it and/or modify it under the
9285 +// terms of the GNU General Public License as published by the
9286 +// Free Software Foundation; either version 3, or (at your option)
9287 +// any later version.
9289 +// This library is distributed in the hope that it will be useful,
9290 +// but WITHOUT ANY WARRANTY; without even the implied warranty of
9291 +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9292 +// GNU General Public License for more details.
9294 +// You should have received a copy of the GNU General Public License along
9295 +// with this library; see the file COPYING3. If not see
9296 +// <http://www.gnu.org/licenses/>.
9299 +// { dg-do compile }
9300 +// { dg-options "-std=gnu++0x" }
9306 + template<typename T>
9310 +bool operator<(const X&, const X&) { return false; }
9313 +void erasor(std::multimap<X, int>& s, X x)
9315 + std::multimap<X, int>::iterator it = s.find(x);
9316 + if (it != s.end())
9319 Index: libstdc++-v3/testsuite/23_containers/set/modifiers/erase/51142.cc
9320 ===================================================================
9321 --- libstdc++-v3/testsuite/23_containers/set/modifiers/erase/51142.cc (.../tags/gcc_4_6_2_release) (wersja 0)
9322 +++ libstdc++-v3/testsuite/23_containers/set/modifiers/erase/51142.cc (.../branches/gcc-4_6-branch) (wersja 182722)
9324 +// Copyright (C) 2011 Free Software Foundation, Inc.
9326 +// This file is part of the GNU ISO C++ Library. This library is free
9327 +// software; you can redistribute it and/or modify it under the
9328 +// terms of the GNU General Public License as published by the
9329 +// Free Software Foundation; either version 3, or (at your option)
9330 +// any later version.
9332 +// This library is distributed in the hope that it will be useful,
9333 +// but WITHOUT ANY WARRANTY; without even the implied warranty of
9334 +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9335 +// GNU General Public License for more details.
9337 +// You should have received a copy of the GNU General Public License along
9338 +// with this library; see the file COPYING3. If not see
9339 +// <http://www.gnu.org/licenses/>.
9342 +// { dg-do compile }
9343 +// { dg-options "-std=gnu++0x" }
9349 + template<typename T>
9353 +bool operator<(const X&, const X&) { return false; }
9356 +void erasor(std::set<X>& s, X x)
9358 + std::set<X>::iterator it = s.find(x);
9359 + if (it != s.end())
9362 Index: libstdc++-v3/testsuite/23_containers/unordered_multimap/erase/51142.cc
9363 ===================================================================
9364 --- libstdc++-v3/testsuite/23_containers/unordered_multimap/erase/51142.cc (.../tags/gcc_4_6_2_release) (wersja 0)
9365 +++ libstdc++-v3/testsuite/23_containers/unordered_multimap/erase/51142.cc (.../branches/gcc-4_6-branch) (wersja 182722)
9367 +// Copyright (C) 2011 Free Software Foundation, Inc.
9369 +// This file is part of the GNU ISO C++ Library. This library is free
9370 +// software; you can redistribute it and/or modify it under the
9371 +// terms of the GNU General Public License as published by the
9372 +// Free Software Foundation; either version 3, or (at your option)
9373 +// any later version.
9375 +// This library is distributed in the hope that it will be useful,
9376 +// but WITHOUT ANY WARRANTY; without even the implied warranty of
9377 +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9378 +// GNU General Public License for more details.
9380 +// You should have received a copy of the GNU General Public License along
9381 +// with this library; see the file COPYING3. If not see
9382 +// <http://www.gnu.org/licenses/>.
9385 +// { dg-do compile }
9386 +// { dg-options "-std=gnu++0x" }
9388 +#include <unordered_map>
9392 + template<typename T>
9396 +bool operator==(const X&, const X&) { return false; }
9399 +void erasor(std::unordered_multimap<X, int>& s, X x)
9401 + std::unordered_multimap<X, int>::iterator it = s.find(x);
9402 + if (it != s.end())
9405 Index: libstdc++-v3/testsuite/23_containers/unordered_set/erase/51142.cc
9406 ===================================================================
9407 --- libstdc++-v3/testsuite/23_containers/unordered_set/erase/51142.cc (.../tags/gcc_4_6_2_release) (wersja 0)
9408 +++ libstdc++-v3/testsuite/23_containers/unordered_set/erase/51142.cc (.../branches/gcc-4_6-branch) (wersja 182722)
9410 +// Copyright (C) 2011 Free Software Foundation, Inc.
9412 +// This file is part of the GNU ISO C++ Library. This library is free
9413 +// software; you can redistribute it and/or modify it under the
9414 +// terms of the GNU General Public License as published by the
9415 +// Free Software Foundation; either version 3, or (at your option)
9416 +// any later version.
9418 +// This library is distributed in the hope that it will be useful,
9419 +// but WITHOUT ANY WARRANTY; without even the implied warranty of
9420 +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9421 +// GNU General Public License for more details.
9423 +// You should have received a copy of the GNU General Public License along
9424 +// with this library; see the file COPYING3. If not see
9425 +// <http://www.gnu.org/licenses/>.
9428 +// { dg-do compile }
9429 +// { dg-options "-std=gnu++0x" }
9431 +#include <unordered_set>
9435 + template<typename T>
9439 +bool operator==(const X&, const X&) { return false; }
9442 +void erasor(std::unordered_set<X>& s, X x)
9444 + std::unordered_set<X>::iterator it = s.find(x);
9445 + if (it != s.end())
9448 Index: libstdc++-v3/testsuite/23_containers/multiset/modifiers/erase/51142.cc
9449 ===================================================================
9450 --- libstdc++-v3/testsuite/23_containers/multiset/modifiers/erase/51142.cc (.../tags/gcc_4_6_2_release) (wersja 0)
9451 +++ libstdc++-v3/testsuite/23_containers/multiset/modifiers/erase/51142.cc (.../branches/gcc-4_6-branch) (wersja 182722)
9453 +// Copyright (C) 2011 Free Software Foundation, Inc.
9455 +// This file is part of the GNU ISO C++ Library. This library is free
9456 +// software; you can redistribute it and/or modify it under the
9457 +// terms of the GNU General Public License as published by the
9458 +// Free Software Foundation; either version 3, or (at your option)
9459 +// any later version.
9461 +// This library is distributed in the hope that it will be useful,
9462 +// but WITHOUT ANY WARRANTY; without even the implied warranty of
9463 +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9464 +// GNU General Public License for more details.
9466 +// You should have received a copy of the GNU General Public License along
9467 +// with this library; see the file COPYING3. If not see
9468 +// <http://www.gnu.org/licenses/>.
9471 +// { dg-do compile }
9472 +// { dg-options "-std=gnu++0x" }
9478 + template<typename T>
9482 +bool operator<(const X&, const X&) { return false; }
9485 +void erasor(std::multiset<X>& s, X x)
9487 + std::multiset<X>::iterator it = s.find(x);
9488 + if (it != s.end())
9491 Index: libstdc++-v3/testsuite/23_containers/unordered_multiset/erase/51142.cc
9492 ===================================================================
9493 --- libstdc++-v3/testsuite/23_containers/unordered_multiset/erase/51142.cc (.../tags/gcc_4_6_2_release) (wersja 0)
9494 +++ libstdc++-v3/testsuite/23_containers/unordered_multiset/erase/51142.cc (.../branches/gcc-4_6-branch) (wersja 182722)
9496 +// Copyright (C) 2011 Free Software Foundation, Inc.
9498 +// This file is part of the GNU ISO C++ Library. This library is free
9499 +// software; you can redistribute it and/or modify it under the
9500 +// terms of the GNU General Public License as published by the
9501 +// Free Software Foundation; either version 3, or (at your option)
9502 +// any later version.
9504 +// This library is distributed in the hope that it will be useful,
9505 +// but WITHOUT ANY WARRANTY; without even the implied warranty of
9506 +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9507 +// GNU General Public License for more details.
9509 +// You should have received a copy of the GNU General Public License along
9510 +// with this library; see the file COPYING3. If not see
9511 +// <http://www.gnu.org/licenses/>.
9514 +// { dg-do compile }
9515 +// { dg-options "-std=gnu++0x" }
9517 +#include <unordered_set>
9521 + template<typename T>
9525 +bool operator==(const X&, const X&) { return false; }
9528 +void erasor(std::unordered_multiset<X>& s, X x)
9530 + std::unordered_multiset<X>::iterator it = s.find(x);
9531 + if (it != s.end())
9534 Index: libstdc++-v3/testsuite/23_containers/map/modifiers/erase/51142.cc
9535 ===================================================================
9536 --- libstdc++-v3/testsuite/23_containers/map/modifiers/erase/51142.cc (.../tags/gcc_4_6_2_release) (wersja 0)
9537 +++ libstdc++-v3/testsuite/23_containers/map/modifiers/erase/51142.cc (.../branches/gcc-4_6-branch) (wersja 182722)
9539 +// Copyright (C) 2011 Free Software Foundation, Inc.
9541 +// This file is part of the GNU ISO C++ Library. This library is free
9542 +// software; you can redistribute it and/or modify it under the
9543 +// terms of the GNU General Public License as published by the
9544 +// Free Software Foundation; either version 3, or (at your option)
9545 +// any later version.
9547 +// This library is distributed in the hope that it will be useful,
9548 +// but WITHOUT ANY WARRANTY; without even the implied warranty of
9549 +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9550 +// GNU General Public License for more details.
9552 +// You should have received a copy of the GNU General Public License along
9553 +// with this library; see the file COPYING3. If not see
9554 +// <http://www.gnu.org/licenses/>.
9557 +// { dg-do compile }
9558 +// { dg-options "-std=gnu++0x" }
9564 + template<typename T>
9568 +bool operator<(const X&, const X&) { return false; }
9571 +void erasor(std::map<X, int>& s, X x)
9573 + std::map<X, int>::iterator it = s.find(x);
9574 + if (it != s.end())
9577 Index: libstdc++-v3/testsuite/20_util/allocator/51626.cc
9578 ===================================================================
9579 --- libstdc++-v3/testsuite/20_util/allocator/51626.cc (.../tags/gcc_4_6_2_release) (wersja 0)
9580 +++ libstdc++-v3/testsuite/20_util/allocator/51626.cc (.../branches/gcc-4_6-branch) (wersja 182722)
9582 +// Copyright (C) 2011 Free Software Foundation, Inc.
9584 +// This file is part of the GNU ISO C++ Library. This library is free
9585 +// software; you can redistribute it and/or modify it under the
9586 +// terms of the GNU General Public License as published by the
9587 +// Free Software Foundation; either version 3, or (at your option)
9588 +// any later version.
9590 +// This library is distributed in the hope that it will be useful,
9591 +// but WITHOUT ANY WARRANTY; without even the implied warranty of
9592 +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9593 +// GNU General Public License for more details.
9595 +// You should have received a copy of the GNU General Public License along
9596 +// with this library; see the file COPYING3. If not see
9597 +// <http://www.gnu.org/licenses/>.
9599 +// { dg-options "-std=gnu++0x" }
9603 +#include <testsuite_hooks.h>
9608 + struct allocator98 : std::allocator<T>
9610 + template <class U> struct rebind { typedef allocator98<U> other; };
9614 + template <class U> allocator98(const allocator98<U>&) { };
9616 + void construct(T* p, const T& val)
9619 + std::allocator<T>::construct(p, val);
9624 + struct allocator11 : std::allocator<T>
9626 + template <class U> struct rebind { typedef allocator11<U> other; };
9630 + template <class U> allocator11(const allocator11<U>&) { };
9632 + template<typename... Args>
9633 + void construct(T* p, Args&&... args)
9636 + std::allocator<T>::construct(p, std::forward<Args>(args)...);
9642 + std::vector< int, allocator98<int> > v98(1);
9643 + VERIFY( count == 0 );
9645 + std::vector< int, allocator11<int> > v11(1);
9646 + VERIFY( count == 1 );
9649 ===================================================================
9650 --- configure.ac (.../tags/gcc_4_6_2_release) (wersja 182722)
9651 +++ configure.ac (.../branches/gcc-4_6-branch) (wersja 182722)
9652 @@ -2428,10 +2428,6 @@
9653 extra_arflags_for_target=" -X32_64"
9654 extra_nmflags_for_target=" -B -X32_64"
9656 - *-*-darwin[[3-9]]*)
9657 - # ranlib before Darwin10 requires the -c flag to look at common symbols.
9658 - extra_ranlibflags_for_target=" -c"
9660 mips*-*-pe | sh*-*-pe | *arm-wince-pe)
9661 target_makefile_frag="config/mt-wince"
9663 Index: libobjc/configure
9664 ===================================================================
9665 --- libobjc/configure (.../tags/gcc_4_6_2_release) (wersja 182722)
9666 +++ libobjc/configure (.../branches/gcc-4_6-branch) (wersja 182722)
9667 @@ -8797,7 +8797,7 @@
9670 # Unfortunately, older versions of FreeBSD 2 do not have this feature.
9673 archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
9675 hardcode_minus_L=yes
9676 @@ -9713,7 +9713,7 @@
9677 objformat=`/usr/bin/objformat`
9680 - freebsd[123]*) objformat=aout ;;
9681 + freebsd[23].*) objformat=aout ;;
9685 @@ -9731,7 +9731,7 @@
9687 shlibpath_var=LD_LIBRARY_PATH
9691 shlibpath_overrides_runpath=yes
9693 freebsd3.[01]* | freebsdelf3.[01]*)
9694 Index: libobjc/ChangeLog
9695 ===================================================================
9696 --- libobjc/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 182722)
9697 +++ libobjc/ChangeLog (.../branches/gcc-4_6-branch) (wersja 182722)
9699 +2011-11-20 Andreas Tobler <andreast@fgznet.ch>
9701 + * configure: Regenerate.
9703 2011-10-26 Release Manager
9705 * GCC 4.6.2 released.
9706 Index: libgfortran/configure
9707 ===================================================================
9708 --- libgfortran/configure (.../tags/gcc_4_6_2_release) (wersja 182722)
9709 +++ libgfortran/configure (.../branches/gcc-4_6-branch) (wersja 182722)
9710 @@ -10326,7 +10326,7 @@
9713 # Unfortunately, older versions of FreeBSD 2 do not have this feature.
9716 archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
9718 hardcode_minus_L=yes
9719 @@ -11242,7 +11242,7 @@
9720 objformat=`/usr/bin/objformat`
9723 - freebsd[123]*) objformat=aout ;;
9724 + freebsd[23].*) objformat=aout ;;
9728 @@ -11260,7 +11260,7 @@
9730 shlibpath_var=LD_LIBRARY_PATH
9734 shlibpath_overrides_runpath=yes
9736 freebsd3.[01]* | freebsdelf3.[01]*)
9737 @@ -14162,7 +14162,7 @@
9740 # Unfortunately, older versions of FreeBSD 2 do not have this feature.
9743 archive_cmds_FC='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
9744 hardcode_direct_FC=yes
9745 hardcode_minus_L_FC=yes
9746 @@ -14870,7 +14870,7 @@
9747 objformat=`/usr/bin/objformat`
9750 - freebsd[123]*) objformat=aout ;;
9751 + freebsd[23].*) objformat=aout ;;
9755 @@ -14888,7 +14888,7 @@
9757 shlibpath_var=LD_LIBRARY_PATH
9761 shlibpath_overrides_runpath=yes
9763 freebsd3.[01]* | freebsdelf3.[01]*)
9764 Index: libgfortran/ChangeLog
9765 ===================================================================
9766 --- libgfortran/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 182722)
9767 +++ libgfortran/ChangeLog (.../branches/gcc-4_6-branch) (wersja 182722)
9769 +2011-11-20 Andreas Tobler <andreast@fgznet.ch>
9771 + * configure: Regenerate.
9773 2011-10-26 Release Manager
9775 * GCC 4.6.2 released.
9776 Index: libada/Makefile.in
9777 ===================================================================
9778 --- libada/Makefile.in (.../tags/gcc_4_6_2_release) (wersja 182722)
9779 +++ libada/Makefile.in (.../branches/gcc-4_6-branch) (wersja 182722)
9781 version := $(shell cat $(srcdir)/../gcc/BASE-VER)
9782 libsubdir := $(libdir)/gcc/$(target_noncanonical)/$(version)$(MULTISUBDIR)
9783 ADA_RTS_DIR=$(GCC_DIR)/ada/rts$(subst /,_,$(MULTISUBDIR))
9784 +ADA_RTS_SUBDIR=./rts$(subst /,_,$(MULTISUBDIR))
9786 # exeext should not be used because it's the *host* exeext. We're building
9787 # a *target* library, aren't we?!? Likewise for CC. Still, provide bogus
9789 "CFLAGS=$(CFLAGS) $(WARN_CFLAGS)"
9791 # Rules to build gnatlib.
9792 -.PHONY: gnatlib gnatlib-plain gnatlib-sjlj gnatlib-zcx gnatlib-shared oscons
9793 +.PHONY: gnatlib gnatlib-plain gnatlib-sjlj gnatlib-zcx gnatlib-shared osconstool
9794 gnatlib: @default_gnatlib_target@
9796 -gnatlib-plain: oscons $(GCC_DIR)/ada/Makefile
9797 +gnatlib-plain: osconstool $(GCC_DIR)/ada/Makefile
9798 test -f stamp-libada || \
9799 $(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) gnatlib \
9800 && touch stamp-libada
9802 $(LN_S) $(ADA_RTS_DIR) adainclude
9803 $(LN_S) $(ADA_RTS_DIR) adalib
9805 -gnatlib-sjlj gnatlib-zcx gnatlib-shared: oscons $(GCC_DIR)/ada/Makefile
9806 +gnatlib-sjlj gnatlib-zcx gnatlib-shared: osconstool $(GCC_DIR)/ada/Makefile
9807 test -f stamp-libada || \
9808 $(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) $@ \
9809 && touch stamp-libada
9811 $(LN_S) $(ADA_RTS_DIR) adainclude
9812 $(LN_S) $(ADA_RTS_DIR) adalib
9815 - $(MAKE) -C $(GCC_DIR) $(LIBADA_FLAGS_TO_PASS) ada/s-oscons.ads
9817 + $(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) ./bldtools/oscons/xoscons
9819 install-gnatlib: $(GCC_DIR)/ada/Makefile
9820 $(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) install-gnatlib
9821 Index: libada/ChangeLog
9822 ===================================================================
9823 --- libada/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 182722)
9824 +++ libada/ChangeLog (.../branches/gcc-4_6-branch) (wersja 182722)
9826 +2011-11-13 Iain Sandoe <iains@gcc.gnu.org>
9828 + Backport from mainline r181319
9829 + Makefile.in: Change dependency on oscons to depend on the generator
9832 2011-10-26 Release Manager
9834 * GCC 4.6.2 released.
9835 Index: libmudflap/configure
9836 ===================================================================
9837 --- libmudflap/configure (.../tags/gcc_4_6_2_release) (wersja 182722)
9838 +++ libmudflap/configure (.../branches/gcc-4_6-branch) (wersja 182722)
9839 @@ -8818,7 +8818,7 @@
9842 # Unfortunately, older versions of FreeBSD 2 do not have this feature.
9845 archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
9847 hardcode_minus_L=yes
9848 @@ -9731,7 +9731,7 @@
9849 objformat=`/usr/bin/objformat`
9852 - freebsd[123]*) objformat=aout ;;
9853 + freebsd[23].*) objformat=aout ;;
9857 @@ -9749,7 +9749,7 @@
9859 shlibpath_var=LD_LIBRARY_PATH
9863 shlibpath_overrides_runpath=yes
9865 freebsd3.[01]* | freebsdelf3.[01]*)
9866 Index: libmudflap/ChangeLog
9867 ===================================================================
9868 --- libmudflap/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 182722)
9869 +++ libmudflap/ChangeLog (.../branches/gcc-4_6-branch) (wersja 182722)
9871 +2011-11-20 Andreas Tobler <andreast@fgznet.ch>
9873 + * configure: Regenerate.
9875 2011-10-26 Release Manager
9877 * GCC 4.6.2 released.
9878 Index: boehm-gc/ChangeLog
9879 ===================================================================
9880 --- boehm-gc/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 182722)
9881 +++ boehm-gc/ChangeLog (.../branches/gcc-4_6-branch) (wersja 182722)
9883 +2011-11-20 Andreas Tobler <andreast@fgznet.ch>
9885 + * configure: Regenerate.
9887 2011-10-26 Release Manager
9889 * GCC 4.6.2 released.
9890 Index: boehm-gc/configure
9891 ===================================================================
9892 --- boehm-gc/configure (.../tags/gcc_4_6_2_release) (wersja 182722)
9893 +++ boehm-gc/configure (.../branches/gcc-4_6-branch) (wersja 182722)
9894 @@ -9604,7 +9604,7 @@
9897 # Unfortunately, older versions of FreeBSD 2 do not have this feature.
9900 archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
9902 hardcode_minus_L=yes
9903 @@ -10520,7 +10520,7 @@
9904 objformat=`/usr/bin/objformat`
9907 - freebsd[123]*) objformat=aout ;;
9908 + freebsd[23].*) objformat=aout ;;
9912 @@ -10538,7 +10538,7 @@
9914 shlibpath_var=LD_LIBRARY_PATH
9918 shlibpath_overrides_runpath=yes
9920 freebsd3.[01]* | freebsdelf3.[01]*)
9921 @@ -12428,7 +12428,7 @@
9927 # C++ shared libraries reported to be fairly broken before
9930 @@ -14203,7 +14203,7 @@
9931 objformat=`/usr/bin/objformat`
9934 - freebsd[123]*) objformat=aout ;;
9935 + freebsd[23].*) objformat=aout ;;
9939 @@ -14221,7 +14221,7 @@
9941 shlibpath_var=LD_LIBRARY_PATH
9945 shlibpath_overrides_runpath=yes
9947 freebsd3.[01]* | freebsdelf3.[01]*)
9948 Index: libiberty/ChangeLog
9949 ===================================================================
9950 --- libiberty/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 182722)
9951 +++ libiberty/ChangeLog (.../branches/gcc-4_6-branch) (wersja 182722)
9953 +2011-11-13 Iain Sandoe <iains@gcc.gnu.org>
9956 + Backport from mainline r180523
9957 + * simple-object-mach-o.c (GNU_WRAPPER_SECTS, GNU_WRAPPER_INDEX,
9958 + GNU_WRAPPER_NAMES): New macros.
9959 + (simple_object_mach_o_segment): Handle wrapper scheme.
9960 + (simple_object_mach_o_write_section_header): Allow the segment name
9962 + (simple_object_mach_o_write_segment): Handle wrapper scheme. Ensure
9963 + that the top-level segment name in the load command is empty.
9964 + (simple_object_mach_o_write_to_file): Determine the number of
9965 + sections during segment output, use that in writing the header.
9967 2011-10-26 Release Manager
9969 * GCC 4.6.2 released.
9970 Index: libiberty/simple-object-mach-o.c
9971 ===================================================================
9972 --- libiberty/simple-object-mach-o.c (.../tags/gcc_4_6_2_release) (wersja 182722)
9973 +++ libiberty/simple-object-mach-o.c (.../branches/gcc-4_6-branch) (wersja 182722)
9975 /* simple-object-mach-o.c -- routines to manipulate Mach-O object files.
9976 - Copyright 2010 Free Software Foundation, Inc.
9977 + Copyright 2010, 2011 Free Software Foundation, Inc.
9978 Written by Ian Lance Taylor, Google.
9980 This program is free software; you can redistribute it and/or modify it
9981 @@ -174,6 +174,15 @@
9983 #define GNU_SECTION_NAMES "__section_names"
9985 +/* A GNU-specific extension to wrap multiple sections using three
9986 + mach-o sections within a given segment. The section '__wrapper_sects'
9987 + is subdivided according to the index '__wrapper_index' and each sub
9988 + sect is named according to the names supplied in '__wrapper_names'. */
9990 +#define GNU_WRAPPER_SECTS "__wrapper_sects"
9991 +#define GNU_WRAPPER_INDEX "__wrapper_index"
9992 +#define GNU_WRAPPER_NAMES "__wrapper_names"
9994 /* Private data for an simple_object_read. */
9996 struct simple_object_mach_o_read
9997 @@ -214,8 +223,19 @@
9998 unsigned int reserved;
10001 -/* See if we have a Mach-O file. */
10002 +/* See if we have a Mach-O MH_OBJECT file:
10004 + A standard MH_OBJECT (from as) will have three load commands:
10005 + 0 - LC_SEGMENT/LC_SEGMENT64
10009 + The LC_SEGMENT/LC_SEGMENT64 will introduce a single anonymous segment
10010 + containing all the sections.
10012 + Files written by simple-object will have only the segment command
10013 + (no symbol tables). */
10016 simple_object_mach_o_match (
10017 unsigned char header[SIMPLE_OBJECT_MATCH_HEADER_LEN],
10018 @@ -356,9 +376,30 @@
10022 -/* Handle a segment in a Mach-O file. Return 1 if we should continue,
10023 - 0 if the caller should return. */
10024 +/* Handle a segment in a Mach-O Object file.
10026 + This will callback to the function pfn for each "section found" the meaning
10027 + of which depends on gnu extensions to mach-o:
10029 + If we find mach-o sections (with the segment name as specified) which also
10030 + contain: a 'sects' wrapper, an index, and a name table, we expand this into
10031 + as many sections as are specified in the index. In this case, there will
10032 + be a callback for each of these.
10034 + We will also allow an extension that permits long names (more than 16
10035 + characters) to be used with mach-o. In this case, the section name has
10036 + a specific format embedding an index into a name table, and the file must
10037 + contain such name table.
10039 + Return 1 if we should continue, 0 if the caller should return. */
10041 +#define SOMO_SECTS_PRESENT 0x01
10042 +#define SOMO_INDEX_PRESENT 0x02
10043 +#define SOMO_NAMES_PRESENT 0x04
10044 +#define SOMO_LONGN_PRESENT 0x08
10045 +#define SOMO_WRAPPING (SOMO_SECTS_PRESENT | SOMO_INDEX_PRESENT \
10046 + | SOMO_NAMES_PRESENT)
10049 simple_object_mach_o_segment (simple_object_read *sobj, off_t offset,
10050 const unsigned char *segbuf,
10051 @@ -378,9 +419,20 @@
10052 unsigned int nsects;
10053 unsigned char *secdata;
10055 + unsigned int gnu_sections_found;
10056 unsigned int strtab_index;
10057 + unsigned int index_index;
10058 + unsigned int nametab_index;
10059 + unsigned int sections_index;
10062 + unsigned char *index;
10063 size_t strtab_size;
10064 + size_t nametab_size;
10065 + size_t index_size;
10066 + unsigned int n_wrapped_sects;
10067 + size_t wrapper_sect_size;
10068 + off_t wrapper_sect_offset;
10070 fetch_32 = (omr->is_big_endian
10071 ? simple_object_fetch_big_32
10072 @@ -409,6 +461,8 @@
10076 + /* Fetch the section headers from the segment command. */
10078 secdata = XNEWVEC (unsigned char, nsects * sechdrsize);
10079 if (!simple_object_internal_read (sobj->descriptor, offset + seghdrsize,
10080 secdata, nsects * sechdrsize, errmsg, err))
10081 @@ -417,9 +471,13 @@
10085 - /* Scan for a __section_names section. This is in effect a GNU
10086 - extension that permits section names longer than 16 chars. */
10087 + /* Scan for special sections that signal GNU extensions to the format. */
10089 + gnu_sections_found = 0;
10090 + index_index = nsects;
10091 + sections_index = nsects;
10092 + strtab_index = nsects;
10093 + nametab_index = nsects;
10094 for (i = 0; i < nsects; ++i)
10097 @@ -427,19 +485,104 @@
10098 nameoff = i * sechdrsize + segname_offset;
10099 if (strcmp ((char *) secdata + nameoff, omr->segment_name) != 0)
10102 nameoff = i * sechdrsize + sectname_offset;
10103 - if (strcmp ((char *) secdata + nameoff, GNU_SECTION_NAMES) == 0)
10105 + if (strcmp ((char *) secdata + nameoff, GNU_WRAPPER_NAMES) == 0)
10107 + nametab_index = i;
10108 + gnu_sections_found |= SOMO_NAMES_PRESENT;
10110 + else if (strcmp ((char *) secdata + nameoff, GNU_WRAPPER_INDEX) == 0)
10113 + gnu_sections_found |= SOMO_INDEX_PRESENT;
10115 + else if (strcmp ((char *) secdata + nameoff, GNU_WRAPPER_SECTS) == 0)
10117 + sections_index = i;
10118 + gnu_sections_found |= SOMO_SECTS_PRESENT;
10120 + else if (strcmp ((char *) secdata + nameoff, GNU_SECTION_NAMES) == 0)
10122 + strtab_index = i;
10123 + gnu_sections_found |= SOMO_LONGN_PRESENT;
10127 - strtab_index = i;
10128 - if (strtab_index >= nsects)
10129 + /* If any of the special wrapper section components is present, then
10130 + they all should be. */
10132 + if ((gnu_sections_found & SOMO_WRAPPING) != 0)
10136 + off_t nametab_offset;
10137 + off_t index_offset;
10139 + if ((gnu_sections_found & SOMO_WRAPPING) != SOMO_WRAPPING)
10141 + *errmsg = "GNU Mach-o section wrapper: required section missing";
10142 + *err = 0; /* No useful errno. */
10143 + XDELETEVEC (secdata);
10147 + /* Fetch the name table. */
10149 + simple_object_mach_o_section_info (omr->is_big_endian, is_32,
10150 + secdata + nametab_index * sechdrsize,
10151 + &nametab_offset, &nametab_size);
10152 + nametab = XNEWVEC (char, nametab_size);
10153 + if (!simple_object_internal_read (sobj->descriptor,
10154 + sobj->offset + nametab_offset,
10155 + (unsigned char *) nametab, nametab_size,
10158 + XDELETEVEC (nametab);
10159 + XDELETEVEC (secdata);
10163 + /* Fetch the index. */
10165 + simple_object_mach_o_section_info (omr->is_big_endian, is_32,
10166 + secdata + index_index * sechdrsize,
10167 + &index_offset, &index_size);
10168 + index = XNEWVEC (unsigned char, index_size);
10169 + if (!simple_object_internal_read (sobj->descriptor,
10170 + sobj->offset + index_offset,
10171 + index, index_size,
10174 + XDELETEVEC (index);
10175 + XDELETEVEC (nametab);
10176 + XDELETEVEC (secdata);
10180 + /* The index contains 4 unsigned ints per sub-section:
10181 + sub-section offset/length, sub-section name/length.
10182 + We fix this for both 32 and 64 bit mach-o for now, since
10183 + other fields limit the maximum size of an object to 4G. */
10184 + n_wrapped_sects = index_size / 16;
10186 + /* Get the parameters for the wrapper too. */
10187 + simple_object_mach_o_section_info (omr->is_big_endian, is_32,
10188 + secdata + sections_index * sechdrsize,
10189 + &wrapper_sect_offset,
10190 + &wrapper_sect_size);
10197 + nametab_size = 0;
10198 + n_wrapped_sects = 0;
10201 + /* If we have a long names section, fetch it. */
10203 + if ((gnu_sections_found & SOMO_LONGN_PRESENT) != 0)
10205 off_t strtab_offset;
10207 simple_object_mach_o_section_info (omr->is_big_endian, is_32,
10208 @@ -452,52 +595,120 @@
10211 XDELETEVEC (strtab);
10212 + XDELETEVEC (index);
10213 + XDELETEVEC (nametab);
10214 XDELETEVEC (secdata);
10222 + strtab_index = nsects;
10225 /* Process the sections. */
10227 for (i = 0; i < nsects; ++i)
10229 const unsigned char *sechdr;
10230 - char namebuf[MACH_O_NAME_LEN + 1];
10231 + char namebuf[MACH_O_NAME_LEN * 2 + 2];
10237 - if (i == strtab_index)
10238 + sechdr = secdata + i * sechdrsize;
10240 + /* We've already processed the long section names. */
10242 + if ((gnu_sections_found & SOMO_LONGN_PRESENT) != 0
10243 + && i == strtab_index)
10246 - sechdr = secdata + i * sechdrsize;
10247 + /* We only act on the segment named. */
10249 if (strcmp ((char *) sechdr + segname_offset, omr->segment_name) != 0)
10252 - memcpy (namebuf, sechdr + sectname_offset, MACH_O_NAME_LEN);
10253 - namebuf[MACH_O_NAME_LEN] = '\0';
10254 + /* Process sections associated with the wrapper. */
10256 - name = &namebuf[0];
10257 - if (strtab != NULL && name[0] == '_' && name[1] == '_')
10258 + if ((gnu_sections_found & SOMO_WRAPPING) != 0)
10260 - unsigned long stringoffset;
10261 + if (i == nametab_index || i == index_index)
10264 - if (sscanf (name + 2, "%08lX", &stringoffset) == 1)
10265 + if (i == sections_index)
10267 - if (stringoffset >= strtab_size)
10269 + for (j = 0; j < n_wrapped_sects; ++j)
10271 - *errmsg = "section name offset out of range";
10273 - XDELETEVEC (strtab);
10274 - XDELETEVEC (secdata);
10276 + unsigned int subsect_offset, subsect_length, name_offset;
10277 + subsect_offset = (*fetch_32) (index + 16 * j);
10278 + subsect_length = (*fetch_32) (index + 16 * j + 4);
10279 + name_offset = (*fetch_32) (index + 16 * j + 8);
10280 + /* We don't need the name_length yet. */
10282 + secoffset = wrapper_sect_offset + subsect_offset;
10283 + secsize = subsect_length;
10284 + name = nametab + name_offset;
10286 + if (!(*pfn) (data, name, secoffset, secsize))
10290 + XDELETEVEC (index);
10291 + XDELETEVEC (nametab);
10292 + XDELETEVEC (strtab);
10293 + XDELETEVEC (secdata);
10298 - name = strtab + stringoffset;
10303 + if ((gnu_sections_found & SOMO_LONGN_PRESENT) != 0)
10305 + memcpy (namebuf, sechdr + sectname_offset, MACH_O_NAME_LEN);
10306 + namebuf[MACH_O_NAME_LEN] = '\0';
10308 + name = &namebuf[0];
10309 + if (strtab != NULL && name[0] == '_' && name[1] == '_')
10311 + unsigned long stringoffset;
10313 + if (sscanf (name + 2, "%08lX", &stringoffset) == 1)
10315 + if (stringoffset >= strtab_size)
10317 + *errmsg = "section name offset out of range";
10319 + XDELETEVEC (index);
10320 + XDELETEVEC (nametab);
10321 + XDELETEVEC (strtab);
10322 + XDELETEVEC (secdata);
10326 + name = strtab + stringoffset;
10332 + /* Otherwise, make a name like __segment,__section as per the
10333 + convention in mach-o asm. */
10334 + name = &namebuf[0];
10335 + memset (namebuf, 0, MACH_O_NAME_LEN * 2 + 2);
10336 + memcpy (namebuf, (char *) sechdr + segname_offset, MACH_O_NAME_LEN);
10337 + l = strlen (namebuf);
10338 + namebuf[l] = ',';
10339 + memcpy (namebuf + l + 1, (char *) sechdr + sectname_offset,
10340 + MACH_O_NAME_LEN);
10343 simple_object_mach_o_section_info (omr->is_big_endian, is_32, sechdr,
10344 &secoffset, &secsize);
10346 @@ -505,12 +716,16 @@
10350 + XDELETEVEC (index);
10351 + XDELETEVEC (nametab);
10352 XDELETEVEC (strtab);
10353 XDELETEVEC (secdata);
10358 + XDELETEVEC (index);
10359 + XDELETEVEC (nametab);
10360 XDELETEVEC (strtab);
10361 XDELETEVEC (secdata);
10363 @@ -724,9 +939,9 @@
10364 simple_object_mach_o_write_section_header (simple_object_write *sobj,
10366 size_t sechdr_offset,
10367 - const char *name, size_t secaddr,
10368 - size_t secsize, size_t offset,
10369 - unsigned int align,
10370 + const char *name, const char *segn,
10371 + size_t secaddr, size_t secsize,
10372 + size_t offset, unsigned int align,
10373 const char **errmsg, int *err)
10375 struct simple_object_mach_o_attributes *attrs =
10376 @@ -748,7 +963,7 @@
10377 strncpy ((char *) hdr + offsetof (struct mach_o_section_32, sectname),
10378 name, MACH_O_NAME_LEN);
10379 strncpy ((char *) hdr + offsetof (struct mach_o_section_32, segname),
10380 - sobj->segment_name, MACH_O_NAME_LEN);
10381 + segn, MACH_O_NAME_LEN);
10382 set_32 (hdr + offsetof (struct mach_o_section_32, addr), secaddr);
10383 set_32 (hdr + offsetof (struct mach_o_section_32, size), secsize);
10384 set_32 (hdr + offsetof (struct mach_o_section_32, offset), offset);
10385 @@ -773,7 +988,7 @@
10386 strncpy ((char *) hdr + offsetof (struct mach_o_section_64, sectname),
10387 name, MACH_O_NAME_LEN);
10388 strncpy ((char *) hdr + offsetof (struct mach_o_section_64, segname),
10389 - sobj->segment_name, MACH_O_NAME_LEN);
10390 + segn, MACH_O_NAME_LEN);
10391 set_64 (hdr + offsetof (struct mach_o_section_64, addr), secaddr);
10392 set_64 (hdr + offsetof (struct mach_o_section_64, size), secsize);
10393 set_32 (hdr + offsetof (struct mach_o_section_64, offset), offset);
10394 @@ -793,11 +1008,25 @@
10395 sechdrsize, errmsg, err);
10398 -/* Write out the single segment and the sections of a Mach-O file. */
10399 +/* Write out the single (anonymous) segment containing the sections of a Mach-O
10402 + As a GNU extension to mach-o, when the caller specifies a segment name in
10403 + sobj->segment_name, all the sections passed will be output under a single
10404 + mach-o section header. The caller's sections are indexed within this
10405 + 'wrapper' section by a table stored in a second mach-o section. Finally,
10406 + arbitrary length section names are permitted by the extension and these are
10407 + stored in a table in a third mach-o section.
10409 + Note that this is only likely to make any sense for the __GNU_LTO segment
10412 + If the wrapper extension is not in force, we assume that the section name
10413 + is in the form __SEGMENT_NAME,__section_name as per Mach-O asm. */
10416 simple_object_mach_o_write_segment (simple_object_write *sobj, int descriptor,
10417 - size_t nsects, const char **errmsg,
10418 + size_t *nsects, const char **errmsg,
10421 struct simple_object_mach_o_attributes *attrs =
10422 @@ -814,6 +1043,10 @@
10423 simple_object_write_section *section;
10424 unsigned char hdrbuf[sizeof (struct mach_o_segment_command_64)];
10425 unsigned char *hdr;
10426 + size_t nsects_in;
10427 + unsigned int *index;
10429 + unsigned int sect;
10431 set_32 = (attrs->is_big_endian
10432 ? simple_object_set_big_32
10433 @@ -834,19 +1067,62 @@
10434 sechdrsize = sizeof (struct mach_o_section_64);
10438 + *nsects = nsects_in = 0;
10440 + /* Count the number of sections we start with. */
10442 + for (section = sobj->sections; section != NULL; section = section->next)
10445 + if (sobj->segment_name != NULL)
10447 + /* We will only write 3 sections: wrapped data, index and names. */
10451 + /* The index has four entries per wrapped section:
10452 + Section Offset, length, Name offset, length.
10453 + Where the offsets are based at the start of the wrapper and name
10454 + sections respectively.
10455 + The values are stored as 32 bit int for both 32 and 64 bit mach-o
10456 + since the size of a mach-o MH_OBJECT cannot exceed 4G owing to
10457 + other constraints. */
10459 + index = XNEWVEC (unsigned int, nsects_in * 4);
10461 + /* We now need to figure out the size of the names section. This just
10462 + stores the names as null-terminated c strings, packed without any
10463 + alignment padding. */
10465 + for (section = sobj->sections, sect = 0; section != NULL;
10466 + section = section->next, sect++)
10468 + index[sect*4+2] = name_offset;
10469 + index[sect*4+3] = strlen (section->name) + 1;
10470 + name_offset += strlen (section->name) + 1;
10472 + snames = XNEWVEC (char, name_offset);
10476 + *nsects = nsects_in;
10481 sechdr_offset = hdrsize + seghdrsize;
10482 - cmdsize = seghdrsize + nsects * sechdrsize;
10483 + cmdsize = seghdrsize + *nsects * sechdrsize;
10484 offset = hdrsize + cmdsize;
10488 - for (section = sobj->sections; section != NULL; section = section->next)
10489 + for (section = sobj->sections, sect = 0;
10490 + section != NULL; section = section->next, sect++)
10495 struct simple_object_write_section_buffer *buffer;
10496 - char namebuf[MACH_O_NAME_LEN + 1];
10498 mask = (1U << section->align) - 1;
10499 new_offset = offset + mask;
10500 @@ -877,39 +1153,126 @@
10501 secsize += buffer->size;
10504 - snprintf (namebuf, sizeof namebuf, "__%08X", name_offset);
10505 + if (sobj->segment_name != NULL)
10507 + index[sect*4+0] = (unsigned int) offset;
10508 + index[sect*4+1] = secsize;
10509 + /* Stash the section name in our table. */
10510 + memcpy (snames + index[sect * 4 + 2], section->name,
10511 + index[sect * 4 + 3]);
10515 + char namebuf[MACH_O_NAME_LEN + 1];
10516 + char segnbuf[MACH_O_NAME_LEN + 1];
10519 + /* Try to extract segment,section from the input name. */
10521 + memset (namebuf, 0, sizeof namebuf);
10522 + memset (segnbuf, 0, sizeof segnbuf);
10523 + comma = strchr (section->name, ',');
10524 + if (comma != NULL)
10526 + int len = comma - section->name;
10527 + len = len > MACH_O_NAME_LEN ? MACH_O_NAME_LEN : len;
10528 + strncpy (namebuf, section->name, len);
10529 + strncpy (segnbuf, comma + 1, MACH_O_NAME_LEN);
10531 + else /* just try to copy the name, leave segment blank. */
10532 + strncpy (namebuf, section->name, MACH_O_NAME_LEN);
10534 + if (!simple_object_mach_o_write_section_header (sobj, descriptor,
10536 + namebuf, segnbuf,
10537 + secaddr, secsize,
10542 + sechdr_offset += sechdrsize;
10545 + offset += secsize;
10546 + secaddr += secsize;
10549 + if (sobj->segment_name != NULL)
10554 + /* Write the section header for the wrapper. */
10555 + /* Account for any initial aligment - which becomes the alignment for this
10556 + created section. */
10558 + secsize = (offset - index[0]);
10559 if (!simple_object_mach_o_write_section_header (sobj, descriptor,
10560 - sechdr_offset, namebuf,
10561 - secaddr, secsize, offset,
10564 + GNU_WRAPPER_SECTS,
10565 + sobj->segment_name,
10567 + secsize, index[0],
10568 + sobj->sections->align,
10572 + /* Subtract the wrapper section start from the begining of each sub
10575 + for (i = 1; i < nsects_in; ++i)
10576 + index[4 * i] -= index[0];
10579 sechdr_offset += sechdrsize;
10580 - offset += secsize;
10581 - name_offset += strlen (section->name) + 1;
10582 - secaddr += secsize;
10585 - /* Write out the section names. */
10586 + /* Write out the section names.
10587 + ... the header ...
10588 + name_offset contains the length of the section. It is not aligned. */
10590 - if (!simple_object_mach_o_write_section_header (sobj, descriptor,
10592 - GNU_SECTION_NAMES, secaddr,
10593 - name_offset, offset, 0,
10596 + if (!simple_object_mach_o_write_section_header (sobj, descriptor,
10598 + GNU_WRAPPER_NAMES,
10599 + sobj->segment_name,
10606 - for (section = sobj->sections; section != NULL; section = section->next)
10609 + /* ... and the content.. */
10610 + if (!simple_object_internal_write (descriptor, offset,
10611 + (const unsigned char *) snames,
10612 + name_offset, errmsg, err))
10615 - namelen = strlen (section->name) + 1;
10616 + sechdr_offset += sechdrsize;
10617 + secaddr += name_offset;
10618 + offset += name_offset;
10620 + /* Now do the index, we'll align this to 4 bytes although the read code
10621 + will handle unaligned. */
10625 + if (!simple_object_mach_o_write_section_header (sobj, descriptor,
10627 + GNU_WRAPPER_INDEX,
10628 + sobj->segment_name,
10635 + /* ... and the content.. */
10636 if (!simple_object_internal_write (descriptor, offset,
10637 - (const unsigned char *) section->name,
10638 - namelen, errmsg, err))
10639 + (const unsigned char *) index,
10640 + nsects_in*16, errmsg, err))
10642 - offset += namelen;
10644 + XDELETEVEC (index);
10645 + XDELETEVEC (snames);
10648 /* Write out the segment header. */
10649 @@ -923,9 +1286,8 @@
10650 MACH_O_LC_SEGMENT);
10651 set_32 (hdr + offsetof (struct mach_o_segment_command_32, cmdsize),
10653 - strncpy (((char *) hdr
10654 - + offsetof (struct mach_o_segment_command_32, segname)),
10655 - sobj->segment_name, MACH_O_NAME_LEN);
10656 + /* MH_OBJECTS have a single, anonymous, segment - so the segment name
10657 + is left empty. */
10658 /* vmaddr left as zero. */
10659 /* vmsize left as zero. */
10660 set_32 (hdr + offsetof (struct mach_o_segment_command_32, fileoff),
10661 @@ -935,7 +1297,7 @@
10662 /* maxprot left as zero. */
10663 /* initprot left as zero. */
10664 set_32 (hdr + offsetof (struct mach_o_segment_command_32, nsects),
10667 /* flags left as zero. */
10670 @@ -951,9 +1313,8 @@
10671 MACH_O_LC_SEGMENT);
10672 set_32 (hdr + offsetof (struct mach_o_segment_command_64, cmdsize),
10674 - strncpy (((char *) hdr
10675 - + offsetof (struct mach_o_segment_command_64, segname)),
10676 - sobj->segment_name, MACH_O_NAME_LEN);
10677 + /* MH_OBJECTS have a single, anonymous, segment - so the segment name
10678 + is left empty. */
10679 /* vmaddr left as zero. */
10680 /* vmsize left as zero. */
10681 set_64 (hdr + offsetof (struct mach_o_segment_command_64, fileoff),
10682 @@ -963,7 +1324,7 @@
10683 /* maxprot left as zero. */
10684 /* initprot left as zero. */
10685 set_32 (hdr + offsetof (struct mach_o_segment_command_64, nsects),
10688 /* flags left as zero. */
10691 @@ -978,23 +1339,17 @@
10692 simple_object_mach_o_write_to_file (simple_object_write *sobj, int descriptor,
10696 - simple_object_write_section *section;
10697 + size_t nsects = 0;
10698 const char *errmsg;
10700 - /* Start at 1 for symbol_names section. */
10702 - for (section = sobj->sections; section != NULL; section = section->next)
10704 + if (!simple_object_mach_o_write_segment (sobj, descriptor, &nsects,
10708 if (!simple_object_mach_o_write_header (sobj, descriptor, nsects,
10712 - if (!simple_object_mach_o_write_segment (sobj, descriptor, nsects,
10720 ===================================================================
10721 --- ChangeLog (.../tags/gcc_4_6_2_release) (wersja 182722)
10722 +++ ChangeLog (.../branches/gcc-4_6-branch) (wersja 182722)
10724 +2011-12-18 Eric Botcazou <ebotcazou@adacore.com>
10726 + * configure: Regenerate.
10728 +2011-11-20 Andreas Tobler <andreast@fgznet.ch>
10730 + * libtool.m4: Additional FreeBSD 10 fixes.
10732 +2011-11-18 Iain Sandoe <iains@gcc.gnu.org>
10735 + * configure.ac: Remove ranlib special-casing for Darwin.
10736 + * configure: Regenerate.
10738 2011-10-26 Release Manager
10740 * GCC 4.6.2 released.
10741 Index: lto-plugin/configure
10742 ===================================================================
10743 --- lto-plugin/configure (.../tags/gcc_4_6_2_release) (wersja 182722)
10744 +++ lto-plugin/configure (.../branches/gcc-4_6-branch) (wersja 182722)
10745 @@ -8733,7 +8733,7 @@
10748 # Unfortunately, older versions of FreeBSD 2 do not have this feature.
10751 archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
10752 hardcode_direct=yes
10753 hardcode_minus_L=yes
10754 @@ -9646,7 +9646,7 @@
10755 objformat=`/usr/bin/objformat`
10758 - freebsd[123]*) objformat=aout ;;
10759 + freebsd[23].*) objformat=aout ;;
10760 *) objformat=elf ;;
10763 @@ -9664,7 +9664,7 @@
10765 shlibpath_var=LD_LIBRARY_PATH
10769 shlibpath_overrides_runpath=yes
10771 freebsd3.[01]* | freebsdelf3.[01]*)
10772 Index: lto-plugin/ChangeLog
10773 ===================================================================
10774 --- lto-plugin/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 182722)
10775 +++ lto-plugin/ChangeLog (.../branches/gcc-4_6-branch) (wersja 182722)
10777 +2011-11-20 Andreas Tobler <andreast@fgznet.ch>
10779 + * configure: Regenerate.
10781 2011-10-26 Release Manager
10783 * GCC 4.6.2 released.
10784 Index: libffi/configure
10785 ===================================================================
10786 --- libffi/configure (.../tags/gcc_4_6_2_release) (wersja 182722)
10787 +++ libffi/configure (.../branches/gcc-4_6-branch) (wersja 182722)
10788 @@ -9001,7 +9001,7 @@
10791 # Unfortunately, older versions of FreeBSD 2 do not have this feature.
10794 archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
10795 hardcode_direct=yes
10796 hardcode_minus_L=yes
10797 @@ -9914,7 +9914,7 @@
10798 objformat=`/usr/bin/objformat`
10801 - freebsd[123]*) objformat=aout ;;
10802 + freebsd[23].*) objformat=aout ;;
10803 *) objformat=elf ;;
10806 @@ -9932,7 +9932,7 @@
10808 shlibpath_var=LD_LIBRARY_PATH
10812 shlibpath_overrides_runpath=yes
10814 freebsd3.[01]* | freebsdelf3.[01]*)
10815 Index: libffi/ChangeLog
10816 ===================================================================
10817 --- libffi/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 182722)
10818 +++ libffi/ChangeLog (.../branches/gcc-4_6-branch) (wersja 182722)
10820 +2011-11-20 Andreas Tobler <andreast@fgznet.ch>
10822 + * configure: Regenerate.
10824 2011-10-26 Release Manager
10826 * GCC 4.6.2 released.
10827 Index: libssp/configure
10828 ===================================================================
10829 --- libssp/configure (.../tags/gcc_4_6_2_release) (wersja 182722)
10830 +++ libssp/configure (.../branches/gcc-4_6-branch) (wersja 182722)
10831 @@ -8864,7 +8864,7 @@
10834 # Unfortunately, older versions of FreeBSD 2 do not have this feature.
10837 archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
10838 hardcode_direct=yes
10839 hardcode_minus_L=yes
10840 @@ -9780,7 +9780,7 @@
10841 objformat=`/usr/bin/objformat`
10844 - freebsd[123]*) objformat=aout ;;
10845 + freebsd[23].*) objformat=aout ;;
10846 *) objformat=elf ;;
10849 @@ -9798,7 +9798,7 @@
10851 shlibpath_var=LD_LIBRARY_PATH
10855 shlibpath_overrides_runpath=yes
10857 freebsd3.[01]* | freebsdelf3.[01]*)
10858 Index: libssp/ChangeLog
10859 ===================================================================
10860 --- libssp/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 182722)
10861 +++ libssp/ChangeLog (.../branches/gcc-4_6-branch) (wersja 182722)
10863 +2011-11-20 Andreas Tobler <andreast@fgznet.ch>
10865 + * configure: Regenerate.
10867 2011-10-26 Release Manager
10869 * GCC 4.6.2 released.
10870 Index: config/ChangeLog
10871 ===================================================================
10872 --- config/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 182722)
10873 +++ config/ChangeLog (.../branches/gcc-4_6-branch) (wersja 182722)
10875 +2011-12-18 Eric Botcazou <ebotcazou@adacore.com>
10877 + * acx.m4 (Test for GNAT): Update comment and add quotes in final test.
10879 2011-10-26 Release Manager
10881 * GCC 4.6.2 released.
10882 Index: config/acx.m4
10883 ===================================================================
10884 --- config/acx.m4 (.../tags/gcc_4_6_2_release) (wersja 182722)
10885 +++ config/acx.m4 (.../branches/gcc-4_6-branch) (wersja 182722)
10886 @@ -356,9 +356,9 @@
10887 ac_c_preproc_warn_flag=yes])# AC_PROG_CPP_WERROR
10890 -# We require the gnatbind program, and a compiler driver that
10891 -# understands Ada. We use the user's CC setting, already found,
10892 -# and possibly add $1 to the command-line parameters.
10893 +# We require the gnatbind & gnatmake programs, as well as a compiler driver
10894 +# that understands Ada. We use the user's CC setting, already found, and
10895 +# possibly add $1 to the command-line parameters.
10897 # Sets the shell variable have_gnat to yes or no as appropriate, and
10898 # substitutes GNATBIND and GNATMAKE.
10899 @@ -387,7 +387,7 @@
10903 -if test x$GNATBIND != xno && test x$GNATMAKE != xno && test x$acx_cv_cc_gcc_supports_ada != xno; then
10904 +if test "x$GNATBIND" != xno && test "x$GNATMAKE" != xno && test x$acx_cv_cc_gcc_supports_ada != xno; then
10908 Index: libjava/libltdl/configure
10909 ===================================================================
10910 --- libjava/libltdl/configure (.../tags/gcc_4_6_2_release) (wersja 182722)
10911 +++ libjava/libltdl/configure (.../branches/gcc-4_6-branch) (wersja 182722)
10912 @@ -7355,7 +7355,7 @@
10915 # Unfortunately, older versions of FreeBSD 2 do not have this feature.
10918 archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
10919 hardcode_direct=yes
10920 hardcode_minus_L=yes
10921 @@ -7968,7 +7968,7 @@
10923 shlibpath_var=LD_LIBRARY_PATH
10927 shlibpath_overrides_runpath=yes
10929 freebsd3.[01]* | freebsdelf3.[01]*)
10930 Index: libjava/libltdl/ChangeLog
10931 ===================================================================
10932 --- libjava/libltdl/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 182722)
10933 +++ libjava/libltdl/ChangeLog (.../branches/gcc-4_6-branch) (wersja 182722)
10935 +2011-11-20 Andreas Tobler <andreast@fgznet.ch>
10937 + * acinclude.m4: Additional FreeBSD 10 fixes.
10938 + * configure: Regenerate.
10940 2011-10-26 Release Manager
10942 * GCC 4.6.2 released.
10943 Index: libjava/libltdl/acinclude.m4
10944 ===================================================================
10945 --- libjava/libltdl/acinclude.m4 (.../tags/gcc_4_6_2_release) (wersja 182722)
10946 +++ libjava/libltdl/acinclude.m4 (.../branches/gcc-4_6-branch) (wersja 182722)
10947 @@ -1377,7 +1377,7 @@
10949 shlibpath_var=LD_LIBRARY_PATH
10953 shlibpath_overrides_runpath=yes
10955 freebsd3.[[01]]* | freebsdelf3.[[01]]*)
10956 @@ -3035,7 +3035,7 @@
10962 # C++ shared libraries reported to be fairly broken before switch to ELF
10963 _LT_AC_TAGVAR(ld_shlibs, $1)=no
10965 @@ -5669,7 +5669,7 @@
10968 # Unfortunately, older versions of FreeBSD 2 do not have this feature.
10971 _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
10972 _LT_AC_TAGVAR(hardcode_direct, $1)=yes
10973 _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
10974 Index: libjava/configure.ac
10975 ===================================================================
10976 --- libjava/configure.ac (.../tags/gcc_4_6_2_release) (wersja 182722)
10977 +++ libjava/configure.ac (.../branches/gcc-4_6-branch) (wersja 182722)
10978 @@ -1060,7 +1060,7 @@
10980 # Don't set THREADLIBS here. Cygwin doesn't have -lpthread.
10982 - *-*-freebsd[[1234]]*)
10983 + *-*-freebsd[[34]].*)
10984 # Before FreeBSD 5, it didn't have -lpthread (or any library which
10985 # merely adds pthread_* functions) but it does have a -pthread switch
10986 # which is required at link-time to select -lc_r *instead* of -lc.
10987 Index: libjava/classpath/config.rpath
10988 ===================================================================
10989 --- libjava/classpath/config.rpath (.../tags/gcc_4_6_2_release) (wersja 182722)
10990 +++ libjava/classpath/config.rpath (.../branches/gcc-4_6-branch) (wersja 182722)
10991 @@ -361,7 +361,7 @@
10992 hardcode_libdir_flag_spec='-R$libdir'
10993 hardcode_direct=yes
10997 hardcode_direct=yes
10998 hardcode_minus_L=yes
11000 @@ -533,7 +533,7 @@
11002 freebsd* | dragonfly*)
11006 library_names_spec='$libname$shrext$versuffix' ;;
11008 library_names_spec='$libname$shrext' ;;
11009 Index: libjava/classpath/configure
11010 ===================================================================
11011 --- libjava/classpath/configure (.../tags/gcc_4_6_2_release) (wersja 182722)
11012 +++ libjava/classpath/configure (.../branches/gcc-4_6-branch) (wersja 182722)
11013 @@ -10025,7 +10025,7 @@
11016 # Unfortunately, older versions of FreeBSD 2 do not have this feature.
11019 archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
11020 hardcode_direct=yes
11021 hardcode_minus_L=yes
11022 @@ -10941,7 +10941,7 @@
11023 objformat=`/usr/bin/objformat`
11026 - freebsd[123]*) objformat=aout ;;
11027 + freebsd[23].*) objformat=aout ;;
11028 *) objformat=elf ;;
11031 @@ -10959,7 +10959,7 @@
11033 shlibpath_var=LD_LIBRARY_PATH
11037 shlibpath_overrides_runpath=yes
11039 freebsd3.[01]* | freebsdelf3.[01]*)
11040 @@ -14225,7 +14225,7 @@
11046 # C++ shared libraries reported to be fairly broken before
11049 @@ -16000,7 +16000,7 @@
11050 objformat=`/usr/bin/objformat`
11053 - freebsd[123]*) objformat=aout ;;
11054 + freebsd[23].*) objformat=aout ;;
11055 *) objformat=elf ;;
11058 @@ -16018,7 +16018,7 @@
11060 shlibpath_var=LD_LIBRARY_PATH
11064 shlibpath_overrides_runpath=yes
11066 freebsd3.[01]* | freebsdelf3.[01]*)
11067 Index: libjava/classpath/ChangeLog.gcj
11068 ===================================================================
11069 --- libjava/classpath/ChangeLog.gcj (.../tags/gcc_4_6_2_release) (wersja 182722)
11070 +++ libjava/classpath/ChangeLog.gcj (.../branches/gcc-4_6-branch) (wersja 182722)
11072 +2011-11-29 Andreas Tobler <andreast@fgznet.ch>
11074 + * config.rpath (ld_shlibs): Fix detection of FreeBSD-10 and up.
11075 + (libname_spec): Likewise.
11076 + * configure: Regenerate with autoconf -I ../../.
11078 2011-02-13 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
11080 * config.rpath, ltcf-c.sh, ltcf-gcj.sh, ltconfig: Remove
11081 Index: libjava/ChangeLog
11082 ===================================================================
11083 --- libjava/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 182722)
11084 +++ libjava/ChangeLog (.../branches/gcc-4_6-branch) (wersja 182722)
11086 +2011-11-24 Jakub Jelinek <jakub@redhat.com>
11088 + PR bootstrap/50888
11089 + * prims.cc: Don't include ctype.h.
11090 + (c_isspace): Define.
11091 + (next_property_key, next_property_value): Use it instead
11094 +2011-11-20 Andreas Tobler <andreast@fgznet.ch>
11096 + * configure.ac: Fix FreeBSD 10 detection.
11097 + * configure: Regenerate.
11099 2011-10-26 Release Manager
11101 * GCC 4.6.2 released.
11102 Index: libjava/prims.cc
11103 ===================================================================
11104 --- libjava/prims.cc (.../tags/gcc_4_6_2_release) (wersja 182722)
11105 +++ libjava/prims.cc (.../branches/gcc-4_6-branch) (wersja 182722)
11109 #ifndef DISABLE_GETENV_PROPERTIES
11110 -#include <ctype.h>
11111 #include <java-props.h>
11112 #define PROCESS_GCJ_PROPERTIES process_gcj_properties()
11114 @@ -985,6 +984,8 @@
11116 #ifndef DISABLE_GETENV_PROPERTIES
11118 +#define c_isspace(c) (memchr (" \t\n\r\v\f", c, 6) != NULL)
11121 next_property_key (char *s, size_t *length)
11123 @@ -993,7 +994,7 @@
11126 // Skip over whitespace
11127 - while (isspace (*s))
11128 + while (c_isspace (*s))
11131 // If we've reached the end, return NULL. Also return NULL if for
11132 @@ -1005,7 +1006,7 @@
11134 // Determine the length of the property key.
11136 - && ! isspace (s[l])
11137 + && ! c_isspace (s[l])
11141 @@ -1027,19 +1028,19 @@
11145 - while (isspace (*s))
11146 + while (c_isspace (*s))
11153 - while (isspace (*s))
11154 + while (c_isspace (*s))
11157 // Determine the length of the property value.
11159 - && ! isspace (s[l])
11160 + && ! c_isspace (s[l])
11164 Index: libjava/configure
11165 ===================================================================
11166 --- libjava/configure (.../tags/gcc_4_6_2_release) (wersja 182722)
11167 +++ libjava/configure (.../branches/gcc-4_6-branch) (wersja 182722)
11168 @@ -11560,7 +11560,7 @@
11171 # Unfortunately, older versions of FreeBSD 2 do not have this feature.
11174 archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
11175 hardcode_direct=yes
11176 hardcode_minus_L=yes
11177 @@ -12476,7 +12476,7 @@
11178 objformat=`/usr/bin/objformat`
11181 - freebsd[123]*) objformat=aout ;;
11182 + freebsd[23].*) objformat=aout ;;
11183 *) objformat=elf ;;
11186 @@ -12494,7 +12494,7 @@
11188 shlibpath_var=LD_LIBRARY_PATH
11192 shlibpath_overrides_runpath=yes
11194 freebsd3.[01]* | freebsdelf3.[01]*)
11195 @@ -14384,7 +14384,7 @@
11201 # C++ shared libraries reported to be fairly broken before
11204 @@ -16159,7 +16159,7 @@
11205 objformat=`/usr/bin/objformat`
11208 - freebsd[123]*) objformat=aout ;;
11209 + freebsd[23].*) objformat=aout ;;
11210 *) objformat=elf ;;
11213 @@ -16177,7 +16177,7 @@
11215 shlibpath_var=LD_LIBRARY_PATH
11219 shlibpath_overrides_runpath=yes
11221 freebsd3.[01]* | freebsdelf3.[01]*)
11222 @@ -18520,7 +18520,7 @@
11225 # Unfortunately, older versions of FreeBSD 2 do not have this feature.
11228 archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
11229 hardcode_direct_GCJ=yes
11230 hardcode_minus_L_GCJ=yes
11231 @@ -20715,7 +20715,7 @@
11233 # Don't set THREADLIBS here. Cygwin doesn't have -lpthread.
11235 - *-*-freebsd[1234]*)
11236 + *-*-freebsd[34].*)
11237 # Before FreeBSD 5, it didn't have -lpthread (or any library which
11238 # merely adds pthread_* functions) but it does have a -pthread switch
11239 # which is required at link-time to select -lc_r *instead* of -lc.
11240 Index: maintainer-scripts/ChangeLog
11241 ===================================================================
11242 --- maintainer-scripts/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 182722)
11243 +++ maintainer-scripts/ChangeLog (.../branches/gcc-4_6-branch) (wersja 182722)
11245 +2011-11-23 Gerald Pfeifer <gerald@pfeifer.com>
11247 + * update_web_docs_svn: Make $DOCSDIR group writable after
11250 2011-10-26 Release Manager
11252 * GCC 4.6.2 released.
11253 Index: maintainer-scripts/update_web_docs_svn
11254 ===================================================================
11255 --- maintainer-scripts/update_web_docs_svn (.../tags/gcc_4_6_2_release) (wersja 182722)
11256 +++ maintainer-scripts/update_web_docs_svn (.../branches/gcc-4_6-branch) (wersja 182722)
11259 if [ ! -d $DOCSDIR ]; then
11261 + chmod g+w $DOCSDIR
11264 if [ -z "$RELEASE" ]; then