]> git.pld-linux.org Git - packages/gcc.git/blob - gcc-branch.diff
- restore version overwriting (accidentally removed).
[packages/gcc.git] / gcc-branch.diff
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)
5 @@ -1,3 +1,17 @@
6 +2008-03-13  Jakub Jelinek  <jakub@redhat.com>
7 +
8 +       PR middle-end/35185
9 +       * testsuite/libgomp.c++/pr35185.C: New test.
10 +
11 +2008-03-12  Jakub Jelinek  <jakub@redhat.com>
12 +
13 +       PR middle-end/35549
14 +       * testsuite/libgomp.c/pr35549.c: New test.
15 +
16 +2008-03-06  Jakub Jelinek  <jakub@redhat.com>
17 +
18 +       * testsuite/libgomp.c/atomic-3.c: New test.
19 +
20  2008-03-05  Release Manager
21  
22         * GCC 4.3.0 released.
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)
27 @@ -0,0 +1,33 @@
28 +// PR middle-end/35185
29 +// { dg-do run }
30 +
31 +extern "C" void abort ();
32 +
33 +struct S
34 +{
35 +  S () : s (6) {}
36 +  ~S () {}
37 +  int s;
38 +};
39 +
40 +__attribute__((noinline))
41 +bool
42 +bar (S s)
43 +{
44 +  return s.s != 6;
45 +}
46 +
47 +int
48 +main ()
49 +{
50 +  S s;
51 +  int err = 0;
52 +#pragma omp parallel shared (s)
53 +  {
54 +    if (bar (s))
55 +      #pragma omp atomic
56 +       err++;
57 +  }
58 +  if (err)
59 +    abort ();
60 +}
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)
65 @@ -0,0 +1,30 @@
66 +/* PR middle-end/35549 */
67 +/* { dg-do run } */
68 +
69 +#include <omp.h>
70 +#include <stdlib.h>
71 +
72 +int
73 +main (void)
74 +{
75 +  int i = 6, n = 0;
76 +  omp_set_dynamic (0);
77 +  omp_set_nested (1);
78 +  #pragma omp parallel shared (i) num_threads (3)
79 +  {
80 +    if (omp_get_num_threads () != 3)
81 +      #pragma omp atomic
82 +       n += 1;
83 +    #pragma omp parallel shared (i) num_threads (4)
84 +    {
85 +      if (omp_get_num_threads () != 4)
86 +       #pragma omp atomic
87 +         n += 1;
88 +      #pragma omp critical
89 +       i += 1;
90 +    }
91 +  }
92 +  if (n == 0 && i != 6 + 3 * 4)
93 +    abort ();
94 +  return 0;
95 +}
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)
100 @@ -0,0 +1,50 @@
101 +/* { dg-do run } */
102 +/* { dg-options "-fopenmp -O0" } */
103 +
104 +#include <omp.h>
105 +#include <stdlib.h>
106 +
107 +short e[64];
108 +int g;
109 +_Complex double d, f;
110 +int num_threads;
111 +
112 +__attribute__((noinline)) void
113 +foo (int x, long long y)
114 +{
115 +#pragma omp parallel num_threads (4)
116 +  {
117 +    int i;
118 +    #pragma omp barrier
119 +    for (i = 0; i < 2400; i++)
120 +      {
121 +       if (i == 0)
122 +         num_threads = omp_get_num_threads ();
123 +       #pragma omp atomic
124 +         e[0] += x;
125 +       #pragma omp atomic
126 +         e[16] += x;
127 +       #pragma omp atomic
128 +         g += y;
129 +       #pragma omp atomic
130 +         __real__ d += x;
131 +       #pragma omp atomic
132 +         __imag__ f += x;
133 +      }
134 +  }
135 +}
136 +
137 +int
138 +main (void)
139 +{
140 +  int i;
141 +  foo (3, 3LL);
142 +  if (g != 3 * 2400 * num_threads
143 +      || __real__ d != g || __imag__ d != 0
144 +      || __real__ f != 0 || __imag__ f != g)
145 +    abort ();
146 +  for (i = 0; i < 64; i++)
147 +    if (e[i] != ((i && i != 16) ? 0 : g))
148 +      abort ();
149 +  return 0;
150 +}
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)
155 @@ -3,7 +3,7 @@
156  % Load plain if necessary, i.e., if running under initex.
157  \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
158  %
159 -\def\texinfoversion{2008-02-04.16}
160 +\def\texinfoversion{2008-03-07.10}
161  %
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 @@
165    \temp
166  }
167  
168 -% @include file    insert text of that file as input.
169 +% @include FILE -- \input text of FILE.
170  %
171  \def\include{\parseargusing\filenamecatcodes\includezzz}
172  \def\includezzz#1{%
173    \pushthisfilestack
174    \def\thisfile{#1}%
175    {%
176 -    \makevalueexpandable
177 -    \input #1
178 -  }%
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 }%
182 +    %
183 +    % This trickery is to read FILE outside of a group, in case it makes
184 +    % definitions, etc.
185 +    \expandafter
186 +  }\temp
187    \popthisfilestack
188  }
189  \def\filenamecatcodes{%
190 @@ -5725,7 +5730,7 @@
191    \let\/=\ptexslash
192    \let\*=\ptexstar
193    \let\t=\ptext
194 -  \expandafter \let\csname top \endcsname=\ptextop  % outer
195 +  \expandafter \let\csname top\endcsname=\ptextop  % outer
196    \let\frenchspacing=\plainfrenchspacing
197    %
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
205        {
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)
216 @@ -1,3 +1,8 @@
217 +2008-03-06  Andrew Haley  <aph@redhat.com>
218 +
219 +       * jcf-parse.c (give_name_to_class): Call find_sourcefile to find
220 +       full pathname of source file.
221 +
222  2008-03-05  Release Manager
223  
224         * GCC 4.3.0 released.
225 Index: gcc/DATESTAMP
226 ===================================================================
227 --- gcc/DATESTAMP       (.../tags/gcc_4_3_0_release)    (revision 133190)
228 +++ gcc/DATESTAMP       (.../branches/gcc-4_3-branch)   (revision 133190)
229 @@ -1 +1 @@
230 -20080305
231 +20080313
232 Index: gcc/tree.c
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 @@
237        return NULL_TREE;
238      }
239  
240 +  if (TREE_CODE (node) == TYPE_DECL
241 +      && TREE_CODE (TREE_TYPE (node)) != RECORD_TYPE
242 +      && TREE_CODE (TREE_TYPE (node)) != UNION_TYPE)
243 +    {
244 +      *no_add_attrs = true;
245 +      warning (OPT_Wattributes, "%qs attribute ignored",
246 +              IDENTIFIER_POINTER (name));
247 +      return NULL_TREE;
248 +    }
249 +
250    /* Report error on dllimport ambiguities seen now before they cause
251       any damage.  */
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 @@
258  
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.  */
274  
275 -  if (integer_zerop (arg01) && integer_zerop (arg2))
276 +  if (!HONOR_SIGNED_ZEROS (TYPE_MODE (type))
277 +      && integer_zerop (arg01) && integer_zerop (arg2))
278      {
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.  */
290        && (in_gimple_form
291 Index: gcc/omp-low.c
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)
295 @@ -456,7 +456,7 @@
296  }
297  
298  static inline tree
299 -maybe_lookup_decl (tree var, omp_context *ctx)
300 +maybe_lookup_decl (const_tree var, omp_context *ctx)
301  {
302    tree *n;
303    n = (tree *) pointer_map_contains (ctx->cb.decl_map, var);
304 @@ -479,18 +479,18 @@
305    return n ? (tree) n->value : NULL_TREE;
306  }
307  
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.  */
312  
313  static bool
314 -use_pointer_for_field (const_tree decl, bool shared_p)
315 +use_pointer_for_field (const_tree decl, omp_context *shared_ctx)
316  {
317    if (AGGREGATE_TYPE_P (TREE_TYPE (decl)))
318      return true;
319  
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.  */
322 -  if (shared_p)
323 +  if (shared_ctx)
324      {
325        /* ??? Trivially accessible from anywhere.  But why would we even
326          be passing an address in this case?  Should we simply assert
327 @@ -510,6 +510,34 @@
328          address taken.  */
329        if (TREE_ADDRESSABLE (decl))
330         return true;
331 +
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)
338 +       {
339 +         omp_context *up;
340 +
341 +         for (up = shared_ctx->outer; up; up = up->outer)
342 +           if (maybe_lookup_decl (decl, up))
343 +             break;
344 +
345 +         if (up && is_parallel_ctx (up))
346 +           {
347 +             tree c;
348 +
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)
353 +                 break;
354 +
355 +             if (c)
356 +               return true;
357 +           }
358 +       }
359      }
360  
361    return false;
362 @@ -596,7 +624,7 @@
363      }
364    else if (is_parallel_ctx (ctx))
365      {
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);
369      }
370    else if (ctx->outer)
371 @@ -966,7 +994,7 @@
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,
382                                                                        ctx)))
383             {
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);
387             }
388           install_var_local (decl, ctx);
389 @@ -1014,7 +1042,7 @@
390  
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);
396           break;
397  
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 @@
408               break;
409  
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, &copyin_seq);
416 @@ -2007,7 +2035,7 @@
417         continue;
418  
419        var = OMP_CLAUSE_DECL (c);
420 -      by_ref = use_pointer_for_field (var, false);
421 +      by_ref = use_pointer_for_field (var, NULL);
422  
423        ref = build_sender_ref (var, ctx);
424        x = lookup_decl_in_outer_ctx (var, ctx);
425 @@ -2059,7 +2087,7 @@
426         continue;
427        if (is_variable_sized (val))
428         continue;
429 -      by_ref = use_pointer_for_field (val, false);
430 +      by_ref = use_pointer_for_field (val, NULL);
431  
432        switch (OMP_CLAUSE_CODE (c))
433         {
434 @@ -2129,7 +2157,7 @@
435          mapping for OVAR.  */
436        var = lookup_decl_in_outer_ctx (ovar, ctx);
437  
438 -      if (use_pointer_for_field (ovar, true))
439 +      if (use_pointer_for_field (ovar, ctx))
440         {
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);
445  }
446  
447 +/* Callback for lower_omp_1.  Return non-NULL if *tp needs to be
448 +   regimplified.  */
449  
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.  */
453 -
454 -static void
455 -lower_regimplify (tree *tp, struct walk_stmt_info *wi)
456 +static tree
457 +lower_omp_2 (tree *tp, int *walk_subtrees, void *data ATTRIBUTE_UNUSED)
458  {
459 -  enum gimplify_status gs;
460 -  tree pre = NULL;
461 +  tree t = *tp;
462  
463 -  if (wi->is_lhs)
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);
467 -  else
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))
472 +    return t;
473  
474 -  if (pre)
475 -    tsi_link_before (&wi->tsi, pre, TSI_SAME_STMT);
476 -}
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);
481  
482 -/* Copy EXP into a temporary.  Insert the initialization statement before TSI.  */
483 -
484 -static tree
485 -init_tmp_var (tree exp, tree_stmt_iterator *tsi)
486 -{
487 -  tree t, stmt;
488 -
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);
494 -
495 -  return t;
496 +  *walk_subtrees = !TYPE_P (t) && !DECL_P (t);
497 +  return NULL_TREE;
498  }
499  
500 -/* Similarly, but copy from the temporary and insert the statement
501 -   after the iterator.  */
502 -
503 -static tree
504 -save_tmp_var (tree exp, tree_stmt_iterator *tsi)
505 +static void
506 +lower_omp_1 (tree *tp, omp_context *ctx, tree_stmt_iterator *tsi)
507  {
508 -  tree t, stmt;
509 +  tree t = *tp;
510  
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);
516 +  if (!t)
517 +    return;
518  
519 -  return t;
520 -}
521 +  if (EXPR_HAS_LOCATION (t))
522 +    input_location = EXPR_LOCATION (t);
523  
524 -/* Callback for walk_stmts.  Lower the OpenMP directive pointed by TP.  */
525 -
526 -static tree
527 -lower_omp_1 (tree *tp, int *walk_subtrees, void *data)
528 -{
529 -  struct walk_stmt_info *wi = data;
530 -  omp_context *ctx = wi->info;
531 -  tree t = *tp;
532 -
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))
538      {
539        *tp = build_empty_stmt ();
540 -      return NULL_TREE;
541 +      return;
542      }
543  
544 -  *walk_subtrees = 0;
545 -  switch (TREE_CODE (*tp))
546 +  switch (TREE_CODE (t))
547      {
548 +    case STATEMENT_LIST:
549 +      {
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);
553 +      }
554 +      break;
555 +
556 +    case COND_EXPR:
557 +      lower_omp_1 (&COND_EXPR_THEN (t), ctx, NULL);
558 +      lower_omp_1 (&COND_EXPR_ELSE (t), ctx, NULL);
559 +      if (ctx
560 +         && walk_tree (&COND_EXPR_COND (t), lower_omp_2, ctx, NULL))
561 +       {
562 +         tree pre = NULL;
563 +         gimplify_expr (&COND_EXPR_COND (t), &pre, NULL,
564 +                        is_gimple_condexpr, fb_rvalue);
565 +         if (pre)
566 +           {
567 +             if (tsi)
568 +               tsi_link_before (tsi, pre, TSI_SAME_STMT);
569 +             else
570 +               {
571 +                 append_to_statement_list (t, &pre);
572 +                 *tp = pre;
573 +               }
574 +           }
575 +       }
576 +      break;
577 +    case CATCH_EXPR:
578 +      lower_omp_1 (&CATCH_BODY (t), ctx, NULL);
579 +      break;
580 +    case EH_FILTER_EXPR:
581 +      lower_omp_1 (&EH_FILTER_FAILURE (t), ctx, NULL);
582 +      break;
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);
587 +      break;
588 +    case BIND_EXPR:
589 +      lower_omp_1 (&BIND_EXPR_BODY (t), ctx, NULL);
590 +      break;
591 +    case RETURN_EXPR:
592 +      lower_omp_1 (&TREE_OPERAND (t, 0), ctx, NULL);
593 +      break;
594 +
595      case OMP_PARALLEL:
596        ctx = maybe_lookup_ctx (t);
597        lower_omp_parallel (tp, ctx);
598        break;
599 -
600      case OMP_FOR:
601        ctx = maybe_lookup_ctx (t);
602        gcc_assert (ctx);
603        lower_omp_for (tp, ctx);
604        break;
605 -
606      case OMP_SECTIONS:
607        ctx = maybe_lookup_ctx (t);
608        gcc_assert (ctx);
609        lower_omp_sections (tp, ctx);
610        break;
611 -
612      case OMP_SINGLE:
613        ctx = maybe_lookup_ctx (t);
614        gcc_assert (ctx);
615        lower_omp_single (tp, ctx);
616        break;
617 -
618      case OMP_MASTER:
619        ctx = maybe_lookup_ctx (t);
620        gcc_assert (ctx);
621        lower_omp_master (tp, ctx);
622        break;
623 -
624      case OMP_ORDERED:
625        ctx = maybe_lookup_ctx (t);
626        gcc_assert (ctx);
627        lower_omp_ordered (tp, ctx);
628        break;
629 -
630      case OMP_CRITICAL:
631        ctx = maybe_lookup_ctx (t);
632        gcc_assert (ctx);
633        lower_omp_critical (tp, ctx);
634        break;
635  
636 -    case VAR_DECL:
637 -      if (ctx && DECL_HAS_VALUE_EXPR_P (t))
638 +    default:
639 +      if (ctx && walk_tree (tp, lower_omp_2, ctx, NULL))
640         {
641 -         lower_regimplify (&t, wi);
642 -         if (wi->val_only)
643 +         /* The gimplifier doesn't gimplify CALL_EXPR_STATIC_CHAIN.
644 +            Handle that here.  */
645 +         tree call = get_call_expr_in (t);
646 +         if (call
647 +             && CALL_EXPR_STATIC_CHAIN (call)
648 +             && walk_tree (&CALL_EXPR_STATIC_CHAIN (call), lower_omp_2,
649 +                           ctx, NULL))
650             {
651 -             if (wi->is_lhs)
652 -               t = save_tmp_var (t, &wi->tsi);
653 -             else
654 -               t = init_tmp_var (t, &wi->tsi);
655 +             tree pre = NULL;
656 +             gimplify_expr (&CALL_EXPR_STATIC_CHAIN (call), &pre, NULL,
657 +                            is_gimple_val, fb_rvalue);
658 +             if (pre)
659 +               {
660 +                 if (tsi)
661 +                   tsi_link_before (tsi, pre, TSI_SAME_STMT);
662 +                 else
663 +                   {
664 +                     append_to_statement_list (t, &pre);
665 +                     lower_omp_1 (&pre, ctx, NULL);
666 +                     *tp = pre;
667 +                     return;
668 +                   }
669 +               }
670             }
671 -         *tp = t;
672 -       }
673 -      break;
674  
675 -    case ADDR_EXPR:
676 -      if (ctx)
677 -       lower_regimplify (tp, wi);
678 -      break;
679 -
680 -    case ARRAY_REF:
681 -    case ARRAY_RANGE_REF:
682 -    case REALPART_EXPR:
683 -    case IMAGPART_EXPR:
684 -    case COMPONENT_REF:
685 -    case VIEW_CONVERT_EXPR:
686 -      if (ctx)
687 -       lower_regimplify (tp, wi);
688 -      break;
689 -
690 -    case INDIRECT_REF:
691 -      if (ctx)
692 -       {
693 -         wi->is_lhs = false;
694 -         wi->val_only = true;
695 -         lower_regimplify (&TREE_OPERAND (t, 0), wi);
696 +         if (tsi == NULL)
697 +           gimplify_stmt (tp);
698 +         else
699 +           {
700 +             tree pre = NULL;
701 +             gimplify_expr (tp, &pre, NULL, is_gimple_stmt, fb_none);
702 +             if (pre)
703 +               tsi_link_before (tsi, pre, TSI_SAME_STMT);
704 +           }
705         }
706        break;
707 -
708 -    default:
709 -      if (!TYPE_P (t) && !DECL_P (t))
710 -       *walk_subtrees = 1;
711 -      break;
712      }
713 -
714 -  return NULL_TREE;
715  }
716  
717  static void
718  lower_omp (tree *stmt_p, omp_context *ctx)
719  {
720 -  struct walk_stmt_info wi;
721 -
722 -  memset (&wi, 0, sizeof (wi));
723 -  wi.callback = lower_omp_1;
724 -  wi.info = ctx;
725 -  wi.val_only = true;
726 -  wi.want_locations = true;
727 -
728 -  walk_stmts (&wi, stmt_p);
729 +  lower_omp_1 (stmt_p, ctx, NULL);
730  }
731  \f
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 @@
738           vuse_vec_p vv;
739           tree stmt_lhs;
740  
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; ...
744 +            b = a; b = b;
745 +            or
746 +            b = a; b = *p; where p might be &b,
747 +            or
748 +            *p = a; *p = b; where p might be &b,
749 +            or
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
752 +            is not dead.  */
753 +         if (LOADED_SYMS (use_stmt)
754 +             && bitmap_intersect_p (LOADED_SYMS (use_stmt),
755 +                                    STORED_SYMS (use_stmt)))
756             {
757 -             tree use_base
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; ...
761 -                b = a; b = b;
762 -                or
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
765 -                is not dead.  */
766 -             if (TREE_CODE (use_base) == VAR_DECL
767 -                 && bitmap_bit_p (LOADED_SYMS (use_stmt),
768 -                                  DECL_UID (use_base)))
769 -               {
770 -                 record_voperand_set (dse_gd->stores, &bd->stores, ann->uid);
771 -                 return;
772 -               }
773 +             record_voperand_set (dse_gd->stores, &bd->stores, ann->uid);
774 +             return;
775             }
776  
777           if (dump_file && (dump_flags & TDF_DETAILS))
778 Index: gcc/DEV-PHASE
779 ===================================================================
780 --- gcc/DEV-PHASE       (.../tags/gcc_4_3_0_release)    (revision 133190)
781 +++ gcc/DEV-PHASE       (.../branches/gcc-4_3-branch)   (revision 133190)
782 @@ -0,0 +1 @@
783 +prerelease
784 Index: gcc/ChangeLog
785 ===================================================================
786 --- gcc/ChangeLog       (.../tags/gcc_4_3_0_release)    (revision 133190)
787 +++ gcc/ChangeLog       (.../branches/gcc-4_3-branch)   (revision 133190)
788 @@ -1,3 +1,158 @@
789 +2008-03-13  Jakub Jelinek  <jakub@redhat.com>
790 +
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.
795 +
796 +2008-03-12  Jakub Jelinek  <jakub@redhat.com>
797 +
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.
806 +
807 +2008-03-12  Uros Bizjak  <ubizjak@gmail.com>
808 +
809 +       PR target/35540
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
814 +       memory operands.
815 +       (paritydi2_cmp): Use register_operand constraint for operand 3.
816 +       Use earlyclobber modifier for operand 1.  Remove support for
817 +       memory operands.
818 +
819 +2008-03-11  Uros Bizjak  <ubizjak@gmail.com>
820 +
821 +       PR middle-end/35526
822 +       * expr.c (store_expr): Call emit_block_move if the mode
823 +       of "temp" RTX is BLKmode.
824 +
825 +2008-03-10  Vladimir Makarov  <vmakarov@redhat.com>
826 +
827 +       * config/i386/sse.md (ssse3_pmaddubswv8hi3, ssse3_pmaddubswv4hi3):
828 +       Remove commutativity hint.
829 +
830 +2008-03-10  Jakub Jelinek  <jakub@redhat.com>
831 +
832 +       PR c/35438
833 +       PR c/35439
834 +       * c-parser.c (c_parser_omp_threadprivate): Don't add vars with
835 +       errorneous type.  Check that v is a VAR_DECL.
836 +
837 +       PR middle-end/35099
838 +       * tree-cfg.c (new_label_mapper): Update cfun->last_label_uid.
839 +
840 +2008-03-10  Uros Bizjak  <ubizjak@gmail.com>
841 +
842 +       Backport from mainline:
843 +       2008-03-09  Uros Bizjak  <ubizjak@gmail.com>
844 +
845 +       PR target/35496
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.
848 +
849 +       2008-03-04  Uros Bizjak  <ubizjak@gmail.com>
850 +
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.
855 +
856 +2008-03-09  Kaz Kojima  <kkojima@gcc.gnu.org>
857 +
858 +       Backport from mainline:
859 +       PR target/35225
860 +       * config/sh/sh.c (find_barrier): Don't go past 'from' argument.
861 +
862 +2008-03-09  Kaz Kojima  <kkojima@gcc.gnu.org>
863 +
864 +       Backport from mainline:
865 +       PR target/35190
866 +       * config/sh/sh.md (jump_compact): Disable for crossing jumps.
867 +
868 +       * config/sh/sh.c (find_barrier): Don't go past
869 +       NOTE_INSN_SWITCH_TEXT_SECTIONS note.
870 +
871 +2008-03-08  Jakub Jelinek  <jakub@redhat.com>
872 +
873 +       PR target/35498
874 +       * config/rs6000/rs6000.c (rs6000_expand_compare_and_swapqhi): Shift
875 +       wdst back after sync_compare_and_swapqhi_internal.
876 +
877 +2008-03-07  Joseph Myers  <joseph@codesourcery.com>
878 +
879 +       * doc/include/texinfo.tex: Update to version 2008-03-07.10.
880 +
881 +2008-03-07  Richard Guenther  <rguenther@suse.de>
882 +
883 +       Backport from mainline:
884 +       2008-03-05  Richard Guenther  <rguenther@suse.de>
885 +
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.
890 +
891 +2008-03-06  H.J. Lu  <hongjiu.lu@intel.com>
892 +
893 +       Backport from mainline:
894 +       2008-02-18  H.J. Lu  <hongjiu.lu@intel.com>
895 +
896 +       PR target/35189
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
922 +       ix86_isa_flags.
923 +
924 +2008-03-06  Jakub Jelinek  <jakub@redhat.com>
925 +
926 +       * gimplify.c (goa_lhs_expr_p): Allow different ADDR_EXPR nodes
927 +       for the same VAR_DECL.
928 +
929 +2008-03-06  Daniel Jacobowitz  <dan@codesourcery.com>
930 +
931 +       * expmed.c (extract_bit_field): Always use adjust_address for MEM.
932 +
933 +2008-03-06  Joseph Myers  <joseph@codesourcery.com>
934 +
935 +       PR target/33963
936 +       * tree.c (handle_dll_attribute): Disallow TYPE_DECLs for types
937 +       other than structures and unions.
938 +
939 +2008-03-06  Jakub Jelinek  <jakub@redhat.com>
940 +
941 +       * BASE-VER: Set to 4.3.1.
942 +       * DEV-PHASE: Set to prerelease.
943 +
944  2008-03-05  Release Manager
945  
946         * GCC 4.3.0 released.
947 @@ -56,12 +211,12 @@
948                     Uros Bizjak <ubizjak@gmail.com>
949  
950         PR target/25477
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. 
963  
964  2008-02-27  Richard Guenther  <rguenther@suse.de>
965 @@ -2122,7 +2277,7 @@
966  2008-01-02  Arthur Norman <acn1@cam.ac.uk>
967  
968         PR target/34013
969 -       * gcc/config/i386/i386.c (ix86_expand_prologue): Save red-zone
970 +       * config/i386/i386.c (ix86_expand_prologue): Save red-zone
971         while stack probing.
972  
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)
978 @@ -0,0 +1,22 @@
979 +extern void abort (void);
980 +
981 +struct container
982 +{
983 +  unsigned char data[1];
984 +};
985 +
986 +unsigned char space[6] = {1, 2, 3, 4, 5, 6};
987 +
988 +int
989 +foo (struct container *p)
990 +{
991 +  return p->data[4];
992 +}
993 +
994 +int
995 +main ()
996 +{
997 +  if (foo ((struct container *) space) != 5)
998 +    abort ();
999 +  return 0;
1000 +}
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)
1005 @@ -0,0 +1,22 @@
1006 +extern void abort (void);
1007 +extern void *memset (void *s, int c, __SIZE_TYPE__ n);
1008 +struct S { int i[16]; };
1009 +struct S *p;
1010 +void __attribute__((noinline))
1011 +foo(struct S *a, struct S *b) { a->i[0] = -1; p = b; }
1012 +void test (void)
1013 +{
1014 +  struct S a, b;
1015 +  memset (&a.i[0], '\0', sizeof (a.i));
1016 +  memset (&b.i[0], '\0', sizeof (b.i));
1017 +  foo (&a, &b);
1018 +  *p = a;
1019 +  *p = b;
1020 +  if (b.i[0] != -1)
1021 +    abort ();
1022 +}
1023 +int main()
1024 +{
1025 +  test();
1026 +  return 0;
1027 +}
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)
1032 @@ -0,0 +1,21 @@
1033 +extern void abort (void);
1034 +
1035 +double
1036 +__attribute__ ((noinline))
1037 +not_fabs (double x)
1038 +{
1039 +  return x >= 0.0 ? x : -x;
1040 +}
1041 +
1042 +int main()
1043 +{
1044 +  double x = -0.0;
1045 +  double y;
1046 +
1047 +  y = not_fabs (x);
1048 +
1049 +  if (!__builtin_signbit (y))
1050 +    abort();
1051 +
1052 +  return 0;
1053 +}
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)
1058 @@ -0,0 +1,34 @@
1059 +/* { dg-do run } */
1060 +/* { dg-options "-march=x86-64 -msse4" } */
1061 +
1062 +extern void abort (void);
1063 +
1064 +int
1065 +main ()
1066 +{
1067 +#if !defined __SSE__
1068 +  abort ();
1069 +#endif
1070 +#if !defined __SSE2__
1071 +  abort ();
1072 +#endif
1073 +#if !defined __SSE3__
1074 +  abort ();
1075 +#endif
1076 +#if !defined __SSSE3__
1077 +  abort ();
1078 +#endif
1079 +#if !defined __SSE4_1__
1080 +  abort ();
1081 +#endif
1082 +#if !defined __SSE4_2__
1083 +  abort ();
1084 +#endif
1085 +#if defined __SSE4A__
1086 +  abort ();
1087 +#endif
1088 +#if defined __SSE5__
1089 +  abort ();
1090 +#endif
1091 +  return 0;
1092 +}
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)
1097 @@ -0,0 +1,34 @@
1098 +/* { dg-do run } */
1099 +/* { dg-options "-march=amdfam10 -mno-sse5" } */
1100 +
1101 +extern void abort (void);
1102 +
1103 +int
1104 +main ()
1105 +{
1106 +#if !defined __SSE__
1107 +  abort ();
1108 +#endif
1109 +#if !defined __SSE2__
1110 +  abort ();
1111 +#endif
1112 +#if !defined __SSE3__
1113 +  abort ();
1114 +#endif
1115 +#if defined __SSSE3__
1116 +  abort ();
1117 +#endif
1118 +#if defined __SSE4_1__
1119 +  abort ();
1120 +#endif
1121 +#if defined __SSE4_2__
1122 +  abort ();
1123 +#endif
1124 +#if !defined __SSE4A__
1125 +  abort ();
1126 +#endif
1127 +#if defined __SSE5__
1128 +  abort ();
1129 +#endif
1130 +  return 0;
1131 +}
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)
1136 @@ -0,0 +1,34 @@
1137 +/* { dg-do run } */
1138 +/* { dg-options "-march=x86-64 -msse5 -mno-sse3" } */
1139 +
1140 +extern void abort (void);
1141 +
1142 +int
1143 +main ()
1144 +{
1145 +#if !defined __SSE__
1146 +  abort ();
1147 +#endif
1148 +#if !defined __SSE2__
1149 +  abort ();
1150 +#endif
1151 +#if defined __SSE3__
1152 +  abort ();
1153 +#endif
1154 +#if defined __SSSE3__
1155 +  abort ();
1156 +#endif
1157 +#if defined __SSE4_1__
1158 +  abort ();
1159 +#endif
1160 +#if defined __SSE4_2__
1161 +  abort ();
1162 +#endif
1163 +#if defined __SSE4A__
1164 +  abort ();
1165 +#endif
1166 +#if defined __SSE5__
1167 +  abort ();
1168 +#endif
1169 +  return 0;
1170 +}
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)
1175 @@ -0,0 +1,34 @@
1176 +/* { dg-do run } */
1177 +/* { dg-options "-march=x86-64 -msse4 -msse5" } */
1178 +
1179 +extern void abort (void);
1180 +
1181 +int
1182 +main ()
1183 +{
1184 +#if !defined __SSE__
1185 +  abort ();
1186 +#endif
1187 +#if !defined __SSE2__
1188 +  abort ();
1189 +#endif
1190 +#if !defined __SSE3__
1191 +  abort ();
1192 +#endif
1193 +#if !defined __SSSE3__
1194 +  abort ();
1195 +#endif
1196 +#if !defined __SSE4_1__
1197 +  abort ();
1198 +#endif
1199 +#if !defined __SSE4_2__
1200 +  abort ();
1201 +#endif
1202 +#if !defined __SSE4A__
1203 +  abort ();
1204 +#endif
1205 +#if !defined __SSE5__
1206 +  abort ();
1207 +#endif
1208 +  return 0;
1209 +}
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)
1214 @@ -0,0 +1,34 @@
1215 +/* { dg-do run } */
1216 +/* { dg-options "-march=x86-64 -msse5 -mno-sse2" } */
1217 +
1218 +extern void abort (void);
1219 +
1220 +int
1221 +main ()
1222 +{
1223 +#if !defined __SSE__
1224 +  abort ();
1225 +#endif
1226 +#if defined __SSE2__
1227 +  abort ();
1228 +#endif
1229 +#if defined __SSE3__
1230 +  abort ();
1231 +#endif
1232 +#if defined __SSSE3__
1233 +  abort ();
1234 +#endif
1235 +#if defined __SSE4_1__
1236 +  abort ();
1237 +#endif
1238 +#if defined __SSE4_2__
1239 +  abort ();
1240 +#endif
1241 +#if defined __SSE4A__
1242 +  abort ();
1243 +#endif
1244 +#if defined __SSE5__
1245 +  abort ();
1246 +#endif
1247 +  return 0;
1248 +}
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)
1253 @@ -0,0 +1,34 @@
1254 +/* { dg-do run } */
1255 +/* { dg-options "-march=x86-64 -msse4 -msse5 -msse4a" } */
1256 +
1257 +extern void abort (void);
1258 +
1259 +int
1260 +main ()
1261 +{
1262 +#if !defined __SSE__
1263 +  abort ();
1264 +#endif
1265 +#if !defined __SSE2__
1266 +  abort ();
1267 +#endif
1268 +#if !defined __SSE3__
1269 +  abort ();
1270 +#endif
1271 +#if !defined __SSSE3__
1272 +  abort ();
1273 +#endif
1274 +#if !defined __SSE4_1__
1275 +  abort ();
1276 +#endif
1277 +#if !defined __SSE4_2__
1278 +  abort ();
1279 +#endif
1280 +#if !defined __SSE4A__
1281 +  abort ();
1282 +#endif
1283 +#if !defined __SSE5__
1284 +  abort ();
1285 +#endif
1286 +  return 0;
1287 +}
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)
1292 @@ -0,0 +1,34 @@
1293 +/* { dg-do run } */
1294 +/* { dg-options "-march=x86-64 -msse5 -mno-sse" } */
1295 +
1296 +extern void abort (void);
1297 +
1298 +int
1299 +main ()
1300 +{
1301 +#if defined __SSE__
1302 +  abort ();
1303 +#endif
1304 +#if defined __SSE2__
1305 +  abort ();
1306 +#endif
1307 +#if defined __SSE3__
1308 +  abort ();
1309 +#endif
1310 +#if defined __SSSE3__
1311 +  abort ();
1312 +#endif
1313 +#if defined __SSE4_1__
1314 +  abort ();
1315 +#endif
1316 +#if defined __SSE4_2__
1317 +  abort ();
1318 +#endif
1319 +#if defined __SSE4A__
1320 +  abort ();
1321 +#endif
1322 +#if defined __SSE5__
1323 +  abort ();
1324 +#endif
1325 +  return 0;
1326 +}
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)
1331 @@ -0,0 +1,34 @@
1332 +/* { dg-do run } */
1333 +/* { dg-options "-march=core2 -msse5 -mno-sse4" } */
1334 +
1335 +extern void abort (void);
1336 +
1337 +int
1338 +main ()
1339 +{
1340 +#if !defined __SSE__
1341 +  abort ();
1342 +#endif
1343 +#if !defined __SSE2__
1344 +  abort ();
1345 +#endif
1346 +#if !defined __SSE3__
1347 +  abort ();
1348 +#endif
1349 +#if !defined __SSSE3__
1350 +  abort ();
1351 +#endif
1352 +#if defined __SSE4_1__
1353 +  abort ();
1354 +#endif
1355 +#if defined __SSE4_2__
1356 +  abort ();
1357 +#endif
1358 +#if !defined __SSE4A__
1359 +  abort ();
1360 +#endif
1361 +#if !defined __SSE5__
1362 +  abort ();
1363 +#endif
1364 +  return 0;
1365 +}
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)
1370 @@ -0,0 +1,34 @@
1371 +/* { dg-do run } */
1372 +/* { dg-options "-march=core2 -msse4a -mno-sse4" } */
1373 +
1374 +extern void abort (void);
1375 +
1376 +int
1377 +main ()
1378 +{
1379 +#if !defined __SSE__
1380 +  abort ();
1381 +#endif
1382 +#if !defined __SSE2__
1383 +  abort ();
1384 +#endif
1385 +#if !defined __SSE3__
1386 +  abort ();
1387 +#endif
1388 +#if !defined __SSSE3__
1389 +  abort ();
1390 +#endif
1391 +#if defined __SSE4_1__
1392 +  abort ();
1393 +#endif
1394 +#if defined __SSE4_2__
1395 +  abort ();
1396 +#endif
1397 +#if !defined __SSE4A__
1398 +  abort ();
1399 +#endif
1400 +#if defined __SSE5__
1401 +  abort ();
1402 +#endif
1403 +  return 0;
1404 +}
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)
1409 @@ -0,0 +1,45 @@
1410 +/* { dg-do run } */
1411 +/* { dg-options "-O2" } */
1412 +
1413 +extern void abort (void);
1414 +
1415 +int __attribute__ ((noinline))
1416 +test (unsigned int *a, int b)
1417 +{
1418 +  return b ? 1 : __builtin_parity (*a);
1419 +}
1420 +
1421 +int __attribute__ ((noinline))
1422 +testl (unsigned long *a, int b)
1423 +{
1424 +  return b ? 1 : __builtin_parityl (*a);
1425 +}
1426 +
1427 +int __attribute__ ((noinline))
1428 +testll (unsigned long long *a, int b)
1429 +{
1430 +  return b ? 1 : __builtin_parityll (*a);
1431 +}
1432 +
1433 +int
1434 +main ()
1435 +{
1436 +  unsigned int a = 0;
1437 +  unsigned long al;
1438 +  unsigned long long all;
1439 +
1440 +  a = 0x12345670;
1441 +  if (test (&a, 0))
1442 +    abort ();
1443 +
1444 +  al = 0x12345670ul;
1445 +  if (testl (&al, 0))
1446 +    abort();
1447 +
1448 +#if 1
1449 +  all = 0x12345678abcdef0ull;
1450 +  if (testll (&all, 0))
1451 +    abort ();
1452 +#endif
1453 +  return 0;
1454 +}
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)
1459 @@ -0,0 +1,34 @@
1460 +/* { dg-do run } */
1461 +/* { dg-options "-march=amdfam10 -mno-sse4" } */
1462 +
1463 +extern void abort (void);
1464 +
1465 +int
1466 +main ()
1467 +{
1468 +#if !defined __SSE__
1469 +  abort ();
1470 +#endif
1471 +#if !defined __SSE2__
1472 +  abort ();
1473 +#endif
1474 +#if !defined __SSE3__
1475 +  abort ();
1476 +#endif
1477 +#if defined __SSSE3__
1478 +  abort ();
1479 +#endif
1480 +#if defined __SSE4_1__
1481 +  abort ();
1482 +#endif
1483 +#if defined __SSE4_2__
1484 +  abort ();
1485 +#endif
1486 +#if !defined __SSE4A__
1487 +  abort ();
1488 +#endif
1489 +#if defined __SSE5__
1490 +  abort ();
1491 +#endif
1492 +  return 0;
1493 +}
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)
1498 @@ -0,0 +1,34 @@
1499 +/* { dg-do run } */
1500 +/* { dg-options "-march=amdfam10 -msse5 -mno-sse4" } */
1501 +
1502 +extern void abort (void);
1503 +
1504 +int
1505 +main ()
1506 +{
1507 +#if !defined __SSE__
1508 +  abort ();
1509 +#endif
1510 +#if !defined __SSE2__
1511 +  abort ();
1512 +#endif
1513 +#if !defined __SSE3__
1514 +  abort ();
1515 +#endif
1516 +#if defined __SSSE3__
1517 +  abort ();
1518 +#endif
1519 +#if defined __SSE4_1__
1520 +  abort ();
1521 +#endif
1522 +#if defined __SSE4_2__
1523 +  abort ();
1524 +#endif
1525 +#if !defined __SSE4A__
1526 +  abort ();
1527 +#endif
1528 +#if !defined __SSE5__
1529 +  abort ();
1530 +#endif
1531 +  return 0;
1532 +}
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)
1537 @@ -0,0 +1,34 @@
1538 +/* { dg-do run } */
1539 +/* { dg-options "-march=x86-64 -msse5 -mno-sse4" } */
1540 +
1541 +extern void abort (void);
1542 +
1543 +int
1544 +main ()
1545 +{
1546 +#if !defined __SSE__
1547 +  abort ();
1548 +#endif
1549 +#if !defined __SSE2__
1550 +  abort ();
1551 +#endif
1552 +#if !defined __SSE3__
1553 +  abort ();
1554 +#endif
1555 +#if defined __SSSE3__
1556 +  abort ();
1557 +#endif
1558 +#if defined __SSE4_1__
1559 +  abort ();
1560 +#endif
1561 +#if defined __SSE4_2__
1562 +  abort ();
1563 +#endif
1564 +#if !defined __SSE4A__
1565 +  abort ();
1566 +#endif
1567 +#if !defined __SSE5__
1568 +  abort ();
1569 +#endif
1570 +  return 0;
1571 +}
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)
1576 @@ -0,0 +1,34 @@
1577 +/* { dg-do run } */
1578 +/* { dg-options "-march=amdfam10 -msse5 -mno-sse4a" } */
1579 +
1580 +extern void abort (void);
1581 +
1582 +int
1583 +main ()
1584 +{
1585 +#if !defined __SSE__
1586 +  abort ();
1587 +#endif
1588 +#if !defined __SSE2__
1589 +  abort ();
1590 +#endif
1591 +#if !defined __SSE3__
1592 +  abort ();
1593 +#endif
1594 +#if defined __SSSE3__
1595 +  abort ();
1596 +#endif
1597 +#if defined __SSE4_1__
1598 +  abort ();
1599 +#endif
1600 +#if defined __SSE4_2__
1601 +  abort ();
1602 +#endif
1603 +#if defined __SSE4A__
1604 +  abort ();
1605 +#endif
1606 +#if defined __SSE5__
1607 +  abort ();
1608 +#endif
1609 +  return 0;
1610 +}
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)
1615 @@ -0,0 +1,34 @@
1616 +/* { dg-do run } */
1617 +/* { dg-options "-march=x86-64 -msse5 -mno-ssse3" } */
1618 +
1619 +extern void abort (void);
1620 +
1621 +int
1622 +main ()
1623 +{
1624 +#if !defined __SSE__
1625 +  abort ();
1626 +#endif
1627 +#if !defined __SSE2__
1628 +  abort ();
1629 +#endif
1630 +#if !defined __SSE3__
1631 +  abort ();
1632 +#endif
1633 +#if defined __SSSE3__
1634 +  abort ();
1635 +#endif
1636 +#if defined __SSE4_1__
1637 +  abort ();
1638 +#endif
1639 +#if defined __SSE4_2__
1640 +  abort ();
1641 +#endif
1642 +#if !defined __SSE4A__
1643 +  abort ();
1644 +#endif
1645 +#if !defined __SSE5__
1646 +  abort ();
1647 +#endif
1648 +  return 0;
1649 +}
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)
1654 @@ -1,15 +1,17 @@
1655  -- { dg-do compile }
1656  
1657 +with System;
1658 +
1659  procedure frame_overflow is
1660  
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;
1664  
1665     type Bitmap_T is record
1666        Bits : Bitmap_Array_T := (others => False);
1667     end record;
1668     
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
1672     is
1673        Result: Bitmap_T := Bitmap;
1674 @@ -18,7 +20,7 @@
1675        return Result;
1676     end;
1677  
1678 -   function -- { dg-error "too large" "" }
1679 +   function -- { dg-error "too large" }
1680       Negate (Bitmap : Bitmap_T) return Bitmap_T is
1681        Result: Bitmap_T;
1682     begin
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)
1687 @@ -0,0 +1,6 @@
1688 +/* PR c/35439 */
1689 +/* { dg-do compile } */
1690 +/* { dg-options "-fopenmp" } */
1691 +
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)
1698 @@ -0,0 +1,20 @@
1699 +/* PR c++/35244 */
1700 +/* { dg-do compile } */
1701 +/* { dg-require-effective-target tls_native } */
1702 +/* { dg-options "-fopenmp" } */
1703 +
1704 +int v1;
1705 +typedef struct A A;
1706 +typedef int i;
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)
1710 +
1711 +void foo ()
1712 +{
1713 +  static int v4;
1714 +  {
1715 +    static int v5;
1716 +#pragma omp threadprivate (v4, v5)
1717 +  }
1718 +}
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)
1723 @@ -0,0 +1,6 @@
1724 +/* PR c/35438 */
1725 +/* { dg-do compile } */
1726 +/* { dg-options "-fopenmp" } */
1727 +
1728 +void foo ();
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)
1734 @@ -0,0 +1,6 @@
1735 +/* PR c++/34964 */
1736 +/* { dg-do compile } */
1737 +/* { dg-options "-fopenmp" } */
1738 +
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)
1745 @@ -1,3 +1,123 @@
1746 +2008-03-12  Uros Bizjak  <ubizjak@gmail.com>
1747 +
1748 +       PR target/35540
1749 +       * gcc.target/i386/pr35540.c: New test.
1750 +
1751 +2008-03-11  Uros Bizjak  <ubizjak@gmail.com>
1752 +
1753 +       * g++.dg/inherit/override-attribs.C: Require ilp32 x86 target.
1754 +
1755 +2008-03-11  Uros Bizjak  <ubizjak@gmail.com>
1756 +
1757 +       PR middle-end/35526
1758 +       * g++.dg/torture/pr35526.C: New test.
1759 +
1760 +2008-03-10  Jakub Jelinek  <jakub@redhat.com>
1761 +
1762 +       PR c++/35328
1763 +       * g++.dg/gomp/pr35328.C: New test.
1764 +
1765 +       PR c++/35337
1766 +       * g++.dg/gomp/pr35337.C: New test.
1767 +
1768 +       PR c/35438
1769 +       PR c/35439
1770 +       * gcc.dg/gomp/pr35438.c: New test.
1771 +       * gcc.dg/gomp/pr35439.c: New test.
1772 +
1773 +       PR middle-end/35099
1774 +       * g++.dg/gomp/pr35099.C: New test.
1775 +
1776 +2008-03-10  Uros Bizjak  <ubizjak@gmail.com>
1777 +
1778 +       Backport from mainline:
1779 +       2008-03-04  Uros Bizjak  <ubizjak@gmail.com>
1780 +
1781 +       PR middle-end/35456
1782 +       * gcc.c-torture/execute/pr35456.c: New test.
1783 +
1784 +2008-03-09  Eric Botcazou  <ebotcazou@adacore.com>
1785 +
1786 +       * gnat.dg/frame_overflow.adb: Improve portability.
1787 +
1788 +2008-03-08  H.J. Lu  <hongjiu.lu@intel.com>
1789 +
1790 +       Backport from mainline:
1791 +       2008-03-08  H.J. Lu  <hongjiu.lu@intel.com>
1792 +
1793 +       PR target/35350
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.
1802 +
1803 +2008-03-07  Richard Guenther  <rguenther@suse.de>
1804 +
1805 +       Backport from mainline:
1806 +       2008-03-05  Richard Guenther  <rguenther@suse.de>
1807 +
1808 +       PR tree-optimization/35472
1809 +       * gcc.c-torture/execute/pr35472.c: New testcase.
1810 +
1811 +2008-03-06  H.J. Lu  <hongjiu.lu@intel.com>
1812 +
1813 +       Backport from mainline:
1814 +       2008-02-18  H.J. Lu  <hongjiu.lu@intel.com>
1815 +
1816 +       PR target/35189
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.
1831 +
1832 +2008-03-06  Jakub Jelinek  <jakub@redhat.com>
1833 +
1834 +       PR c++/35028
1835 +       * g++.dg/gomp/pr35028.C: New test.
1836 +
1837 +       PR c++/34964
1838 +       PR c++/35244
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.
1843 +
1844 +       PR c++/35078
1845 +       * g++.dg/gomp/pr35078.C: New test.
1846 +
1847 +2008-03-06  Daniel Jacobowitz  <dan@codesourcery.com>
1848 +
1849 +       * gcc.c-torture/execute/20080222-1.c: New test.
1850 +
1851 +2008-03-06  Paolo Carlini  <pcarlini@suse.de>
1852 +
1853 +       PR c++/35323
1854 +       * g++.dg/lookup/crash7.C: New.
1855 +
1856 +2008-03-06  Paolo Carlini  <pcarlini@suse.de>
1857 +
1858 +       PR c++/35333
1859 +       * g++.dg/other/error26.C: New.
1860 +
1861 +2008-03-06  Paolo Carlini  <pcarlini@suse.de>
1862 +
1863 +       PR c++/35338
1864 +       * g++.dg/other/error25.C: New.
1865 +       
1866  2008-03-05  Release Manager
1867  
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)
1873 @@ -0,0 +1,5 @@
1874 +// PR c++/35338
1875 +// { dg-options "" }
1876 +
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)
1883 @@ -0,0 +1,6 @@
1884 +// PR c++/35333
1885 +
1886 +void foo(__complex__ double x)
1887 +{
1888 +  __builtin_conj(x)(); // { dg-error "~x" }
1889 +}
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)
1894 @@ -0,0 +1,9 @@
1895 +// PR c++/35323
1896 +// { dg-options "" }
1897 +
1898 +void foo(int);
1899 +
1900 +void bar()
1901 +{
1902 +  foo(1r); // { dg-error "unnamed-fixed" }
1903 +}
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)
1908 @@ -0,0 +1,6 @@
1909 +// PR c++/34964
1910 +// { dg-do compile }
1911 +// { dg-options "-fopenmp" }
1912 +
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)
1919 @@ -0,0 +1,31 @@
1920 +// PR c++/35328
1921 +// { dg-do compile }
1922 +// { dg-options "-fopenmp" }
1923 +
1924 +struct A
1925 +{
1926 +  ~A ()();             // { dg-error "declared as function returning a function" }
1927 +};
1928 +struct B
1929 +{
1930 +  B ()();              // { dg-error "declared as function returning a function" }
1931 +};
1932 +struct C
1933 +{
1934 +  C ();
1935 +  C (const C &)();     // { dg-error "declared as function returning a function" }
1936 +};
1937 +
1938 +void
1939 +foo ()
1940 +{
1941 +  A a;
1942 +  B b;
1943 +  C c;
1944 +  #pragma omp parallel firstprivate (a)
1945 +    ;
1946 +  #pragma omp parallel private (b)
1947 +    ;
1948 +  #pragma omp parallel firstprivate (c)
1949 +    ;
1950 +}
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)
1955 @@ -0,0 +1,20 @@
1956 +// PR c++/35337
1957 +// { dg-do compile }
1958 +// { dg-options "-fopenmp" }
1959 +
1960 +struct A { };
1961 +
1962 +void
1963 +foo ()
1964 +{
1965 +#pragma omp parallel firstprivate(A)   // { dg-error "struct A\[^\n\]*is not a variable" }
1966 +  ;
1967 +}
1968 +
1969 +void
1970 +bar ()
1971 +{
1972 +#pragma omp for lastprivate(A)         // { dg-error "struct A\[^\n\]*is not a variable" }
1973 +  for (int i = 0; i < 10; i++)
1974 +    ;
1975 +}
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)
1980 @@ -0,0 +1,30 @@
1981 +// PR c++/35244
1982 +// { dg-do compile }
1983 +// { dg-require-effective-target tls_native }
1984 +// { dg-options "-fopenmp" }
1985 +
1986 +int v1;
1987 +namespace N1
1988 +{
1989 +  int v2;
1990 +}
1991 +namespace N2
1992 +{
1993 +  int v3;
1994 +}
1995 +using N1::v2;
1996 +using namespace N2;
1997 +struct A;
1998 +typedef int i;
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)
2002 +
2003 +void foo ()
2004 +{
2005 +  static int v4;
2006 +  {
2007 +    static int v5;
2008 +#pragma omp threadprivate (v4, v5)
2009 +  }
2010 +}
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)
2015 @@ -0,0 +1,20 @@
2016 +// PR c++/35078
2017 +// { dg-do compile }
2018 +// { dg-options "-fopenmp" }
2019 +
2020 +template<int> void
2021 +foo ()
2022 +{
2023 +#pragma omp parallel for
2024 +  for (int& i = 0; i < 10; ++i)        // { dg-error "invalid type for iteration variable" }
2025 +    ;
2026 +}
2027 +
2028 +void
2029 +bar ()
2030 +{
2031 +  int j = 0;
2032 +#pragma omp parallel for
2033 +  for (int& i = j; i < 10; ++i)        // { dg-error "invalid type for iteration variable" }
2034 +    ;
2035 +}
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)
2040 @@ -0,0 +1,39 @@
2041 +// PR middle-end/35099
2042 +// { dg-do compile }
2043 +// { dg-options "-O2 -fopenmp" }
2044 +
2045 +struct A
2046 +{
2047 +  ~A () throw ();
2048 +  void foo ();
2049 +};
2050 +
2051 +struct B
2052 +{
2053 +  B () { A ().foo (); }
2054 +};
2055 +
2056 +void
2057 +bar ()
2058 +{
2059 +#pragma omp parallel
2060 +  {
2061 +  #pragma omp single
2062 +    B ();
2063 +  #pragma omp for
2064 +    for (int i = 0; i < 2; ++i)
2065 +      B ();
2066 +  }
2067 +}
2068 +
2069 +void
2070 +baz ()
2071 +{
2072 +#pragma omp parallel
2073 +  {
2074 +  #pragma omp single
2075 +    B ();
2076 +  #pragma omp single
2077 +    B ();
2078 +  }
2079 +}
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)
2084 @@ -0,0 +1,19 @@
2085 +// PR c++/35028
2086 +// { dg-do compile }
2087 +// { dg-options "-fopenmp" }
2088 +
2089 +struct A
2090 +{
2091 +  A ();
2092 +  A (const A &, ...);
2093 +  ~A ();
2094 +  A operator++ (int);
2095 +};
2096 +
2097 +void
2098 +foo ()
2099 +{
2100 +  A a;
2101 +  #pragma omp parallel firstprivate (a)
2102 +    a++;
2103 +}
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)
2108 @@ -1,5 +1,7 @@
2109  // PR c++/14688
2110 -// { dg-do compile { target i?86-*-* } }
2111 +// { dg-do compile { target i?86-*-* x86_64-*-* } }
2112 +// { dg-require-effective-target ilp32 }
2113 +
2114  class one
2115  {
2116  public:
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)
2121 @@ -0,0 +1,18 @@
2122 +/* { dg-do compile } */
2123 +
2124 +extern void *memcpy (void *__dest, __const void *__src, __SIZE_TYPE__  __n);
2125 +
2126 +char internal_crash_read_ip[] = { 0xb8 };
2127 +
2128 +struct u_internal_crash_read_t
2129 +{
2130 +  char ip[sizeof (internal_crash_read_ip)];
2131 +}
2132 +u_internal_crash_read;
2133 +
2134 +void
2135 +gSignalHandler (int psignalNr, int pinfo, int pctx)
2136 +{
2137 +  memcpy (u_internal_crash_read.ip, internal_crash_read_ip,
2138 +         sizeof (internal_crash_read_ip));
2139 +}
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)
2144 @@ -962,6 +962,8 @@
2145    if (TREE_CODE (t1) != ARRAY_TYPE
2146        && TYPE_QUALS (t1) != TYPE_QUALS (t2))
2147      return false;
2148 +  if (TYPE_FOR_JAVA (t1) != TYPE_FOR_JAVA (t2))
2149 +    return false;
2150  
2151    /* Allow for two different type nodes which have essentially the same
2152       definition.  Note that we already checked for equality of the type
2153 @@ -971,9 +973,6 @@
2154        && TYPE_MAIN_VARIANT (t1) == TYPE_MAIN_VARIANT (t2))
2155      return true;
2156  
2157 -  if (TYPE_FOR_JAVA (t1) != TYPE_FOR_JAVA (t2))
2158 -    return false;
2159 -
2160    /* Compare the types.  Break out if they could be the same.  */
2161    switch (TREE_CODE (t1))
2162      {
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 @@
2168    tree type, decl;
2169    if (size > 0)
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);
2176 -      else
2177 -       /* ppc-darwin has SImode bool, make jboolean a 1-bit
2178 -          integer type without boolean semantics there.  */
2179 -       type = make_unsigned_type (1);
2180 -    }
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);*/
2186      }
2187    else
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)
2193 @@ -326,6 +326,7 @@
2194      case BOOLEAN_TYPE:
2195      case COMPLEX_TYPE:
2196      case VECTOR_TYPE:
2197 +    case FIXED_POINT_TYPE:
2198        pp_type_specifier_seq (cxx_pp, t);
2199        break;
2200  
2201 @@ -2079,7 +2080,9 @@
2202      case VEC_DELETE_EXPR:
2203      case MODOP_EXPR:
2204      case ABS_EXPR:
2205 +    case CONJ_EXPR:
2206      case VECTOR_CST:
2207 +    case FIXED_CST:
2208        pp_expression (cxx_pp, t);
2209        break;
2210  
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)
2215 @@ -1,3 +1,63 @@
2216 +2008-03-12  Richard Guenther  <rguenther@suse.de>
2217 +
2218 +       PR c++/35469
2219 +       Revert:
2220 +       2008-02-04  Richard Guenther  <rguenther@suse.de>
2221 +
2222 +        PR java/35035
2223 +        * decl.c (record_builtin_java_type): Make jboolean a
2224 +        integer type again where its mode doesn't match that of bool.
2225 +
2226 +       2008-01-25  Richard Guenther  <rguenther@suse.de>
2227 +
2228 +        PR c++/33887
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.
2233 +
2234 +2008-03-10  Jakub Jelinek  <jakub@redhat.com>
2235 +
2236 +       PR c++/35328
2237 +       * semantics.c (finish_omp_clauses): Look through NOP_EXPR even
2238 +       if errorcount.
2239 +
2240 +       PR c++/35337
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.
2243 +
2244 +2008-03-06  Jakub Jelinek  <jakub@redhat.com>
2245 +
2246 +       PR c++/35028
2247 +       * cp-gimplify.c (cxx_omp_clause_apply_fn): Handle vararg copy ctors.
2248 +
2249 +       PR c++/34964
2250 +       PR c++/35244
2251 +       * semantics.c (finish_omp_threadprivate): Do nothing for error_operand_p
2252 +       vars.  Afterwards ensure v is VAR_DECL.
2253 +
2254 +       PR c++/35078
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
2258 +       early.
2259 +
2260 +2008-03-06  Paolo Carlini  <pcarlini@suse.de>
2261 +
2262 +        PR c++/35323
2263 +        * name-lookup.c (arg_assoc_type): Handle FIXED_POINT_TYPE.
2264 +
2265 +2008-03-06  Paolo Carlini  <pcarlini@suse.de>
2266 +
2267 +        PR c++/35333
2268 +        * error.c (dump_expr): Handle CONJ_EXPR.
2269 +
2270 +2008-03-06  Paolo Carlini  <pcarlini@suse.de>
2271 +
2272 +        PR c++/35338
2273 +        * error.c (dump_type): Handle FIXED_POINT_TYPE.
2274 +       (dump_expr): Handle FIXED_CST.
2275 +       
2276  2008-03-05  Release Manager
2277  
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)
2283 @@ -844,7 +844,8 @@
2284        if (arg2)
2285         argarray[i++] = p2;
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);
2293 @@ -875,7 +876,7 @@
2294        if (arg2)
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 @@
2307             {
2308               if (processing_template_decl)
2309                 break;
2310 -             error ("%qE is not a variable in clause %<firstprivate%>", t);
2311 +             if (DECL_P (t))
2312 +               error ("%qD is not a variable in clause %<firstprivate%>", t);
2313 +             else
2314 +               error ("%qE is not a variable in clause %<firstprivate%>", t);
2315               remove = true;
2316             }
2317           else if (bitmap_bit_p (&generic_head, DECL_UID (t))
2318                    || bitmap_bit_p (&firstprivate_head, DECL_UID (t)))
2319             {
2320 -             error ("%qE appears more than once in data clauses", t);
2321 +             error ("%qD appears more than once in data clauses", t);
2322               remove = true;
2323             }
2324           else
2325 @@ -3419,13 +3422,16 @@
2326             {
2327               if (processing_template_decl)
2328                 break;
2329 -             error ("%qE is not a variable in clause %<lastprivate%>", t);
2330 +             if (DECL_P (t))
2331 +               error ("%qD is not a variable in clause %<lastprivate%>", t);
2332 +             else
2333 +               error ("%qE is not a variable in clause %<lastprivate%>", t);
2334               remove = true;
2335             }
2336           else if (bitmap_bit_p (&generic_head, DECL_UID (t))
2337                    || bitmap_bit_p (&lastprivate_head, DECL_UID (t)))
2338             {
2339 -             error ("%qE appears more than once in data clauses", t);
2340 +             error ("%qD appears more than once in data clauses", t);
2341               remove = true;
2342             }
2343           else
2344 @@ -3661,7 +3667,7 @@
2345                                              complete_ctor_identifier,
2346                                              t, inner_type, LOOKUP_NORMAL);
2347  
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);
2356  
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 @@
2363      {
2364        tree v = TREE_PURPOSE (t);
2365  
2366 +      if (error_operand_p (v))
2367 +       ;
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.  */
2373 -      if (TREE_USED (v)
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 @@
2379        return NULL;
2380      }
2381  
2382 +  if (!INTEGRAL_TYPE_P (TREE_TYPE (decl)))
2383 +    {
2384 +      location_t elocus = locus;
2385 +
2386 +      if (EXPR_HAS_LOCATION (init))
2387 +       elocus = EXPR_LOCATION (init);
2388 +      error ("%Hinvalid type for iteration variable %qE", &elocus, decl);
2389 +      return NULL;
2390 +    }
2391 +
2392    if (pre_body == NULL || IS_EMPTY_STMT (pre_body))
2393      pre_body = NULL;
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)
2399 @@ -1,5 +1,5 @@
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>
2405  
2406 @@ -4594,6 +4594,7 @@
2407      case COMPLEX_TYPE:
2408      case VECTOR_TYPE:
2409      case BOOLEAN_TYPE:
2410 +    case FIXED_POINT_TYPE:
2411        return false;
2412      case RECORD_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 @@
2419  
2420               init = cp_parser_assignment_expression (parser, false);
2421  
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;
2426 +             else
2427 +               cp_finish_decl (decl, NULL_TREE, /*init_const_expr_p=*/false,
2428 +                               asm_specification, LOOKUP_ONLYCONVERTING);
2429  
2430               if (pushed_scope)
2431                 pop_scope (pushed_scope);
2432 Index: gcc/ifcvt.c
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;
2438    int negate;
2439  
2440 +  /* Reject modes with signed zeros.  */
2441 +  if (HONOR_SIGNED_ZEROS (GET_MODE (if_info->x)))
2442 +    return FALSE;
2443 +
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.  */
2447 Index: gcc/expr.c
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);
2454             }
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),
2459                              (call_param_p
2460                               ? BLOCK_OP_CALL_PARM
2461 Index: gcc/BASE-VER
2462 ===================================================================
2463 --- gcc/BASE-VER        (.../tags/gcc_4_3_0_release)    (revision 133190)
2464 +++ gcc/BASE-VER        (.../branches/gcc-4_3-branch)   (revision 133190)
2465 @@ -1 +1 @@
2466 -4.3.0
2467 +4.3.1
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);
2475         }
2476 -      return expr == addr;
2477 +      if (expr == addr)
2478 +       return true;
2479 +      return (TREE_CODE (addr) == ADDR_EXPR
2480 +             && TREE_CODE (expr) == ADDR_EXPR
2481 +             && TREE_OPERAND (addr, 0) == TREE_OPERAND (expr, 0));
2482      }
2483    if (TREE_CODE (addr) == ADDR_EXPR && expr == TREE_OPERAND (addr, 0))
2484      return true;
2485 Index: gcc/expmed.c
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)))))
2492      {
2493 -      if (mode1 != GET_MODE (op0))
2494 +      if (MEM_P (op0))
2495 +       op0 = adjust_address (op0, mode1, offset);
2496 +      else if (mode1 != GET_MODE (op0))
2497         {
2498 -         if (MEM_P (op0))
2499 -           op0 = adjust_address (op0, mode1, offset);
2500 -         else
2501 -           {
2502 -             rtx sub = simplify_gen_subreg (mode1, op0, GET_MODE (op0),
2503 -                                            byte_offset);
2504 -             if (sub == NULL)
2505 -               goto no_subreg_mode_swap;
2506 -             op0 = sub;
2507 -           }
2508 +         rtx sub = simplify_gen_subreg (mode1, op0, GET_MODE (op0),
2509 +                                        byte_offset);
2510 +         if (sub == NULL)
2511 +           goto no_subreg_mode_swap;
2512 +         op0 = sub;
2513         }
2514        if (mode1 != mode)
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;
2526  
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)
2533 @@ -1,6 +1,7 @@
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.
2539  
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 @@
2543  
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)
2554 +       ;
2555        else if (! COMPLETE_TYPE_P (TREE_TYPE (v)))
2556         error ("%<threadprivate%> %qE has incomplete type", v);
2557        else
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 @@
2563  
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" "")))]
2568    "! TARGET_POPCNT"
2569  {
2570    rtx scratch = gen_reg_rtx (QImode);
2571 @@ -15468,10 +15468,10 @@
2572  
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"))]
2583    "! TARGET_POPCNT"
2584    "#"
2585    "&& reload_completed"
2586 @@ -15487,20 +15487,18 @@
2587  {
2588    operands[4] = gen_lowpart (SImode, operands[3]);
2589  
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]);
2594 -  else
2595 +  if (TARGET_64BIT)
2596      {
2597        emit_move_insn (operands[1], gen_lowpart (SImode, operands[3]));
2598        emit_insn (gen_lshrdi3 (operands[3], operands[3], GEN_INT (32)));
2599      }
2600 +  else
2601 +    operands[1] = gen_highpart (SImode, operands[3]);
2602  })
2603  
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" "")))]
2608    "! TARGET_POPCNT"
2609  {
2610    rtx scratch = gen_reg_rtx (QImode);
2611 @@ -15519,9 +15517,9 @@
2612  
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"))]
2621    "! TARGET_POPCNT"
2622    "#"
2623    "&& reload_completed"
2624 @@ -15536,13 +15534,8 @@
2625  {
2626    operands[3] = gen_lowpart (HImode, operands[2]);
2627  
2628 -  if (MEM_P (operands[2]))
2629 -    emit_move_insn (operands[1], gen_highpart (HImode, operands[2]));
2630 -  else
2631 -    {
2632 -      emit_move_insn (operands[1], gen_lowpart (HImode, operands[2]));
2633 -      emit_insn (gen_lshrsi3 (operands[2], operands[2], GEN_INT (16)));
2634 -    }
2635 +  emit_move_insn (operands[1], gen_lowpart (HImode, operands[2]));
2636 +  emit_insn (gen_lshrsi3 (operands[2], operands[2], GEN_INT (16)));
2637  })
2638  
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 @@
2645           (mult:V8HI
2646             (zero_extend:V8HI
2647               (vec_select:V4QI
2648 -               (match_operand:V16QI 1 "nonimmediate_operand" "%0")
2649 +               (match_operand:V16QI 1 "nonimmediate_operand" "0")
2650                 (parallel [(const_int 0)
2651                            (const_int 2)
2652                            (const_int 4)
2653 @@ -6456,7 +6456,7 @@
2654           (mult:V4HI
2655             (zero_extend:V4HI
2656               (vec_select:V4QI
2657 -               (match_operand:V8QI 1 "nonimmediate_operand" "%0")
2658 +               (match_operand:V8QI 1 "nonimmediate_operand" "0")
2659                 (parallel [(const_int 0)
2660                            (const_int 2)
2661                            (const_int 4)
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;
2669  
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.  */
2674  
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)
2678 +
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)
2690 +
2691 +/* SSE4 includes both SSE4.1 and SSE4.2. -msse4 should be the same
2692 +   as -msse4.2.  */
2693 +#define OPTION_MASK_ISA_SSE4_SET OPTION_MASK_ISA_SSE4_2_SET
2694 +
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)
2699 +
2700 +/* Define a set of ISAs which aren't available when a given ISA is
2701 +   disabled.  MMX and SSE ISAs are handled separately.  */
2702 +
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
2710  
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
2730  
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
2738  
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)
2742  
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
2746  
2747  /* Vectorization library interface and handlers.  */
2748  tree (*ix86_veclib_handler)(enum built_in_function, tree, tree) = NULL;
2749 @@ -1810,18 +1840,26 @@
2750    switch (code)
2751      {
2752      case OPT_mmmx:
2753 -      ix86_isa_flags_explicit |= OPTION_MASK_ISA_MMX;
2754 -      if (!value)
2755 +      if (value)
2756         {
2757 +         ix86_isa_flags |= OPTION_MASK_ISA_MMX_SET;
2758 +         ix86_isa_flags_explicit |= OPTION_MASK_ISA_MMX_SET;
2759 +       }
2760 +      else
2761 +       {
2762           ix86_isa_flags &= ~OPTION_MASK_ISA_MMX_UNSET;
2763           ix86_isa_flags_explicit |= OPTION_MASK_ISA_MMX_UNSET;
2764         }
2765        return true;
2766  
2767      case OPT_m3dnow:
2768 -      ix86_isa_flags_explicit |= OPTION_MASK_ISA_3DNOW;
2769 -      if (!value)
2770 +      if (value)
2771         {
2772 +         ix86_isa_flags |= OPTION_MASK_ISA_3DNOW_SET;
2773 +         ix86_isa_flags_explicit |= OPTION_MASK_ISA_3DNOW_SET;
2774 +       }
2775 +      else
2776 +       {
2777           ix86_isa_flags &= ~OPTION_MASK_ISA_3DNOW_UNSET;
2778           ix86_isa_flags_explicit |= OPTION_MASK_ISA_3DNOW_UNSET;
2779         }
2780 @@ -1831,62 +1869,86 @@
2781        return false;
2782  
2783      case OPT_msse:
2784 -      ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE;
2785 -      if (!value)
2786 +      if (value)
2787         {
2788 +         ix86_isa_flags |= OPTION_MASK_ISA_SSE_SET;
2789 +         ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE_SET;
2790 +       }
2791 +      else
2792 +       {
2793           ix86_isa_flags &= ~OPTION_MASK_ISA_SSE_UNSET;
2794           ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE_UNSET;
2795         }
2796        return true;
2797  
2798      case OPT_msse2:
2799 -      ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE2;
2800 -      if (!value)
2801 +      if (value)
2802         {
2803 +         ix86_isa_flags |= OPTION_MASK_ISA_SSE2_SET;
2804 +         ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE2_SET;
2805 +       }
2806 +      else
2807 +       {
2808           ix86_isa_flags &= ~OPTION_MASK_ISA_SSE2_UNSET;
2809           ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE2_UNSET;
2810         }
2811        return true;
2812  
2813      case OPT_msse3:
2814 -      ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE3;
2815 -      if (!value)
2816 +      if (value)
2817         {
2818 +         ix86_isa_flags |= OPTION_MASK_ISA_SSE3_SET;
2819 +         ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE3_SET;
2820 +       }
2821 +      else
2822 +       {
2823           ix86_isa_flags &= ~OPTION_MASK_ISA_SSE3_UNSET;
2824           ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE3_UNSET;
2825         }
2826        return true;
2827  
2828      case OPT_mssse3:
2829 -      ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSSE3;
2830 -      if (!value)
2831 +      if (value)
2832         {
2833 +         ix86_isa_flags |= OPTION_MASK_ISA_SSSE3_SET;
2834 +         ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSSE3_SET;
2835 +       }
2836 +      else
2837 +       {
2838           ix86_isa_flags &= ~OPTION_MASK_ISA_SSSE3_UNSET;
2839           ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSSE3_UNSET;
2840         }
2841        return true;
2842  
2843      case OPT_msse4_1:
2844 -      ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4_1;
2845 -      if (!value)
2846 +      if (value)
2847         {
2848 +         ix86_isa_flags |= OPTION_MASK_ISA_SSE4_1_SET;
2849 +         ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4_1_SET;
2850 +       }
2851 +      else
2852 +       {
2853           ix86_isa_flags &= ~OPTION_MASK_ISA_SSE4_1_UNSET;
2854           ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4_1_UNSET;
2855         }
2856        return true;
2857  
2858      case OPT_msse4_2:
2859 -      ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4_2;
2860 -      if (!value)
2861 +      if (value)
2862         {
2863 +         ix86_isa_flags |= OPTION_MASK_ISA_SSE4_2_SET;
2864 +         ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4_2_SET;
2865 +       }
2866 +      else
2867 +       {
2868           ix86_isa_flags &= ~OPTION_MASK_ISA_SSE4_2_UNSET;
2869           ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4_2_UNSET;
2870         }
2871        return true;
2872  
2873      case OPT_msse4:
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;
2878        return true;
2879  
2880      case OPT_mno_sse4:
2881 @@ -1895,18 +1957,26 @@
2882        return true;
2883  
2884      case OPT_msse4a:
2885 -      ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4A;
2886 -      if (!value)
2887 +      if (value)
2888         {
2889 +         ix86_isa_flags |= OPTION_MASK_ISA_SSE4A_SET;
2890 +         ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4A_SET;
2891 +       }
2892 +      else
2893 +       {
2894           ix86_isa_flags &= ~OPTION_MASK_ISA_SSE4A_UNSET;
2895           ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4A_UNSET;
2896         }
2897        return true;
2898  
2899      case OPT_msse5:
2900 -      ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE5;
2901 -      if (!value)
2902 +      if (value)
2903         {
2904 +         ix86_isa_flags |= OPTION_MASK_ISA_SSE5_SET;
2905 +         ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE5_SET;
2906 +       }
2907 +      else
2908 +       {
2909           ix86_isa_flags &= ~OPTION_MASK_ISA_SSE5_UNSET;
2910           ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE5_UNSET;
2911         }
2912 @@ -2530,34 +2600,6 @@
2913    if (!TARGET_80387)
2914      target_flags |= MASK_NO_FANCY_MATH_387;
2915  
2916 -  /* Turn on SSE4A bultins for -msse5.  */
2917 -  if (TARGET_SSE5)
2918 -    ix86_isa_flags |= OPTION_MASK_ISA_SSE4A;
2919 -
2920 -  /* Turn on SSE4.1 builtins for -msse4.2.  */
2921 -  if (TARGET_SSE4_2)
2922 -    ix86_isa_flags |= OPTION_MASK_ISA_SSE4_1;
2923 -
2924 -  /* Turn on SSSE3 builtins for -msse4.1.  */
2925 -  if (TARGET_SSE4_1)
2926 -    ix86_isa_flags |= OPTION_MASK_ISA_SSSE3;
2927 -
2928 -  /* Turn on SSE3 builtins for -mssse3.  */
2929 -  if (TARGET_SSSE3)
2930 -    ix86_isa_flags |= OPTION_MASK_ISA_SSE3;
2931 -
2932 -  /* Turn on SSE3 builtins for -msse4a.  */
2933 -  if (TARGET_SSE4A)
2934 -    ix86_isa_flags |= OPTION_MASK_ISA_SSE3;
2935 -
2936 -  /* Turn on SSE2 builtins for -msse3.  */
2937 -  if (TARGET_SSE3)
2938 -    ix86_isa_flags |= OPTION_MASK_ISA_SSE2;
2939 -
2940 -  /* Turn on SSE builtins for -msse2.  */
2941 -  if (TARGET_SSE2)
2942 -    ix86_isa_flags |= OPTION_MASK_ISA_SSE;
2943 -
2944    /* Turn on MMX builtins for -msse.  */
2945    if (TARGET_SSE)
2946      {
2947 @@ -2565,10 +2607,6 @@
2948        x86_prefetch_sse = true;
2949      }
2950  
2951 -  /* Turn on MMX builtins for 3Dnow.  */
2952 -  if (TARGET_3DNOW)
2953 -    ix86_isa_flags |= OPTION_MASK_ISA_MMX;
2954 -
2955    /* Turn on popcnt instruction for -msse4.2 or -mabm.  */
2956    if (TARGET_SSE4_2 || TARGET_ABM)
2957      x86_popcnt = true;
2958 @@ -16736,7 +16774,8 @@
2959  int
2960  ix86_constant_alignment (tree exp, int align)
2961  {
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)
2965      {
2966        if (TYPE_MODE (TREE_TYPE (exp)) == DFmode && align < 64)
2967         return 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;
2974    int si_limit;
2975    int hi_limit;
2976 +  rtx orig = from;
2977  
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 @@
2981  
2982        if (GET_CODE (from) == BARRIER)
2983         {
2984 +         rtx next;
2985  
2986           found_barrier = from;
2987  
2988 @@ -3905,6 +3907,14 @@
2989              this kind of barrier.  */
2990           if (barrier_align (from) > 2)
2991             good_barrier = from;
2992 +
2993 +         /* If we are at the end of a hot/cold block, dump the constants
2994 +            here.  */
2995 +         next = NEXT_INSN (from);
2996 +         if (next
2997 +             && NOTE_P (next)
2998 +             && NOTE_KIND (next) == NOTE_INSN_SWITCH_TEXT_SECTIONS)
2999 +           break;
3000         }
3001  
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));
3011        else
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"
3019    [(set (pc)
3020         (label_ref (match_operand 0 "" "")))]
3021 -  "TARGET_SH1"
3022 +  "TARGET_SH1 && !find_reg_note (insn, REG_CROSSING_JUMP, NULL_RTX)"
3023    "*
3024  {
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));
3033  
3034 +  /* Shift the result back.  */
3035 +  emit_insn (gen_lshrsi3 (wdst, wdst, shift));
3036 +
3037    emit_move_insn (dst, gen_lowpart (mode, wdst));
3038  }
3039  
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)
3044 @@ -197,7 +197,7 @@
3045        template<typename _InputIterator>
3046          multimap(_InputIterator __first, _InputIterator __last)
3047         : _M_t()
3048 -        { _M_t._M_insert_unique(__first, __last); }
3049 +        { _M_t._M_insert_equal(__first, __last); }
3050  
3051        /**
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());
3059      }
3060  
3061 -  template<typename _InputIterator1, typename _InputIterator2>
3062 +  template<typename _InputIterator>
3063      inline bool
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,
3069 +                          std::__true_type)
3070      { return __check_sorted(__first, __last); }
3071  
3072 -  template<typename _InputIterator1, typename _InputIterator2>
3073 +  template<typename _InputIterator>
3074      inline bool
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)
3081      { return true; }
3082  
3083 -  template<typename _InputIterator1, typename _InputIterator2,
3084 -          typename _Predicate>
3085 +  template<typename _InputIterator, typename _Predicate>
3086      inline bool
3087 -    __check_sorted_set_aux(const _InputIterator1& __first,
3088 -                          const _InputIterator1& __last,
3089 -                          const _InputIterator2&, _Predicate __pred,
3090 -                          std::__true_type)
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); }
3095  
3096 -  template<typename _InputIterator1, typename _InputIterator2,
3097 -          typename _Predicate>
3098 +  template<typename _InputIterator, typename _Predicate>
3099      inline bool
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,
3105                            std::__false_type)
3106      { return true; }
3107  
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)
3112 @@ -329,7 +329,7 @@
3113      {
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));
3119      }
3120  
3121 @@ -340,7 +340,7 @@
3122      {
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));
3128      }
3129  
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)
3134 @@ -468,7 +468,7 @@
3135      {
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));
3141      }
3142  
3143 @@ -479,7 +479,7 @@
3144      {
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));
3150      }
3151  
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)
3156 @@ -1,3 +1,24 @@
3157 +2008-03-13  Dennis Czeremin  <dennis.czeremin@smiths-heimann.com>
3158 +
3159 +       PR libstdc++/35566
3160 +       * include/bits/stl_multimap.h (multimap<>::multimap(_InputIterator,
3161 +       _InputIterator)): Forward to _M_insert_equal, not _M_insert_unique.
3162 +
3163 +2008-03-13  Paolo Carlini  <pcarlini@suse.de>
3164 +
3165 +       PR libstdc++/35541
3166 +       * include/debug/functions.h (__check_sorted_set_aux): Fix signature.
3167 +       * testsuite/25_algorithms/set_difference/35541.cc: New.
3168 +
3169 +2008-03-06  Chris Jefferson  <chris@bubblescope.net>
3170 +           Paolo Carlini  <pcarlini@suse.de>
3171 +
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.
3177 +
3178  2008-03-05  Release Manager
3179  
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)
3185 @@ -0,0 +1,36 @@
3186 +// Copyright (C) 2008 Free Software Foundation, Inc.
3187 +//
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.
3193 +
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.
3198 +
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,
3202 +// USA.
3203 +
3204 +// { dg-options "-D_GLIBCXX_DEBUG" }
3205 +// { dg-do compile }
3206 +
3207 +// libstdc++/35541
3208 +
3209 +#include <set>
3210 +#include <iterator>
3211 +#include <algorithm>
3212 +
3213 +void test01()
3214 +{
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())); 
3221 +}
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)
3226 @@ -0,0 +1,33 @@
3227 +// { dg-do compile }
3228 +
3229 +// Copyright (C) 2008 Free Software Foundation, Inc.
3230 +//
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.
3236 +
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.
3241 +
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,
3245 +// USA.
3246 +
3247 +// Tuple
3248 +
3249 +#include <tr1/tuple>
3250 +
3251 +// libstdc++/35480
3252 +void test01()
3253 +{
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" }
3258 +}
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)
3264 @@ -0,0 +1,34 @@
3265 +// { dg-options "-std=gnu++0x" }
3266 +// { dg-do compile }
3267 +
3268 +// Copyright (C) 2008 Free Software Foundation, Inc.
3269 +//
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.
3275 +
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.
3280 +
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,
3284 +// USA.
3285 +
3286 +// Tuple
3287 +
3288 +#include <tuple>
3289 +
3290 +// libstdc++/35480
3291 +void test01()
3292 +{
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" }
3297 +}
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)
3303 @@ -1,3 +1,8 @@
3304 +2008-03-13  Andrew Haley  <aph@redhat.com>
3305 +
3306 +       * link.cc (_Jv_Linker::resolve_method_entry): Remove broken class
3307 +       loader test.
3308 +
3309  2008-03-05  Release Manager
3310  
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());
3318      }
3319  
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)
3327 -    {
3328 -      JArray<jclass> *found_args, *klass_args;
3329 -      jclass found_return, klass_return;
3330 -
3331 -      _Jv_GetTypesFromSignature (the_method,
3332 -                                found_class,
3333 -                                &found_args,
3334 -                                &found_return);
3335 -      _Jv_GetTypesFromSignature (the_method,
3336 -                                klass,
3337 -                                &klass_args,
3338 -                                &klass_return);
3339 -
3340 -      jclass *found_arg = elements (found_args);
3341 -      jclass *klass_arg = elements (klass_args);
3342 -
3343 -      for (int i = 0; i < found_args->length; i++)
3344 -       {
3345 -         if (*(found_arg++) != *(klass_arg++))
3346 -           throw new java::lang::LinkageError (JvNewStringLatin1 
3347 -             ("argument type mismatch with different loaders"));
3348 -       }
3349 -      if (found_return != klass_return)
3350 -       throw new java::lang::LinkageError (JvNewStringLatin1
3351 -         ("return type mismatch with different loaders"));
3352 -    }
3353 -  
3354    return the_method;
3355  }
3356  
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)
3361 @@ -1,3 +1,10 @@
3362 +2008-03-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3363 +
3364 +       * inclhack.def (solaris_math_10): New.
3365 +       * tests/base/iso/math_c99.h: Update.
3366 +
3367 +       * fixincl.x: Regenerate.
3368 +
3369  2008-03-05  Release Manager
3370  
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)
3376 @@ -2,11 +2,11 @@
3377   * 
3378   * DO NOT EDIT THIS FILE   (fixincl.x)
3379   * 
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
3384   */
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
3387   *
3388   * You must regenerate it.  Use the ./genfixes script.
3389   *
3390 @@ -15,25 +15,30 @@
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.
3393   *
3394 - * This file contains 211 fixup descriptions.
3395 + * This file contains 212 fixup descriptions.
3396   *
3397   * See README for more information.
3398   *
3399   *  inclhack copyright (c) 1998, 1999, 2000, 2001
3400   *  The Free Software Foundation, Inc.
3401   *
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.
3407   *  
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.
3414 + *  
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.
3419   *  
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.
3427   */
3428  
3429  /* * * * * * * * * * * * * * * * * * * * * * * * * *
3430 @@ -5886,6 +5891,45 @@
3431  
3432  /* * * * * * * * * * * * * * * * * * * * * * * * * *
3433   *
3434 + *  Description of Solaris_Math_10 fix
3435 + */
3436 +tSCC zSolaris_Math_10Name[] =
3437 +     "solaris_math_10";
3438 +
3439 +/*
3440 + *  File name selection pattern
3441 + */
3442 +tSCC zSolaris_Math_10List[] =
3443 +  "iso/math_c99.h\0";
3444 +/*
3445 + *  Machine/OS name selection pattern
3446 + */
3447 +#define apzSolaris_Math_10Machs (const char**)NULL
3448 +
3449 +/*
3450 + *  content selection pattern - do fix if pattern found
3451 + */
3452 +tSCC zSolaris_Math_10Select0[] =
3453 +       "@\\(#\\)math_c99.h[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
3454 +
3455 +#define    SOLARIS_MATH_10_TEST_CT  1
3456 +static tTestDesc aSolaris_Math_10Tests[] = {
3457 +  { TT_EGREP,    zSolaris_Math_10Select0, (regex_t*)NULL }, };
3458 +
3459 +/*
3460 + *  Fix Command Arguments for Solaris_Math_10
3461 + */
3462 +static const char* apzSolaris_Math_10Patch[] = {
3463 +    "format",
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]*\\}\\)",
3469 +    (char*)NULL };
3470 +
3471 +/* * * * * * * * * * * * * * * * * * * * * * * * * *
3472 + *
3473   *  Description of Solaris_Mutex_Init_1 fix
3474   */
3475  tSCC zSolaris_Mutex_Init_1Name[] =
3476 @@ -8567,9 +8611,9 @@
3477   *
3478   *  List of all fixes
3479   */
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
3485  
3486  /*
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 },
3499  
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 },
3504 +
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)
3512 @@ -77,3 +77,10 @@
3513  #undef isunordered
3514  #define        isunordered(x, y)       __builtin_isunordered(x, y)
3515  #endif  /* SOLARIS_MATH_9_CHECK */
3516 +
3517 +
3518 +#if defined( SOLARIS_MATH_10_CHECK )
3519 +#pragma ident  "@(#)math_c99.h 1.12    07/01/21 SMI"
3520 +#undef isinf
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 @@
3528  };
3529  
3530  /*
3531 + * On Solaris 11, if you do isinf(NaN) you'll get a floating point
3532 + * exception.  Provide an alternative using GCC's builtin.
3533 + */
3534 +
3535 +fix = {
3536 +    hackname  = solaris_math_10;
3537 +    select    = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
3538 +    files     = iso/math_c99.h;
3539 +    c_fix     = format;
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]*\\}\\)";
3545 +    test_text =
3546 +    '#pragma ident     "@(#)math_c99.h 1.12    07/01/21 SMI"'"\n"
3547 +    "#undef    isinf\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); })";
3552 +};
3553 +
3554 +/*
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
This page took 0.354545 seconds and 3 git commands to generate.