Changeset f81e00b for patches


Ignore:
Timestamp:
Feb 22, 2009, 10:28:15 PM (16 years ago)
Author:
Jim Gifford <clfs@…>
Branches:
clfs-1.2, clfs-2.1, clfs-3.0.0-systemd, clfs-3.0.0-sysvinit, master, systemd, sysvinit
Children:
10b98b1
Parents:
54f612f
Message:

Updated GCC Branch Update Patch to -2

File:
1 moved

Legend:

Unmodified
Added
Removed
  • patches/gcc-4.3.3-branch_update-2.patch

    r54f612f rf81e00b  
    11Submitted By: Jim Gifford (jim at cross-lfs dot org)
    2 Date: 02-03-2009
     2Date: 02-22-2009
    33Initial Package Version: 4.3.3
    44Origin: Upstream
     
    5959diff -Naur gcc-4.3.3.orig/gcc/calls.c gcc-4.3.3/gcc/calls.c
    6060--- gcc-4.3.3.orig/gcc/calls.c  2008-06-24 00:58:17.000000000 -0700
    61 +++ gcc-4.3.3/gcc/calls.c       2009-01-29 02:05:17.651873000 -0800
     61+++ gcc-4.3.3/gcc/calls.c       2009-02-21 03:08:24.357177000 -0800
    6262@@ -978,7 +978,6 @@
    6363            && targetm.calls.split_complex_arg (argtype))
     
    6868            j += inc;
    6969            args[j].tree_value = build1 (IMAGPART_EXPR, subtype, arg);
     70@@ -3678,10 +3677,10 @@
     71 #ifdef ARGS_GROW_DOWNWARD
     72              /* stack_slot is negative, but we want to index stack_usage_map
     73                 with positive values.  */
     74-             upper_bound = -argvec[argnum].locate.offset.constant + 1;
     75+             upper_bound = -argvec[argnum].locate.slot_offset.constant + 1;
     76              lower_bound = upper_bound - argvec[argnum].locate.size.constant;
     77 #else
     78-             lower_bound = argvec[argnum].locate.offset.constant;
     79+             lower_bound = argvec[argnum].locate.slot_offset.constant;
     80              upper_bound = lower_bound + argvec[argnum].locate.size.constant;
     81 #endif
     82 
     83diff -Naur gcc-4.3.3.orig/gcc/c-common.c gcc-4.3.3/gcc/c-common.c
     84--- gcc-4.3.3.orig/gcc/c-common.c       2008-11-12 14:08:01.000000000 -0800
     85+++ gcc-4.3.3/gcc/c-common.c    2009-02-08 11:02:56.473953000 -0800
     86@@ -5534,7 +5534,12 @@
     87 {
     88   tree decl = *node;
     89 
     90-  if ((TREE_CODE (decl) == FUNCTION_DECL && DECL_INITIAL (decl))
     91+  if (TREE_CODE (decl) != FUNCTION_DECL && TREE_CODE (decl) != VAR_DECL)
     92+    {
     93+      warning (OPT_Wattributes, "%qE attribute ignored", name);
     94+      *no_add_attrs = true;
     95+    }
     96+  else if ((TREE_CODE (decl) == FUNCTION_DECL && DECL_INITIAL (decl))
     97       || (TREE_CODE (decl) != FUNCTION_DECL
     98          && TREE_PUBLIC (decl) && !DECL_EXTERNAL (decl))
     99       /* A static variable declaration is always a tentative definition,
     100@@ -5782,7 +5787,7 @@
     101 
     102   *no_add_attrs = true;
     103 
     104-  if (!DECL_THREAD_LOCAL_P (decl))
     105+  if (TREE_CODE (decl) != VAR_DECL || !DECL_THREAD_LOCAL_P (decl))
     106     {
     107       warning (OPT_Wattributes, "%qE attribute ignored", name);
     108       return NULL_TREE;
     109diff -Naur gcc-4.3.3.orig/gcc/c-decl.c gcc-4.3.3/gcc/c-decl.c
     110--- gcc-4.3.3.orig/gcc/c-decl.c 2008-06-26 08:42:07.000000000 -0700
     111+++ gcc-4.3.3/gcc/c-decl.c      2009-02-10 08:43:49.527149000 -0800
     112@@ -4386,12 +4386,20 @@
     113              }
     114            else if (decl_context == FIELD)
     115              {
     116-               if (pedantic && !flag_isoc99 && !in_system_header)
     117+               bool flexible_array_member = false;
     118+               const struct c_declarator *t = declarator;
     119+               while (t->kind == cdk_attrs)
     120+                 t = t->declarator;
     121+               flexible_array_member = (t->kind == cdk_id);
     122+               if (flexible_array_member
     123+                   && pedantic && !flag_isoc99 && !in_system_header)
     124                  pedwarn ("ISO C90 does not support flexible array members");
     125 
     126                /* ISO C99 Flexible array members are effectively
     127                   identical to GCC's zero-length array extension.  */
     128-               itype = build_range_type (sizetype, size_zero_node, NULL_TREE);
     129+               if (flexible_array_member || array_parm_vla_unspec_p)
     130+                 itype = build_range_type (sizetype, size_zero_node,
     131+                                           NULL_TREE);
     132              }
     133            else if (decl_context == PARM)
     134              {
     135@@ -5362,6 +5370,8 @@
     136            error ("redefinition of %<union %E%>", name);
     137          else
     138            error ("redefinition of %<struct %E%>", name);
     139+         /* Don't create structures using a name already in use.  */
     140+         ref = NULL_TREE;
     141        }
     142       else if (C_TYPE_BEING_DEFINED (ref))
     143        {
    70144diff -Naur gcc-4.3.3.orig/gcc/ChangeLog gcc-4.3.3/gcc/ChangeLog
    71145--- gcc-4.3.3.orig/gcc/ChangeLog        2009-01-24 02:16:13.000000000 -0800
    72 +++ gcc-4.3.3/gcc/ChangeLog     2009-02-02 12:31:19.548659000 -0800
    73 @@ -1,3 +1,138 @@
     146+++ gcc-4.3.3/gcc/ChangeLog     2009-02-21 03:08:24.357177000 -0800
     147@@ -1,3 +1,262 @@
     148+2009-02-21  Uros Bizjak  <ubizjak@gmail.com>
     149+
     150+       Backport from mainline:
     151+       2009-02-20  Jaka Mocnik  <jaka@xlab.si>
     152+
     153+       * calls.c (emit_library_call_value_1): Use slot_offset instead of
     154+       offset when calculating bounds for indexing stack_usage_map.  Fixes
     155+       a buffer overflow with certain target setups.
     156+
     157+2009-02-20  Steve Ellcey  <sje@cup.hp.com>
     158+
     159+       PR target/38056
     160+       * config/ia64/ia64.c (ia64_function_ok_for_sibcall): Check
     161+       TARGET_CONST_GP.
     162+
     163+2009-02-19  Uros Bizjak  <ubizjak@gmail.com>
     164+
     165+       PR target/39228
     166+       * config/i386/i386.md (isinfxf2): Split from isinf<mode>2.
     167+       (UNSPEC_FXAM_MEM): New unspec.
     168+       (fxam<mode>2_i387_with_temp): New insn and split pattern.
     169+       (isinf<mode>2): Use MODEF mode iterator.  Force operand[1] through
     170+       memory using fxam<mode>2_i387_with_temp to remove excess precision.
     171+
     172+2009-02-17  Uros Bizjak  <ubizjak@gmail.com>
     173+
     174+       * config/soft-fp/double.h: Update from glibc CVS.
     175+
     176+2009-02-17  Joseph Myers  <joseph@codesourcery.com>
     177+
     178+       PR c/35446
     179+       * c-parser.c (c_parser_braced_init): Call pop_init_level when
     180+       skipping until next close brace.
     181+
     182+2009-02-13  Joseph Myers  <joseph@codesourcery.com>
     183+
     184+       PR c/35444
     185+       * c-parser.c (c_parser_parms_list_declarator): Discard pending
     186+       sizes on syntax error after some arguments have been parsed.
     187+
     188+2009-02-11  Uros Bizjak  <ubizjak@gmail.com>
     189+           Jakub Jelinek  <jakub@redhat.com>
     190+
     191+       PR target/39118
     192+       * config/i386/i386.md (UNSPEC_MEMORY_BLOCKAGE): New constant.
     193+       (memory_blockage): New expander.
     194+       (*memory_blockage): New insn pattern.
     195+       * config/i386/i386.c (ix86_expand_prologue): Use memory_blockage
     196+       instead of general blockage at the end of function prologue when
     197+       frame pointer is used to access red zone area.  Do not emit blockage
     198+       when profiling, it is emitted in generic code.
     199+       (ix86_expand_epilogue): Emit memory_blockage at the beginning of
     200+       function epilogue when frame pointer is used to access red zone area.
     201+
     202+2009-02-10  Steve Ellcey  <sje@cup.hp.com>
     203+
     204+       PR c/39084
     205+       * c-decl.c (start_struct): Return NULL on error.
     206+
     207+2009-02-10  Uros Bizjak  <ubizjak@gmail.com>
     208+
     209+       PR target/39118
     210+       * config/i386/i386.c (expand_prologue): Emit blockage at the end
     211+       of function prologue when frame pointer is used to access
     212+       red zone area.
     213+
     214+2009-02-09  Janis Johnson  <janis187@us.ibm.com>
     215+
     216+       PR c/39035
     217+       * real.c (do_compare): Special-case compare of zero against
     218+       decimal float value.
     219+
     220+2009-02-08  Joseph Myers  <joseph@codesourcery.com>
     221+
     222+       PR c/35434
     223+       * c-common.c (handle_alias_attribute): Disallow attribute for
     224+       anything not a FUNCTION_DECL or VAR_DECL.
     225+
     226+2009-02-08  Joseph Myers  <joseph@codesourcery.com>
     227+
     228+       PR c/36432
     229+       * c-decl.c (grokdeclarator): Don't treat [] declarators in fields
     230+       as indicating flexible array members unless the field itself is
     231+       being declarared as the incomplete array.
     232+
     233+2009-02-07  Kaz Kojima  <kkojima@gcc.gnu.org>
     234+
     235+       Backport from mainline:
     236+       2009-02-05  Kaz Kojima  <kkojima@gcc.gnu.org>
     237+
     238+       PR target/38991
     239+       * config/sh/predicates.md (general_movsrc_operand): Don't check
     240+       the subreg of system registers here.
     241+
     242+2009-02-05  Joseph Myers  <joseph@codesourcery.com>
     243+
     244+       PR c/35435
     245+       * c-common.c (handle_tls_model_attribute): Ignore attribute for
     246+       non-VAR_DECLs without checking DECL_THREAD_LOCAL_P.
     247+
     248+2009-02-05  Richard Guenther  <rguenther@suse.de>
     249+
     250+       Backport from mainline
     251+       2009-02-05  Daniel Berlin  <dberlin@dberlin.org>
     252+           Richard Guenther  <rguenther@suse.de>
     253+
     254+       PR tree-optimization/39100
     255+       * tree-ssa-structalias.c (do_ds_constraint): Actually do what the
     256+       comment says and add edges.
     257+
     258+2009-02-04  Ramana Radhakrishnan  <ramana.r@gmail.com>
     259+
     260+       PR rtl-optimization/39076
     261+       Backport from mainline:
     262+       2008-06-28  Andrew Jenner  <andrew@codesourcery.com>
     263+       
     264+       * regrename.c (build_def_use): Don't copy RTX.
     265+
     266+2009-02-04  Joseph Myers  <joseph@codesourcery.com>
     267+
     268+       PR c/35433
     269+       * c-typeck.c (composite_type): Set TYPE_SIZE and TYPE_SIZE_UNIT
     270+       for composite type involving a zero-length array type.
     271+
    74272+2009-02-02  Catherine Moore  <clm@codesourcery.com>
    75273+
     
    210408 
    211409        * GCC 4.3.3 released.
    212 @@ -5,8 +140,7 @@
     410@@ -5,8 +264,7 @@
    213411 2009-01-20  Joseph Myers  <joseph@codesourcery.com>
    214412 
     
    220418 2009-01-19  Richard Guenther  <rguenther@suse.de>
    221419 
    222 @@ -41,7 +175,8 @@
     420@@ -41,7 +299,8 @@
    223421       
    224422 2009-01-11  Matthias Klose  <doko@ubuntu.com>
     
    230428 
    231429        * config/i386/i386.md (*strmovsi_1): Simplify asm alternatives.
    232 @@ -509,8 +644,8 @@
     430@@ -509,8 +768,8 @@
    233431        PR tree-optimization/37102
    234432        * tree-outof-ssa.c (remove_gimple_phi_args): Remove all the PHI args 
     
    241439 
    242440 2008-10-08  Simon Martin  <simartin@users.sourceforge.net>
    243 @@ -986,8 +1121,10 @@
     441@@ -986,8 +1245,10 @@
    244442 
    245443        (MFC_MIN_DMA_LIST_ELEMENTS): New define.
     
    475673diff -Naur gcc-4.3.3.orig/gcc/config/i386/i386.c gcc-4.3.3/gcc/config/i386/i386.c
    476674--- gcc-4.3.3.orig/gcc/config/i386/i386.c       2008-08-28 06:31:33.000000000 -0700
    477 +++ gcc-4.3.3/gcc/config/i386/i386.c    2009-01-24 07:31:13.971031000 -0800
    478 @@ -14773,6 +14773,22 @@
     675+++ gcc-4.3.3/gcc/config/i386/i386.c    2009-02-11 03:53:47.721500000 -0800
     676@@ -6483,14 +6483,21 @@
     677         insn = emit_insn (gen_set_got (pic_offset_table_rtx));
     678     }
     679 
     680-  /* Prevent function calls from being scheduled before the call to mcount.
     681-     In the pic_reg_used case, make sure that the got load isn't deleted.  */
     682-  if (current_function_profile)
     683-    {
     684-      if (pic_reg_used)
     685-       emit_insn (gen_prologue_use (pic_offset_table_rtx));
     686-      emit_insn (gen_blockage ());
     687-    }
     688+  /* In the pic_reg_used case, make sure that the got load isn't deleted
     689+     when mcount needs it.  Blockage to avoid call movement across mcount
     690+     call is emitted in generic code after the NOTE_INSN_PROLOGUE_END
     691+     note.  */
     692+  if (current_function_profile && pic_reg_used)
     693+    emit_insn (gen_prologue_use (pic_offset_table_rtx));
     694+
     695+  /* Prevent instructions from being scheduled into register save push
     696+     sequence when access to the redzone area is done through frame pointer.
     697+     The offset betweeh the frame pointer and the stack pointer is calculated
     698+     relative to the value of the stack pointer at the end of the function
     699+     prologue, and moving instructions that access redzone area via frame
     700+     pointer inside push sequence violates this assumption.  */
     701+  if (frame_pointer_needed && frame.red_zone_size)
     702+    emit_insn (gen_memory_blockage ());
     703 
     704   /* Emit cld instruction if stringops are used in the function.  */
     705   if (TARGET_CLD && ix86_current_function_needs_cld)
     706@@ -6539,6 +6546,11 @@
     707 
     708   ix86_compute_frame_layout (&frame);
     709 
     710+  /* See the comment about red zone and frame
     711+     pointer usage in ix86_expand_prologue.  */
     712+  if (frame_pointer_needed && frame.red_zone_size)
     713+    emit_insn (gen_memory_blockage ());
     714+
     715   /* Calculate start of saved registers relative to ebp.  Special care
     716      must be taken for the normal return case of a function using
     717      eh_return: the eax and edx registers are marked as saved, but not
     718@@ -14773,6 +14785,22 @@
    479719       destexp = gen_rtx_PLUS (Pmode, destptr, countreg);
    480720       srcexp = gen_rtx_PLUS (Pmode, srcptr, countreg);
     
    499739                          destexp, srcexp));
    500740 }
    501 @@ -14781,8 +14797,8 @@
     741@@ -14781,8 +14809,8 @@
    502742    Arguments have same meaning as for previous function */
    503743 static void
     
    510750   rtx destexp;
    511751   rtx countreg;
    512 @@ -14799,6 +14815,15 @@
     752@@ -14799,6 +14827,15 @@
    513753     }
    514754   else
     
    526766 }
    527767 
    528 @@ -15871,15 +15896,15 @@
     768@@ -15871,15 +15908,15 @@
    529769       break;
    530770     case rep_prefix_8_byte:
     
    547787diff -Naur gcc-4.3.3.orig/gcc/config/i386/i386.md gcc-4.3.3/gcc/config/i386/i386.md
    548788--- gcc-4.3.3.orig/gcc/config/i386/i386.md      2009-01-11 09:29:23.000000000 -0800
    549 +++ gcc-4.3.3/gcc/config/i386/i386.md   2009-01-29 02:05:17.651873000 -0800
    550 @@ -1397,7 +1397,7 @@
     789+++ gcc-4.3.3/gcc/config/i386/i386.md   2009-02-19 04:44:40.878358000 -0800
     790@@ -67,12 +67,13 @@
     791    (UNSPEC_DEF_CFA             15)
     792    (UNSPEC_SET_RIP             16)
     793    (UNSPEC_SET_GOT_OFFSET      17)
     794+   (UNSPEC_MEMORY_BLOCKAGE     18)
     795 
     796    ; TLS support
     797-   (UNSPEC_TP                  18)
     798-   (UNSPEC_TLS_GD              19)
     799-   (UNSPEC_TLS_LD_BASE         20)
     800-   (UNSPEC_TLSDESC             21)
     801+   (UNSPEC_TP                  20)
     802+   (UNSPEC_TLS_GD              21)
     803+   (UNSPEC_TLS_LD_BASE         22)
     804+   (UNSPEC_TLSDESC             23)
     805 
     806    ; Other random patterns
     807    (UNSPEC_SCAS                        30)
     808@@ -144,6 +145,7 @@
     809    (UNSPEC_FPREM1_U            91)
     810 
     811    (UNSPEC_C2_FLAG             95)
     812+   (UNSPEC_FXAM_MEM            96)
     813 
     814    ; SSP patterns
     815    (UNSPEC_SP_SET              100)
     816@@ -1397,7 +1399,7 @@
    551817          gcc_unreachable ();
    552818        }
     
    557823 
    558824     case TYPE_MMXMOV:
    559 @@ -1415,7 +1415,7 @@
     825@@ -1415,7 +1417,7 @@
    560826 }
    561827   [(set (attr "type")
     
    566832              (const_string "mmxmov")
    567833            (eq_attr "alternative" "6")
    568 @@ -2231,7 +2231,7 @@
     834@@ -2231,7 +2233,7 @@
    569835       return "movq\t{%1, %0|%0, %1}";
    570836 
     
    575841 
    576842     case TYPE_MULTI:
    577 @@ -2252,7 +2252,7 @@
     843@@ -2252,7 +2254,7 @@
    578844 }
    579845   [(set (attr "type")
     
    584850              (const_string "mmxmov")
    585851            (eq_attr "alternative" "11")
    586 @@ -15001,7 +15001,7 @@
     852@@ -14877,6 +14879,24 @@
     853   ""
     854   [(set_attr "length" "0")])
     855 
     856+;; Do not schedule instructions accessing memory across this point.
     857+
     858+(define_expand "memory_blockage"
     859+  [(set (match_dup 0)
     860+       (unspec:BLK [(match_dup 0)] UNSPEC_MEMORY_BLOCKAGE))]
     861+  ""
     862+{
     863+  operands[0] = gen_rtx_MEM (BLKmode, gen_rtx_SCRATCH (Pmode));
     864+  MEM_VOLATILE_P (operands[0]) = 1;
     865+})
     866+
     867+(define_insn "*memory_blockage"
     868+  [(set (match_operand:BLK 0 "" "")
     869+       (unspec:BLK [(match_dup 0)] UNSPEC_MEMORY_BLOCKAGE))]
     870+  ""
     871+  ""
     872+  [(set_attr "length" "0")])
     873+
     874 ;; As USE insns aren't meaningful after reload, this is used instead
     875 ;; to prevent deleting instructions setting registers for PIC code
     876 (define_insn "prologue_use"
     877@@ -15001,7 +15021,7 @@
    587878 
    588879 (define_insn "set_rip_rex64"
     
    593884   "lea{q}\t{%l1(%%rip), %0|%0, %l1[rip]}"
    594885   [(set_attr "type" "lea")
    595 @@ -15009,7 +15009,9 @@
     886@@ -15009,7 +15029,9 @@
    596887 
    597888 (define_insn "set_got_offset_rex64"
     
    604895   "movabs{q}\t{$_GLOBAL_OFFSET_TABLE_-%l1, %0|%0, OFFSET FLAT:_GLOBAL_OFFSET_TABLE_-%l1}"
    605896   [(set_attr "type" "imov")
     897@@ -18472,9 +18494,56 @@
     898    (set_attr "unit" "i387")
     899    (set_attr "mode" "<MODE>")])
     900 
     901+(define_insn_and_split "fxam<mode>2_i387_with_temp"
     902+  [(set (match_operand:HI 0 "register_operand" "")
     903+       (unspec:HI
     904+         [(match_operand:MODEF 1 "memory_operand" "")]
     905+         UNSPEC_FXAM_MEM))]
     906+  "TARGET_USE_FANCY_MATH_387
     907+   && !(reload_completed || reload_in_progress)"
     908+  "#"
     909+  "&& 1"
     910+  [(set (match_dup 2)(match_dup 1))
     911+   (set (match_dup 0)
     912+       (unspec:HI [(match_dup 2)] UNSPEC_FXAM))]
     913+{
     914+  operands[2] = gen_reg_rtx (<MODE>mode);
     915+
     916+  MEM_VOLATILE_P (operands[1]) = 1;
     917+}
     918+  [(set_attr "type" "multi")
     919+   (set_attr "unit" "i387")
     920+   (set_attr "mode" "<MODE>")])
     921+
     922+(define_expand "isinfxf2"
     923+  [(use (match_operand:SI 0 "register_operand" ""))
     924+   (use (match_operand:XF 1 "register_operand" ""))]
     925+  "TARGET_USE_FANCY_MATH_387
     926+   && TARGET_C99_FUNCTIONS"
     927+{
     928+  rtx mask = GEN_INT (0x45);
     929+  rtx val = GEN_INT (0x05);
     930+
     931+  rtx cond;
     932+
     933+  rtx scratch = gen_reg_rtx (HImode);
     934+  rtx res = gen_reg_rtx (QImode);
     935+
     936+  emit_insn (gen_fxamxf2_i387 (scratch, operands[1]));
     937+
     938+  emit_insn (gen_andqi_ext_0 (scratch, scratch, mask));
     939+  emit_insn (gen_cmpqi_ext_3 (scratch, val));
     940+  cond = gen_rtx_fmt_ee (EQ, QImode,
     941+                        gen_rtx_REG (CCmode, FLAGS_REG),
     942+                        const0_rtx);
     943+  emit_insn (gen_rtx_SET (VOIDmode, res, cond));
     944+  emit_insn (gen_zero_extendqisi2 (operands[0], res));
     945+  DONE;
     946+})
     947+
     948 (define_expand "isinf<mode>2"
     949   [(use (match_operand:SI 0 "register_operand" ""))
     950-   (use (match_operand:X87MODEF 1 "register_operand" ""))]
     951+   (use (match_operand:MODEF 1 "nonimmediate_operand" ""))]
     952   "TARGET_USE_FANCY_MATH_387
     953    && TARGET_C99_FUNCTIONS
     954    && !(SSE_FLOAT_MODE_P (<MODE>mode) && TARGET_SSE_MATH)"
     955@@ -18487,7 +18556,18 @@
     956   rtx scratch = gen_reg_rtx (HImode);
     957   rtx res = gen_reg_rtx (QImode);
     958 
     959-  emit_insn (gen_fxam<mode>2_i387 (scratch, operands[1]));
     960+  /* Remove excess precision by forcing value through memory. */
     961+  if (memory_operand (operands[1], VOIDmode))
     962+    emit_insn (gen_fxam<mode>2_i387_with_temp (scratch, operands[1]));
     963+  else
     964+    {
     965+      int slot = virtuals_instantiated ? SLOT_TEMP : SLOT_VIRTUAL;
     966+      rtx temp = assign_386_stack_local (<MODE>mode, slot);
     967+
     968+      emit_move_insn (temp, operands[1]);
     969+      emit_insn (gen_fxam<mode>2_i387_with_temp (scratch, temp));
     970+    }
     971+
     972   emit_insn (gen_andqi_ext_0 (scratch, scratch, mask));
     973   emit_insn (gen_cmpqi_ext_3 (scratch, val));
     974   cond = gen_rtx_fmt_ee (EQ, QImode,
     975diff -Naur gcc-4.3.3.orig/gcc/config/ia64/ia64.c gcc-4.3.3/gcc/config/ia64/ia64.c
     976--- gcc-4.3.3.orig/gcc/config/ia64/ia64.c       2008-07-01 13:59:19.000000000 -0700
     977+++ gcc-4.3.3/gcc/config/ia64/ia64.c    2009-02-20 09:18:20.718912000 -0800
     978@@ -4328,8 +4328,9 @@
     979     return false;
     980 
     981   /* We must always return with our current GP.  This means we can
     982-     only sibcall to functions defined in the current module.  */
     983-  return decl && (*targetm.binds_local_p) (decl);
     984+     only sibcall to functions defined in the current module unless
     985+     TARGET_CONST_GP is set to true.  */
     986+  return (decl && (*targetm.binds_local_p) (decl)) || TARGET_CONST_GP;
     987 }
     988 
     989
     990 
    606991diff -Naur gcc-4.3.3.orig/gcc/config/mips/sde.h gcc-4.3.3/gcc/config/mips/sde.h
    607992--- gcc-4.3.3.orig/gcc/config/mips/sde.h        2007-09-19 10:13:33.000000000 -0700
     
    6631048 #ifdef pa64
    6641049         .level  2.0w
     1050diff -Naur gcc-4.3.3.orig/gcc/config/sh/predicates.md gcc-4.3.3/gcc/config/sh/predicates.md
     1051--- gcc-4.3.3.orig/gcc/config/sh/predicates.md  2007-08-02 03:49:31.000000000 -0700
     1052+++ gcc-4.3.3/gcc/config/sh/predicates.md       2009-02-07 16:53:30.513258000 -0800
     1053@@ -1,5 +1,5 @@
     1054 ;; Predicate definitions for Renesas / SuperH SH.
     1055-;; Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
     1056+;; Copyright (C) 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
     1057 ;;
     1058 ;; This file is part of GCC.
     1059 ;;
     1060@@ -392,12 +392,6 @@
     1061        return 0;
     1062     }
     1063 
     1064-  if ((mode == QImode || mode == HImode)
     1065-      && (GET_CODE (op) == SUBREG
     1066-         && GET_CODE (XEXP (op, 0)) == REG
     1067-         && system_reg_operand (XEXP (op, 0), mode)))
     1068-    return 0;
     1069-
     1070   if (TARGET_SHMEDIA
     1071       && (GET_CODE (op) == PARALLEL || GET_CODE (op) == CONST_VECTOR)
     1072       && sh_rep_vec (op, mode))
     1073diff -Naur gcc-4.3.3.orig/gcc/config/soft-fp/double.h gcc-4.3.3/gcc/config/soft-fp/double.h
     1074--- gcc-4.3.3.orig/gcc/config/soft-fp/double.h  2007-05-03 12:05:39.000000000 -0700
     1075+++ gcc-4.3.3/gcc/config/soft-fp/double.h       2009-02-17 05:54:43.208764000 -0800
     1076@@ -1,6 +1,7 @@
     1077 /* Software floating-point emulation.
     1078    Definitions for IEEE Double Precision
     1079-   Copyright (C) 1997,1998,1999,2006,2007 Free Software Foundation, Inc.
     1080+   Copyright (C) 1997, 1998, 1999, 2006, 2007, 2008, 2009
     1081+   Free Software Foundation, Inc.
     1082    This file is part of the GNU C Library.
     1083    Contributed by Richard Henderson (rth@cygnus.com),
     1084                  Jakub Jelinek (jj@ultra.linux.cz),
     1085@@ -203,13 +204,13 @@
     1086 
     1087 #define FP_UNPACK_SEMIRAW_D(X,val)     \
     1088   do {                                 \
     1089-    _FP_UNPACK_RAW_2(1,X,val);         \
     1090+    _FP_UNPACK_RAW_1(D,X,val);         \
     1091     _FP_UNPACK_SEMIRAW(D,1,X);         \
     1092   } while (0)
     1093 
     1094 #define FP_UNPACK_SEMIRAW_DP(X,val)    \
     1095   do {                                 \
     1096-    _FP_UNPACK_RAW_2_P(1,X,val);       \
     1097+    _FP_UNPACK_RAW_1_P(D,X,val);       \
     1098     _FP_UNPACK_SEMIRAW(D,1,X);         \
     1099   } while (0)
     1100 
    6651101diff -Naur gcc-4.3.3.orig/gcc/config/sparc/linux64.h gcc-4.3.3/gcc/config/sparc/linux64.h
    6661102--- gcc-4.3.3.orig/gcc/config/sparc/linux64.h   2007-10-18 21:29:38.000000000 -0700
     
    7191155diff -Naur gcc-4.3.3.orig/gcc/cp/ChangeLog gcc-4.3.3/gcc/cp/ChangeLog
    7201156--- gcc-4.3.3.orig/gcc/cp/ChangeLog     2009-01-24 02:15:39.000000000 -0800
    721 +++ gcc-4.3.3/gcc/cp/ChangeLog  2009-02-03 07:56:05.128711000 -0800
    722 @@ -1,3 +1,26 @@
     1157+++ gcc-4.3.3/gcc/cp/ChangeLog  2009-02-20 07:21:51.443104000 -0800
     1158@@ -1,3 +1,44 @@
     1159+2009-02-20  Jason Merrill  <jason@redhat.com>
     1160+
     1161+       PR c++/39225
     1162+       * decl.c (grokdeclarator): Handle ~identifier.
     1163+
     1164+2009-02-17  Jason Merrill  <jason@redhat.com>
     1165+
     1166+       PR c++/38950
     1167+       * pt.c (unify)[TEMPLATE_PARM_INDEX]: Convert to the tsubsted type.
     1168+
     1169+2009-02-13  Jason Merrill  <jason@redhat.com>
     1170+
     1171+       PR c++/39070
     1172+       * semantics.c (finish_call_expr): Change koenig_p parm to int.
     1173+       If -1, don't set KOENIG_LOOKUP_P but do keep hidden candidates.
     1174+       * cp-tree.h: Adjust prototype.
     1175+       * pt.c (tsubst_copy_and_build) [CALL_EXPR]: Pass -1.
     1176+
    7231177+2009-02-03  Paolo Bonzini  <bonzini@gnu.org>
    7241178+
     
    7471201 
    7481202        * GCC 4.3.3 released.
     1203diff -Naur gcc-4.3.3.orig/gcc/cp/cp-tree.h gcc-4.3.3/gcc/cp/cp-tree.h
     1204--- gcc-4.3.3.orig/gcc/cp/cp-tree.h     2009-01-15 14:34:20.000000000 -0800
     1205+++ gcc-4.3.3/gcc/cp/cp-tree.h  2009-02-13 13:53:38.261573000 -0800
     1206@@ -4623,7 +4623,7 @@
     1207 extern tree finish_stmt_expr                   (tree, bool);
     1208 extern tree stmt_expr_value_expr               (tree);
     1209 extern tree perform_koenig_lookup              (tree, tree);
     1210-extern tree finish_call_expr                   (tree, tree, bool, bool);
     1211+extern tree finish_call_expr                   (tree, tree, bool, int);
     1212 extern tree finish_increment_expr              (tree, enum tree_code);
     1213 extern tree finish_this_expr                   (void);
     1214 extern tree finish_pseudo_destructor_expr       (tree, tree, tree);
     1215diff -Naur gcc-4.3.3.orig/gcc/cp/decl.c gcc-4.3.3/gcc/cp/decl.c
     1216--- gcc-4.3.3.orig/gcc/cp/decl.c        2008-09-30 12:56:13.000000000 -0700
     1217+++ gcc-4.3.3/gcc/cp/decl.c     2009-02-20 07:21:51.443104000 -0800
     1218@@ -7512,7 +7512,9 @@
     1219                    }
     1220 
     1221                  type = TREE_OPERAND (decl, 0);
     1222-                 name = IDENTIFIER_POINTER (constructor_name (type));
     1223+                 if (TYPE_P (type))
     1224+                   type = constructor_name (type);
     1225+                 name = IDENTIFIER_POINTER (type);
     1226                  dname = decl;
     1227                }
     1228                break;
     1229@@ -8009,8 +8011,9 @@
     1230       switch (TREE_CODE (unqualified_id))
     1231        {
     1232        case BIT_NOT_EXPR:
     1233-         unqualified_id
     1234-           = constructor_name (TREE_OPERAND (unqualified_id, 0));
     1235+         unqualified_id = TREE_OPERAND (unqualified_id, 0);
     1236+         if (TYPE_P (unqualified_id))
     1237+           unqualified_id = constructor_name (unqualified_id);
     1238          break;
     1239 
     1240        case IDENTIFIER_NODE:
     1241@@ -8856,21 +8859,20 @@
     1242            /* Check that the name used for a destructor makes sense.  */
     1243            if (sfk == sfk_destructor)
     1244              {
     1245+               tree uqname = id_declarator->u.id.unqualified_name;
     1246+
     1247                if (!ctype)
     1248                  {
     1249                    gcc_assert (friendp);
     1250                    error ("expected qualified name in friend declaration "
     1251-                          "for destructor %qD",
     1252-                          id_declarator->u.id.unqualified_name);
     1253+                          "for destructor %qD", uqname);
     1254                    return error_mark_node;
     1255                  }
     1256 
     1257-               if (!same_type_p (TREE_OPERAND
     1258-                                 (id_declarator->u.id.unqualified_name, 0),
     1259-                                 ctype))
     1260+               if (!check_dtor_name (ctype, TREE_OPERAND (uqname, 0)))
     1261                  {
     1262                    error ("declaration of %qD as member of %qT",
     1263-                          id_declarator->u.id.unqualified_name, ctype);
     1264+                          uqname, ctype);
     1265                    return error_mark_node;
     1266                  }
     1267              }
    7491268diff -Naur gcc-4.3.3.orig/gcc/cp/parser.c gcc-4.3.3/gcc/cp/parser.c
    7501269--- gcc-4.3.3.orig/gcc/cp/parser.c      2008-11-19 13:00:23.000000000 -0800
     
    7781297diff -Naur gcc-4.3.3.orig/gcc/cp/pt.c gcc-4.3.3/gcc/cp/pt.c
    7791298--- gcc-4.3.3.orig/gcc/cp/pt.c  2009-01-16 14:35:24.000000000 -0800
    780 +++ gcc-4.3.3/gcc/cp/pt.c       2009-02-03 07:56:05.128711000 -0800
     1299+++ gcc-4.3.3/gcc/cp/pt.c       2009-02-17 10:27:32.576290000 -0800
    7811300@@ -4555,6 +4555,13 @@
    7821301       expr = convert_nontype_argument_function (type, expr);
     
    7931312   /* [temp.arg.nontype]/5, bullet 5
    7941313 
     1314@@ -11054,12 +11061,12 @@
     1315                       qualified_p ? LOOKUP_NONVIRTUAL : LOOKUP_NORMAL,
     1316                       /*fn_p=*/NULL));
     1317          }
     1318-       /* Pass true for koenig_p so that build_new_function_call will
     1319+       /* Pass -1 for koenig_p so that build_new_function_call will
     1320           allow hidden friends found by arg-dependent lookup at template
     1321           parsing time.  */
     1322        return finish_call_expr (function, call_args,
     1323                                 /*disallow_virtual=*/qualified_p,
     1324-                                /*koenig_p*/true);
     1325+                                /*koenig_p*/-1);
     1326       }
     1327 
     1328     case COND_EXPR:
     1329@@ -13051,7 +13058,7 @@
     1330        /* Convert the ARG to the type of PARM; the deduced non-type
     1331           template argument must exactly match the types of the
     1332           corresponding parameter.  */
     1333-       arg = fold (build_nop (TREE_TYPE (parm), arg));
     1334+       arg = fold (build_nop (tparm, arg));
     1335       else if (uses_template_parms (tparm))
     1336        /* We haven't deduced the type of this parameter yet.  Try again
     1337           later.  */
     1338diff -Naur gcc-4.3.3.orig/gcc/cp/semantics.c gcc-4.3.3/gcc/cp/semantics.c
     1339--- gcc-4.3.3.orig/gcc/cp/semantics.c   2008-11-14 14:01:12.000000000 -0800
     1340+++ gcc-4.3.3/gcc/cp/semantics.c        2009-02-13 13:53:38.261573000 -0800
     1341@@ -1832,10 +1832,14 @@
     1342    qualified.  For example a call to `X::f' never generates a virtual
     1343    call.)
     1344 
     1345+   KOENIG_P is 1 if we want to perform argument-dependent lookup,
     1346+   -1 if we don't, but we want to accept functions found by previous
     1347+   argument-dependent lookup, and 0 if we want nothing to do with it.
     1348+
     1349    Returns code for the call.  */
     1350 
     1351 tree
     1352-finish_call_expr (tree fn, tree args, bool disallow_virtual, bool koenig_p)
     1353+finish_call_expr (tree fn, tree args, bool disallow_virtual, int koenig_p)
     1354 {
     1355   tree result;
     1356   tree orig_fn;
     1357@@ -1857,7 +1861,7 @@
     1358          || any_type_dependent_arguments_p (args))
     1359        {
     1360          result = build_nt_call_list (fn, args);
     1361-         KOENIG_LOOKUP_P (result) = koenig_p;
     1362+         KOENIG_LOOKUP_P (result) = koenig_p > 0;
     1363          if (cfun)
     1364            {
     1365              do
     1366@@ -1946,7 +1950,7 @@
     1367 
     1368       if (!result)
     1369        /* A call to a namespace-scope function.  */
     1370-       result = build_new_function_call (fn, args, koenig_p);
     1371+       result = build_new_function_call (fn, args, koenig_p != 0);
     1372     }
     1373   else if (TREE_CODE (fn) == PSEUDO_DTOR_EXPR)
     1374     {
    7951375diff -Naur gcc-4.3.3.orig/gcc/cp/typeck.c gcc-4.3.3/gcc/cp/typeck.c
    7961376--- gcc-4.3.3.orig/gcc/cp/typeck.c      2009-01-15 14:34:20.000000000 -0800
     
    8511431       error ("the type being destroyed is %qT, but the destructor refers to %qT",
    8521432             TYPE_MAIN_VARIANT (object_type), dtor_type);
     1433diff -Naur gcc-4.3.3.orig/gcc/c-parser.c gcc-4.3.3/gcc/c-parser.c
     1434--- gcc-4.3.3.orig/gcc/c-parser.c       2008-04-03 14:24:28.000000000 -0700
     1435+++ gcc-4.3.3/gcc/c-parser.c    2009-02-17 05:00:40.440258000 -0800
     1436@@ -2680,6 +2680,7 @@
     1437                             "expected %<;%>, %<,%> or %<)%>"))
     1438        {
     1439          c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, NULL);
     1440+         get_pending_sizes ();
     1441          return NULL;
     1442        }
     1443       if (c_parser_next_token_is (parser, CPP_ELLIPSIS))
     1444@@ -2707,6 +2708,7 @@
     1445            {
     1446              c_parser_skip_until_found (parser, CPP_CLOSE_PAREN,
     1447                                         "expected %<)%>");
     1448+             get_pending_sizes ();
     1449              return NULL;
     1450            }
     1451        }
     1452@@ -3132,6 +3134,7 @@
     1453       ret.value = error_mark_node;
     1454       ret.original_code = ERROR_MARK;
     1455       c_parser_skip_until_found (parser, CPP_CLOSE_BRACE, "expected %<}%>");
     1456+      pop_init_level (0);
     1457       return ret;
     1458     }
     1459   c_parser_consume_token (parser);
     1460diff -Naur gcc-4.3.3.orig/gcc/c-typeck.c gcc-4.3.3/gcc/c-typeck.c
     1461--- gcc-4.3.3.orig/gcc/c-typeck.c       2008-01-29 15:19:07.000000000 -0800
     1462+++ gcc-4.3.3/gcc/c-typeck.c    2009-02-04 05:07:43.805620000 -0800
     1463@@ -327,10 +327,14 @@
     1464        tree d2 = TYPE_DOMAIN (t2);
     1465        bool d1_variable, d2_variable;
     1466        bool d1_zero, d2_zero;
     1467+       bool t1_complete, t2_complete;
     1468 
     1469        /* We should not have any type quals on arrays at all.  */
     1470        gcc_assert (!TYPE_QUALS (t1) && !TYPE_QUALS (t2));
     1471 
     1472+       t1_complete = COMPLETE_TYPE_P (t1);
     1473+       t2_complete = COMPLETE_TYPE_P (t2);
     1474+
     1475        d1_zero = d1 == 0 || !TYPE_MAX_VALUE (d1);
     1476        d2_zero = d2 == 0 || !TYPE_MAX_VALUE (d2);
     1477 
     1478@@ -370,6 +374,15 @@
     1479                                                 || !d1_variable))
     1480                                            ? t1
     1481                                            : t2));
     1482+       /* Ensure a composite type involving a zero-length array type
     1483+          is a zero-length type not an incomplete type.  */
     1484+       if (d1_zero && d2_zero
     1485+           && (t1_complete || t2_complete)
     1486+           && !COMPLETE_TYPE_P (t1))
     1487+         {
     1488+           TYPE_SIZE (t1) = bitsize_zero_node;
     1489+           TYPE_SIZE_UNIT (t1) = size_zero_node;
     1490+         }
     1491        t1 = c_build_qualified_type (t1, quals);
     1492        return build_type_attribute_variant (t1, attributes);
     1493       }
     1494diff -Naur gcc-4.3.3.orig/gcc/DATESTAMP gcc-4.3.3/gcc/DATESTAMP
     1495--- gcc-4.3.3.orig/gcc/DATESTAMP        2009-01-23 16:16:35.000000000 -0800
     1496+++ gcc-4.3.3/gcc/DATESTAMP     2009-02-22 16:16:27.324527000 -0800
     1497@@ -1 +1 @@
     1498-20090124
     1499+20090223
    8531500diff -Naur gcc-4.3.3.orig/gcc/doc/invoke.texi gcc-4.3.3/gcc/doc/invoke.texi
    8541501--- gcc-4.3.3.orig/gcc/doc/invoke.texi  2008-11-21 08:21:50.000000000 -0800
     
    9061553diff -Naur gcc-4.3.3.orig/gcc/fortran/ChangeLog gcc-4.3.3/gcc/fortran/ChangeLog
    9071554--- gcc-4.3.3.orig/gcc/fortran/ChangeLog        2009-01-24 02:15:54.000000000 -0800
    908 +++ gcc-4.3.3/gcc/fortran/ChangeLog     2009-01-25 22:15:41.225652000 -0800
    909 @@ -1,3 +1,35 @@
     1555+++ gcc-4.3.3/gcc/fortran/ChangeLog     2009-02-18 22:43:15.919035000 -0800
     1556@@ -1,3 +1,43 @@
     1557+2009-02-19  Paul Thomas  <pault@gcc.gnu.org>
     1558+
     1559+       PR fortran/38852
     1560+       PR fortran/39006
     1561+       Backport from trunk
     1562+       * trans-intrinsic.c (gfc_conv_intrinsic_bound): Use the array
     1563+       descriptor ubound for UBOUND, when the array lbound == 1.
     1564+
    9101565+2009-01-26  Paul Thomas  <pault@gcc.gnu.org>
    9111566+
     
    11511806            case AR_SECTION:
    11521807            case AR_UNKNOWN:
     1808diff -Naur gcc-4.3.3.orig/gcc/fortran/trans-intrinsic.c gcc-4.3.3/gcc/fortran/trans-intrinsic.c
     1809--- gcc-4.3.3.orig/gcc/fortran/trans-intrinsic.c        2008-07-27 04:41:35.000000000 -0700
     1810+++ gcc-4.3.3/gcc/fortran/trans-intrinsic.c     2009-02-18 22:43:15.919035000 -0800
     1811@@ -917,12 +917,17 @@
     1812 
     1813       cond4 = fold_build2 (LT_EXPR, boolean_type_node, stride,
     1814                           gfc_index_zero_node);
     1815-      cond4 = fold_build2 (TRUTH_AND_EXPR, boolean_type_node, cond4, cond2);
     1816 
     1817       if (upper)
     1818        {
     1819+         tree cond5;
     1820          cond = fold_build2 (TRUTH_OR_EXPR, boolean_type_node, cond3, cond4);
     1821 
     1822+         cond5 = fold_build2 (EQ_EXPR, boolean_type_node, gfc_index_one_node, lbound);
     1823+         cond5 = fold_build2 (TRUTH_AND_EXPR, boolean_type_node, cond4, cond5);
     1824+
     1825+         cond = fold_build2 (TRUTH_OR_EXPR, boolean_type_node, cond, cond5);
     1826+
     1827          se->expr = fold_build3 (COND_EXPR, gfc_array_index_type, cond,
     1828                                  ubound, gfc_index_zero_node);
     1829        }
    11531830diff -Naur gcc-4.3.3.orig/gcc/gimplify.c gcc-4.3.3/gcc/gimplify.c
    11541831--- gcc-4.3.3.orig/gcc/gimplify.c       2008-12-18 13:55:31.000000000 -0800
     
    11641841            if (notify_temp_creation)
    11651842              return GS_ERROR;
     1843diff -Naur gcc-4.3.3.orig/gcc/real.c gcc-4.3.3/gcc/real.c
     1844--- gcc-4.3.3.orig/gcc/real.c   2008-10-22 04:33:04.000000000 -0700
     1845+++ gcc-4.3.3/gcc/real.c        2009-02-09 10:51:31.855521000 -0800
     1846@@ -905,15 +905,23 @@
     1847       /* Sign of zero doesn't matter for compares.  */
     1848       return 0;
     1849 
     1850+    case CLASS2 (rvc_normal, rvc_zero):
     1851+      /* Decimal float zero is special and uses rvc_normal, not rvc_zero.  */
     1852+      if (a->decimal)
     1853+       return decimal_do_compare (a, b, nan_result);
     1854+      /* Fall through.  */
     1855     case CLASS2 (rvc_inf, rvc_zero):
     1856     case CLASS2 (rvc_inf, rvc_normal):
     1857-    case CLASS2 (rvc_normal, rvc_zero):
     1858       return (a->sign ? -1 : 1);
     1859 
     1860     case CLASS2 (rvc_inf, rvc_inf):
     1861       return -a->sign - -b->sign;
     1862 
     1863     case CLASS2 (rvc_zero, rvc_normal):
     1864+      /* Decimal float zero is special and uses rvc_normal, not rvc_zero.  */
     1865+      if (b->decimal)
     1866+       return decimal_do_compare (a, b, nan_result);
     1867+      /* Fall through.  */
     1868     case CLASS2 (rvc_zero, rvc_inf):
     1869     case CLASS2 (rvc_normal, rvc_inf):
     1870       return (b->sign ? 1 : -1);
     1871diff -Naur gcc-4.3.3.orig/gcc/regrename.c gcc-4.3.3/gcc/regrename.c
     1872--- gcc-4.3.3.orig/gcc/regrename.c      2008-11-25 13:26:19.000000000 -0800
     1873+++ gcc-4.3.3/gcc/regrename.c   2009-02-04 13:42:04.642083000 -0800
     1874@@ -820,7 +820,7 @@
     1875                    OP_IN, 0);
     1876 
     1877          for (i = 0; i < recog_data.n_dups; i++)
     1878-           *recog_data.dup_loc[i] = copy_rtx (old_dups[i]);
     1879+           *recog_data.dup_loc[i] = old_dups[i];
     1880          for (i = 0; i < n_ops; i++)
     1881            *recog_data.operand_loc[i] = old_operands[i];
     1882          if (recog_data.n_dups)
    11661883diff -Naur gcc-4.3.3.orig/gcc/testsuite/ChangeLog gcc-4.3.3/gcc/testsuite/ChangeLog
    11671884--- gcc-4.3.3.orig/gcc/testsuite/ChangeLog      2009-01-24 02:15:24.000000000 -0800
    1168 +++ gcc-4.3.3/gcc/testsuite/ChangeLog   2009-02-03 07:56:05.128711000 -0800
    1169 @@ -1,3 +1,204 @@
     1885+++ gcc-4.3.3/gcc/testsuite/ChangeLog   2009-02-21 05:04:37.075689000 -0800
     1886@@ -1,3 +1,301 @@
     1887+2009-02-21  Kaz Kojima  <kkojima@gcc.gnu.org>
     1888+
     1889+       * gcc.c-torture/execute/pr39228.x: New.
     1890+
     1891+2009-02-20  Steve Ellcey  <sje@cup.hp.com>
     1892+
     1893+       PR target/38056
     1894+       * gcc.target/ia64/sibcall-opt-1.c: New test.
     1895+       * gcc.target/ia64/sibcall-opt-2.c: New test.
     1896+
     1897+2009-02-20  Jason Merrill  <jason@redhat.com>
     1898+
     1899+       PR c++/39225
     1900+       * g++.dg/parse/dtor15.C: New test.
     1901+
     1902+2009-02-19  Uros Bizjak  <ubizjak@gmail.com>
     1903+
     1904+       PR target/39228
     1905+       * gcc.c-torture/execute/pr39228.c: New test.
     1906+
     1907+2009-02-19  Paul Thomas  <pault@gcc.gnu.org>
     1908+
     1909+       PR fortran/38852
     1910+       PR fortran/39006
     1911+       Backport from mainline:
     1912+       * gfortran.dg/bound_6.f90: New test.
     1913+
     1914+2009-02-17  Jason Merrill  <jason@redhat.com>
     1915+
     1916+       PR c++/38950
     1917+       * g++.dg/template/array20.C: New test.
     1918+
     1919+2009-02-17  Joseph Myers  <joseph@codesourcery.com>
     1920+
     1921+       PR c/35446
     1922+       * gcc.dg/noncompile/init-5.c: New test.
     1923+       * gcc.dg/init-bad-4.c: Adjust expected errors.
     1924+
     1925+2009-02-15  Uros Bizjak  <ubizjak@gmail.com>
     1926+
     1927+       * gcc.dg/struct/w_prof_single_str_global.c: Mask return value.
     1928+
     1929+       Backport from mainline:
     1930+       2009-01-12  Mark Mitchell  <mark@codesourcery.com>
     1931+
     1932+       * gcc.dg/struct/wo_prof_single_str_global.c: Mask return value.
     1933+       * gcc.dg/struct/wo_prof_single_str_local.c: Mask return value.
     1934+       * gcc.dg/struct/wo_prof_single_str_pointer.c: Mask return value.
     1935+
     1936+2009-02-13  Jason Merrill  <jason@redhat.com>
     1937+
     1938+       PR c++/39070
     1939+       * g++.dg/cpp0x/decltype16.C: New.
     1940+
     1941+2009-02-13  Joseph Myers  <joseph@codesourcery.com>
     1942+
     1943+       PR c/35444
     1944+       * gcc.dg/noncompile/pr35444-1.c, gcc.dg/noncompile/pr35444-2.c:
     1945+       New tests.
     1946+
     1947+2009-02-10  Steve Ellcey  <sje@cup.hp.com>
     1948+
     1949+       PR c/39084
     1950+       * gcc.dg/pr39084.c: New test.
     1951+
     1952+2009-02-09  Janis Johnson  <janis187@us.ibm.com>
     1953+
     1954+       PR c/39035
     1955+       * gcc.dg/dfp/pr39035.c: New test.
     1956+
     1957+2009-02-08  Joseph Myers  <joseph@codesourcery.com>
     1958+
     1959+       PR c/35434
     1960+       * gcc.dg/attr-alias-4.c: New test.
     1961+
     1962+2009-02-08  Joseph Myers  <joseph@codesourcery.com>
     1963+
     1964+       PR c/36432
     1965+       * gcc.dg/c90-flex-array-2.c, gcc.dg/c99-flex-array-6.c: New tests.
     1966+
     1967+2009-02-05  Joseph Myers  <joseph@codesourcery.com>
     1968+
     1969+       PR c/35435
     1970+       * gcc.dg/tls/diag-6.c: New test.
     1971+
     1972+2009-02-05  Richard Guenther  <rguenther@suse.de>
     1973+
     1974+       Backport from mainline
     1975+       2009-02-05  Daniel Berlin  <dberlin@dberlin.org>
     1976+
     1977+       * gcc.c-torture/execute/pr39100.c: New.
     1978+
     1979+2009-02-04  Joseph Myers  <joseph@codesourcery.com>
     1980+
     1981+       PR c/35433
     1982+       * gcc.dg/init-bad-6.c: New test.
     1983+
    11701984+2009-02-03  Paolo Bonzini  <bonzini@gnu.org>
    11711985+
     
    13722186 
    13732187        * GCC 4.3.3 released.
    1374 @@ -89,7 +290,7 @@
     2188@@ -89,7 +387,7 @@
    13752189 
    13762190        Backport from mainline:
     
    13812195        PR tree-optimization/38529
    13822196        * gcc.dg/vect/pr38529.c: New test.
    1383 @@ -426,8 +627,8 @@
     2197@@ -426,8 +724,8 @@
    13842198 
    13852199 2008-11-14  Paul Thomas  <pault@gcc.gnu.org>
     
    15672381+  return 0;
    15682382+}
     2383diff -Naur gcc-4.3.3.orig/gcc/testsuite/gcc.c-torture/execute/pr39100.c gcc-4.3.3/gcc/testsuite/gcc.c-torture/execute/pr39100.c
     2384--- gcc-4.3.3.orig/gcc/testsuite/gcc.c-torture/execute/pr39100.c        1969-12-31 16:00:00.000000000 -0800
     2385+++ gcc-4.3.3/gcc/testsuite/gcc.c-torture/execute/pr39100.c     2009-02-05 03:10:02.086542000 -0800
     2386@@ -0,0 +1,65 @@
     2387+/* Bad PTA results (incorrect store handling) was causing us to delete
     2388+   *na = 0 store.  */
     2389+
     2390+typedef struct E
     2391+{
     2392+  int p;
     2393+  struct E *n;
     2394+} *EP;   
     2395+
     2396+typedef struct C
     2397+{
     2398+  EP x;
     2399+  short cn, cp;
     2400+} *CP;
     2401+
     2402+__attribute__((noinline)) CP
     2403+foo (CP h, EP x)
     2404+{
     2405+  EP pl = 0, *pa = &pl;
     2406+  EP nl = 0, *na = &nl;
     2407+  EP n;
     2408+
     2409+  while (x)
     2410+    {
     2411+      n = x->n;   
     2412+      if ((x->p & 1) == 1)
     2413+        {
     2414+          h->cp++;
     2415+          *pa = x;
     2416+          pa = &((*pa)->n);
     2417+        }
     2418+      else
     2419+        {
     2420+          h->cn++;
     2421+          *na = x;
     2422+          na = &((*na)->n);
     2423+        }   
     2424+      x = n;
     2425+    }
     2426+  *pa = nl;
     2427+  *na = 0;
     2428+  h->x = pl;
     2429+  return h;
     2430+}
     2431+
     2432+int
     2433+main (void)
     2434+{ 
     2435+  struct C c = { 0, 0, 0 };
     2436+  struct E e[2] = { { 0, &e[1] }, { 1, 0 } };
     2437+  EP p;
     2438+
     2439+  foo (&c, &e[0]);
     2440+  if (c.cn != 1 || c.cp != 1)
     2441+    __builtin_abort ();
     2442+  if (c.x != &e[1])
     2443+    __builtin_abort ();
     2444+  if (e[1].n != &e[0])
     2445+    __builtin_abort ();
     2446+  if (e[0].n)
     2447+    __builtin_abort ();
     2448+  return 0; 
     2449+}
     2450+
     2451+
     2452diff -Naur gcc-4.3.3.orig/gcc/testsuite/gcc.c-torture/execute/pr39228.c gcc-4.3.3/gcc/testsuite/gcc.c-torture/execute/pr39228.c
     2453--- gcc-4.3.3.orig/gcc/testsuite/gcc.c-torture/execute/pr39228.c        1969-12-31 16:00:00.000000000 -0800
     2454+++ gcc-4.3.3/gcc/testsuite/gcc.c-torture/execute/pr39228.c     2009-02-19 04:44:40.878358000 -0800
     2455@@ -0,0 +1,36 @@
     2456+extern void abort (void);
     2457+
     2458+static int __attribute__((always_inline)) testf (float b)
     2459+{
     2460+  float c = 1.01f * b;
     2461+
     2462+  return __builtin_isinff (c);
     2463+}
     2464+
     2465+static int __attribute__((always_inline)) test (double b)
     2466+{
     2467+  double c = 1.01 * b;
     2468+
     2469+  return __builtin_isinf (c);
     2470+}
     2471+
     2472+static int __attribute__((always_inline)) testl (long double b)
     2473+{
     2474+  long double c = 1.01L * b;
     2475+
     2476+  return __builtin_isinfl (c);
     2477+}
     2478+
     2479+int main()
     2480+{
     2481+  if (testf (__FLT_MAX__) < 1)
     2482+    abort ();
     2483+
     2484+  if (test (__DBL_MAX__) < 1)
     2485+    abort ();
     2486+
     2487+  if (testl (__LDBL_MAX__) < 1)
     2488+    abort ();
     2489+
     2490+  return 0;
     2491+}
     2492diff -Naur gcc-4.3.3.orig/gcc/testsuite/gcc.c-torture/execute/pr39228.x gcc-4.3.3/gcc/testsuite/gcc.c-torture/execute/pr39228.x
     2493--- gcc-4.3.3.orig/gcc/testsuite/gcc.c-torture/execute/pr39228.x        1969-12-31 16:00:00.000000000 -0800
     2494+++ gcc-4.3.3/gcc/testsuite/gcc.c-torture/execute/pr39228.x     2009-02-21 05:04:37.075689000 -0800
     2495@@ -0,0 +1,10 @@
     2496+if { [istarget "alpha*-*-*"] || [istarget "sh*-*-*"] } {
     2497+       # alpha and SH require -mieee for this test.
     2498+       set additional_flags "-mieee"
     2499+}
     2500+if [istarget "spu-*-*"] {
     2501+       # No Inf/NaN support on SPU.
     2502+       return 1
     2503+}
     2504+
     2505+return 0
    15692506diff -Naur gcc-4.3.3.orig/gcc/testsuite/gcc.c-torture/execute/shiftopt-1.c gcc-4.3.3/gcc/testsuite/gcc.c-torture/execute/shiftopt-1.c
    15702507--- gcc-4.3.3.orig/gcc/testsuite/gcc.c-torture/execute/shiftopt-1.c     2002-12-16 10:23:00.000000000 -0800
     
    16042541+  return (0);
    16052542+}
     2543diff -Naur gcc-4.3.3.orig/gcc/testsuite/gcc.dg/attr-alias-4.c gcc-4.3.3/gcc/testsuite/gcc.dg/attr-alias-4.c
     2544--- gcc-4.3.3.orig/gcc/testsuite/gcc.dg/attr-alias-4.c  1969-12-31 16:00:00.000000000 -0800
     2545+++ gcc-4.3.3/gcc/testsuite/gcc.dg/attr-alias-4.c       2009-02-08 11:02:56.473953000 -0800
     2546@@ -0,0 +1,4 @@
     2547+/* ICE on invalid alias attribute: PR 35434.  */
     2548+/* { dg-do compile } */
     2549+/* { dg-options "" } */
     2550+typedef int i __attribute__((alias("j"))); /* { dg-warning "ignored" } */
     2551diff -Naur gcc-4.3.3.orig/gcc/testsuite/gcc.dg/c90-flex-array-2.c gcc-4.3.3/gcc/testsuite/gcc.dg/c90-flex-array-2.c
     2552--- gcc-4.3.3.orig/gcc/testsuite/gcc.dg/c90-flex-array-2.c      1969-12-31 16:00:00.000000000 -0800
     2553+++ gcc-4.3.3/gcc/testsuite/gcc.dg/c90-flex-array-2.c   2009-02-08 11:01:57.311455000 -0800
     2554@@ -0,0 +1,15 @@
     2555+/* [] does not indicate a flexible array member unless it is the field
     2556+   itself being declared as an incomplete array type rather than a
     2557+   pointer or other type derived from such a type.  PR 36432.  */
     2558+/* { dg-do compile } */
     2559+/* { dg-options "-std=iso9899:1990 -pedantic-errors" } */
     2560+
     2561+void
     2562+f (void)
     2563+{
     2564+  int a[3];
     2565+  int (*p)[];
     2566+  struct { int (*p)[]; } s;
     2567+  p = &a;
     2568+  s.p = &a;
     2569+}
     2570diff -Naur gcc-4.3.3.orig/gcc/testsuite/gcc.dg/c99-flex-array-6.c gcc-4.3.3/gcc/testsuite/gcc.dg/c99-flex-array-6.c
     2571--- gcc-4.3.3.orig/gcc/testsuite/gcc.dg/c99-flex-array-6.c      1969-12-31 16:00:00.000000000 -0800
     2572+++ gcc-4.3.3/gcc/testsuite/gcc.dg/c99-flex-array-6.c   2009-02-08 11:01:57.311455000 -0800
     2573@@ -0,0 +1,15 @@
     2574+/* [] does not indicate a flexible array member unless it is the field
     2575+   itself being declared as an incomplete array type rather than a
     2576+   pointer or other type derived from such a type.  PR 36432.  */
     2577+/* { dg-do compile } */
     2578+/* { dg-options "-std=iso9899:1999 -pedantic-errors" } */
     2579+
     2580+void
     2581+f (void)
     2582+{
     2583+  int a[3];
     2584+  int (*p)[];
     2585+  struct { int (*p)[]; } s;
     2586+  p = &a;
     2587+  s.p = &a;
     2588+}
     2589diff -Naur gcc-4.3.3.orig/gcc/testsuite/gcc.dg/dfp/pr39035.c gcc-4.3.3/gcc/testsuite/gcc.dg/dfp/pr39035.c
     2590--- gcc-4.3.3.orig/gcc/testsuite/gcc.dg/dfp/pr39035.c   1969-12-31 16:00:00.000000000 -0800
     2591+++ gcc-4.3.3/gcc/testsuite/gcc.dg/dfp/pr39035.c        2009-02-09 10:51:31.855521000 -0800
     2592@@ -0,0 +1,81 @@
     2593+/* { dg-do run } */
     2594+/* { dg-options "-std=gnu99 -O" } */
     2595+
     2596+/* DFP TR 24732 == WG14 / N1176, N1312 */
     2597+/* Based on a test from Fred Tydeman.  */
     2598+
     2599+extern void abort (void);
     2600+int failures = 0;
     2601+
     2602+#ifdef DBG
     2603+#include <stdio.h>
     2604+#define FAILURE(MSG) { printf ("line %d: %s\n", __LINE__, MSG); failures++; }
     2605+#else
     2606+#define FAILURE(MSG) failures++;
     2607+#endif
     2608+
     2609+/* Test runtime computations.  */
     2610+
     2611+void
     2612+runtime32 (void)
     2613+{
     2614+  volatile _Decimal32 d;
     2615+  d = 0.0DF;
     2616+  if (d)
     2617+    FAILURE ("0.0DF should be zero")
     2618+}
     2619+
     2620+void
     2621+runtime64 (void)
     2622+{
     2623+  volatile _Decimal64 d;
     2624+  d = 0.0DD;
     2625+  if (d)
     2626+    FAILURE ("0.0DD should be zero")
     2627+}
     2628+
     2629+void
     2630+runtime128 (void)
     2631+{
     2632+  volatile _Decimal128 d;
     2633+  d = 0.0DL;
     2634+  if (d)
     2635+    FAILURE ("0.0DL should be zero")
     2636+}
     2637+
     2638+void
     2639+fold32 (void)
     2640+{
     2641+  if (0.0DF)
     2642+    FAILURE ("0.0DF should be zero")
     2643+}
     2644+
     2645+void
     2646+fold64 (void)
     2647+{
     2648+  if (0.0DD)
     2649+    FAILURE ("0.0DD should be zero")
     2650+}
     2651+
     2652+void
     2653+fold128 (void)
     2654+{
     2655+  if (0.0DL)
     2656+    FAILURE ("0.0DL should be zero")
     2657+}
     2658+
     2659+int
     2660+main(void)
     2661+{
     2662+  runtime32 ();
     2663+  runtime64 ();
     2664+  runtime128 ();
     2665+
     2666+  fold32 ();
     2667+  fold64 ();
     2668+  fold128 ();
     2669+
     2670+  if (failures != 0)
     2671+    abort ();
     2672+  return 0;
     2673+}
     2674diff -Naur gcc-4.3.3.orig/gcc/testsuite/gcc.dg/init-bad-4.c gcc-4.3.3/gcc/testsuite/gcc.dg/init-bad-4.c
     2675--- gcc-4.3.3.orig/gcc/testsuite/gcc.dg/init-bad-4.c    2006-04-21 16:02:26.000000000 -0700
     2676+++ gcc-4.3.3/gcc/testsuite/gcc.dg/init-bad-4.c 2009-02-17 05:00:40.440258000 -0800
     2677@@ -2,4 +2,4 @@
     2678 /* Origin: Richard Guenther <rguenth@gcc.gnu.org> */
     2679 /* { dg-do compile } */
     2680 
     2681-struct A { } a = (struct A) {{ (X)0 }};  /* { dg-error "no members|extra brace|near|undeclared|constant|compound" } */
     2682+struct A { } a = (struct A) {{ (X)0 }};  /* { dg-error "no members|extra brace|near|undeclared|constant|compound|excess" } */
     2683diff -Naur gcc-4.3.3.orig/gcc/testsuite/gcc.dg/init-bad-6.c gcc-4.3.3/gcc/testsuite/gcc.dg/init-bad-6.c
     2684--- gcc-4.3.3.orig/gcc/testsuite/gcc.dg/init-bad-6.c    1969-12-31 16:00:00.000000000 -0800
     2685+++ gcc-4.3.3/gcc/testsuite/gcc.dg/init-bad-6.c 2009-02-04 05:07:43.805620000 -0800
     2686@@ -0,0 +1,12 @@
     2687+/* ICE arising from bug computing composite type of zero-length array
     2688+   types: PR 35433.  */
     2689+/* { dg-do compile } */
     2690+/* { dg-options "" } */
     2691+
     2692+typedef int* X;
     2693+typedef int* Y;
     2694+
     2695+X (*p)[][0];
     2696+Y (*q)[][0];
     2697+
     2698+typeof(*(0 ? p : q)) x = { 0 }; /* { dg-warning "excess elements in array initializer|near initialization" } */
     2699diff -Naur gcc-4.3.3.orig/gcc/testsuite/gcc.dg/noncompile/init-5.c gcc-4.3.3/gcc/testsuite/gcc.dg/noncompile/init-5.c
     2700--- gcc-4.3.3.orig/gcc/testsuite/gcc.dg/noncompile/init-5.c     1969-12-31 16:00:00.000000000 -0800
     2701+++ gcc-4.3.3/gcc/testsuite/gcc.dg/noncompile/init-5.c  2009-02-17 05:00:40.440258000 -0800
     2702@@ -0,0 +1,4 @@
     2703+/* Test for ICE after syntax error in initializer with range
     2704+   designator: PR 35446.  */
     2705+
     2706+int a[2][2] = { [0 ... 1] = { ; } }; /* { dg-error "expected expression" } */
     2707diff -Naur gcc-4.3.3.orig/gcc/testsuite/gcc.dg/noncompile/pr35444-1.c gcc-4.3.3/gcc/testsuite/gcc.dg/noncompile/pr35444-1.c
     2708--- gcc-4.3.3.orig/gcc/testsuite/gcc.dg/noncompile/pr35444-1.c  1969-12-31 16:00:00.000000000 -0800
     2709+++ gcc-4.3.3/gcc/testsuite/gcc.dg/noncompile/pr35444-1.c       2009-02-13 05:10:52.921838000 -0800
     2710@@ -0,0 +1,3 @@
     2711+/* PR 35444: ICE from pending VLA sizes in invalid parameter list.  */
     2712+void foo(int n, int a[n], int 0); /* { dg-error "expected" } */
     2713+void bar() {}
     2714diff -Naur gcc-4.3.3.orig/gcc/testsuite/gcc.dg/noncompile/pr35444-2.c gcc-4.3.3/gcc/testsuite/gcc.dg/noncompile/pr35444-2.c
     2715--- gcc-4.3.3.orig/gcc/testsuite/gcc.dg/noncompile/pr35444-2.c  1969-12-31 16:00:00.000000000 -0800
     2716+++ gcc-4.3.3/gcc/testsuite/gcc.dg/noncompile/pr35444-2.c       2009-02-13 05:10:52.921838000 -0800
     2717@@ -0,0 +1,4 @@
     2718+/* PR 35444: ICE from pending VLA sizes in invalid parameter list.
     2719+   Similar case to the PR, but with "..." before the syntax error.  */
     2720+void foo(int n, int a[n], ... 0); /* { dg-error "expected" } */
     2721+void bar() {}
    16062722diff -Naur gcc-4.3.3.orig/gcc/testsuite/gcc.dg/pr38245-3.c gcc-4.3.3/gcc/testsuite/gcc.dg/pr38245-3.c
    16072723--- gcc-4.3.3.orig/gcc/testsuite/gcc.dg/pr38245-3.c     1969-12-31 16:00:00.000000000 -0800
     
    21343250+
    21353251+
     3252diff -Naur gcc-4.3.3.orig/gcc/testsuite/gcc.dg/pr39084.c gcc-4.3.3/gcc/testsuite/gcc.dg/pr39084.c
     3253--- gcc-4.3.3.orig/gcc/testsuite/gcc.dg/pr39084.c       1969-12-31 16:00:00.000000000 -0800
     3254+++ gcc-4.3.3/gcc/testsuite/gcc.dg/pr39084.c    2009-02-10 08:45:37.511311000 -0800
     3255@@ -0,0 +1,11 @@
     3256+/* { dg-do compile } */
     3257+/* { dg-options "-O2" } */
     3258+
     3259+struct color { int i; };
     3260+static const struct color col;
     3261+struct color * f(void)
     3262+{
     3263+    return (struct color *) &col;
     3264+}
     3265+
     3266+struct color { int j; }; /* { dg-error "redefinition of" } */
     3267diff -Naur gcc-4.3.3.orig/gcc/testsuite/gcc.dg/struct/wo_prof_single_str_global.c gcc-4.3.3/gcc/testsuite/gcc.dg/struct/wo_prof_single_str_global.c
     3268--- gcc-4.3.3.orig/gcc/testsuite/gcc.dg/struct/wo_prof_single_str_global.c      2007-12-13 05:47:22.000000000 -0800
     3269+++ gcc-4.3.3/gcc/testsuite/gcc.dg/struct/wo_prof_single_str_global.c   2009-02-15 00:09:49.211979000 -0800
     3270@@ -25,7 +25,9 @@
     3271   if (str.a != res)
     3272     abort ();
     3273 
     3274-  return str.a;
     3275+  /* POSIX ignores all but the 8 low-order bits, but other
     3276+     environments may not.  */
     3277+  return (str.a & 255);
     3278 }
     3279 
     3280 /*--------------------------------------------------------------------------*/
     3281diff -Naur gcc-4.3.3.orig/gcc/testsuite/gcc.dg/struct/wo_prof_single_str_local.c gcc-4.3.3/gcc/testsuite/gcc.dg/struct/wo_prof_single_str_local.c
     3282--- gcc-4.3.3.orig/gcc/testsuite/gcc.dg/struct/wo_prof_single_str_local.c       2007-12-13 05:47:22.000000000 -0800
     3283+++ gcc-4.3.3/gcc/testsuite/gcc.dg/struct/wo_prof_single_str_local.c    2009-02-15 00:09:49.211979000 -0800
     3284@@ -25,7 +25,9 @@
     3285   if (str.a != res)
     3286     abort ();
     3287 
     3288-  return str.a;
     3289+  /* POSIX ignores all but the 8 low-order bits, but other
     3290+     environments may not.  */
     3291+  return (str.a & 255);
     3292 }
     3293 
     3294 /*--------------------------------------------------------------------------*/
     3295diff -Naur gcc-4.3.3.orig/gcc/testsuite/gcc.dg/struct/wo_prof_single_str_pointer.c gcc-4.3.3/gcc/testsuite/gcc.dg/struct/wo_prof_single_str_pointer.c
     3296--- gcc-4.3.3.orig/gcc/testsuite/gcc.dg/struct/wo_prof_single_str_pointer.c     2007-12-13 05:47:22.000000000 -0800
     3297+++ gcc-4.3.3/gcc/testsuite/gcc.dg/struct/wo_prof_single_str_pointer.c  2009-02-15 00:09:49.211979000 -0800
     3298@@ -29,7 +29,9 @@
     3299   if (p->a != res)
     3300     abort ();
     3301   
     3302-  return p->a;
     3303+  /* POSIX ignores all but the 8 low-order bits, but other
     3304+     environments may not.  */
     3305+  return (p->a & 255);
     3306 }
     3307 
     3308 /*--------------------------------------------------------------------------*/
     3309diff -Naur gcc-4.3.3.orig/gcc/testsuite/gcc.dg/struct/w_prof_single_str_global.c gcc-4.3.3/gcc/testsuite/gcc.dg/struct/w_prof_single_str_global.c
     3310--- gcc-4.3.3.orig/gcc/testsuite/gcc.dg/struct/w_prof_single_str_global.c       2007-12-13 05:47:22.000000000 -0800
     3311+++ gcc-4.3.3/gcc/testsuite/gcc.dg/struct/w_prof_single_str_global.c    2009-02-15 00:09:49.211979000 -0800
     3312@@ -22,7 +22,9 @@
     3313   if (str.a != res)
     3314     abort ();
     3315 
     3316-  return str.a;
     3317+  /* POSIX ignores all but the 8 low-order bits, but other
     3318+     environments may not.  */
     3319+  return (str.a & 255);
     3320 }
     3321 
     3322 /*--------------------------------------------------------------------------*/
     3323diff -Naur gcc-4.3.3.orig/gcc/testsuite/gcc.dg/tls/diag-6.c gcc-4.3.3/gcc/testsuite/gcc.dg/tls/diag-6.c
     3324--- gcc-4.3.3.orig/gcc/testsuite/gcc.dg/tls/diag-6.c    1969-12-31 16:00:00.000000000 -0800
     3325+++ gcc-4.3.3/gcc/testsuite/gcc.dg/tls/diag-6.c 2009-02-05 04:13:52.859351000 -0800
     3326@@ -0,0 +1,8 @@
     3327+/* Invalid tls_model attributes.  PR 35435.  */
     3328+/* { dg-require-effective-target tls } */
     3329+
     3330+int v __attribute__((tls_model("initial-exec"))); /* { dg-warning "attribute ignored" } */
     3331+typedef int X __attribute__((tls_model("initial-exec"))); /* { dg-warning "attribute ignored" } */
     3332+void f(int x __attribute__((tls_model("initial-exec")))); /* { dg-warning "attribute ignored" } */
     3333+__thread int a __attribute__((tls_model(1))); /* { dg-error "tls_model argument not a string" } */
     3334+__thread int b __attribute__((tls_model("unknown"))); /* { dg-error "tls_model argument must be one of" } */
    21363335diff -Naur gcc-4.3.3.orig/gcc/testsuite/gcc.dg/tree-ssa/struct-aliasing-1.c gcc-4.3.3/gcc/testsuite/gcc.dg/tree-ssa/struct-aliasing-1.c
    21373336--- gcc-4.3.3.orig/gcc/testsuite/gcc.dg/tree-ssa/struct-aliasing-1.c    1969-12-31 16:00:00.000000000 -0800
     
    22083407+    }
    22093408+}
     3409diff -Naur gcc-4.3.3.orig/gcc/testsuite/gcc.target/ia64/sibcall-opt-1.c gcc-4.3.3/gcc/testsuite/gcc.target/ia64/sibcall-opt-1.c
     3410--- gcc-4.3.3.orig/gcc/testsuite/gcc.target/ia64/sibcall-opt-1.c        1969-12-31 16:00:00.000000000 -0800
     3411+++ gcc-4.3.3/gcc/testsuite/gcc.target/ia64/sibcall-opt-1.c     2009-02-20 09:18:20.718912000 -0800
     3412@@ -0,0 +1,12 @@
     3413+/* PR target/38056.  Do not do sibcall optimization across object file
     3414+   boundery when -mconstant-gp is not used.  */
     3415+/* { dg-do compile } */
     3416+/* { dg-options "-O2" } */
     3417+/* { dg-final { scan-assembler "br.call.*bar" } } */
     3418+
     3419+int bar(int x);
     3420+
     3421+int foo(int x)
     3422+{
     3423+  return (bar(x + 1));
     3424+}
     3425diff -Naur gcc-4.3.3.orig/gcc/testsuite/gcc.target/ia64/sibcall-opt-2.c gcc-4.3.3/gcc/testsuite/gcc.target/ia64/sibcall-opt-2.c
     3426--- gcc-4.3.3.orig/gcc/testsuite/gcc.target/ia64/sibcall-opt-2.c        1969-12-31 16:00:00.000000000 -0800
     3427+++ gcc-4.3.3/gcc/testsuite/gcc.target/ia64/sibcall-opt-2.c     2009-02-20 09:18:20.718912000 -0800
     3428@@ -0,0 +1,12 @@
     3429+/* PR target/38056.  Do sibcall optimization across object file
     3430+   boundery when -mconstant-gp is used.  */
     3431+/* { dg-do compile } */
     3432+/* { dg-options "-O2 -mconstant-gp" } */
     3433+/* { dg-final { scan-assembler-not "br.call.*bar" } } */
     3434+
     3435+int bar(int x);
     3436+
     3437+int foo(int x)
     3438+{
     3439+  return (bar(x + 1));
     3440+}
     3441diff -Naur gcc-4.3.3.orig/gcc/testsuite/g++.dg/cpp0x/decltype16.C gcc-4.3.3/gcc/testsuite/g++.dg/cpp0x/decltype16.C
     3442--- gcc-4.3.3.orig/gcc/testsuite/g++.dg/cpp0x/decltype16.C      1969-12-31 16:00:00.000000000 -0800
     3443+++ gcc-4.3.3/gcc/testsuite/g++.dg/cpp0x/decltype16.C   2009-02-13 13:53:38.261573000 -0800
     3444@@ -0,0 +1,10 @@
     3445+// PR c++/39070
     3446+// { dg-options "-std=c++0x" }
     3447+
     3448+template<typename X> struct junk {
     3449+   template<typename Z> static Z y();
     3450+   template<typename Y> static int  test(...);
     3451+   template<typename Y> static char test(decltype(y<Y>())*);
     3452+   static int const value=sizeof(test<X>(0));
     3453+};
     3454+typedef char type[junk<int>::value==sizeof(char) ? 1 : -1];
    22103455diff -Naur gcc-4.3.3.orig/gcc/testsuite/g++.dg/other/pr38706.C gcc-4.3.3/gcc/testsuite/g++.dg/other/pr38706.C
    22113456--- gcc-4.3.3.orig/gcc/testsuite/g++.dg/other/pr38706.C 1969-12-31 16:00:00.000000000 -0800
     
    22423487+{
    22433488+  A().~int();                  // { dg-error "expected" }
     3489+}
     3490diff -Naur gcc-4.3.3.orig/gcc/testsuite/g++.dg/parse/dtor15.C gcc-4.3.3/gcc/testsuite/g++.dg/parse/dtor15.C
     3491--- gcc-4.3.3.orig/gcc/testsuite/g++.dg/parse/dtor15.C  1969-12-31 16:00:00.000000000 -0800
     3492+++ gcc-4.3.3/gcc/testsuite/g++.dg/parse/dtor15.C       2009-02-20 07:21:51.443104000 -0800
     3493@@ -0,0 +1,16 @@
     3494+// PR c++/39225
     3495+
     3496+template <class T>
     3497+class A
     3498+{
     3499+public:
     3500+    A() {}
     3501+    ~B() {}                    // { dg-error "~B" }
     3502+};
     3503+
     3504+int main()
     3505+{
     3506+    A<int> *a = new A<int>;
     3507+
     3508+    return 0;
     3509+}
     3510diff -Naur gcc-4.3.3.orig/gcc/testsuite/g++.dg/template/array20.C gcc-4.3.3/gcc/testsuite/g++.dg/template/array20.C
     3511--- gcc-4.3.3.orig/gcc/testsuite/g++.dg/template/array20.C      1969-12-31 16:00:00.000000000 -0800
     3512+++ gcc-4.3.3/gcc/testsuite/g++.dg/template/array20.C   2009-02-17 10:27:32.576290000 -0800
     3513@@ -0,0 +1,10 @@
     3514+// PR c++/38950
     3515+
     3516+template <typename T, T N> void f(T(&)[N]);
     3517+
     3518+int main() {
     3519+    int x[2];
     3520+    unsigned int y[2];
     3521+    f(x); // works
     3522+    f(y); // ICE
    22443523+}
    22453524diff -Naur gcc-4.3.3.orig/gcc/testsuite/g++.dg/template/dtor5.C gcc-4.3.3/gcc/testsuite/g++.dg/template/dtor5.C
     
    24783757+void S16() { S9 x; S15(x); }
    24793758+
     3759diff -Naur gcc-4.3.3.orig/gcc/testsuite/gfortran.dg/bound_6.f90 gcc-4.3.3/gcc/testsuite/gfortran.dg/bound_6.f90
     3760--- gcc-4.3.3.orig/gcc/testsuite/gfortran.dg/bound_6.f90        1969-12-31 16:00:00.000000000 -0800
     3761+++ gcc-4.3.3/gcc/testsuite/gfortran.dg/bound_6.f90     2009-02-18 22:43:15.919035000 -0800
     3762@@ -0,0 +1,48 @@
     3763+! { dg-do run }
     3764+! Test the fix for PR38852 and PR39006 in which LBOUND did not work
     3765+! for some arrays with negative strides.
     3766+!
     3767+! Contributed by Dick Hendrickson  <dick.hendrickson@gmail.com>
     3768+! and Clive Page <clivegpage@googlemail.com>
     3769+!
     3770+program try_je0031
     3771+  integer ida(4)
     3772+  real dda(5,5,5,5,5)
     3773+  integer, parameter :: nx = 4, ny = 3
     3774+  integer :: array1(nx,ny), array2(nx,ny)
     3775+  data array2 / 1,2,3,4, 10,20,30,40, 100,200,300,400 /
     3776+  array1 = array2
     3777+  call PR38852(IDA,DDA,2,5,-2)
     3778+  call PR39006(array1, array2(:,ny:1:-1))
     3779+contains
     3780+  subroutine PR39006(array1, array2)
     3781+    integer, intent(in) :: array1(:,:), array2(:,:)
     3782+    integer :: j
     3783+    do j = 1, ubound(array2,2)
     3784+      if (any (array1(:,j) .ne. array2(:,4-j))) call abort
     3785+    end do
     3786+  end subroutine
     3787+end
     3788+
     3789+SUBROUTINE PR38852(IDA,DDA,nf2,nf5,mf2)
     3790+  INTEGER IDA(4)
     3791+  REAL DLA(:,:,:,:)
     3792+  REAL DDA(5,5,5,5,5)
     3793+  POINTER DLA
     3794+  TARGET DDA
     3795+  DLA => DDA(2:3, 1:3:2, 5:4:-1, NF2, NF5:NF2:MF2)
     3796+  IDA = UBOUND(DLA)
     3797+  if (any(ida /= 2)) call abort
     3798+  DLA => DDA(2:3, 1:3:2, 5:4:-1, 2, 5:2:-2)
     3799+  IDA = UBOUND(DLA)
     3800+  if (any(ida /= 2)) call abort
     3801+!
     3802+! These worked.
     3803+!
     3804+  DLA => DDA(2:3, 1:3:2, 5:4:-1, 2, 5:2:-2)
     3805+  IDA = shape(DLA)
     3806+  if (any(ida /= 2)) call abort
     3807+  DLA => DDA(2:3, 1:3:2, 5:4:-1, 2, 5:2:-2)
     3808+  IDA = LBOUND(DLA)
     3809+  if (any(ida /= 1)) call abort
     3810+END SUBROUTINE
    24803811diff -Naur gcc-4.3.3.orig/gcc/testsuite/gfortran.dg/bounds_5.f90 gcc-4.3.3/gcc/testsuite/gfortran.dg/bounds_5.f90
    24813812--- gcc-4.3.3.orig/gcc/testsuite/gfortran.dg/bounds_5.f90       1969-12-31 16:00:00.000000000 -0800
     
    28734204     {
    28744205       STRIP_USELESS_TYPE_CONVERSION (result);
     4206diff -Naur gcc-4.3.3.orig/gcc/tree-ssa-structalias.c gcc-4.3.3/gcc/tree-ssa-structalias.c
     4207--- gcc-4.3.3.orig/gcc/tree-ssa-structalias.c   2009-01-07 05:12:17.000000000 -0800
     4208+++ gcc-4.3.3/gcc/tree-ssa-structalias.c        2009-02-05 03:10:02.086542000 -0800
     4209@@ -1509,24 +1509,23 @@
     4210          varinfo_t v;
     4211          unsigned int t;
     4212          unsigned HOST_WIDE_INT fieldoffset = get_varinfo (j)->offset + loff;
     4213-         bitmap tmp;
     4214 
     4215          v = first_vi_for_offset (get_varinfo (j), fieldoffset);
     4216          /* If the access is outside of the variable we can ignore it.  */
     4217          if (!v)
     4218            continue;
     4219          t = find (v->id);
     4220-         tmp = get_varinfo (t)->solution;
     4221-
     4222-         if (set_union_with_increment (tmp, sol, 0))
     4223+         if (add_graph_edge (graph, t, rhs))
     4224            {
     4225-             get_varinfo (t)->solution = tmp;
     4226-             if (t == rhs)
     4227-               sol = get_varinfo (rhs)->solution;
     4228-             if (!TEST_BIT (changed, t))
     4229+             if (bitmap_ior_into (get_varinfo (t)->solution, sol))
     4230                {
     4231-                 SET_BIT (changed, t);
     4232-                 changed_count++;
     4233+                 if (t == rhs)
     4234+                   sol = get_varinfo (rhs)->solution;
     4235+                 if (!TEST_BIT (changed, t))
     4236+                   {
     4237+                     SET_BIT (changed, t);
     4238+                     changed_count++;
     4239+                   }
     4240                }
     4241            }
     4242        }
     4243diff -Naur gcc-4.3.3.orig/gcc/version.c gcc-4.3.3/gcc/version.c
     4244--- gcc-4.3.3.orig/gcc/version.c        2007-08-21 08:35:30.000000000 -0700
     4245+++ gcc-4.3.3/gcc/version.c     2009-02-22 22:23:11.339429250 -0800
     4246@@ -14,4 +14,4 @@
     4247    Makefile.  */
     4248 
     4249 const char version_string[] = BASEVER DATESTAMP DEVPHASE REVISION;
     4250-const char pkgversion_string[] = PKGVERSION;
     4251+const char pkgversion_string[] = "(GCC for Cross-LFS 4.3.3.20090223) ";
    28754252diff -Naur gcc-4.3.3.orig/libjava/classpath/doc/cp-tools.info gcc-4.3.3/libjava/classpath/doc/cp-tools.info
    28764253--- gcc-4.3.3.orig/libjava/classpath/doc/cp-tools.info  2009-01-24 04:05:54.000000000 -0800
     
    73988775diff -Naur gcc-4.3.3.orig/libstdc++-v3/ChangeLog gcc-4.3.3/libstdc++-v3/ChangeLog
    73998776--- gcc-4.3.3.orig/libstdc++-v3/ChangeLog       2009-01-24 02:16:26.000000000 -0800
    7400 +++ gcc-4.3.3/libstdc++-v3/ChangeLog    2009-01-27 03:39:42.241832000 -0800
    7401 @@ -1,3 +1,11 @@
     8777+++ gcc-4.3.3/libstdc++-v3/ChangeLog    2009-02-09 02:08:11.942408000 -0800
     8778@@ -1,3 +1,28 @@
     8779+2009-02-09  Johannes Singler  <singler@ira.uka.de>
     8780+
     8781+        Backport from mainline:
     8782+        2009-02-03  Johannes Singler  <singler@ira.uka.de>
     8783+
     8784+        * include/parallel/algorithmfwd.h:
     8785+        Add parallelism default for many declarations.
     8786+        * include/parallel/numericfwd.h: Likewise.
     8787+        * include/parallel/iterator.h: Use iterator_traits as usual.
     8788+        * include/parallel/par_loop.h:
     8789+        Include equally_split.h.
     8790+        (for_each_template_random_access_ed):
     8791+        Avoid calling the Result default constructor.
     8792+        * include/parallel/numeric: Replace
     8793+        for_each_template_random_access by
     8794+        for_each_template_random_access_ed in numeric functions.
     8795+
    74028796+2009-01-27  Uros Bizjak  <ubizjak@gmail.com>
    74038797+
     
    74118805 
    74128806        * GCC 4.3.3 released.
     8807diff -Naur gcc-4.3.3.orig/libstdc++-v3/include/parallel/algorithmfwd.h gcc-4.3.3/libstdc++-v3/include/parallel/algorithmfwd.h
     8808--- gcc-4.3.3.orig/libstdc++-v3/include/parallel/algorithmfwd.h 2008-02-17 16:00:00.000000000 -0800
     8809+++ gcc-4.3.3/libstdc++-v3/include/parallel/algorithmfwd.h      2009-02-09 02:08:11.942408000 -0800
     8810@@ -99,7 +99,8 @@
     8811   template<typename _RAIter, typename _Tp>
     8812     typename iterator_traits<_RAIter>::difference_type
     8813     count_switch(_RAIter, _RAIter, const _Tp&, random_access_iterator_tag,
     8814-                __gnu_parallel::_Parallelism);
     8815+                __gnu_parallel::_Parallelism parallelism
     8816+                = __gnu_parallel::parallel_unbalanced);
     8817 
     8818 
     8819   template<typename _IIter, typename _Predicate>
     8820@@ -121,7 +122,8 @@
     8821   template<typename _RAIter, typename _Predicate>
     8822     typename iterator_traits<_RAIter>::difference_type
     8823     count_if_switch(_RAIter, _RAIter, _Predicate, random_access_iterator_tag,
     8824-                   __gnu_parallel::_Parallelism);
     8825+                   __gnu_parallel::_Parallelism parallelism
     8826+                   = __gnu_parallel::parallel_unbalanced);
     8827 
     8828   // algobase.h
     8829   template<typename _IIter1, typename _IIter2>
     8830@@ -228,7 +230,8 @@
     8831   template<typename _RAIter, typename _Function>
     8832     _Function
     8833     for_each_switch(_RAIter, _RAIter, _Function, random_access_iterator_tag,
     8834-                   __gnu_parallel::_Parallelism);
     8835+                   __gnu_parallel::_Parallelism  parallelism
     8836+                   = __gnu_parallel::parallel_balanced);
     8837 
     8838 
     8839   template<typename _FIter, typename _Generator>
     8840@@ -250,7 +253,8 @@
     8841   template<typename _RAIter, typename _Generator>
     8842     void
     8843     generate_switch(_RAIter, _RAIter, _Generator, random_access_iterator_tag,
     8844-                   __gnu_parallel::_Parallelism);
     8845+                   __gnu_parallel::_Parallelism parallelism
     8846+                   = __gnu_parallel::parallel_balanced);
     8847 
     8848   template<typename _OIter, typename _Size, typename _Generator>
     8849     _OIter
     8850@@ -272,7 +276,8 @@
     8851   template<typename _RAIter, typename _Size, typename _Generator>
     8852     _RAIter
     8853     generate_n_switch(_RAIter, _Size, _Generator, random_access_iterator_tag,
     8854-                     __gnu_parallel::_Parallelism);
     8855+                     __gnu_parallel::_Parallelism parallelism
     8856+                     = __gnu_parallel::parallel_balanced);
     8857 
     8858   template<typename _IIter1, typename _IIter2>
     8859     bool
     8860@@ -429,7 +434,8 @@
     8861     _RAOIter
     8862     transform1_switch(_RAIIter, _RAIIter, _RAOIter, UnaryOperation,
     8863                      random_access_iterator_tag, random_access_iterator_tag,
     8864-                     __gnu_parallel::_Parallelism);
     8865+                     __gnu_parallel::_Parallelism parallelism
     8866+                     = __gnu_parallel::parallel_balanced);
     8867 
     8868 
     8869   template<typename _IIter1, typename _IIter2, typename _OIter,
     8870@@ -455,7 +461,8 @@
     8871     transform2_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter3, _BiOperation,
     8872                      random_access_iterator_tag, random_access_iterator_tag,
     8873                      random_access_iterator_tag,
     8874-                     __gnu_parallel::_Parallelism);
     8875+                     __gnu_parallel::_Parallelism parallelism
     8876+                     = __gnu_parallel::parallel_balanced);
     8877 
     8878   template<typename _IIter1, typename _IIter2, typename _OIter,
     8879           typename _BiOperation, typename _Tag1,
     8880@@ -546,7 +553,8 @@
     8881   template<typename _RAIter, typename _Compare>
     8882     _RAIter
     8883     max_element_switch(_RAIter, _RAIter, _Compare, random_access_iterator_tag,
     8884-                      __gnu_parallel::_Parallelism);
     8885+                      __gnu_parallel::_Parallelism parallelism
     8886+                      = __gnu_parallel::parallel_balanced);
     8887 
     8888 
     8889   template<typename _IIter1, typename _IIter2, typename _OIter>
     8890@@ -615,7 +623,8 @@
     8891   template<typename _RAIter, typename _Compare>
     8892     _RAIter
     8893     min_element_switch(_RAIter, _RAIter, _Compare, random_access_iterator_tag,
     8894-                      __gnu_parallel::_Parallelism);
     8895+                      __gnu_parallel::_Parallelism parallelism
     8896+                      = __gnu_parallel::parallel_balanced);
     8897 
     8898   template<typename _RAIter>
     8899     void
     8900diff -Naur gcc-4.3.3.orig/libstdc++-v3/include/parallel/iterator.h gcc-4.3.3/libstdc++-v3/include/parallel/iterator.h
     8901--- gcc-4.3.3.orig/libstdc++-v3/include/parallel/iterator.h     2008-01-09 10:27:27.000000000 -0800
     8902+++ gcc-4.3.3/libstdc++-v3/include/parallel/iterator.h  2009-02-09 02:08:11.942408000 -0800
     8903@@ -131,7 +131,8 @@
     8904     public:
     8905       typedef IteratorCategory iterator_category;
     8906       typedef void value_type;
     8907-      typedef typename Iterator1::difference_type difference_type;
     8908+      typedef typename std::iterator_traits<Iterator1>::difference_type
     8909+                                                            difference_type;
     8910       typedef type* pointer;
     8911       typedef type& reference;
     8912 
     8913diff -Naur gcc-4.3.3.orig/libstdc++-v3/include/parallel/numeric gcc-4.3.3/libstdc++-v3/include/parallel/numeric
     8914--- gcc-4.3.3.orig/libstdc++-v3/include/parallel/numeric        2008-02-17 16:00:00.000000000 -0800
     8915+++ gcc-4.3.3/libstdc++-v3/include/parallel/numeric     2009-02-09 02:08:11.942408000 -0800
     8916@@ -103,13 +103,13 @@
     8917          __gnu_parallel::accumulate_selector<_RandomAccessIterator>
     8918            my_selector;
     8919          __gnu_parallel::
     8920-           for_each_template_random_access(begin, end,
     8921+           for_each_template_random_access_ed(begin, end,
     8922                                            __gnu_parallel::nothing(),
     8923                                            my_selector,
     8924                                            __gnu_parallel::
     8925                                            accumulate_binop_reduct
     8926                                            <BinaryOperation>(binary_op),
     8927-                                           res, res, -1, parallelism_tag);
     8928+                                           res, res, -1);
     8929          return res;
     8930        }
     8931       else
     8932@@ -211,9 +211,9 @@
     8933            inner_product_selector<RandomAccessIterator1,
     8934            RandomAccessIterator2, T> my_selector(first1, first2);
     8935          __gnu_parallel::
     8936-           for_each_template_random_access(first1, last1, binary_op2,
     8937+           for_each_template_random_access_ed(first1, last1, binary_op2,
     8938                                            my_selector, binary_op1,
     8939-                                           res, res, -1, parallelism_tag);
     8940+                                           res, res, -1);
     8941          return res;
     8942        }
     8943       else
     8944@@ -432,10 +432,10 @@
     8945            end_pair(end, result + (end - begin));
     8946          __gnu_parallel::adjacent_difference_selector<ip> functionality;
     8947          __gnu_parallel::
     8948-           for_each_template_random_access(begin_pair, end_pair, bin_op,
     8949+           for_each_template_random_access_ed(begin_pair, end_pair, bin_op,
     8950                                            functionality,
     8951                                            __gnu_parallel::dummy_reduct(),
     8952-                                           dummy, dummy, -1, parallelism_tag);
     8953+                                           dummy, dummy, -1);
     8954          return functionality.finish_iterator;
     8955        }
     8956       else
     8957diff -Naur gcc-4.3.3.orig/libstdc++-v3/include/parallel/numericfwd.h gcc-4.3.3/libstdc++-v3/include/parallel/numericfwd.h
     8958--- gcc-4.3.3.orig/libstdc++-v3/include/parallel/numericfwd.h   2008-02-17 16:00:00.000000000 -0800
     8959+++ gcc-4.3.3/libstdc++-v3/include/parallel/numericfwd.h        2009-02-09 02:08:11.942408000 -0800
     8960@@ -83,7 +83,8 @@
     8961     _Tp
     8962     accumulate_switch(_RAIter, _RAIter, _Tp, _BinaryOper,
     8963                      random_access_iterator_tag,
     8964-                     __gnu_parallel::_Parallelism);
     8965+                     __gnu_parallel::_Parallelism parallelism
     8966+                     = __gnu_parallel::parallel_unbalanced);
     8967 
     8968   template<typename _IIter, typename _OIter>
     8969     _OIter
     8970@@ -124,7 +125,8 @@
     8971     adjacent_difference_switch(_IIter, _IIter, _OIter, _BinaryOper,
     8972                               random_access_iterator_tag,
     8973                               random_access_iterator_tag,
     8974-                              __gnu_parallel::_Parallelism);
     8975+                              __gnu_parallel::_Parallelism parallelism
     8976+                              = __gnu_parallel::parallel_unbalanced);
     8977 
     8978   template<typename _IIter1, typename _IIter2, typename _Tp>
     8979     _Tp
     8980@@ -164,7 +166,8 @@
     8981     inner_product_switch(_RAIter1, _RAIter1, _RAIter2, _Tp, BinaryFunction1,
     8982                         BinaryFunction2, random_access_iterator_tag,
     8983                         random_access_iterator_tag,
     8984-                        __gnu_parallel::_Parallelism);
     8985+                        __gnu_parallel::_Parallelism
     8986+                        = __gnu_parallel::parallel_unbalanced);
     8987 
     8988   template<typename _IIter1, typename _IIter2, typename _Tp,
     8989           typename _BinaryFunction1, typename _BinaryFunction2,
     8990diff -Naur gcc-4.3.3.orig/libstdc++-v3/include/parallel/par_loop.h gcc-4.3.3/libstdc++-v3/include/parallel/par_loop.h
     8991--- gcc-4.3.3.orig/libstdc++-v3/include/parallel/par_loop.h     2008-01-09 18:07:41.000000000 -0800
     8992+++ gcc-4.3.3/libstdc++-v3/include/parallel/par_loop.h  2009-02-09 02:08:11.942408000 -0800
     8993@@ -42,6 +42,7 @@
     8994 #include <omp.h>
     8995 #include <parallel/settings.h>
     8996 #include <parallel/base.h>
     8997+#include <parallel/equally_split.h>
     8998 
     8999 namespace __gnu_parallel
     9000 {
     9001@@ -80,9 +81,9 @@
     9002   {
     9003     typedef std::iterator_traits<RandomAccessIterator> traits_type;
     9004     typedef typename traits_type::difference_type difference_type;
     9005-
     9006     const difference_type length = end - begin;
     9007     Result *thread_results;
     9008+    bool* constructed;
     9009 
     9010     thread_index_t num_threads =
     9011       __gnu_parallel::min<difference_type>(get_max_threads(), length);
     9012@@ -92,13 +93,15 @@
     9013 #       pragma omp single
     9014           {
     9015             num_threads = omp_get_num_threads();
     9016-            thread_results = new Result[num_threads];
     9017+            thread_results = static_cast<Result*>(
     9018+                                ::operator new(num_threads * sizeof(Result)));
     9019+            constructed = new bool[num_threads];
     9020           }
     9021 
     9022         thread_index_t iam = omp_get_thread_num();
     9023 
     9024         // Neutral element.
     9025-        Result reduct = Result();
     9026+        Result* reduct = static_cast<Result*>(::operator new(sizeof(Result)));
     9027 
     9028         difference_type
     9029             start = equally_split_point(length, num_threads, iam),
     9030@@ -106,23 +109,30 @@
     9031 
     9032         if (start < stop)
     9033           {
     9034-            reduct = f(o, begin + start);
     9035+            new(reduct) Result(f(o, begin + start));
     9036             ++start;
     9037+            constructed[iam] = true;
     9038           }
     9039+        else
     9040+          constructed[iam] = false;
     9041 
     9042         for (; start < stop; ++start)
     9043-          reduct = r(reduct, f(o, begin + start));
     9044+          *reduct = r(*reduct, f(o, begin + start));
     9045 
     9046-        thread_results[iam] = reduct;
     9047+        thread_results[iam] = *reduct;
     9048       } //parallel
     9049 
     9050     for (thread_index_t i = 0; i < num_threads; ++i)
     9051-      output = r(output, thread_results[i]);
     9052+        if (constructed[i])
     9053+            output = r(output, thread_results[i]);
     9054 
     9055     // Points to last element processed (needed as return value for
     9056     // some algorithms like transform).
     9057     f.finish_iterator = begin + length;
     9058 
     9059+    delete[] thread_results;
     9060+    delete[] constructed;
     9061+
     9062     return o;
     9063   }
     9064 
    74139065diff -Naur gcc-4.3.3.orig/libstdc++-v3/scripts/extract_symvers gcc-4.3.3/libstdc++-v3/scripts/extract_symvers
    74149066--- gcc-4.3.3.orig/libstdc++-v3/scripts/extract_symvers 2005-08-16 19:28:44.000000000 -0700
Note: See TracChangeset for help on using the changeset viewer.