1 Index: libgomp/ChangeLog
2 ===================================================================
3 --- libgomp/ChangeLog (.../tags/gcc_4_3_0_release) (revision 133190)
4 +++ libgomp/ChangeLog (.../branches/gcc-4_3-branch) (revision 133190)
6 +2008-03-13 Jakub Jelinek <jakub@redhat.com>
9 + * testsuite/libgomp.c++/pr35185.C: New test.
11 +2008-03-12 Jakub Jelinek <jakub@redhat.com>
14 + * testsuite/libgomp.c/pr35549.c: New test.
16 +2008-03-06 Jakub Jelinek <jakub@redhat.com>
18 + * testsuite/libgomp.c/atomic-3.c: New test.
20 2008-03-05 Release Manager
23 Index: libgomp/testsuite/libgomp.c++/pr35185.C
24 ===================================================================
25 --- libgomp/testsuite/libgomp.c++/pr35185.C (.../tags/gcc_4_3_0_release) (revision 0)
26 +++ libgomp/testsuite/libgomp.c++/pr35185.C (.../branches/gcc-4_3-branch) (revision 133190)
28 +// PR middle-end/35185
31 +extern "C" void abort ();
40 +__attribute__((noinline))
52 +#pragma omp parallel shared (s)
61 Index: libgomp/testsuite/libgomp.c/pr35549.c
62 ===================================================================
63 --- libgomp/testsuite/libgomp.c/pr35549.c (.../tags/gcc_4_3_0_release) (revision 0)
64 +++ libgomp/testsuite/libgomp.c/pr35549.c (.../branches/gcc-4_3-branch) (revision 133190)
66 +/* PR middle-end/35549 */
76 + omp_set_dynamic (0);
78 + #pragma omp parallel shared (i) num_threads (3)
80 + if (omp_get_num_threads () != 3)
83 + #pragma omp parallel shared (i) num_threads (4)
85 + if (omp_get_num_threads () != 4)
88 + #pragma omp critical
92 + if (n == 0 && i != 6 + 3 * 4)
96 Index: libgomp/testsuite/libgomp.c/atomic-3.c
97 ===================================================================
98 --- libgomp/testsuite/libgomp.c/atomic-3.c (.../tags/gcc_4_3_0_release) (revision 0)
99 +++ libgomp/testsuite/libgomp.c/atomic-3.c (.../branches/gcc-4_3-branch) (revision 133190)
102 +/* { dg-options "-fopenmp -O0" } */
109 +_Complex double d, f;
112 +__attribute__((noinline)) void
113 +foo (int x, long long y)
115 +#pragma omp parallel num_threads (4)
118 + #pragma omp barrier
119 + for (i = 0; i < 2400; i++)
122 + num_threads = omp_get_num_threads ();
142 + if (g != 3 * 2400 * num_threads
143 + || __real__ d != g || __imag__ d != 0
144 + || __real__ f != 0 || __imag__ f != g)
146 + for (i = 0; i < 64; i++)
147 + if (e[i] != ((i && i != 16) ? 0 : g))
151 Index: gcc/doc/include/texinfo.tex
152 ===================================================================
153 --- gcc/doc/include/texinfo.tex (.../tags/gcc_4_3_0_release) (revision 133190)
154 +++ gcc/doc/include/texinfo.tex (.../branches/gcc-4_3-branch) (revision 133190)
156 % Load plain if necessary, i.e., if running under initex.
157 \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
159 -\def\texinfoversion{2008-02-04.16}
160 +\def\texinfoversion{2008-03-07.10}
162 % Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
163 % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
164 @@ -917,16 +917,21 @@
168 -% @include file insert text of that file as input.
169 +% @include FILE -- \input text of FILE.
171 \def\include{\parseargusing\filenamecatcodes\includezzz}
176 - \makevalueexpandable
179 + \makevalueexpandable % we want to expand any @value in FILE.
180 + \turnoffactive % and allow special characters in the expansion
181 + \edef\temp{\noexpand\input #1 }%
183 + % This trickery is to read FILE outside of a group, in case it makes
184 + % definitions, etc.
189 \def\filenamecatcodes{%
190 @@ -5725,7 +5730,7 @@
194 - \expandafter \let\csname top \endcsname=\ptextop % outer
195 + \expandafter \let\csname top\endcsname=\ptextop % outer
196 \let\frenchspacing=\plainfrenchspacing
198 \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}%
199 Index: gcc/java/jcf-parse.c
200 ===================================================================
201 --- gcc/java/jcf-parse.c (.../tags/gcc_4_3_0_release) (revision 133190)
202 +++ gcc/java/jcf-parse.c (.../branches/gcc-4_3-branch) (revision 133190)
203 @@ -1208,7 +1208,7 @@
204 #ifdef USE_MAPPED_LOCATION
206 tree source_name = identifier_subst (class_name, "", '.', '/', ".java");
207 - const char *sfname = IDENTIFIER_POINTER (source_name);
208 + const char *sfname = find_sourcefile (IDENTIFIER_POINTER (source_name));
209 linemap_add (line_table, LC_ENTER, false, sfname, 0);
210 input_location = linemap_line_start (line_table, 0, 1);
211 file_start_location = input_location;
212 Index: gcc/java/ChangeLog
213 ===================================================================
214 --- gcc/java/ChangeLog (.../tags/gcc_4_3_0_release) (revision 133190)
215 +++ gcc/java/ChangeLog (.../branches/gcc-4_3-branch) (revision 133190)
217 +2008-03-06 Andrew Haley <aph@redhat.com>
219 + * jcf-parse.c (give_name_to_class): Call find_sourcefile to find
220 + full pathname of source file.
222 2008-03-05 Release Manager
224 * GCC 4.3.0 released.
226 ===================================================================
227 --- gcc/DATESTAMP (.../tags/gcc_4_3_0_release) (revision 133190)
228 +++ gcc/DATESTAMP (.../branches/gcc-4_3-branch) (revision 133190)
233 ===================================================================
234 --- gcc/tree.c (.../tags/gcc_4_3_0_release) (revision 133190)
235 +++ gcc/tree.c (.../branches/gcc-4_3-branch) (revision 133190)
236 @@ -4067,6 +4067,16 @@
240 + if (TREE_CODE (node) == TYPE_DECL
241 + && TREE_CODE (TREE_TYPE (node)) != RECORD_TYPE
242 + && TREE_CODE (TREE_TYPE (node)) != UNION_TYPE)
244 + *no_add_attrs = true;
245 + warning (OPT_Wattributes, "%qs attribute ignored",
246 + IDENTIFIER_POINTER (name));
250 /* Report error on dllimport ambiguities seen now before they cause
252 else if (is_attribute_p ("dllimport", name))
253 Index: gcc/fold-const.c
254 ===================================================================
255 --- gcc/fold-const.c (.../tags/gcc_4_3_0_release) (revision 133190)
256 +++ gcc/fold-const.c (.../branches/gcc-4_3-branch) (revision 133190)
257 @@ -5066,9 +5066,10 @@
259 Note that all these transformations are correct if A is
260 NaN, since the two alternatives (A and -A) are also NaNs. */
261 - if ((FLOAT_TYPE_P (TREE_TYPE (arg01))
262 - ? real_zerop (arg01)
263 - : integer_zerop (arg01))
264 + if (!HONOR_SIGNED_ZEROS (TYPE_MODE (type))
265 + && (FLOAT_TYPE_P (TREE_TYPE (arg01))
266 + ? real_zerop (arg01)
267 + : integer_zerop (arg01))
268 && ((TREE_CODE (arg2) == NEGATE_EXPR
269 && operand_equal_p (TREE_OPERAND (arg2, 0), arg1, 0))
270 /* In the case that A is of the form X-Y, '-A' (arg2) may
271 @@ -5121,7 +5122,8 @@
272 both transformations are correct when A is NaN: A != 0
273 is then true, and A == 0 is false. */
275 - if (integer_zerop (arg01) && integer_zerop (arg2))
276 + if (!HONOR_SIGNED_ZEROS (TYPE_MODE (type))
277 + && integer_zerop (arg01) && integer_zerop (arg2))
279 if (comp_code == NE_EXPR)
280 return pedantic_non_lvalue (fold_convert (type, arg1));
281 @@ -5155,7 +5157,8 @@
282 a number and A is not. The conditions in the original
283 expressions will be false, so all four give B. The min()
284 and max() versions would give a NaN instead. */
285 - if (operand_equal_for_comparison_p (arg01, arg2, arg00)
286 + if (!HONOR_SIGNED_ZEROS (TYPE_MODE (type))
287 + && operand_equal_for_comparison_p (arg01, arg2, arg00)
288 /* Avoid these transformations if the COND_EXPR may be used
289 as an lvalue in the C++ front-end. PR c++/19199. */
292 ===================================================================
293 --- gcc/omp-low.c (.../tags/gcc_4_3_0_release) (revision 133190)
294 +++ gcc/omp-low.c (.../branches/gcc-4_3-branch) (revision 133190)
299 -maybe_lookup_decl (tree var, omp_context *ctx)
300 +maybe_lookup_decl (const_tree var, omp_context *ctx)
303 n = (tree *) pointer_map_contains (ctx->cb.decl_map, var);
304 @@ -479,18 +479,18 @@
305 return n ? (tree) n->value : NULL_TREE;
308 -/* Return true if DECL should be copied by pointer. SHARED_P is true
309 - if DECL is to be shared. */
310 +/* Return true if DECL should be copied by pointer. SHARED_CTX is
311 + the parallel context if DECL is to be shared. */
314 -use_pointer_for_field (const_tree decl, bool shared_p)
315 +use_pointer_for_field (const_tree decl, omp_context *shared_ctx)
317 if (AGGREGATE_TYPE_P (TREE_TYPE (decl)))
320 /* We can only use copy-in/copy-out semantics for shared variables
321 when we know the value is not accessible from an outer scope. */
325 /* ??? Trivially accessible from anywhere. But why would we even
326 be passing an address in this case? Should we simply assert
329 if (TREE_ADDRESSABLE (decl))
332 + /* Disallow copy-in/out in nested parallel if
333 + decl is shared in outer parallel, otherwise
334 + each thread could store the shared variable
335 + in its own copy-in location, making the
336 + variable no longer really shared. */
337 + if (!TREE_READONLY (decl) && shared_ctx->is_nested)
341 + for (up = shared_ctx->outer; up; up = up->outer)
342 + if (maybe_lookup_decl (decl, up))
345 + if (up && is_parallel_ctx (up))
349 + for (c = OMP_PARALLEL_CLAUSES (up->stmt);
350 + c; c = OMP_CLAUSE_CHAIN (c))
351 + if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_SHARED
352 + && OMP_CLAUSE_DECL (c) == decl)
364 else if (is_parallel_ctx (ctx))
366 - bool by_ref = use_pointer_for_field (var, false);
367 + bool by_ref = use_pointer_for_field (var, NULL);
368 x = build_receiver_ref (var, by_ref, ctx);
372 gcc_assert (is_parallel_ctx (ctx));
373 decl = OMP_CLAUSE_DECL (c);
374 gcc_assert (!is_variable_sized (decl));
375 - by_ref = use_pointer_for_field (decl, true);
376 + by_ref = use_pointer_for_field (decl, ctx);
377 /* Global variables don't need to be copied,
378 the receiver side will use them directly. */
379 if (is_global_var (maybe_lookup_decl_in_outer_ctx (decl, ctx)))
380 @@ -1001,7 +1029,7 @@
381 && ! is_global_var (maybe_lookup_decl_in_outer_ctx (decl,
384 - by_ref = use_pointer_for_field (decl, false);
385 + by_ref = use_pointer_for_field (decl, NULL);
386 install_var_field (decl, by_ref, ctx);
388 install_var_local (decl, ctx);
389 @@ -1014,7 +1042,7 @@
391 case OMP_CLAUSE_COPYIN:
392 decl = OMP_CLAUSE_DECL (c);
393 - by_ref = use_pointer_for_field (decl, false);
394 + by_ref = use_pointer_for_field (decl, NULL);
395 install_var_field (decl, by_ref, ctx);
398 @@ -1751,7 +1779,7 @@
399 /* Set up the DECL_VALUE_EXPR for shared variables now. This
400 needs to be delayed until after fixup_child_record_type so
401 that we get the correct type during the dereference. */
402 - by_ref = use_pointer_for_field (var, true);
403 + by_ref = use_pointer_for_field (var, ctx);
404 x = build_receiver_ref (var, by_ref, ctx);
405 SET_DECL_VALUE_EXPR (new_var, x);
406 DECL_HAS_VALUE_EXPR_P (new_var) = 1;
407 @@ -1794,7 +1822,7 @@
410 case OMP_CLAUSE_COPYIN:
411 - by_ref = use_pointer_for_field (var, false);
412 + by_ref = use_pointer_for_field (var, NULL);
413 x = build_receiver_ref (var, by_ref, ctx);
414 x = lang_hooks.decls.omp_clause_assign_op (c, new_var, x);
415 append_to_statement_list (x, ©in_seq);
416 @@ -2007,7 +2035,7 @@
419 var = OMP_CLAUSE_DECL (c);
420 - by_ref = use_pointer_for_field (var, false);
421 + by_ref = use_pointer_for_field (var, NULL);
423 ref = build_sender_ref (var, ctx);
424 x = lookup_decl_in_outer_ctx (var, ctx);
425 @@ -2059,7 +2087,7 @@
427 if (is_variable_sized (val))
429 - by_ref = use_pointer_for_field (val, false);
430 + by_ref = use_pointer_for_field (val, NULL);
432 switch (OMP_CLAUSE_CODE (c))
434 @@ -2129,7 +2157,7 @@
436 var = lookup_decl_in_outer_ctx (ovar, ctx);
438 - if (use_pointer_for_field (ovar, true))
439 + if (use_pointer_for_field (ovar, ctx))
441 x = build_sender_ref (ovar, ctx);
442 var = build_fold_addr_expr (var);
443 @@ -4852,184 +4880,177 @@
444 pop_gimplify_context (NULL_TREE);
447 +/* Callback for lower_omp_1. Return non-NULL if *tp needs to be
450 -/* Pass *TP back through the gimplifier within the context determined by WI.
451 - This handles replacement of DECL_VALUE_EXPR, as well as adjusting the
452 - flags on ADDR_EXPR. */
455 -lower_regimplify (tree *tp, struct walk_stmt_info *wi)
457 +lower_omp_2 (tree *tp, int *walk_subtrees, void *data ATTRIBUTE_UNUSED)
459 - enum gimplify_status gs;
464 - gs = gimplify_expr (tp, &pre, NULL, is_gimple_lvalue, fb_lvalue);
465 - else if (wi->val_only)
466 - gs = gimplify_expr (tp, &pre, NULL, is_gimple_val, fb_rvalue);
468 - gs = gimplify_expr (tp, &pre, NULL, is_gimple_formal_tmp_var, fb_rvalue);
469 - gcc_assert (gs == GS_ALL_DONE);
470 + /* Any variable with DECL_VALUE_EXPR needs to be regimplified. */
471 + if (TREE_CODE (t) == VAR_DECL && DECL_HAS_VALUE_EXPR_P (t))
475 - tsi_link_before (&wi->tsi, pre, TSI_SAME_STMT);
477 + /* If a global variable has been privatized, TREE_CONSTANT on
478 + ADDR_EXPR might be wrong. */
479 + if (TREE_CODE (t) == ADDR_EXPR)
480 + recompute_tree_invariant_for_addr_expr (t);
482 -/* Copy EXP into a temporary. Insert the initialization statement before TSI. */
485 -init_tmp_var (tree exp, tree_stmt_iterator *tsi)
489 - t = create_tmp_var (TREE_TYPE (exp), NULL);
490 - DECL_GIMPLE_REG_P (t) = 1;
491 - stmt = build_gimple_modify_stmt (t, exp);
492 - SET_EXPR_LOCUS (stmt, EXPR_LOCUS (tsi_stmt (*tsi)));
493 - tsi_link_before (tsi, stmt, TSI_SAME_STMT);
496 + *walk_subtrees = !TYPE_P (t) && !DECL_P (t);
500 -/* Similarly, but copy from the temporary and insert the statement
501 - after the iterator. */
504 -save_tmp_var (tree exp, tree_stmt_iterator *tsi)
506 +lower_omp_1 (tree *tp, omp_context *ctx, tree_stmt_iterator *tsi)
511 - t = create_tmp_var (TREE_TYPE (exp), NULL);
512 - DECL_GIMPLE_REG_P (t) = 1;
513 - stmt = build_gimple_modify_stmt (exp, t);
514 - SET_EXPR_LOCUS (stmt, EXPR_LOCUS (tsi_stmt (*tsi)));
515 - tsi_link_after (tsi, stmt, TSI_SAME_STMT);
521 + if (EXPR_HAS_LOCATION (t))
522 + input_location = EXPR_LOCATION (t);
524 -/* Callback for walk_stmts. Lower the OpenMP directive pointed by TP. */
527 -lower_omp_1 (tree *tp, int *walk_subtrees, void *data)
529 - struct walk_stmt_info *wi = data;
530 - omp_context *ctx = wi->info;
533 /* If we have issued syntax errors, avoid doing any heavy lifting.
534 Just replace the OpenMP directives with a NOP to avoid
535 confusing RTL expansion. */
536 - if (errorcount && OMP_DIRECTIVE_P (*tp))
537 + if (errorcount && OMP_DIRECTIVE_P (t))
539 *tp = build_empty_stmt ();
544 - *walk_subtrees = 0;
545 - switch (TREE_CODE (*tp))
546 + switch (TREE_CODE (t))
548 + case STATEMENT_LIST:
550 + tree_stmt_iterator i;
551 + for (i = tsi_start (t); !tsi_end_p (i); tsi_next (&i))
552 + lower_omp_1 (tsi_stmt_ptr (i), ctx, &i);
557 + lower_omp_1 (&COND_EXPR_THEN (t), ctx, NULL);
558 + lower_omp_1 (&COND_EXPR_ELSE (t), ctx, NULL);
560 + && walk_tree (&COND_EXPR_COND (t), lower_omp_2, ctx, NULL))
563 + gimplify_expr (&COND_EXPR_COND (t), &pre, NULL,
564 + is_gimple_condexpr, fb_rvalue);
568 + tsi_link_before (tsi, pre, TSI_SAME_STMT);
571 + append_to_statement_list (t, &pre);
578 + lower_omp_1 (&CATCH_BODY (t), ctx, NULL);
580 + case EH_FILTER_EXPR:
581 + lower_omp_1 (&EH_FILTER_FAILURE (t), ctx, NULL);
583 + case TRY_CATCH_EXPR:
584 + case TRY_FINALLY_EXPR:
585 + lower_omp_1 (&TREE_OPERAND (t, 0), ctx, NULL);
586 + lower_omp_1 (&TREE_OPERAND (t, 1), ctx, NULL);
589 + lower_omp_1 (&BIND_EXPR_BODY (t), ctx, NULL);
592 + lower_omp_1 (&TREE_OPERAND (t, 0), ctx, NULL);
596 ctx = maybe_lookup_ctx (t);
597 lower_omp_parallel (tp, ctx);
601 ctx = maybe_lookup_ctx (t);
603 lower_omp_for (tp, ctx);
607 ctx = maybe_lookup_ctx (t);
609 lower_omp_sections (tp, ctx);
613 ctx = maybe_lookup_ctx (t);
615 lower_omp_single (tp, ctx);
619 ctx = maybe_lookup_ctx (t);
621 lower_omp_master (tp, ctx);
625 ctx = maybe_lookup_ctx (t);
627 lower_omp_ordered (tp, ctx);
631 ctx = maybe_lookup_ctx (t);
633 lower_omp_critical (tp, ctx);
637 - if (ctx && DECL_HAS_VALUE_EXPR_P (t))
639 + if (ctx && walk_tree (tp, lower_omp_2, ctx, NULL))
641 - lower_regimplify (&t, wi);
643 + /* The gimplifier doesn't gimplify CALL_EXPR_STATIC_CHAIN.
644 + Handle that here. */
645 + tree call = get_call_expr_in (t);
647 + && CALL_EXPR_STATIC_CHAIN (call)
648 + && walk_tree (&CALL_EXPR_STATIC_CHAIN (call), lower_omp_2,
652 - t = save_tmp_var (t, &wi->tsi);
654 - t = init_tmp_var (t, &wi->tsi);
656 + gimplify_expr (&CALL_EXPR_STATIC_CHAIN (call), &pre, NULL,
657 + is_gimple_val, fb_rvalue);
661 + tsi_link_before (tsi, pre, TSI_SAME_STMT);
664 + append_to_statement_list (t, &pre);
665 + lower_omp_1 (&pre, ctx, NULL);
677 - lower_regimplify (tp, wi);
681 - case ARRAY_RANGE_REF:
682 - case REALPART_EXPR:
683 - case IMAGPART_EXPR:
684 - case COMPONENT_REF:
685 - case VIEW_CONVERT_EXPR:
687 - lower_regimplify (tp, wi);
693 - wi->is_lhs = false;
694 - wi->val_only = true;
695 - lower_regimplify (&TREE_OPERAND (t, 0), wi);
697 + gimplify_stmt (tp);
701 + gimplify_expr (tp, &pre, NULL, is_gimple_stmt, fb_none);
703 + tsi_link_before (tsi, pre, TSI_SAME_STMT);
709 - if (!TYPE_P (t) && !DECL_P (t))
710 - *walk_subtrees = 1;
718 lower_omp (tree *stmt_p, omp_context *ctx)
720 - struct walk_stmt_info wi;
722 - memset (&wi, 0, sizeof (wi));
723 - wi.callback = lower_omp_1;
725 - wi.val_only = true;
726 - wi.want_locations = true;
728 - walk_stmts (&wi, stmt_p);
729 + lower_omp_1 (stmt_p, ctx, NULL);
732 /* Main entry point. */
733 Index: gcc/tree-ssa-dse.c
734 ===================================================================
735 --- gcc/tree-ssa-dse.c (.../tags/gcc_4_3_0_release) (revision 133190)
736 +++ gcc/tree-ssa-dse.c (.../branches/gcc-4_3-branch) (revision 133190)
737 @@ -470,24 +470,23 @@
741 - if (LOADED_SYMS (use_stmt))
742 + /* If use_stmt is or might be a nop assignment, e.g. for
743 + struct { ... } S a, b, *p; ...
746 + b = a; b = *p; where p might be &b,
748 + *p = a; *p = b; where p might be &b,
750 + *p = *u; *p = *v; where p might be v, then USE_STMT
751 + acts as a use as well as definition, so store in STMT
753 + if (LOADED_SYMS (use_stmt)
754 + && bitmap_intersect_p (LOADED_SYMS (use_stmt),
755 + STORED_SYMS (use_stmt)))
758 - = get_base_address (GIMPLE_STMT_OPERAND (use_stmt, 0));
759 - /* If use_stmt is or might be a nop assignment, e.g. for
760 - struct { ... } S a, b, *p; ...
763 - b = a; b = *p; where p might be &b, then USE_STMT
764 - acts as a use as well as definition, so store in STMT
766 - if (TREE_CODE (use_base) == VAR_DECL
767 - && bitmap_bit_p (LOADED_SYMS (use_stmt),
768 - DECL_UID (use_base)))
770 - record_voperand_set (dse_gd->stores, &bd->stores, ann->uid);
773 + record_voperand_set (dse_gd->stores, &bd->stores, ann->uid);
777 if (dump_file && (dump_flags & TDF_DETAILS))
779 ===================================================================
780 --- gcc/DEV-PHASE (.../tags/gcc_4_3_0_release) (revision 133190)
781 +++ gcc/DEV-PHASE (.../branches/gcc-4_3-branch) (revision 133190)
785 ===================================================================
786 --- gcc/ChangeLog (.../tags/gcc_4_3_0_release) (revision 133190)
787 +++ gcc/ChangeLog (.../branches/gcc-4_3-branch) (revision 133190)
789 +2008-03-13 Jakub Jelinek <jakub@redhat.com>
791 + PR middle-end/35185
792 + * omp-low.c (lower_regimplify, init_tmp_var, save_tmp_var): Removed.
793 + (lower_omp_2): New function.
794 + (lower_omp_1, lower_omp): Rewritten.
796 +2008-03-12 Jakub Jelinek <jakub@redhat.com>
798 + PR middle-end/35549
799 + * omp-low.c (maybe_lookup_decl): Constify first argument.
800 + (use_pointer_for_field): Change last argument from bool to
801 + omp_context *. Disallow shared copy-in/out in nested
802 + parallel if decl is shared in outer parallel too.
803 + (build_outer_var_ref, scan_sharing_clauses,
804 + lower_rec_input_clauses, lower_copyprivate_clauses,
805 + lower_send_clauses, lower_send_shared_vars): Adjust callers.
807 +2008-03-12 Uros Bizjak <ubizjak@gmail.com>
810 + * config/i386/i386.md (paritysi2, paritydi2): Use register_operand
811 + constraint for operand 1.
812 + (paritysi2_cmp): Use register_operand constraint for operand 2.
813 + Use earlyclobber modifier for operand 1. Remove support for
815 + (paritydi2_cmp): Use register_operand constraint for operand 3.
816 + Use earlyclobber modifier for operand 1. Remove support for
819 +2008-03-11 Uros Bizjak <ubizjak@gmail.com>
821 + PR middle-end/35526
822 + * expr.c (store_expr): Call emit_block_move if the mode
823 + of "temp" RTX is BLKmode.
825 +2008-03-10 Vladimir Makarov <vmakarov@redhat.com>
827 + * config/i386/sse.md (ssse3_pmaddubswv8hi3, ssse3_pmaddubswv4hi3):
828 + Remove commutativity hint.
830 +2008-03-10 Jakub Jelinek <jakub@redhat.com>
834 + * c-parser.c (c_parser_omp_threadprivate): Don't add vars with
835 + errorneous type. Check that v is a VAR_DECL.
837 + PR middle-end/35099
838 + * tree-cfg.c (new_label_mapper): Update cfun->last_label_uid.
840 +2008-03-10 Uros Bizjak <ubizjak@gmail.com>
842 + Backport from mainline:
843 + 2008-03-09 Uros Bizjak <ubizjak@gmail.com>
846 + * config/i386/i386.c (ix86_constant_alignment): Compute alignment using
847 + ALIGN_MODE_128 for VECTOR_CST and INTEGER_CST in addition to REAL_CST.
849 + 2008-03-04 Uros Bizjak <ubizjak@gmail.com>
851 + PR middle-end/35456
852 + * fold-const.c (fold_cond_expr_with_comparison): Prevent
853 + transformations for modes that have signed zeros.
854 + * ifcvt.c (noce_try_abs): Ditto.
856 +2008-03-09 Kaz Kojima <kkojima@gcc.gnu.org>
858 + Backport from mainline:
860 + * config/sh/sh.c (find_barrier): Don't go past 'from' argument.
862 +2008-03-09 Kaz Kojima <kkojima@gcc.gnu.org>
864 + Backport from mainline:
866 + * config/sh/sh.md (jump_compact): Disable for crossing jumps.
868 + * config/sh/sh.c (find_barrier): Don't go past
869 + NOTE_INSN_SWITCH_TEXT_SECTIONS note.
871 +2008-03-08 Jakub Jelinek <jakub@redhat.com>
874 + * config/rs6000/rs6000.c (rs6000_expand_compare_and_swapqhi): Shift
875 + wdst back after sync_compare_and_swapqhi_internal.
877 +2008-03-07 Joseph Myers <joseph@codesourcery.com>
879 + * doc/include/texinfo.tex: Update to version 2008-03-07.10.
881 +2008-03-07 Richard Guenther <rguenther@suse.de>
883 + Backport from mainline:
884 + 2008-03-05 Richard Guenther <rguenther@suse.de>
886 + PR tree-optimization/35472
887 + * tree-ssa-dse.c (dse_optimize_stmt): Do not delete a store
888 + whose single use_stmt has a overlapping set of loaded and
889 + stored symbols as that use_stmt might be a noop assignment then.
891 +2008-03-06 H.J. Lu <hongjiu.lu@intel.com>
893 + Backport from mainline:
894 + 2008-02-18 H.J. Lu <hongjiu.lu@intel.com>
897 + * config/i386/i386.c (OPTION_MASK_ISA_MMX_SET): New.
898 + (OPTION_MASK_ISA_3DNOW_SET): Likewise.
899 + (OPTION_MASK_ISA_SSE_SET): Likewise.
900 + (OPTION_MASK_ISA_SSE2_SET): Likewise.
901 + (OPTION_MASK_ISA_SSE3_SET): Likewise.
902 + (OPTION_MASK_ISA_SSSE3_SET): Likewise.
903 + (OPTION_MASK_ISA_SSE4_1_SET): Likewise.
904 + (OPTION_MASK_ISA_SSE4_2_SET): Likewise.
905 + (OPTION_MASK_ISA_SSE4_SET): Likewise.
906 + (OPTION_MASK_ISA_SSE4A_SET): Likewise.
907 + (OPTION_MASK_ISA_SSE5_SET): Likewise.
908 + (OPTION_MASK_ISA_3DNOW_A_UNSET): Likewise.
909 + (OPTION_MASK_ISA_MMX_UNSET): Updated.
910 + (OPTION_MASK_ISA_3DNOW_UNSET): Updated.
911 + (OPTION_MASK_ISA_SSE_UNSET): Likewise.
912 + (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
913 + (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
914 + (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
915 + (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
916 + (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
917 + (OPTION_MASK_ISA_SSE5_UNSET): Likewise.
918 + (OPTION_MASK_ISA_SSE4): Removed.
919 + (ix86_handle_option): Turn on bits in ix86_isa_flags and
920 + ix86_isa_flags_explicit with OPTION_MASK_ISA_XXX_SET for -mXXX.
921 + (override_options): Don't turn on implied SSE/MMX bits in
924 +2008-03-06 Jakub Jelinek <jakub@redhat.com>
926 + * gimplify.c (goa_lhs_expr_p): Allow different ADDR_EXPR nodes
927 + for the same VAR_DECL.
929 +2008-03-06 Daniel Jacobowitz <dan@codesourcery.com>
931 + * expmed.c (extract_bit_field): Always use adjust_address for MEM.
933 +2008-03-06 Joseph Myers <joseph@codesourcery.com>
936 + * tree.c (handle_dll_attribute): Disallow TYPE_DECLs for types
937 + other than structures and unions.
939 +2008-03-06 Jakub Jelinek <jakub@redhat.com>
941 + * BASE-VER: Set to 4.3.1.
942 + * DEV-PHASE: Set to prerelease.
944 2008-03-05 Release Manager
946 * GCC 4.3.0 released.
948 Uros Bizjak <ubizjak@gmail.com>
951 - * gcc/config/darwin-protos.h: Add darwin_patch_builtins prototype.
952 - * gcc/config/darwin-ppc-ldouble-patch.def: New file.
953 - * gcc/config/rs6000/darwin.h (SUBTARGET_INIT_BUILTINS): New macro.
954 - * gcc/config/rs6000/rs6000.c (rs6000_init_builtins): Call
955 + * config/darwin-protos.h: Add darwin_patch_builtins prototype.
956 + * config/darwin-ppc-ldouble-patch.def: New file.
957 + * config/rs6000/darwin.h (SUBTARGET_INIT_BUILTINS): New macro.
958 + * config/rs6000/rs6000.c (rs6000_init_builtins): Call
959 SUBTARGET_INIT_BUILTINS if defined.
960 - * gcc/config/darwin.c (darwin_patch_builtin,
961 + * config/darwin.c (darwin_patch_builtin,
962 darwin_patch_builtins): New functions.
964 2008-02-27 Richard Guenther <rguenther@suse.de>
965 @@ -2122,7 +2277,7 @@
966 2008-01-02 Arthur Norman <acn1@cam.ac.uk>
969 - * gcc/config/i386/i386.c (ix86_expand_prologue): Save red-zone
970 + * config/i386/i386.c (ix86_expand_prologue): Save red-zone
973 2008-01-01 Douglas Gregor <doug.gregor@gmail.com>
974 Index: gcc/testsuite/gcc.c-torture/execute/20080222-1.c
975 ===================================================================
976 --- gcc/testsuite/gcc.c-torture/execute/20080222-1.c (.../tags/gcc_4_3_0_release) (revision 0)
977 +++ gcc/testsuite/gcc.c-torture/execute/20080222-1.c (.../branches/gcc-4_3-branch) (revision 133190)
979 +extern void abort (void);
983 + unsigned char data[1];
986 +unsigned char space[6] = {1, 2, 3, 4, 5, 6};
989 +foo (struct container *p)
997 + if (foo ((struct container *) space) != 5)
1001 Index: gcc/testsuite/gcc.c-torture/execute/pr35472.c
1002 ===================================================================
1003 --- gcc/testsuite/gcc.c-torture/execute/pr35472.c (.../tags/gcc_4_3_0_release) (revision 0)
1004 +++ gcc/testsuite/gcc.c-torture/execute/pr35472.c (.../branches/gcc-4_3-branch) (revision 133190)
1006 +extern void abort (void);
1007 +extern void *memset (void *s, int c, __SIZE_TYPE__ n);
1008 +struct S { int i[16]; };
1010 +void __attribute__((noinline))
1011 +foo(struct S *a, struct S *b) { a->i[0] = -1; p = b; }
1015 + memset (&a.i[0], '\0', sizeof (a.i));
1016 + memset (&b.i[0], '\0', sizeof (b.i));
1028 Index: gcc/testsuite/gcc.c-torture/execute/pr35456.c
1029 ===================================================================
1030 --- gcc/testsuite/gcc.c-torture/execute/pr35456.c (.../tags/gcc_4_3_0_release) (revision 0)
1031 +++ gcc/testsuite/gcc.c-torture/execute/pr35456.c (.../branches/gcc-4_3-branch) (revision 133190)
1033 +extern void abort (void);
1036 +__attribute__ ((noinline))
1037 +not_fabs (double x)
1039 + return x >= 0.0 ? x : -x;
1049 + if (!__builtin_signbit (y))
1054 Index: gcc/testsuite/gcc.target/i386/isa-1.c
1055 ===================================================================
1056 --- gcc/testsuite/gcc.target/i386/isa-1.c (.../tags/gcc_4_3_0_release) (revision 0)
1057 +++ gcc/testsuite/gcc.target/i386/isa-1.c (.../branches/gcc-4_3-branch) (revision 133190)
1059 +/* { dg-do run } */
1060 +/* { dg-options "-march=x86-64 -msse4" } */
1062 +extern void abort (void);
1067 +#if !defined __SSE__
1070 +#if !defined __SSE2__
1073 +#if !defined __SSE3__
1076 +#if !defined __SSSE3__
1079 +#if !defined __SSE4_1__
1082 +#if !defined __SSE4_2__
1085 +#if defined __SSE4A__
1088 +#if defined __SSE5__
1093 Index: gcc/testsuite/gcc.target/i386/isa-9.c
1094 ===================================================================
1095 --- gcc/testsuite/gcc.target/i386/isa-9.c (.../tags/gcc_4_3_0_release) (revision 0)
1096 +++ gcc/testsuite/gcc.target/i386/isa-9.c (.../branches/gcc-4_3-branch) (revision 133190)
1098 +/* { dg-do run } */
1099 +/* { dg-options "-march=amdfam10 -mno-sse5" } */
1101 +extern void abort (void);
1106 +#if !defined __SSE__
1109 +#if !defined __SSE2__
1112 +#if !defined __SSE3__
1115 +#if defined __SSSE3__
1118 +#if defined __SSE4_1__
1121 +#if defined __SSE4_2__
1124 +#if !defined __SSE4A__
1127 +#if defined __SSE5__
1132 Index: gcc/testsuite/gcc.target/i386/isa-12.c
1133 ===================================================================
1134 --- gcc/testsuite/gcc.target/i386/isa-12.c (.../tags/gcc_4_3_0_release) (revision 0)
1135 +++ gcc/testsuite/gcc.target/i386/isa-12.c (.../branches/gcc-4_3-branch) (revision 133190)
1137 +/* { dg-do run } */
1138 +/* { dg-options "-march=x86-64 -msse5 -mno-sse3" } */
1140 +extern void abort (void);
1145 +#if !defined __SSE__
1148 +#if !defined __SSE2__
1151 +#if defined __SSE3__
1154 +#if defined __SSSE3__
1157 +#if defined __SSE4_1__
1160 +#if defined __SSE4_2__
1163 +#if defined __SSE4A__
1166 +#if defined __SSE5__
1171 Index: gcc/testsuite/gcc.target/i386/isa-2.c
1172 ===================================================================
1173 --- gcc/testsuite/gcc.target/i386/isa-2.c (.../tags/gcc_4_3_0_release) (revision 0)
1174 +++ gcc/testsuite/gcc.target/i386/isa-2.c (.../branches/gcc-4_3-branch) (revision 133190)
1176 +/* { dg-do run } */
1177 +/* { dg-options "-march=x86-64 -msse4 -msse5" } */
1179 +extern void abort (void);
1184 +#if !defined __SSE__
1187 +#if !defined __SSE2__
1190 +#if !defined __SSE3__
1193 +#if !defined __SSSE3__
1196 +#if !defined __SSE4_1__
1199 +#if !defined __SSE4_2__
1202 +#if !defined __SSE4A__
1205 +#if !defined __SSE5__
1210 Index: gcc/testsuite/gcc.target/i386/isa-13.c
1211 ===================================================================
1212 --- gcc/testsuite/gcc.target/i386/isa-13.c (.../tags/gcc_4_3_0_release) (revision 0)
1213 +++ gcc/testsuite/gcc.target/i386/isa-13.c (.../branches/gcc-4_3-branch) (revision 133190)
1215 +/* { dg-do run } */
1216 +/* { dg-options "-march=x86-64 -msse5 -mno-sse2" } */
1218 +extern void abort (void);
1223 +#if !defined __SSE__
1226 +#if defined __SSE2__
1229 +#if defined __SSE3__
1232 +#if defined __SSSE3__
1235 +#if defined __SSE4_1__
1238 +#if defined __SSE4_2__
1241 +#if defined __SSE4A__
1244 +#if defined __SSE5__
1249 Index: gcc/testsuite/gcc.target/i386/isa-3.c
1250 ===================================================================
1251 --- gcc/testsuite/gcc.target/i386/isa-3.c (.../tags/gcc_4_3_0_release) (revision 0)
1252 +++ gcc/testsuite/gcc.target/i386/isa-3.c (.../branches/gcc-4_3-branch) (revision 133190)
1254 +/* { dg-do run } */
1255 +/* { dg-options "-march=x86-64 -msse4 -msse5 -msse4a" } */
1257 +extern void abort (void);
1262 +#if !defined __SSE__
1265 +#if !defined __SSE2__
1268 +#if !defined __SSE3__
1271 +#if !defined __SSSE3__
1274 +#if !defined __SSE4_1__
1277 +#if !defined __SSE4_2__
1280 +#if !defined __SSE4A__
1283 +#if !defined __SSE5__
1288 Index: gcc/testsuite/gcc.target/i386/isa-14.c
1289 ===================================================================
1290 --- gcc/testsuite/gcc.target/i386/isa-14.c (.../tags/gcc_4_3_0_release) (revision 0)
1291 +++ gcc/testsuite/gcc.target/i386/isa-14.c (.../branches/gcc-4_3-branch) (revision 133190)
1293 +/* { dg-do run } */
1294 +/* { dg-options "-march=x86-64 -msse5 -mno-sse" } */
1296 +extern void abort (void);
1301 +#if defined __SSE__
1304 +#if defined __SSE2__
1307 +#if defined __SSE3__
1310 +#if defined __SSSE3__
1313 +#if defined __SSE4_1__
1316 +#if defined __SSE4_2__
1319 +#if defined __SSE4A__
1322 +#if defined __SSE5__
1327 Index: gcc/testsuite/gcc.target/i386/isa-4.c
1328 ===================================================================
1329 --- gcc/testsuite/gcc.target/i386/isa-4.c (.../tags/gcc_4_3_0_release) (revision 0)
1330 +++ gcc/testsuite/gcc.target/i386/isa-4.c (.../branches/gcc-4_3-branch) (revision 133190)
1332 +/* { dg-do run } */
1333 +/* { dg-options "-march=core2 -msse5 -mno-sse4" } */
1335 +extern void abort (void);
1340 +#if !defined __SSE__
1343 +#if !defined __SSE2__
1346 +#if !defined __SSE3__
1349 +#if !defined __SSSE3__
1352 +#if defined __SSE4_1__
1355 +#if defined __SSE4_2__
1358 +#if !defined __SSE4A__
1361 +#if !defined __SSE5__
1366 Index: gcc/testsuite/gcc.target/i386/isa-5.c
1367 ===================================================================
1368 --- gcc/testsuite/gcc.target/i386/isa-5.c (.../tags/gcc_4_3_0_release) (revision 0)
1369 +++ gcc/testsuite/gcc.target/i386/isa-5.c (.../branches/gcc-4_3-branch) (revision 133190)
1371 +/* { dg-do run } */
1372 +/* { dg-options "-march=core2 -msse4a -mno-sse4" } */
1374 +extern void abort (void);
1379 +#if !defined __SSE__
1382 +#if !defined __SSE2__
1385 +#if !defined __SSE3__
1388 +#if !defined __SSSE3__
1391 +#if defined __SSE4_1__
1394 +#if defined __SSE4_2__
1397 +#if !defined __SSE4A__
1400 +#if defined __SSE5__
1405 Index: gcc/testsuite/gcc.target/i386/pr35540.c
1406 ===================================================================
1407 --- gcc/testsuite/gcc.target/i386/pr35540.c (.../tags/gcc_4_3_0_release) (revision 0)
1408 +++ gcc/testsuite/gcc.target/i386/pr35540.c (.../branches/gcc-4_3-branch) (revision 133190)
1410 +/* { dg-do run } */
1411 +/* { dg-options "-O2" } */
1413 +extern void abort (void);
1415 +int __attribute__ ((noinline))
1416 +test (unsigned int *a, int b)
1418 + return b ? 1 : __builtin_parity (*a);
1421 +int __attribute__ ((noinline))
1422 +testl (unsigned long *a, int b)
1424 + return b ? 1 : __builtin_parityl (*a);
1427 +int __attribute__ ((noinline))
1428 +testll (unsigned long long *a, int b)
1430 + return b ? 1 : __builtin_parityll (*a);
1436 + unsigned int a = 0;
1438 + unsigned long long all;
1444 + al = 0x12345670ul;
1445 + if (testl (&al, 0))
1449 + all = 0x12345678abcdef0ull;
1450 + if (testll (&all, 0))
1455 Index: gcc/testsuite/gcc.target/i386/isa-6.c
1456 ===================================================================
1457 --- gcc/testsuite/gcc.target/i386/isa-6.c (.../tags/gcc_4_3_0_release) (revision 0)
1458 +++ gcc/testsuite/gcc.target/i386/isa-6.c (.../branches/gcc-4_3-branch) (revision 133190)
1460 +/* { dg-do run } */
1461 +/* { dg-options "-march=amdfam10 -mno-sse4" } */
1463 +extern void abort (void);
1468 +#if !defined __SSE__
1471 +#if !defined __SSE2__
1474 +#if !defined __SSE3__
1477 +#if defined __SSSE3__
1480 +#if defined __SSE4_1__
1483 +#if defined __SSE4_2__
1486 +#if !defined __SSE4A__
1489 +#if defined __SSE5__
1494 Index: gcc/testsuite/gcc.target/i386/isa-7.c
1495 ===================================================================
1496 --- gcc/testsuite/gcc.target/i386/isa-7.c (.../tags/gcc_4_3_0_release) (revision 0)
1497 +++ gcc/testsuite/gcc.target/i386/isa-7.c (.../branches/gcc-4_3-branch) (revision 133190)
1499 +/* { dg-do run } */
1500 +/* { dg-options "-march=amdfam10 -msse5 -mno-sse4" } */
1502 +extern void abort (void);
1507 +#if !defined __SSE__
1510 +#if !defined __SSE2__
1513 +#if !defined __SSE3__
1516 +#if defined __SSSE3__
1519 +#if defined __SSE4_1__
1522 +#if defined __SSE4_2__
1525 +#if !defined __SSE4A__
1528 +#if !defined __SSE5__
1533 Index: gcc/testsuite/gcc.target/i386/isa-10.c
1534 ===================================================================
1535 --- gcc/testsuite/gcc.target/i386/isa-10.c (.../tags/gcc_4_3_0_release) (revision 0)
1536 +++ gcc/testsuite/gcc.target/i386/isa-10.c (.../branches/gcc-4_3-branch) (revision 133190)
1538 +/* { dg-do run } */
1539 +/* { dg-options "-march=x86-64 -msse5 -mno-sse4" } */
1541 +extern void abort (void);
1546 +#if !defined __SSE__
1549 +#if !defined __SSE2__
1552 +#if !defined __SSE3__
1555 +#if defined __SSSE3__
1558 +#if defined __SSE4_1__
1561 +#if defined __SSE4_2__
1564 +#if !defined __SSE4A__
1567 +#if !defined __SSE5__
1572 Index: gcc/testsuite/gcc.target/i386/isa-8.c
1573 ===================================================================
1574 --- gcc/testsuite/gcc.target/i386/isa-8.c (.../tags/gcc_4_3_0_release) (revision 0)
1575 +++ gcc/testsuite/gcc.target/i386/isa-8.c (.../branches/gcc-4_3-branch) (revision 133190)
1577 +/* { dg-do run } */
1578 +/* { dg-options "-march=amdfam10 -msse5 -mno-sse4a" } */
1580 +extern void abort (void);
1585 +#if !defined __SSE__
1588 +#if !defined __SSE2__
1591 +#if !defined __SSE3__
1594 +#if defined __SSSE3__
1597 +#if defined __SSE4_1__
1600 +#if defined __SSE4_2__
1603 +#if defined __SSE4A__
1606 +#if defined __SSE5__
1611 Index: gcc/testsuite/gcc.target/i386/isa-11.c
1612 ===================================================================
1613 --- gcc/testsuite/gcc.target/i386/isa-11.c (.../tags/gcc_4_3_0_release) (revision 0)
1614 +++ gcc/testsuite/gcc.target/i386/isa-11.c (.../branches/gcc-4_3-branch) (revision 133190)
1616 +/* { dg-do run } */
1617 +/* { dg-options "-march=x86-64 -msse5 -mno-ssse3" } */
1619 +extern void abort (void);
1624 +#if !defined __SSE__
1627 +#if !defined __SSE2__
1630 +#if !defined __SSE3__
1633 +#if defined __SSSE3__
1636 +#if defined __SSE4_1__
1639 +#if defined __SSE4_2__
1642 +#if !defined __SSE4A__
1645 +#if !defined __SSE5__
1650 Index: gcc/testsuite/gnat.dg/frame_overflow.adb
1651 ===================================================================
1652 --- gcc/testsuite/gnat.dg/frame_overflow.adb (.../tags/gcc_4_3_0_release) (revision 133190)
1653 +++ gcc/testsuite/gnat.dg/frame_overflow.adb (.../branches/gcc-4_3-branch) (revision 133190)
1655 -- { dg-do compile }
1659 procedure frame_overflow is
1661 - type Bitpos_Range_T is new Positive;
1662 + type Bitpos_Range_T is range 1..2**(System.Word_Size-1)-1;
1663 type Bitmap_Array_T is array (Bitpos_Range_T) of Boolean;
1665 type Bitmap_T is record
1666 Bits : Bitmap_Array_T := (others => False);
1669 - function -- { dg-error "too large" "" }
1670 + function -- { dg-error "too large" }
1671 Set_In (Bitmap : Bitmap_T; Bitpos : Bitpos_Range_T) return Bitmap_T
1673 Result: Bitmap_T := Bitmap;
1678 - function -- { dg-error "too large" "" }
1679 + function -- { dg-error "too large" }
1680 Negate (Bitmap : Bitmap_T) return Bitmap_T is
1683 Index: gcc/testsuite/gcc.dg/gomp/pr35439.c
1684 ===================================================================
1685 --- gcc/testsuite/gcc.dg/gomp/pr35439.c (.../tags/gcc_4_3_0_release) (revision 0)
1686 +++ gcc/testsuite/gcc.dg/gomp/pr35439.c (.../branches/gcc-4_3-branch) (revision 133190)
1689 +/* { dg-do compile } */
1690 +/* { dg-options "-fopenmp" } */
1692 +void x[1]; /* { dg-error "array of voids" } */
1693 +#pragma omp threadprivate(x)
1694 Index: gcc/testsuite/gcc.dg/gomp/pr35244.c
1695 ===================================================================
1696 --- gcc/testsuite/gcc.dg/gomp/pr35244.c (.../tags/gcc_4_3_0_release) (revision 0)
1697 +++ gcc/testsuite/gcc.dg/gomp/pr35244.c (.../branches/gcc-4_3-branch) (revision 133190)
1700 +/* { dg-do compile } */
1701 +/* { dg-require-effective-target tls_native } */
1702 +/* { dg-options "-fopenmp" } */
1705 +typedef struct A A;
1707 +#pragma omp threadprivate (i) /* { dg-error "expected identifier before" } */
1708 +#pragma omp threadprivate (A) /* { dg-error "expected identifier before" } */
1709 +#pragma omp threadprivate (v1)
1716 +#pragma omp threadprivate (v4, v5)
1719 Index: gcc/testsuite/gcc.dg/gomp/pr35438.c
1720 ===================================================================
1721 --- gcc/testsuite/gcc.dg/gomp/pr35438.c (.../tags/gcc_4_3_0_release) (revision 0)
1722 +++ gcc/testsuite/gcc.dg/gomp/pr35438.c (.../branches/gcc-4_3-branch) (revision 133190)
1725 +/* { dg-do compile } */
1726 +/* { dg-options "-fopenmp" } */
1729 +#pragma omp threadprivate(foo) /* { dg-error "is not a variable" } */
1730 Index: gcc/testsuite/gcc.dg/gomp/pr34964.c
1731 ===================================================================
1732 --- gcc/testsuite/gcc.dg/gomp/pr34964.c (.../tags/gcc_4_3_0_release) (revision 0)
1733 +++ gcc/testsuite/gcc.dg/gomp/pr34964.c (.../branches/gcc-4_3-branch) (revision 133190)
1736 +/* { dg-do compile } */
1737 +/* { dg-options "-fopenmp" } */
1739 +char x[] = 0; /* { dg-error "invalid initializer" } */
1740 +#pragma omp threadprivate (x)
1741 Index: gcc/testsuite/ChangeLog
1742 ===================================================================
1743 --- gcc/testsuite/ChangeLog (.../tags/gcc_4_3_0_release) (revision 133190)
1744 +++ gcc/testsuite/ChangeLog (.../branches/gcc-4_3-branch) (revision 133190)
1746 +2008-03-12 Uros Bizjak <ubizjak@gmail.com>
1749 + * gcc.target/i386/pr35540.c: New test.
1751 +2008-03-11 Uros Bizjak <ubizjak@gmail.com>
1753 + * g++.dg/inherit/override-attribs.C: Require ilp32 x86 target.
1755 +2008-03-11 Uros Bizjak <ubizjak@gmail.com>
1757 + PR middle-end/35526
1758 + * g++.dg/torture/pr35526.C: New test.
1760 +2008-03-10 Jakub Jelinek <jakub@redhat.com>
1763 + * g++.dg/gomp/pr35328.C: New test.
1766 + * g++.dg/gomp/pr35337.C: New test.
1770 + * gcc.dg/gomp/pr35438.c: New test.
1771 + * gcc.dg/gomp/pr35439.c: New test.
1773 + PR middle-end/35099
1774 + * g++.dg/gomp/pr35099.C: New test.
1776 +2008-03-10 Uros Bizjak <ubizjak@gmail.com>
1778 + Backport from mainline:
1779 + 2008-03-04 Uros Bizjak <ubizjak@gmail.com>
1781 + PR middle-end/35456
1782 + * gcc.c-torture/execute/pr35456.c: New test.
1784 +2008-03-09 Eric Botcazou <ebotcazou@adacore.com>
1786 + * gnat.dg/frame_overflow.adb: Improve portability.
1788 +2008-03-08 H.J. Lu <hongjiu.lu@intel.com>
1790 + Backport from mainline:
1791 + 2008-03-08 H.J. Lu <hongjiu.lu@intel.com>
1794 + * gcc.target/i386/isa-1.c: Add -march=x86-64.
1795 + * gcc.target/i386/isa-2.c: Likewise.
1796 + * gcc.target/i386/isa-3.c: Likewise.
1797 + * gcc.target/i386/isa-10.c: Likewise.
1798 + * gcc.target/i386/isa-11.c: Likewise.
1799 + * gcc.target/i386/isa-12.c: Likewise.
1800 + * gcc.target/i386/isa-13.c: Likewise.
1801 + * gcc.target/i386/isa-14.c: Likewise.
1803 +2008-03-07 Richard Guenther <rguenther@suse.de>
1805 + Backport from mainline:
1806 + 2008-03-05 Richard Guenther <rguenther@suse.de>
1808 + PR tree-optimization/35472
1809 + * gcc.c-torture/execute/pr35472.c: New testcase.
1811 +2008-03-06 H.J. Lu <hongjiu.lu@intel.com>
1813 + Backport from mainline:
1814 + 2008-02-18 H.J. Lu <hongjiu.lu@intel.com>
1817 + * gcc.target/i386/isa-1.c: New.
1818 + * gcc.target/i386/isa-2.c: Likewise.
1819 + * gcc.target/i386/isa-3.c: Likewise.
1820 + * gcc.target/i386/isa-4.c: Likewise.
1821 + * gcc.target/i386/isa-5.c: Likewise.
1822 + * gcc.target/i386/isa-6.c: Likewise.
1823 + * gcc.target/i386/isa-7.c: Likewise.
1824 + * gcc.target/i386/isa-8.c: Likewise.
1825 + * gcc.target/i386/isa-9.c: Likewise.
1826 + * gcc.target/i386/isa-10.c: Likewise.
1827 + * gcc.target/i386/isa-11.c: Likewise.
1828 + * gcc.target/i386/isa-12.c: Likewise.
1829 + * gcc.target/i386/isa-13.c: Likewise.
1830 + * gcc.target/i386/isa-14.c: Likewise.
1832 +2008-03-06 Jakub Jelinek <jakub@redhat.com>
1835 + * g++.dg/gomp/pr35028.C: New test.
1839 + * gcc.dg/gomp/pr34964.c: New test.
1840 + * g++.dg/gomp/pr34964.C: New test.
1841 + * gcc.dg/gomp/pr35244.c: New test.
1842 + * g++.dg/gomp/pr35244.C: New test.
1845 + * g++.dg/gomp/pr35078.C: New test.
1847 +2008-03-06 Daniel Jacobowitz <dan@codesourcery.com>
1849 + * gcc.c-torture/execute/20080222-1.c: New test.
1851 +2008-03-06 Paolo Carlini <pcarlini@suse.de>
1854 + * g++.dg/lookup/crash7.C: New.
1856 +2008-03-06 Paolo Carlini <pcarlini@suse.de>
1859 + * g++.dg/other/error26.C: New.
1861 +2008-03-06 Paolo Carlini <pcarlini@suse.de>
1864 + * g++.dg/other/error25.C: New.
1866 2008-03-05 Release Manager
1868 * GCC 4.3.0 released.
1869 Index: gcc/testsuite/g++.dg/other/error25.C
1870 ===================================================================
1871 --- gcc/testsuite/g++.dg/other/error25.C (.../tags/gcc_4_3_0_release) (revision 0)
1872 +++ gcc/testsuite/g++.dg/other/error25.C (.../branches/gcc-4_3-branch) (revision 133190)
1875 +// { dg-options "" }
1877 +int i = 0r; // { dg-error "unnamed-fixed" }
1878 +bool b = !0r; // { dg-error "0.0|argument" }
1879 Index: gcc/testsuite/g++.dg/other/error26.C
1880 ===================================================================
1881 --- gcc/testsuite/g++.dg/other/error26.C (.../tags/gcc_4_3_0_release) (revision 0)
1882 +++ gcc/testsuite/g++.dg/other/error26.C (.../branches/gcc-4_3-branch) (revision 133190)
1886 +void foo(__complex__ double x)
1888 + __builtin_conj(x)(); // { dg-error "~x" }
1890 Index: gcc/testsuite/g++.dg/lookup/crash7.C
1891 ===================================================================
1892 --- gcc/testsuite/g++.dg/lookup/crash7.C (.../tags/gcc_4_3_0_release) (revision 0)
1893 +++ gcc/testsuite/g++.dg/lookup/crash7.C (.../branches/gcc-4_3-branch) (revision 133190)
1896 +// { dg-options "" }
1902 + foo(1r); // { dg-error "unnamed-fixed" }
1904 Index: gcc/testsuite/g++.dg/gomp/pr34964.C
1905 ===================================================================
1906 --- gcc/testsuite/g++.dg/gomp/pr34964.C (.../tags/gcc_4_3_0_release) (revision 0)
1907 +++ gcc/testsuite/g++.dg/gomp/pr34964.C (.../branches/gcc-4_3-branch) (revision 133190)
1910 +// { dg-do compile }
1911 +// { dg-options "-fopenmp" }
1913 +char x[] = 0; // { dg-error "initializer fails to determine size" }
1914 +#pragma omp threadprivate (x)
1915 Index: gcc/testsuite/g++.dg/gomp/pr35328.C
1916 ===================================================================
1917 --- gcc/testsuite/g++.dg/gomp/pr35328.C (.../tags/gcc_4_3_0_release) (revision 0)
1918 +++ gcc/testsuite/g++.dg/gomp/pr35328.C (.../branches/gcc-4_3-branch) (revision 133190)
1921 +// { dg-do compile }
1922 +// { dg-options "-fopenmp" }
1926 + ~A ()(); // { dg-error "declared as function returning a function" }
1930 + B ()(); // { dg-error "declared as function returning a function" }
1935 + C (const C &)(); // { dg-error "declared as function returning a function" }
1944 + #pragma omp parallel firstprivate (a)
1946 + #pragma omp parallel private (b)
1948 + #pragma omp parallel firstprivate (c)
1951 Index: gcc/testsuite/g++.dg/gomp/pr35337.C
1952 ===================================================================
1953 --- gcc/testsuite/g++.dg/gomp/pr35337.C (.../tags/gcc_4_3_0_release) (revision 0)
1954 +++ gcc/testsuite/g++.dg/gomp/pr35337.C (.../branches/gcc-4_3-branch) (revision 133190)
1957 +// { dg-do compile }
1958 +// { dg-options "-fopenmp" }
1965 +#pragma omp parallel firstprivate(A) // { dg-error "struct A\[^\n\]*is not a variable" }
1972 +#pragma omp for lastprivate(A) // { dg-error "struct A\[^\n\]*is not a variable" }
1973 + for (int i = 0; i < 10; i++)
1976 Index: gcc/testsuite/g++.dg/gomp/pr35244.C
1977 ===================================================================
1978 --- gcc/testsuite/g++.dg/gomp/pr35244.C (.../tags/gcc_4_3_0_release) (revision 0)
1979 +++ gcc/testsuite/g++.dg/gomp/pr35244.C (.../branches/gcc-4_3-branch) (revision 133190)
1982 +// { dg-do compile }
1983 +// { dg-require-effective-target tls_native }
1984 +// { dg-options "-fopenmp" }
1996 +using namespace N2;
1999 +#pragma omp threadprivate (i) // { dg-error "is not file, namespace or block scope variable" }
2000 +#pragma omp threadprivate (A) // { dg-error "is not file, namespace or block scope variable" }
2001 +#pragma omp threadprivate (v1, v2, v3)
2008 +#pragma omp threadprivate (v4, v5)
2011 Index: gcc/testsuite/g++.dg/gomp/pr35078.C
2012 ===================================================================
2013 --- gcc/testsuite/g++.dg/gomp/pr35078.C (.../tags/gcc_4_3_0_release) (revision 0)
2014 +++ gcc/testsuite/g++.dg/gomp/pr35078.C (.../branches/gcc-4_3-branch) (revision 133190)
2017 +// { dg-do compile }
2018 +// { dg-options "-fopenmp" }
2023 +#pragma omp parallel for
2024 + for (int& i = 0; i < 10; ++i) // { dg-error "invalid type for iteration variable" }
2032 +#pragma omp parallel for
2033 + for (int& i = j; i < 10; ++i) // { dg-error "invalid type for iteration variable" }
2036 Index: gcc/testsuite/g++.dg/gomp/pr35099.C
2037 ===================================================================
2038 --- gcc/testsuite/g++.dg/gomp/pr35099.C (.../tags/gcc_4_3_0_release) (revision 0)
2039 +++ gcc/testsuite/g++.dg/gomp/pr35099.C (.../branches/gcc-4_3-branch) (revision 133190)
2041 +// PR middle-end/35099
2042 +// { dg-do compile }
2043 +// { dg-options "-O2 -fopenmp" }
2053 + B () { A ().foo (); }
2059 +#pragma omp parallel
2061 + #pragma omp single
2064 + for (int i = 0; i < 2; ++i)
2072 +#pragma omp parallel
2074 + #pragma omp single
2076 + #pragma omp single
2080 Index: gcc/testsuite/g++.dg/gomp/pr35028.C
2081 ===================================================================
2082 --- gcc/testsuite/g++.dg/gomp/pr35028.C (.../tags/gcc_4_3_0_release) (revision 0)
2083 +++ gcc/testsuite/g++.dg/gomp/pr35028.C (.../branches/gcc-4_3-branch) (revision 133190)
2086 +// { dg-do compile }
2087 +// { dg-options "-fopenmp" }
2092 + A (const A &, ...);
2094 + A operator++ (int);
2101 + #pragma omp parallel firstprivate (a)
2104 Index: gcc/testsuite/g++.dg/inherit/override-attribs.C
2105 ===================================================================
2106 --- gcc/testsuite/g++.dg/inherit/override-attribs.C (.../tags/gcc_4_3_0_release) (revision 133190)
2107 +++ gcc/testsuite/g++.dg/inherit/override-attribs.C (.../branches/gcc-4_3-branch) (revision 133190)
2110 -// { dg-do compile { target i?86-*-* } }
2111 +// { dg-do compile { target i?86-*-* x86_64-*-* } }
2112 +// { dg-require-effective-target ilp32 }
2117 Index: gcc/testsuite/g++.dg/torture/pr35526.C
2118 ===================================================================
2119 --- gcc/testsuite/g++.dg/torture/pr35526.C (.../tags/gcc_4_3_0_release) (revision 0)
2120 +++ gcc/testsuite/g++.dg/torture/pr35526.C (.../branches/gcc-4_3-branch) (revision 133190)
2122 +/* { dg-do compile } */
2124 +extern void *memcpy (void *__dest, __const void *__src, __SIZE_TYPE__ __n);
2126 +char internal_crash_read_ip[] = { 0xb8 };
2128 +struct u_internal_crash_read_t
2130 + char ip[sizeof (internal_crash_read_ip)];
2132 +u_internal_crash_read;
2135 +gSignalHandler (int psignalNr, int pinfo, int pctx)
2137 + memcpy (u_internal_crash_read.ip, internal_crash_read_ip,
2138 + sizeof (internal_crash_read_ip));
2140 Index: gcc/cp/typeck.c
2141 ===================================================================
2142 --- gcc/cp/typeck.c (.../tags/gcc_4_3_0_release) (revision 133190)
2143 +++ gcc/cp/typeck.c (.../branches/gcc-4_3-branch) (revision 133190)
2145 if (TREE_CODE (t1) != ARRAY_TYPE
2146 && TYPE_QUALS (t1) != TYPE_QUALS (t2))
2148 + if (TYPE_FOR_JAVA (t1) != TYPE_FOR_JAVA (t2))
2151 /* Allow for two different type nodes which have essentially the same
2152 definition. Note that we already checked for equality of the type
2154 && TYPE_MAIN_VARIANT (t1) == TYPE_MAIN_VARIANT (t2))
2157 - if (TYPE_FOR_JAVA (t1) != TYPE_FOR_JAVA (t2))
2160 /* Compare the types. Break out if they could be the same. */
2161 switch (TREE_CODE (t1))
2163 Index: gcc/cp/decl.c
2164 ===================================================================
2165 --- gcc/cp/decl.c (.../tags/gcc_4_3_0_release) (revision 133190)
2166 +++ gcc/cp/decl.c (.../branches/gcc-4_3-branch) (revision 133190)
2167 @@ -3164,19 +3164,10 @@
2170 type = make_signed_type (size);
2171 - else if (size == -1)
2172 - { /* "__java_boolean". */
2173 - if ((TYPE_MODE (boolean_type_node)
2174 - == smallest_mode_for_size (1, MODE_INT)))
2175 - type = build_variant_type_copy (boolean_type_node);
2177 - /* ppc-darwin has SImode bool, make jboolean a 1-bit
2178 - integer type without boolean semantics there. */
2179 - type = make_unsigned_type (1);
2181 else if (size > -32)
2182 - { /* "__java_char". */
2183 + { /* "__java_char" or ""__java_boolean". */
2184 type = make_unsigned_type (-size);
2185 + /*if (size == -1) TREE_SET_CODE (type, BOOLEAN_TYPE);*/
2188 { /* "__java_float" or ""__java_double". */
2189 Index: gcc/cp/error.c
2190 ===================================================================
2191 --- gcc/cp/error.c (.../tags/gcc_4_3_0_release) (revision 133190)
2192 +++ gcc/cp/error.c (.../branches/gcc-4_3-branch) (revision 133190)
2197 + case FIXED_POINT_TYPE:
2198 pp_type_specifier_seq (cxx_pp, t);
2201 @@ -2079,7 +2080,9 @@
2202 case VEC_DELETE_EXPR:
2208 pp_expression (cxx_pp, t);
2211 Index: gcc/cp/ChangeLog
2212 ===================================================================
2213 --- gcc/cp/ChangeLog (.../tags/gcc_4_3_0_release) (revision 133190)
2214 +++ gcc/cp/ChangeLog (.../branches/gcc-4_3-branch) (revision 133190)
2216 +2008-03-12 Richard Guenther <rguenther@suse.de>
2220 + 2008-02-04 Richard Guenther <rguenther@suse.de>
2223 + * decl.c (record_builtin_java_type): Make jboolean a
2224 + integer type again where its mode doesn't match that of bool.
2226 + 2008-01-25 Richard Guenther <rguenther@suse.de>
2229 + * decl.c (record_builtin_java_type): Make __java_boolean
2230 + a variant of bool.
2231 + * typeck.c (structural_comptypes): Move TYPE_FOR_JAVA check
2232 + after TYPE_MAIN_VARIANT check.
2234 +2008-03-10 Jakub Jelinek <jakub@redhat.com>
2237 + * semantics.c (finish_omp_clauses): Look through NOP_EXPR even
2241 + * semantics.c (finish_omp_clauses): Use %qD instead of %qE for
2242 + DECL_P in not a variable and appears more than once error messages.
2244 +2008-03-06 Jakub Jelinek <jakub@redhat.com>
2247 + * cp-gimplify.c (cxx_omp_clause_apply_fn): Handle vararg copy ctors.
2251 + * semantics.c (finish_omp_threadprivate): Do nothing for error_operand_p
2252 + vars. Afterwards ensure v is VAR_DECL.
2255 + * parser.c (cp_parser_omp_for_loop): If DECL has REFERENCE_TYPE, don't
2256 + call cp_finish_decl.
2257 + * semantics.c (finish_omp_for): Fail if DECL doesn't have integral type
2260 +2008-03-06 Paolo Carlini <pcarlini@suse.de>
2263 + * name-lookup.c (arg_assoc_type): Handle FIXED_POINT_TYPE.
2265 +2008-03-06 Paolo Carlini <pcarlini@suse.de>
2268 + * error.c (dump_expr): Handle CONJ_EXPR.
2270 +2008-03-06 Paolo Carlini <pcarlini@suse.de>
2273 + * error.c (dump_type): Handle FIXED_POINT_TYPE.
2274 + (dump_expr): Handle FIXED_CST.
2276 2008-03-05 Release Manager
2278 * GCC 4.3.0 released.
2279 Index: gcc/cp/cp-gimplify.c
2280 ===================================================================
2281 --- gcc/cp/cp-gimplify.c (.../tags/gcc_4_3_0_release) (revision 133190)
2282 +++ gcc/cp/cp-gimplify.c (.../branches/gcc-4_3-branch) (revision 133190)
2286 /* Handle default arguments. */
2287 - for (parm = defparm; parm != void_list_node; parm = TREE_CHAIN (parm), i++)
2288 + for (parm = defparm; parm && parm != void_list_node;
2289 + parm = TREE_CHAIN (parm), i++)
2290 argarray[i] = convert_default_arg (TREE_VALUE (parm),
2291 TREE_PURPOSE (parm), fn, i);
2292 t = build_call_a (fn, i, argarray);
2295 argarray[i++] = build_fold_addr_expr (arg2);
2296 /* Handle default arguments. */
2297 - for (parm = defparm; parm != void_list_node;
2298 + for (parm = defparm; parm && parm != void_list_node;
2299 parm = TREE_CHAIN (parm), i++)
2300 argarray[i] = convert_default_arg (TREE_VALUE (parm),
2301 TREE_PURPOSE (parm),
2302 Index: gcc/cp/semantics.c
2303 ===================================================================
2304 --- gcc/cp/semantics.c (.../tags/gcc_4_3_0_release) (revision 133190)
2305 +++ gcc/cp/semantics.c (.../branches/gcc-4_3-branch) (revision 133190)
2306 @@ -3400,13 +3400,16 @@
2308 if (processing_template_decl)
2310 - error ("%qE is not a variable in clause %<firstprivate%>", t);
2312 + error ("%qD is not a variable in clause %<firstprivate%>", t);
2314 + error ("%qE is not a variable in clause %<firstprivate%>", t);
2317 else if (bitmap_bit_p (&generic_head, DECL_UID (t))
2318 || bitmap_bit_p (&firstprivate_head, DECL_UID (t)))
2320 - error ("%qE appears more than once in data clauses", t);
2321 + error ("%qD appears more than once in data clauses", t);
2325 @@ -3419,13 +3422,16 @@
2327 if (processing_template_decl)
2329 - error ("%qE is not a variable in clause %<lastprivate%>", t);
2331 + error ("%qD is not a variable in clause %<lastprivate%>", t);
2333 + error ("%qE is not a variable in clause %<lastprivate%>", t);
2336 else if (bitmap_bit_p (&generic_head, DECL_UID (t))
2337 || bitmap_bit_p (&lastprivate_head, DECL_UID (t)))
2339 - error ("%qE appears more than once in data clauses", t);
2340 + error ("%qD appears more than once in data clauses", t);
2344 @@ -3661,7 +3667,7 @@
2345 complete_ctor_identifier,
2346 t, inner_type, LOOKUP_NORMAL);
2348 - if (targetm.cxx.cdtor_returns_this ())
2349 + if (targetm.cxx.cdtor_returns_this () || errorcount)
2350 /* Because constructors and destructors return this,
2351 the call will have been cast to "void". Remove the
2352 cast here. We would like to use STRIP_NOPS, but it
2353 @@ -3683,7 +3689,7 @@
2354 t = build_special_member_call (t, complete_dtor_identifier,
2355 NULL, inner_type, LOOKUP_NORMAL);
2357 - if (targetm.cxx.cdtor_returns_this ())
2358 + if (targetm.cxx.cdtor_returns_this () || errorcount)
2359 /* Because constructors and destructors return this,
2360 the call will have been cast to "void". Remove the
2361 cast here. We would like to use STRIP_NOPS, but it
2362 @@ -3742,9 +3748,14 @@
2364 tree v = TREE_PURPOSE (t);
2366 + if (error_operand_p (v))
2368 + else if (TREE_CODE (v) != VAR_DECL)
2369 + error ("%<threadprivate%> %qD is not file, namespace "
2370 + "or block scope variable", v);
2371 /* If V had already been marked threadprivate, it doesn't matter
2372 whether it had been used prior to this point. */
2374 + else if (TREE_USED (v)
2375 && (DECL_LANG_SPECIFIC (v) == NULL
2376 || !CP_DECL_THREADPRIVATE_P (v)))
2377 error ("%qE declared %<threadprivate%> after first use", v);
2378 @@ -3903,6 +3914,16 @@
2382 + if (!INTEGRAL_TYPE_P (TREE_TYPE (decl)))
2384 + location_t elocus = locus;
2386 + if (EXPR_HAS_LOCATION (init))
2387 + elocus = EXPR_LOCATION (init);
2388 + error ("%Hinvalid type for iteration variable %qE", &elocus, decl);
2392 if (pre_body == NULL || IS_EMPTY_STMT (pre_body))
2394 else if (! processing_template_decl)
2395 Index: gcc/cp/name-lookup.c
2396 ===================================================================
2397 --- gcc/cp/name-lookup.c (.../tags/gcc_4_3_0_release) (revision 133190)
2398 +++ gcc/cp/name-lookup.c (.../branches/gcc-4_3-branch) (revision 133190)
2400 /* Definitions for C++ name lookup routines.
2401 - Copyright (C) 2003, 2004, 2005, 2006, 2007
2402 + Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008
2403 Free Software Foundation, Inc.
2404 Contributed by Gabriel Dos Reis <gdr@integrable-solutions.net>
2406 @@ -4594,6 +4594,7 @@
2410 + case FIXED_POINT_TYPE:
2413 if (TYPE_PTRMEMFUNC_P (type))
2414 Index: gcc/cp/parser.c
2415 ===================================================================
2416 --- gcc/cp/parser.c (.../tags/gcc_4_3_0_release) (revision 133190)
2417 +++ gcc/cp/parser.c (.../branches/gcc-4_3-branch) (revision 133190)
2418 @@ -20074,8 +20074,11 @@
2420 init = cp_parser_assignment_expression (parser, false);
2422 - cp_finish_decl (decl, NULL_TREE, /*init_const_expr_p=*/false,
2423 - asm_specification, LOOKUP_ONLYCONVERTING);
2424 + if (TREE_CODE (TREE_TYPE (decl)) == REFERENCE_TYPE)
2425 + init = error_mark_node;
2427 + cp_finish_decl (decl, NULL_TREE, /*init_const_expr_p=*/false,
2428 + asm_specification, LOOKUP_ONLYCONVERTING);
2431 pop_scope (pushed_scope);
2433 ===================================================================
2434 --- gcc/ifcvt.c (.../tags/gcc_4_3_0_release) (revision 133190)
2435 +++ gcc/ifcvt.c (.../branches/gcc-4_3-branch) (revision 133190)
2436 @@ -1737,6 +1737,10 @@
2437 rtx cond, earliest, target, seq, a, b, c;
2440 + /* Reject modes with signed zeros. */
2441 + if (HONOR_SIGNED_ZEROS (GET_MODE (if_info->x)))
2444 /* Recognize A and B as constituting an ABS or NABS. The canonical
2445 form is a branch around the negation, taken when the object is the
2446 first operand of a comparison against 0 that evaluates to true. */
2448 ===================================================================
2449 --- gcc/expr.c (.../tags/gcc_4_3_0_release) (revision 133190)
2450 +++ gcc/expr.c (.../branches/gcc-4_3-branch) (revision 133190)
2451 @@ -4654,7 +4654,8 @@
2452 temp = convert_to_mode (GET_MODE (target), temp, unsignedp);
2453 emit_move_insn (target, temp);
2455 - else if (GET_MODE (target) == BLKmode)
2456 + else if (GET_MODE (target) == BLKmode
2457 + || GET_MODE (temp) == BLKmode)
2458 emit_block_move (target, temp, expr_size (exp),
2460 ? BLOCK_OP_CALL_PARM
2462 ===================================================================
2463 --- gcc/BASE-VER (.../tags/gcc_4_3_0_release) (revision 133190)
2464 +++ gcc/BASE-VER (.../branches/gcc-4_3-branch) (revision 133190)
2468 Index: gcc/gimplify.c
2469 ===================================================================
2470 --- gcc/gimplify.c (.../tags/gcc_4_3_0_release) (revision 133190)
2471 +++ gcc/gimplify.c (.../branches/gcc-4_3-branch) (revision 133190)
2472 @@ -5464,7 +5464,11 @@
2473 expr = TREE_OPERAND (expr, 0);
2474 addr = TREE_OPERAND (addr, 0);
2476 - return expr == addr;
2479 + return (TREE_CODE (addr) == ADDR_EXPR
2480 + && TREE_CODE (expr) == ADDR_EXPR
2481 + && TREE_OPERAND (addr, 0) == TREE_OPERAND (expr, 0));
2483 if (TREE_CODE (addr) == ADDR_EXPR && expr == TREE_OPERAND (addr, 0))
2486 ===================================================================
2487 --- gcc/expmed.c (.../tags/gcc_4_3_0_release) (revision 133190)
2488 +++ gcc/expmed.c (.../branches/gcc-4_3-branch) (revision 133190)
2489 @@ -1339,18 +1339,15 @@
2490 || (offset * BITS_PER_UNIT % bitsize == 0
2491 && MEM_ALIGN (op0) % bitsize == 0)))))
2493 - if (mode1 != GET_MODE (op0))
2495 + op0 = adjust_address (op0, mode1, offset);
2496 + else if (mode1 != GET_MODE (op0))
2499 - op0 = adjust_address (op0, mode1, offset);
2502 - rtx sub = simplify_gen_subreg (mode1, op0, GET_MODE (op0),
2505 - goto no_subreg_mode_swap;
2508 + rtx sub = simplify_gen_subreg (mode1, op0, GET_MODE (op0),
2511 + goto no_subreg_mode_swap;
2515 return convert_to_mode (tmode, op0, unsignedp);
2516 Index: gcc/tree-cfg.c
2517 ===================================================================
2518 --- gcc/tree-cfg.c (.../tags/gcc_4_3_0_release) (revision 133190)
2519 +++ gcc/tree-cfg.c (.../branches/gcc-4_3-branch) (revision 133190)
2520 @@ -5893,6 +5893,8 @@
2521 m->base.from = decl;
2522 m->to = create_artificial_label ();
2523 LABEL_DECL_UID (m->to) = LABEL_DECL_UID (decl);
2524 + if (LABEL_DECL_UID (m->to) >= cfun->last_label_uid)
2525 + cfun->last_label_uid = LABEL_DECL_UID (m->to) + 1;
2527 slot = htab_find_slot_with_hash (hash, m, m->hash, INSERT);
2528 gcc_assert (*slot == NULL);
2529 Index: gcc/c-parser.c
2530 ===================================================================
2531 --- gcc/c-parser.c (.../tags/gcc_4_3_0_release) (revision 133190)
2532 +++ gcc/c-parser.c (.../branches/gcc-4_3-branch) (revision 133190)
2534 /* Parser for C and Objective-C.
2535 Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
2536 - 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007 Free Software Foundation, Inc.
2537 + 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008
2538 + Free Software Foundation, Inc.
2540 Parser actions based on the old Bison parser; structure somewhat
2541 influenced by and fragments based on the C++ parser.
2542 @@ -7964,10 +7965,14 @@
2544 /* If V had already been marked threadprivate, it doesn't matter
2545 whether it had been used prior to this point. */
2546 - if (TREE_USED (v) && !C_DECL_THREADPRIVATE_P (v))
2547 + if (TREE_CODE (v) != VAR_DECL)
2548 + error ("%qD is not a variable", v);
2549 + else if (TREE_USED (v) && !C_DECL_THREADPRIVATE_P (v))
2550 error ("%qE declared %<threadprivate%> after first use", v);
2551 else if (! TREE_STATIC (v) && ! DECL_EXTERNAL (v))
2552 error ("automatic variable %qE cannot be %<threadprivate%>", v);
2553 + else if (TREE_TYPE (v) == error_mark_node)
2555 else if (! COMPLETE_TYPE_P (TREE_TYPE (v)))
2556 error ("%<threadprivate%> %qE has incomplete type", v);
2558 Index: gcc/config/i386/i386.md
2559 ===================================================================
2560 --- gcc/config/i386/i386.md (.../tags/gcc_4_3_0_release) (revision 133190)
2561 +++ gcc/config/i386/i386.md (.../branches/gcc-4_3-branch) (revision 133190)
2562 @@ -15440,7 +15440,7 @@
2564 (define_expand "paritydi2"
2565 [(set (match_operand:DI 0 "register_operand" "")
2566 - (parity:DI (match_operand:DI 1 "nonimmediate_operand" "")))]
2567 + (parity:DI (match_operand:DI 1 "register_operand" "")))]
2570 rtx scratch = gen_reg_rtx (QImode);
2571 @@ -15468,10 +15468,10 @@
2573 (define_insn_and_split "paritydi2_cmp"
2574 [(set (reg:CC FLAGS_REG)
2575 - (parity:CC (match_operand:DI 3 "nonimmediate_operand" "0,m")))
2576 - (clobber (match_scratch:DI 0 "=r,X"))
2577 - (clobber (match_scratch:SI 1 "=r,r"))
2578 - (clobber (match_scratch:HI 2 "=Q,Q"))]
2579 + (parity:CC (match_operand:DI 3 "register_operand" "0")))
2580 + (clobber (match_scratch:DI 0 "=r"))
2581 + (clobber (match_scratch:SI 1 "=&r"))
2582 + (clobber (match_scratch:HI 2 "=Q"))]
2585 "&& reload_completed"
2586 @@ -15487,20 +15487,18 @@
2588 operands[4] = gen_lowpart (SImode, operands[3]);
2590 - if (MEM_P (operands[3]))
2591 - emit_move_insn (operands[1], gen_highpart (SImode, operands[3]));
2592 - else if (! TARGET_64BIT)
2593 - operands[1] = gen_highpart (SImode, operands[3]);
2597 emit_move_insn (operands[1], gen_lowpart (SImode, operands[3]));
2598 emit_insn (gen_lshrdi3 (operands[3], operands[3], GEN_INT (32)));
2601 + operands[1] = gen_highpart (SImode, operands[3]);
2604 (define_expand "paritysi2"
2605 [(set (match_operand:SI 0 "register_operand" "")
2606 - (parity:SI (match_operand:SI 1 "nonimmediate_operand" "")))]
2607 + (parity:SI (match_operand:SI 1 "register_operand" "")))]
2610 rtx scratch = gen_reg_rtx (QImode);
2611 @@ -15519,9 +15517,9 @@
2613 (define_insn_and_split "paritysi2_cmp"
2614 [(set (reg:CC FLAGS_REG)
2615 - (parity:CC (match_operand:SI 2 "nonimmediate_operand" "0,m")))
2616 - (clobber (match_scratch:SI 0 "=r,X"))
2617 - (clobber (match_scratch:HI 1 "=Q,Q"))]
2618 + (parity:CC (match_operand:SI 2 "register_operand" "0")))
2619 + (clobber (match_scratch:SI 0 "=r"))
2620 + (clobber (match_scratch:HI 1 "=&Q"))]
2623 "&& reload_completed"
2624 @@ -15536,13 +15534,8 @@
2626 operands[3] = gen_lowpart (HImode, operands[2]);
2628 - if (MEM_P (operands[2]))
2629 - emit_move_insn (operands[1], gen_highpart (HImode, operands[2]));
2632 - emit_move_insn (operands[1], gen_lowpart (HImode, operands[2]));
2633 - emit_insn (gen_lshrsi3 (operands[2], operands[2], GEN_INT (16)));
2635 + emit_move_insn (operands[1], gen_lowpart (HImode, operands[2]));
2636 + emit_insn (gen_lshrsi3 (operands[2], operands[2], GEN_INT (16)));
2639 (define_insn "*parityhi2_cmp"
2640 Index: gcc/config/i386/sse.md
2641 ===================================================================
2642 --- gcc/config/i386/sse.md (.../tags/gcc_4_3_0_release) (revision 133190)
2643 +++ gcc/config/i386/sse.md (.../branches/gcc-4_3-branch) (revision 133190)
2644 @@ -6402,7 +6402,7 @@
2648 - (match_operand:V16QI 1 "nonimmediate_operand" "%0")
2649 + (match_operand:V16QI 1 "nonimmediate_operand" "0")
2650 (parallel [(const_int 0)
2653 @@ -6456,7 +6456,7 @@
2657 - (match_operand:V8QI 1 "nonimmediate_operand" "%0")
2658 + (match_operand:V8QI 1 "nonimmediate_operand" "0")
2659 (parallel [(const_int 0)
2662 Index: gcc/config/i386/i386.c
2663 ===================================================================
2664 --- gcc/config/i386/i386.c (.../tags/gcc_4_3_0_release) (revision 133190)
2665 +++ gcc/config/i386/i386.c (.../branches/gcc-4_3-branch) (revision 133190)
2666 @@ -1768,35 +1768,65 @@
2667 was set or cleared on the command line. */
2668 static int ix86_isa_flags_explicit;
2670 -/* Define a set of ISAs which aren't available for a given ISA. MMX
2671 - and SSE ISAs are handled separately. */
2672 +/* Define a set of ISAs which are available when a given ISA is
2673 + enabled. MMX and SSE ISAs are handled separately. */
2675 +#define OPTION_MASK_ISA_MMX_SET OPTION_MASK_ISA_MMX
2676 +#define OPTION_MASK_ISA_3DNOW_SET \
2677 + (OPTION_MASK_ISA_3DNOW | OPTION_MASK_ISA_MMX_SET)
2679 +#define OPTION_MASK_ISA_SSE_SET OPTION_MASK_ISA_SSE
2680 +#define OPTION_MASK_ISA_SSE2_SET \
2681 + (OPTION_MASK_ISA_SSE2 | OPTION_MASK_ISA_SSE_SET)
2682 +#define OPTION_MASK_ISA_SSE3_SET \
2683 + (OPTION_MASK_ISA_SSE3 | OPTION_MASK_ISA_SSE2_SET)
2684 +#define OPTION_MASK_ISA_SSSE3_SET \
2685 + (OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_SSE3_SET)
2686 +#define OPTION_MASK_ISA_SSE4_1_SET \
2687 + (OPTION_MASK_ISA_SSE4_1 | OPTION_MASK_ISA_SSSE3_SET)
2688 +#define OPTION_MASK_ISA_SSE4_2_SET \
2689 + (OPTION_MASK_ISA_SSE4_2 | OPTION_MASK_ISA_SSE4_1_SET)
2691 +/* SSE4 includes both SSE4.1 and SSE4.2. -msse4 should be the same
2693 +#define OPTION_MASK_ISA_SSE4_SET OPTION_MASK_ISA_SSE4_2_SET
2695 +#define OPTION_MASK_ISA_SSE4A_SET \
2696 + (OPTION_MASK_ISA_SSE4A | OPTION_MASK_ISA_SSE3_SET)
2697 +#define OPTION_MASK_ISA_SSE5_SET \
2698 + (OPTION_MASK_ISA_SSE5 | OPTION_MASK_ISA_SSE4A_SET)
2700 +/* Define a set of ISAs which aren't available when a given ISA is
2701 + disabled. MMX and SSE ISAs are handled separately. */
2703 #define OPTION_MASK_ISA_MMX_UNSET \
2704 - (OPTION_MASK_ISA_3DNOW | OPTION_MASK_ISA_3DNOW_UNSET)
2705 -#define OPTION_MASK_ISA_3DNOW_UNSET OPTION_MASK_ISA_3DNOW_A
2706 + (OPTION_MASK_ISA_MMX | OPTION_MASK_ISA_3DNOW_UNSET)
2707 +#define OPTION_MASK_ISA_3DNOW_UNSET \
2708 + (OPTION_MASK_ISA_3DNOW | OPTION_MASK_ISA_3DNOW_A_UNSET)
2709 +#define OPTION_MASK_ISA_3DNOW_A_UNSET OPTION_MASK_ISA_3DNOW_A
2711 #define OPTION_MASK_ISA_SSE_UNSET \
2712 - (OPTION_MASK_ISA_SSE2 | OPTION_MASK_ISA_SSE2_UNSET)
2713 + (OPTION_MASK_ISA_SSE | OPTION_MASK_ISA_SSE2_UNSET)
2714 #define OPTION_MASK_ISA_SSE2_UNSET \
2715 - (OPTION_MASK_ISA_SSE3 | OPTION_MASK_ISA_SSE3_UNSET)
2716 + (OPTION_MASK_ISA_SSE2 | OPTION_MASK_ISA_SSE3_UNSET)
2717 #define OPTION_MASK_ISA_SSE3_UNSET \
2718 - (OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_SSSE3_UNSET)
2719 + (OPTION_MASK_ISA_SSE3 \
2720 + | OPTION_MASK_ISA_SSSE3_UNSET \
2721 + | OPTION_MASK_ISA_SSE4A_UNSET )
2722 #define OPTION_MASK_ISA_SSSE3_UNSET \
2723 - (OPTION_MASK_ISA_SSE4_1 | OPTION_MASK_ISA_SSE4_1_UNSET)
2724 + (OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_SSE4_1_UNSET)
2725 #define OPTION_MASK_ISA_SSE4_1_UNSET \
2726 - (OPTION_MASK_ISA_SSE4_2 | OPTION_MASK_ISA_SSE4_2_UNSET)
2727 -#define OPTION_MASK_ISA_SSE4_2_UNSET OPTION_MASK_ISA_SSE4A
2728 + (OPTION_MASK_ISA_SSE4_1 | OPTION_MASK_ISA_SSE4_2_UNSET)
2729 +#define OPTION_MASK_ISA_SSE4_2_UNSET OPTION_MASK_ISA_SSE4_2
2731 -/* SSE4 includes both SSE4.1 and SSE4.2. -msse4 should be the same
2732 - as -msse4.1 -msse4.2. -mno-sse4 should the same as -mno-sse4.1. */
2733 -#define OPTION_MASK_ISA_SSE4 \
2734 - (OPTION_MASK_ISA_SSE4_1 | OPTION_MASK_ISA_SSE4_2)
2735 +/* SSE4 includes both SSE4.1 and SSE4.2. -mno-sse4 should the same
2736 + as -mno-sse4.1. */
2737 #define OPTION_MASK_ISA_SSE4_UNSET OPTION_MASK_ISA_SSE4_1_UNSET
2739 -#define OPTION_MASK_ISA_SSE4A_UNSET OPTION_MASK_ISA_SSE4
2740 +#define OPTION_MASK_ISA_SSE4A_UNSET \
2741 + (OPTION_MASK_ISA_SSE4A | OPTION_MASK_ISA_SSE5_UNSET)
2743 -#define OPTION_MASK_ISA_SSE5_UNSET \
2744 - (OPTION_MASK_ISA_3DNOW | OPTION_MASK_ISA_3DNOW_UNSET)
2745 +#define OPTION_MASK_ISA_SSE5_UNSET OPTION_MASK_ISA_SSE5
2747 /* Vectorization library interface and handlers. */
2748 tree (*ix86_veclib_handler)(enum built_in_function, tree, tree) = NULL;
2749 @@ -1810,18 +1840,26 @@
2753 - ix86_isa_flags_explicit |= OPTION_MASK_ISA_MMX;
2757 + ix86_isa_flags |= OPTION_MASK_ISA_MMX_SET;
2758 + ix86_isa_flags_explicit |= OPTION_MASK_ISA_MMX_SET;
2762 ix86_isa_flags &= ~OPTION_MASK_ISA_MMX_UNSET;
2763 ix86_isa_flags_explicit |= OPTION_MASK_ISA_MMX_UNSET;
2768 - ix86_isa_flags_explicit |= OPTION_MASK_ISA_3DNOW;
2772 + ix86_isa_flags |= OPTION_MASK_ISA_3DNOW_SET;
2773 + ix86_isa_flags_explicit |= OPTION_MASK_ISA_3DNOW_SET;
2777 ix86_isa_flags &= ~OPTION_MASK_ISA_3DNOW_UNSET;
2778 ix86_isa_flags_explicit |= OPTION_MASK_ISA_3DNOW_UNSET;
2780 @@ -1831,62 +1869,86 @@
2784 - ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE;
2788 + ix86_isa_flags |= OPTION_MASK_ISA_SSE_SET;
2789 + ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE_SET;
2793 ix86_isa_flags &= ~OPTION_MASK_ISA_SSE_UNSET;
2794 ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE_UNSET;
2799 - ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE2;
2803 + ix86_isa_flags |= OPTION_MASK_ISA_SSE2_SET;
2804 + ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE2_SET;
2808 ix86_isa_flags &= ~OPTION_MASK_ISA_SSE2_UNSET;
2809 ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE2_UNSET;
2814 - ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE3;
2818 + ix86_isa_flags |= OPTION_MASK_ISA_SSE3_SET;
2819 + ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE3_SET;
2823 ix86_isa_flags &= ~OPTION_MASK_ISA_SSE3_UNSET;
2824 ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE3_UNSET;
2829 - ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSSE3;
2833 + ix86_isa_flags |= OPTION_MASK_ISA_SSSE3_SET;
2834 + ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSSE3_SET;
2838 ix86_isa_flags &= ~OPTION_MASK_ISA_SSSE3_UNSET;
2839 ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSSE3_UNSET;
2844 - ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4_1;
2848 + ix86_isa_flags |= OPTION_MASK_ISA_SSE4_1_SET;
2849 + ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4_1_SET;
2853 ix86_isa_flags &= ~OPTION_MASK_ISA_SSE4_1_UNSET;
2854 ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4_1_UNSET;
2859 - ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4_2;
2863 + ix86_isa_flags |= OPTION_MASK_ISA_SSE4_2_SET;
2864 + ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4_2_SET;
2868 ix86_isa_flags &= ~OPTION_MASK_ISA_SSE4_2_UNSET;
2869 ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4_2_UNSET;
2874 - ix86_isa_flags |= OPTION_MASK_ISA_SSE4;
2875 - ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4;
2876 + ix86_isa_flags |= OPTION_MASK_ISA_SSE4_SET;
2877 + ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4_SET;
2881 @@ -1895,18 +1957,26 @@
2885 - ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4A;
2889 + ix86_isa_flags |= OPTION_MASK_ISA_SSE4A_SET;
2890 + ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4A_SET;
2894 ix86_isa_flags &= ~OPTION_MASK_ISA_SSE4A_UNSET;
2895 ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4A_UNSET;
2900 - ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE5;
2904 + ix86_isa_flags |= OPTION_MASK_ISA_SSE5_SET;
2905 + ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE5_SET;
2909 ix86_isa_flags &= ~OPTION_MASK_ISA_SSE5_UNSET;
2910 ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE5_UNSET;
2912 @@ -2530,34 +2600,6 @@
2914 target_flags |= MASK_NO_FANCY_MATH_387;
2916 - /* Turn on SSE4A bultins for -msse5. */
2918 - ix86_isa_flags |= OPTION_MASK_ISA_SSE4A;
2920 - /* Turn on SSE4.1 builtins for -msse4.2. */
2921 - if (TARGET_SSE4_2)
2922 - ix86_isa_flags |= OPTION_MASK_ISA_SSE4_1;
2924 - /* Turn on SSSE3 builtins for -msse4.1. */
2925 - if (TARGET_SSE4_1)
2926 - ix86_isa_flags |= OPTION_MASK_ISA_SSSE3;
2928 - /* Turn on SSE3 builtins for -mssse3. */
2930 - ix86_isa_flags |= OPTION_MASK_ISA_SSE3;
2932 - /* Turn on SSE3 builtins for -msse4a. */
2934 - ix86_isa_flags |= OPTION_MASK_ISA_SSE3;
2936 - /* Turn on SSE2 builtins for -msse3. */
2938 - ix86_isa_flags |= OPTION_MASK_ISA_SSE2;
2940 - /* Turn on SSE builtins for -msse2. */
2942 - ix86_isa_flags |= OPTION_MASK_ISA_SSE;
2944 /* Turn on MMX builtins for -msse. */
2947 @@ -2565,10 +2607,6 @@
2948 x86_prefetch_sse = true;
2951 - /* Turn on MMX builtins for 3Dnow. */
2953 - ix86_isa_flags |= OPTION_MASK_ISA_MMX;
2955 /* Turn on popcnt instruction for -msse4.2 or -mabm. */
2956 if (TARGET_SSE4_2 || TARGET_ABM)
2958 @@ -16736,7 +16774,8 @@
2960 ix86_constant_alignment (tree exp, int align)
2962 - if (TREE_CODE (exp) == REAL_CST)
2963 + if (TREE_CODE (exp) == REAL_CST || TREE_CODE (exp) == VECTOR_CST
2964 + || TREE_CODE (exp) == INTEGER_CST)
2966 if (TYPE_MODE (TREE_TYPE (exp)) == DFmode && align < 64)
2968 Index: gcc/config/sh/sh.c
2969 ===================================================================
2970 --- gcc/config/sh/sh.c (.../tags/gcc_4_3_0_release) (revision 133190)
2971 +++ gcc/config/sh/sh.c (.../branches/gcc-4_3-branch) (revision 133190)
2972 @@ -3838,6 +3838,7 @@
2973 rtx barrier_before_mova = 0, found_barrier = 0, good_barrier = 0;
2978 /* For HImode: range is 510, add 4 because pc counts from address of
2979 second instruction after this one, subtract 2 for the jump instruction
2980 @@ -3897,6 +3898,7 @@
2982 if (GET_CODE (from) == BARRIER)
2986 found_barrier = from;
2988 @@ -3905,6 +3907,14 @@
2989 this kind of barrier. */
2990 if (barrier_align (from) > 2)
2991 good_barrier = from;
2993 + /* If we are at the end of a hot/cold block, dump the constants
2995 + next = NEXT_INSN (from);
2998 + && NOTE_KIND (next) == NOTE_INSN_SWITCH_TEXT_SECTIONS)
3002 if (broken_move (from))
3003 @@ -4061,7 +4071,8 @@
3004 /* If we exceeded the range, then we must back up over the last
3005 instruction we looked at. Otherwise, we just need to undo the
3006 NEXT_INSN at the end of the loop. */
3007 - if (count_hi > hi_limit || count_si > si_limit)
3008 + if (PREV_INSN (from) != orig
3009 + && (count_hi > hi_limit || count_si > si_limit))
3010 from = PREV_INSN (PREV_INSN (from));
3012 from = PREV_INSN (from);
3013 Index: gcc/config/sh/sh.md
3014 ===================================================================
3015 --- gcc/config/sh/sh.md (.../tags/gcc_4_3_0_release) (revision 133190)
3016 +++ gcc/config/sh/sh.md (.../branches/gcc-4_3-branch) (revision 133190)
3017 @@ -7378,7 +7378,7 @@
3018 (define_insn "jump_compact"
3020 (label_ref (match_operand 0 "" "")))]
3022 + "TARGET_SH1 && !find_reg_note (insn, REG_CROSSING_JUMP, NULL_RTX)"
3025 /* The length is 16 if the delay slot is unfilled. */
3026 Index: gcc/config/rs6000/rs6000.c
3027 ===================================================================
3028 --- gcc/config/rs6000/rs6000.c (.../tags/gcc_4_3_0_release) (revision 133190)
3029 +++ gcc/config/rs6000/rs6000.c (.../branches/gcc-4_3-branch) (revision 133190)
3030 @@ -13858,6 +13858,9 @@
3031 emit_insn (gen_sync_compare_and_swapqhi_internal (wdst, mask,
3032 oldval, newval, mem));
3034 + /* Shift the result back. */
3035 + emit_insn (gen_lshrsi3 (wdst, wdst, shift));
3037 emit_move_insn (dst, gen_lowpart (mode, wdst));
3040 Index: libstdc++-v3/include/bits/stl_multimap.h
3041 ===================================================================
3042 --- libstdc++-v3/include/bits/stl_multimap.h (.../tags/gcc_4_3_0_release) (revision 133190)
3043 +++ libstdc++-v3/include/bits/stl_multimap.h (.../branches/gcc-4_3-branch) (revision 133190)
3045 template<typename _InputIterator>
3046 multimap(_InputIterator __first, _InputIterator __last)
3048 - { _M_t._M_insert_unique(__first, __last); }
3049 + { _M_t._M_insert_equal(__first, __last); }
3052 * @brief Builds a %multimap from a range.
3053 Index: libstdc++-v3/include/debug/functions.h
3054 ===================================================================
3055 --- libstdc++-v3/include/debug/functions.h (.../tags/gcc_4_3_0_release) (revision 133190)
3056 +++ libstdc++-v3/include/debug/functions.h (.../branches/gcc-4_3-branch) (revision 133190)
3057 @@ -268,35 +268,31 @@
3058 return __check_sorted_aux(__first, __last, __pred, _Category());
3061 - template<typename _InputIterator1, typename _InputIterator2>
3062 + template<typename _InputIterator>
3064 - __check_sorted_set_aux(const _InputIterator1& __first,
3065 - const _InputIterator1& __last,
3066 - const _InputIterator2&, std::__true_type)
3067 + __check_sorted_set_aux(const _InputIterator& __first,
3068 + const _InputIterator& __last,
3070 { return __check_sorted(__first, __last); }
3072 - template<typename _InputIterator1, typename _InputIterator2>
3073 + template<typename _InputIterator>
3075 - __check_sorted_set_aux(const _InputIterator1&,
3076 - const _InputIterator1&,
3077 - const _InputIterator2&, std::__false_type)
3078 + __check_sorted_set_aux(const _InputIterator&,
3079 + const _InputIterator&,
3080 + std::__false_type)
3083 - template<typename _InputIterator1, typename _InputIterator2,
3084 - typename _Predicate>
3085 + template<typename _InputIterator, typename _Predicate>
3087 - __check_sorted_set_aux(const _InputIterator1& __first,
3088 - const _InputIterator1& __last,
3089 - const _InputIterator2&, _Predicate __pred,
3091 + __check_sorted_set_aux(const _InputIterator& __first,
3092 + const _InputIterator& __last,
3093 + _Predicate __pred, std::__true_type)
3094 { return __check_sorted(__first, __last, __pred); }
3096 - template<typename _InputIterator1, typename _InputIterator2,
3097 - typename _Predicate>
3098 + template<typename _InputIterator, typename _Predicate>
3100 - __check_sorted_set_aux(const _InputIterator1&,
3101 - const _InputIterator1&,
3102 - const _InputIterator2&, _Predicate,
3103 + __check_sorted_set_aux(const _InputIterator&,
3104 + const _InputIterator&, _Predicate,
3108 Index: libstdc++-v3/include/tr1/tuple
3109 ===================================================================
3110 --- libstdc++-v3/include/tr1/tuple (.../tags/gcc_4_3_0_release) (revision 133190)
3111 +++ libstdc++-v3/include/tr1/tuple (.../branches/gcc-4_3-branch) (revision 133190)
3114 typedef tuple<_TElements...> _Tp;
3115 typedef tuple<_UElements...> _Up;
3116 - return (__tuple_compare<tuple_size<_Tp>::value - tuple_size<_Tp>::value,
3117 + return (__tuple_compare<tuple_size<_Tp>::value - tuple_size<_Up>::value,
3118 0, tuple_size<_Tp>::value, _Tp, _Up>::__eq(__t, __u));
3123 typedef tuple<_TElements...> _Tp;
3124 typedef tuple<_UElements...> _Up;
3125 - return (__tuple_compare<tuple_size<_Tp>::value - tuple_size<_Tp>::value,
3126 + return (__tuple_compare<tuple_size<_Tp>::value - tuple_size<_Up>::value,
3127 0, tuple_size<_Tp>::value, _Tp, _Up>::__less(__t, __u));
3130 Index: libstdc++-v3/include/std/tuple
3131 ===================================================================
3132 --- libstdc++-v3/include/std/tuple (.../tags/gcc_4_3_0_release) (revision 133190)
3133 +++ libstdc++-v3/include/std/tuple (.../branches/gcc-4_3-branch) (revision 133190)
3136 typedef tuple<_TElements...> _Tp;
3137 typedef tuple<_UElements...> _Up;
3138 - return (__tuple_compare<tuple_size<_Tp>::value - tuple_size<_Tp>::value,
3139 + return (__tuple_compare<tuple_size<_Tp>::value - tuple_size<_Up>::value,
3140 0, tuple_size<_Tp>::value, _Tp, _Up>::__eq(__t, __u));
3145 typedef tuple<_TElements...> _Tp;
3146 typedef tuple<_UElements...> _Up;
3147 - return (__tuple_compare<tuple_size<_Tp>::value - tuple_size<_Tp>::value,
3148 + return (__tuple_compare<tuple_size<_Tp>::value - tuple_size<_Up>::value,
3149 0, tuple_size<_Tp>::value, _Tp, _Up>::__less(__t, __u));
3152 Index: libstdc++-v3/ChangeLog
3153 ===================================================================
3154 --- libstdc++-v3/ChangeLog (.../tags/gcc_4_3_0_release) (revision 133190)
3155 +++ libstdc++-v3/ChangeLog (.../branches/gcc-4_3-branch) (revision 133190)
3157 +2008-03-13 Dennis Czeremin <dennis.czeremin@smiths-heimann.com>
3159 + PR libstdc++/35566
3160 + * include/bits/stl_multimap.h (multimap<>::multimap(_InputIterator,
3161 + _InputIterator)): Forward to _M_insert_equal, not _M_insert_unique.
3163 +2008-03-13 Paolo Carlini <pcarlini@suse.de>
3165 + PR libstdc++/35541
3166 + * include/debug/functions.h (__check_sorted_set_aux): Fix signature.
3167 + * testsuite/25_algorithms/set_difference/35541.cc: New.
3169 +2008-03-06 Chris Jefferson <chris@bubblescope.net>
3170 + Paolo Carlini <pcarlini@suse.de>
3172 + PR libstdc++/35480
3173 + * include/tr1/tuple (operator==, operator<): Fix.
3174 + * include/std/tuple (operator==, operator<): Likewise.
3175 + * testsuite/tr1/6_containers/tuple/comparison_operators/35480.cc: New.
3176 + * testsuite/20_util/tuple/comparison_operators/35480.cc: Likewise.
3178 2008-03-05 Release Manager
3180 * GCC 4.3.0 released.
3181 Index: libstdc++-v3/testsuite/25_algorithms/set_difference/35541.cc
3182 ===================================================================
3183 --- libstdc++-v3/testsuite/25_algorithms/set_difference/35541.cc (.../tags/gcc_4_3_0_release) (revision 0)
3184 +++ libstdc++-v3/testsuite/25_algorithms/set_difference/35541.cc (.../branches/gcc-4_3-branch) (revision 133190)
3186 +// Copyright (C) 2008 Free Software Foundation, Inc.
3188 +// This file is part of the GNU ISO C++ Library. This library is free
3189 +// software; you can redistribute it and/or modify it under the
3190 +// terms of the GNU General Public License as published by the
3191 +// Free Software Foundation; either version 2, or (at your option)
3192 +// any later version.
3194 +// This library is distributed in the hope that it will be useful,
3195 +// but WITHOUT ANY WARRANTY; without even the implied warranty of
3196 +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3197 +// GNU General Public License for more details.
3199 +// You should have received a copy of the GNU General Public License along
3200 +// with this library; see the file COPYING. If not, write to the Free
3201 +// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
3204 +// { dg-options "-D_GLIBCXX_DEBUG" }
3205 +// { dg-do compile }
3210 +#include <iterator>
3211 +#include <algorithm>
3215 + std::set<std::pair<unsigned,int> > mFactors;
3216 + std::set<std::pair<unsigned,int> > secondFactor;
3217 + std::set_difference(mFactors.begin(), mFactors.end(),
3218 + mFactors.begin(), mFactors.end(),
3219 + std::insert_iterator<std::set<std::pair<unsigned,int> > >
3220 + (secondFactor, secondFactor.end()));
3222 Index: libstdc++-v3/testsuite/tr1/6_containers/tuple/comparison_operators/35480.cc
3223 ===================================================================
3224 --- libstdc++-v3/testsuite/tr1/6_containers/tuple/comparison_operators/35480.cc (.../tags/gcc_4_3_0_release) (revision 0)
3225 +++ libstdc++-v3/testsuite/tr1/6_containers/tuple/comparison_operators/35480.cc (.../branches/gcc-4_3-branch) (revision 133190)
3227 +// { dg-do compile }
3229 +// Copyright (C) 2008 Free Software Foundation, Inc.
3231 +// This file is part of the GNU ISO C++ Library. This library is free
3232 +// software; you can redistribute it and/or modify it under the
3233 +// terms of the GNU General Public License as published by the
3234 +// Free Software Foundation; either version 2, or (at your option)
3235 +// any later version.
3237 +// This library is distributed in the hope that it will be useful,
3238 +// but WITHOUT ANY WARRANTY; without even the implied warranty of
3239 +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3240 +// GNU General Public License for more details.
3242 +// You should have received a copy of the GNU General Public License along
3243 +// with this library; see the file COPYING. If not, write to the Free
3244 +// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
3249 +#include <tr1/tuple>
3254 + std::tr1::tuple<int> t1( 1 );
3255 + std::tr1::tuple<int, int> t2( 1, 2 );
3256 + if ( t1 < t2 ) {} // { dg-error "here" }
3257 + if ( t1 == t2 ) {} // { dg-error "here" }
3259 +// { dg-excess-errors "incomplete type" }
3260 Index: libstdc++-v3/testsuite/20_util/tuple/comparison_operators/35480.cc
3261 ===================================================================
3262 --- libstdc++-v3/testsuite/20_util/tuple/comparison_operators/35480.cc (.../tags/gcc_4_3_0_release) (revision 0)
3263 +++ libstdc++-v3/testsuite/20_util/tuple/comparison_operators/35480.cc (.../branches/gcc-4_3-branch) (revision 133190)
3265 +// { dg-options "-std=gnu++0x" }
3266 +// { dg-do compile }
3268 +// Copyright (C) 2008 Free Software Foundation, Inc.
3270 +// This file is part of the GNU ISO C++ Library. This library is free
3271 +// software; you can redistribute it and/or modify it under the
3272 +// terms of the GNU General Public License as published by the
3273 +// Free Software Foundation; either version 2, or (at your option)
3274 +// any later version.
3276 +// This library is distributed in the hope that it will be useful,
3277 +// but WITHOUT ANY WARRANTY; without even the implied warranty of
3278 +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3279 +// GNU General Public License for more details.
3281 +// You should have received a copy of the GNU General Public License along
3282 +// with this library; see the file COPYING. If not, write to the Free
3283 +// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
3293 + std::tuple<int> t1( 1 );
3294 + std::tuple<int, int> t2( 1, 2 );
3295 + if ( t1 < t2 ) {} // { dg-error "here" }
3296 + if ( t1 == t2 ) {} // { dg-error "here" }
3298 +// { dg-excess-errors "incomplete type" }
3299 Index: libjava/ChangeLog
3300 ===================================================================
3301 --- libjava/ChangeLog (.../tags/gcc_4_3_0_release) (revision 133190)
3302 +++ libjava/ChangeLog (.../branches/gcc-4_3-branch) (revision 133190)
3304 +2008-03-13 Andrew Haley <aph@redhat.com>
3306 + * link.cc (_Jv_Linker::resolve_method_entry): Remove broken class
3309 2008-03-05 Release Manager
3311 * GCC 4.3.0 released.
3312 Index: libjava/link.cc
3313 ===================================================================
3314 --- libjava/link.cc (.../tags/gcc_4_3_0_release) (revision 133190)
3315 +++ libjava/link.cc (.../branches/gcc-4_3-branch) (revision 133190)
3316 @@ -359,40 +359,6 @@
3317 throw new java::lang::NoSuchMethodError (sb->toString());
3320 - // if (found_class->loader != klass->loader), then we
3321 - // must actually check that the types of arguments
3322 - // correspond. That is, for each argument type, and
3323 - // the return type, doing _Jv_FindClassFromSignature
3324 - // with either loader should produce the same result,
3325 - // i.e., exactly the same jclass object. JVMS 5.4.3.3
3326 - if (found_class->loader != klass->loader)
3328 - JArray<jclass> *found_args, *klass_args;
3329 - jclass found_return, klass_return;
3331 - _Jv_GetTypesFromSignature (the_method,
3335 - _Jv_GetTypesFromSignature (the_method,
3340 - jclass *found_arg = elements (found_args);
3341 - jclass *klass_arg = elements (klass_args);
3343 - for (int i = 0; i < found_args->length; i++)
3345 - if (*(found_arg++) != *(klass_arg++))
3346 - throw new java::lang::LinkageError (JvNewStringLatin1
3347 - ("argument type mismatch with different loaders"));
3349 - if (found_return != klass_return)
3350 - throw new java::lang::LinkageError (JvNewStringLatin1
3351 - ("return type mismatch with different loaders"));
3357 Index: fixincludes/ChangeLog
3358 ===================================================================
3359 --- fixincludes/ChangeLog (.../tags/gcc_4_3_0_release) (revision 133190)
3360 +++ fixincludes/ChangeLog (.../branches/gcc-4_3-branch) (revision 133190)
3362 +2008-03-06 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
3364 + * inclhack.def (solaris_math_10): New.
3365 + * tests/base/iso/math_c99.h: Update.
3367 + * fixincl.x: Regenerate.
3369 2008-03-05 Release Manager
3371 * GCC 4.3.0 released.
3372 Index: fixincludes/fixincl.x
3373 ===================================================================
3374 --- fixincludes/fixincl.x (.../tags/gcc_4_3_0_release) (revision 133190)
3375 +++ fixincludes/fixincl.x (.../branches/gcc-4_3-branch) (revision 133190)
3378 * DO NOT EDIT THIS FILE (fixincl.x)
3380 - * It has been AutoGen-ed Monday February 4, 2008 at 09:22:58 PM GMTST
3381 + * It has been AutoGen-ed Wednesday February 20, 2008 at 05:10:00 AM CET
3382 * From the definitions inclhack.def
3383 * and the template file fixincl
3385 -/* DO NOT SVN-MERGE THIS FILE, EITHER Mon Feb 4 21:22:58 GMTST 2008
3386 +/* DO NOT SVN-MERGE THIS FILE, EITHER Wed Feb 20 05:10:00 CET 2008
3388 * You must regenerate it. Use the ./genfixes script.
3391 * certain ANSI-incompatible system header files which are fixed to work
3392 * correctly with ANSI C and placed in a directory that GNU C will search.
3394 - * This file contains 211 fixup descriptions.
3395 + * This file contains 212 fixup descriptions.
3397 * See README for more information.
3399 * inclhack copyright (c) 1998, 1999, 2000, 2001
3400 * The Free Software Foundation, Inc.
3402 - * inclhack is free software: you can redistribute it and/or modify it
3403 - * under the terms of the GNU General Public License as published by the
3404 - * Free Software Foundation, either version 3 of the License, or
3405 - * (at your option) any later version.
3406 + * inclhack is free software.
3408 - * inclhack is distributed in the hope that it will be useful, but
3409 - * WITHOUT ANY WARRANTY; without even the implied warranty of
3410 + * You may redistribute it and/or modify it under the terms of the
3411 + * GNU General Public License, as published by the Free Software
3412 + * Foundation; either version 2 of the License, or (at your option)
3413 + * any later version.
3415 + * inclhack is distributed in the hope that it will be useful,
3416 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
3417 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
3418 * See the GNU General Public License for more details.
3420 - * You should have received a copy of the GNU General Public License along
3421 - * with this program. If not, see <http://www.gnu.org/licenses/>.
3422 + * You should have received a copy of the GNU General Public License
3423 + * along with inclhack. If not, write to:
3424 + * The Free Software Foundation, Inc.,
3425 + * 51 Franklin Street, Fifth Floor
3426 + * Boston, MA 02110-1301, USA.
3429 /* * * * * * * * * * * * * * * * * * * * * * * * * *
3430 @@ -5886,6 +5891,45 @@
3432 /* * * * * * * * * * * * * * * * * * * * * * * * * *
3434 + * Description of Solaris_Math_10 fix
3436 +tSCC zSolaris_Math_10Name[] =
3437 + "solaris_math_10";
3440 + * File name selection pattern
3442 +tSCC zSolaris_Math_10List[] =
3443 + "iso/math_c99.h\0";
3445 + * Machine/OS name selection pattern
3447 +#define apzSolaris_Math_10Machs (const char**)NULL
3450 + * content selection pattern - do fix if pattern found
3452 +tSCC zSolaris_Math_10Select0[] =
3453 + "@\\(#\\)math_c99.h[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
3455 +#define SOLARIS_MATH_10_TEST_CT 1
3456 +static tTestDesc aSolaris_Math_10Tests[] = {
3457 + { TT_EGREP, zSolaris_Math_10Select0, (regex_t*)NULL }, };
3460 + * Fix Command Arguments for Solaris_Math_10
3462 +static const char* apzSolaris_Math_10Patch[] = {
3464 + "#define\tisinf(x) __builtin_isinf(x)",
3465 + "^#define[ \t]+isinf\\(x\\)[ \t]+__extension__\\([ \t]*\\\\\n\
3466 +[ \t]*\\{[ \t]*__typeof\\(x\\)[ \t]*__x_i[ \t]*=[ \t]*\\(x\\);[ \t]*\\\\\n\
3467 +[ \t]*__x_i[ \t]*==[ \t]*\\(__typeof\\(__x_i\\)\\)[ \t]*INFINITY[ \t]*\\|\\|[ \t]*\\\\\n\
3468 +[ \t]*__x_i[ \t]*==[ \t]*\\(__typeof\\(__x_i\\)\\)[ \t]*\\(-INFINITY\\);[ \t]*\\}\\)",
3471 +/* * * * * * * * * * * * * * * * * * * * * * * * * *
3473 * Description of Solaris_Mutex_Init_1 fix
3475 tSCC zSolaris_Mutex_Init_1Name[] =
3476 @@ -8567,9 +8611,9 @@
3480 -#define REGEX_COUNT 254
3481 +#define REGEX_COUNT 255
3482 #define MACH_LIST_SIZE_LIMIT 261
3483 -#define FIX_COUNT 211
3484 +#define FIX_COUNT 212
3487 * Enumerate the fixes
3488 @@ -8718,6 +8762,7 @@
3489 SOLARIS_MATH_4_FIXIDX,
3490 SOLARIS_MATH_8_FIXIDX,
3491 SOLARIS_MATH_9_FIXIDX,
3492 + SOLARIS_MATH_10_FIXIDX,
3493 SOLARIS_MUTEX_INIT_1_FIXIDX,
3494 SOLARIS_MUTEX_INIT_2_FIXIDX,
3495 SOLARIS_RWLOCK_INIT_1_FIXIDX,
3496 @@ -9504,6 +9549,11 @@
3497 SOLARIS_MATH_9_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
3498 aSolaris_Math_9Tests, apzSolaris_Math_9Patch, 0 },
3500 + { zSolaris_Math_10Name, zSolaris_Math_10List,
3501 + apzSolaris_Math_10Machs,
3502 + SOLARIS_MATH_10_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
3503 + aSolaris_Math_10Tests, apzSolaris_Math_10Patch, 0 },
3505 { zSolaris_Mutex_Init_1Name, zSolaris_Mutex_Init_1List,
3506 apzSolaris_Mutex_Init_1Machs,
3507 SOLARIS_MUTEX_INIT_1_TEST_CT, FD_MACH_ONLY,
3508 Index: fixincludes/tests/base/iso/math_c99.h
3509 ===================================================================
3510 --- fixincludes/tests/base/iso/math_c99.h (.../tags/gcc_4_3_0_release) (revision 133190)
3511 +++ fixincludes/tests/base/iso/math_c99.h (.../branches/gcc-4_3-branch) (revision 133190)
3514 #define isunordered(x, y) __builtin_isunordered(x, y)
3515 #endif /* SOLARIS_MATH_9_CHECK */
3518 +#if defined( SOLARIS_MATH_10_CHECK )
3519 +#pragma ident "@(#)math_c99.h 1.12 07/01/21 SMI"
3521 +#define isinf(x) __builtin_isinf(x)
3522 +#endif /* SOLARIS_MATH_10_CHECK */
3523 Index: fixincludes/inclhack.def
3524 ===================================================================
3525 --- fixincludes/inclhack.def (.../tags/gcc_4_3_0_release) (revision 133190)
3526 +++ fixincludes/inclhack.def (.../branches/gcc-4_3-branch) (revision 133190)
3527 @@ -3223,6 +3223,30 @@
3531 + * On Solaris 11, if you do isinf(NaN) you'll get a floating point
3532 + * exception. Provide an alternative using GCC's builtin.
3536 + hackname = solaris_math_10;
3537 + select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
3538 + files = iso/math_c99.h;
3540 + c_fix_arg = "#define\tisinf(x) __builtin_isinf(x)";
3541 + c_fix_arg = "^#define[ \t]+isinf\\(x\\)[ \t]+__extension__\\([ \t]*\\\\\n"
3542 + "[ \t]*\\{[ \t]*__typeof\\(x\\)[ \t]*__x_i[ \t]*=[ \t]*\\(x\\);[ \t]*\\\\\n"
3543 + "[ \t]*__x_i[ \t]*==[ \t]*\\(__typeof\\(__x_i\\)\\)[ \t]*INFINITY[ \t]*\\|\\|[ \t]*\\\\\n"
3544 + "[ \t]*__x_i[ \t]*==[ \t]*\\(__typeof\\(__x_i\\)\\)[ \t]*\\(-INFINITY\\);[ \t]*\\}\\)";
3546 + '#pragma ident "@(#)math_c99.h 1.12 07/01/21 SMI"'"\n"
3548 + "#define isinf(x) __extension__( \\\\\n"
3549 + " { __typeof(x) __x_i = (x); \\\\\n"
3550 + " __x_i == (__typeof(__x_i)) INFINITY || \\\\\n"
3551 + " __x_i == (__typeof(__x_i)) (-INFINITY); })";
3555 * Sun Solaris 2.5.1, 2.6 defines PTHREAD_{MUTEX|COND}_INITIALIZER
3556 * incorrectly, so we replace them with versions that correspond to
3557 * the definition. We also explicitly name this fix "1" and the next