Changeset f81e00b
- Timestamp:
- Feb 22, 2009, 10:28:15 PM (16 years ago)
- Branches:
- clfs-1.2, clfs-2.1, clfs-3.0.0-systemd, clfs-3.0.0-sysvinit, master, systemd, sysvinit
- Children:
- 10b98b1
- Parents:
- 54f612f
- Files:
-
- 3 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
BOOK/introduction/common/changelog.xml
r54f612f rf81e00b 45 45 <listitem> 46 46 <para>[Jim] - Updated Vim Branch Update Patch to -9.</para> 47 </listitem> 48 <listitem> 49 <para>[Jim] - Updated GCC Branch Update Patch to -2.</para> 47 50 </listitem> 48 51 </itemizedlist> -
BOOK/patches.ent
r54f612f rf81e00b 41 41 <!ENTITY file-fixes-patch-size "2 KB"> 42 42 43 <!ENTITY gcc-branch_update-patch "gcc-&gcc-version;-branch_update- 1.patch">44 <!ENTITY gcc-branch_update-patch-md5 " 50f8f4c0389dc057a9fbf8cabc8897d9">45 <!ENTITY gcc-branch_update-patch-size " 246KB">43 <!ENTITY gcc-branch_update-patch "gcc-&gcc-version;-branch_update-2.patch"> 44 <!ENTITY gcc-branch_update-patch-md5 "716d24f135b6247f12434a9965b27988"> 45 <!ENTITY gcc-branch_update-patch-size "302 KB"> 46 46 47 47 <!ENTITY gcc-posix-patch "gcc-&gcc-version;-posix-1.patch"> -
patches/gcc-4.3.3-branch_update-2.patch
r54f612f rf81e00b 1 1 Submitted By: Jim Gifford (jim at cross-lfs dot org) 2 Date: 02- 03-20092 Date: 02-22-2009 3 3 Initial Package Version: 4.3.3 4 4 Origin: Upstream … … 59 59 diff -Naur gcc-4.3.3.orig/gcc/calls.c gcc-4.3.3/gcc/calls.c 60 60 --- 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-0 1-29 02:05:17.651873000 -080061 +++ gcc-4.3.3/gcc/calls.c 2009-02-21 03:08:24.357177000 -0800 62 62 @@ -978,7 +978,6 @@ 63 63 && targetm.calls.split_complex_arg (argtype)) … … 68 68 j += inc; 69 69 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 83 diff -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; 109 diff -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 { 70 144 diff -Naur gcc-4.3.3.orig/gcc/ChangeLog gcc-4.3.3/gcc/ChangeLog 71 145 --- 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 + 74 272 +2009-02-02 Catherine Moore <clm@codesourcery.com> 75 273 + … … 210 408 211 409 * GCC 4.3.3 released. 212 @@ -5,8 + 140,7 @@410 @@ -5,8 +264,7 @@ 213 411 2009-01-20 Joseph Myers <joseph@codesourcery.com> 214 412 … … 220 418 2009-01-19 Richard Guenther <rguenther@suse.de> 221 419 222 @@ -41,7 + 175,8 @@420 @@ -41,7 +299,8 @@ 223 421 224 422 2009-01-11 Matthias Klose <doko@ubuntu.com> … … 230 428 231 429 * config/i386/i386.md (*strmovsi_1): Simplify asm alternatives. 232 @@ -509,8 + 644,8 @@430 @@ -509,8 +768,8 @@ 233 431 PR tree-optimization/37102 234 432 * tree-outof-ssa.c (remove_gimple_phi_args): Remove all the PHI args … … 241 439 242 440 2008-10-08 Simon Martin <simartin@users.sourceforge.net> 243 @@ -986,8 +1 121,10 @@441 @@ -986,8 +1245,10 @@ 244 442 245 443 (MFC_MIN_DMA_LIST_ELEMENTS): New define. … … 475 673 diff -Naur gcc-4.3.3.orig/gcc/config/i386/i386.c gcc-4.3.3/gcc/config/i386/i386.c 476 674 --- 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 @@ 479 719 destexp = gen_rtx_PLUS (Pmode, destptr, countreg); 480 720 srcexp = gen_rtx_PLUS (Pmode, srcptr, countreg); … … 499 739 destexp, srcexp)); 500 740 } 501 @@ -14781,8 +14 797,8 @@741 @@ -14781,8 +14809,8 @@ 502 742 Arguments have same meaning as for previous function */ 503 743 static void … … 510 750 rtx destexp; 511 751 rtx countreg; 512 @@ -14799,6 +148 15,15 @@752 @@ -14799,6 +14827,15 @@ 513 753 } 514 754 else … … 526 766 } 527 767 528 @@ -15871,15 +15 896,15 @@768 @@ -15871,15 +15908,15 @@ 529 769 break; 530 770 case rep_prefix_8_byte: … … 547 787 diff -Naur gcc-4.3.3.orig/gcc/config/i386/i386.md gcc-4.3.3/gcc/config/i386/i386.md 548 788 --- 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 @@ 551 817 gcc_unreachable (); 552 818 } … … 557 823 558 824 case TYPE_MMXMOV: 559 @@ -1415,7 +141 5,7 @@825 @@ -1415,7 +1417,7 @@ 560 826 } 561 827 [(set (attr "type") … … 566 832 (const_string "mmxmov") 567 833 (eq_attr "alternative" "6") 568 @@ -2231,7 +223 1,7 @@834 @@ -2231,7 +2233,7 @@ 569 835 return "movq\t{%1, %0|%0, %1}"; 570 836 … … 575 841 576 842 case TYPE_MULTI: 577 @@ -2252,7 +225 2,7 @@843 @@ -2252,7 +2254,7 @@ 578 844 } 579 845 [(set (attr "type") … … 584 850 (const_string "mmxmov") 585 851 (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 @@ 587 878 588 879 (define_insn "set_rip_rex64" … … 593 884 "lea{q}\t{%l1(%%rip), %0|%0, %l1[rip]}" 594 885 [(set_attr "type" "lea") 595 @@ -15009,7 +150 09,9 @@886 @@ -15009,7 +15029,9 @@ 596 887 597 888 (define_insn "set_got_offset_rex64" … … 604 895 "movabs{q}\t{$_GLOBAL_OFFSET_TABLE_-%l1, %0|%0, OFFSET FLAT:_GLOBAL_OFFSET_TABLE_-%l1}" 605 896 [(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, 975 diff -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 606 991 diff -Naur gcc-4.3.3.orig/gcc/config/mips/sde.h gcc-4.3.3/gcc/config/mips/sde.h 607 992 --- gcc-4.3.3.orig/gcc/config/mips/sde.h 2007-09-19 10:13:33.000000000 -0700 … … 663 1048 #ifdef pa64 664 1049 .level 2.0w 1050 diff -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)) 1073 diff -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 665 1101 diff -Naur gcc-4.3.3.orig/gcc/config/sparc/linux64.h gcc-4.3.3/gcc/config/sparc/linux64.h 666 1102 --- gcc-4.3.3.orig/gcc/config/sparc/linux64.h 2007-10-18 21:29:38.000000000 -0700 … … 719 1155 diff -Naur gcc-4.3.3.orig/gcc/cp/ChangeLog gcc-4.3.3/gcc/cp/ChangeLog 720 1156 --- 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 + 723 1177 +2009-02-03 Paolo Bonzini <bonzini@gnu.org> 724 1178 + … … 747 1201 748 1202 * GCC 4.3.3 released. 1203 diff -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); 1215 diff -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 } 749 1268 diff -Naur gcc-4.3.3.orig/gcc/cp/parser.c gcc-4.3.3/gcc/cp/parser.c 750 1269 --- gcc-4.3.3.orig/gcc/cp/parser.c 2008-11-19 13:00:23.000000000 -0800 … … 778 1297 diff -Naur gcc-4.3.3.orig/gcc/cp/pt.c gcc-4.3.3/gcc/cp/pt.c 779 1298 --- 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 -08001299 +++ gcc-4.3.3/gcc/cp/pt.c 2009-02-17 10:27:32.576290000 -0800 781 1300 @@ -4555,6 +4555,13 @@ 782 1301 expr = convert_nontype_argument_function (type, expr); … … 793 1312 /* [temp.arg.nontype]/5, bullet 5 794 1313 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. */ 1338 diff -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 { 795 1375 diff -Naur gcc-4.3.3.orig/gcc/cp/typeck.c gcc-4.3.3/gcc/cp/typeck.c 796 1376 --- gcc-4.3.3.orig/gcc/cp/typeck.c 2009-01-15 14:34:20.000000000 -0800 … … 851 1431 error ("the type being destroyed is %qT, but the destructor refers to %qT", 852 1432 TYPE_MAIN_VARIANT (object_type), dtor_type); 1433 diff -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); 1460 diff -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 } 1494 diff -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 853 1500 diff -Naur gcc-4.3.3.orig/gcc/doc/invoke.texi gcc-4.3.3/gcc/doc/invoke.texi 854 1501 --- gcc-4.3.3.orig/gcc/doc/invoke.texi 2008-11-21 08:21:50.000000000 -0800 … … 906 1553 diff -Naur gcc-4.3.3.orig/gcc/fortran/ChangeLog gcc-4.3.3/gcc/fortran/ChangeLog 907 1554 --- 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 + 910 1565 +2009-01-26 Paul Thomas <pault@gcc.gnu.org> 911 1566 + … … 1151 1806 case AR_SECTION: 1152 1807 case AR_UNKNOWN: 1808 diff -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 } 1153 1830 diff -Naur gcc-4.3.3.orig/gcc/gimplify.c gcc-4.3.3/gcc/gimplify.c 1154 1831 --- gcc-4.3.3.orig/gcc/gimplify.c 2008-12-18 13:55:31.000000000 -0800 … … 1164 1841 if (notify_temp_creation) 1165 1842 return GS_ERROR; 1843 diff -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); 1871 diff -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) 1166 1883 diff -Naur gcc-4.3.3.orig/gcc/testsuite/ChangeLog gcc-4.3.3/gcc/testsuite/ChangeLog 1167 1884 --- 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 + 1170 1984 +2009-02-03 Paolo Bonzini <bonzini@gnu.org> 1171 1985 + … … 1372 2186 1373 2187 * GCC 4.3.3 released. 1374 @@ -89,7 + 290,7 @@2188 @@ -89,7 +387,7 @@ 1375 2189 1376 2190 Backport from mainline: … … 1381 2195 PR tree-optimization/38529 1382 2196 * gcc.dg/vect/pr38529.c: New test. 1383 @@ -426,8 + 627,8 @@2197 @@ -426,8 +724,8 @@ 1384 2198 1385 2199 2008-11-14 Paul Thomas <pault@gcc.gnu.org> … … 1567 2381 + return 0; 1568 2382 +} 2383 diff -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 + 2452 diff -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 +} 2492 diff -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 1569 2506 diff -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 1570 2507 --- gcc-4.3.3.orig/gcc/testsuite/gcc.c-torture/execute/shiftopt-1.c 2002-12-16 10:23:00.000000000 -0800 … … 1604 2541 + return (0); 1605 2542 +} 2543 diff -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" } */ 2551 diff -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 +} 2570 diff -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 +} 2589 diff -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 +} 2674 diff -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" } */ 2683 diff -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" } */ 2699 diff -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" } */ 2707 diff -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() {} 2714 diff -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() {} 1606 2722 diff -Naur gcc-4.3.3.orig/gcc/testsuite/gcc.dg/pr38245-3.c gcc-4.3.3/gcc/testsuite/gcc.dg/pr38245-3.c 1607 2723 --- gcc-4.3.3.orig/gcc/testsuite/gcc.dg/pr38245-3.c 1969-12-31 16:00:00.000000000 -0800 … … 2134 3250 + 2135 3251 + 3252 diff -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" } */ 3267 diff -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 /*--------------------------------------------------------------------------*/ 3281 diff -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 /*--------------------------------------------------------------------------*/ 3295 diff -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 /*--------------------------------------------------------------------------*/ 3309 diff -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 /*--------------------------------------------------------------------------*/ 3323 diff -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" } */ 2136 3335 diff -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 2137 3336 --- gcc-4.3.3.orig/gcc/testsuite/gcc.dg/tree-ssa/struct-aliasing-1.c 1969-12-31 16:00:00.000000000 -0800 … … 2208 3407 + } 2209 3408 +} 3409 diff -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 +} 3425 diff -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 +} 3441 diff -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]; 2210 3455 diff -Naur gcc-4.3.3.orig/gcc/testsuite/g++.dg/other/pr38706.C gcc-4.3.3/gcc/testsuite/g++.dg/other/pr38706.C 2211 3456 --- gcc-4.3.3.orig/gcc/testsuite/g++.dg/other/pr38706.C 1969-12-31 16:00:00.000000000 -0800 … … 2242 3487 +{ 2243 3488 + A().~int(); // { dg-error "expected" } 3489 +} 3490 diff -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 +} 3510 diff -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 2244 3523 +} 2245 3524 diff -Naur gcc-4.3.3.orig/gcc/testsuite/g++.dg/template/dtor5.C gcc-4.3.3/gcc/testsuite/g++.dg/template/dtor5.C … … 2478 3757 +void S16() { S9 x; S15(x); } 2479 3758 + 3759 diff -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 2480 3811 diff -Naur gcc-4.3.3.orig/gcc/testsuite/gfortran.dg/bounds_5.f90 gcc-4.3.3/gcc/testsuite/gfortran.dg/bounds_5.f90 2481 3812 --- gcc-4.3.3.orig/gcc/testsuite/gfortran.dg/bounds_5.f90 1969-12-31 16:00:00.000000000 -0800 … … 2873 4204 { 2874 4205 STRIP_USELESS_TYPE_CONVERSION (result); 4206 diff -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 } 4243 diff -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) "; 2875 4252 diff -Naur gcc-4.3.3.orig/libjava/classpath/doc/cp-tools.info gcc-4.3.3/libjava/classpath/doc/cp-tools.info 2876 4253 --- gcc-4.3.3.orig/libjava/classpath/doc/cp-tools.info 2009-01-24 04:05:54.000000000 -0800 … … 7398 8775 diff -Naur gcc-4.3.3.orig/libstdc++-v3/ChangeLog gcc-4.3.3/libstdc++-v3/ChangeLog 7399 8776 --- 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 + 7402 8796 +2009-01-27 Uros Bizjak <ubizjak@gmail.com> 7403 8797 + … … 7411 8805 7412 8806 * GCC 4.3.3 released. 8807 diff -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 8900 diff -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 8913 diff -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 8957 diff -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, 8990 diff -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 7413 9065 diff -Naur gcc-4.3.3.orig/libstdc++-v3/scripts/extract_symvers gcc-4.3.3/libstdc++-v3/scripts/extract_symvers 7414 9066 --- gcc-4.3.3.orig/libstdc++-v3/scripts/extract_symvers 2005-08-16 19:28:44.000000000 -0700 -
scripts/patch/gcc-patch.sh
r54f612f rf81e00b 47 47 # 48 48 DATE_STAMP=$(cat gcc-${VERSION}/gcc/DATESTAMP) 49 echo "${VERSION}" > gcc-${VERSION}/gcc/BASE-VER 49 50 sed -i "s:PKGVERSION:\"(GCC for Cross-LFS ${VERSION}.${DATE_STAMP}) \":" gcc-${VERSION}/gcc/version.c 50 51 … … 55 56 REMOVE="ABOUT-NLS COPYING COPYING.LIB ChangeLog ChangeLog.tree-ssa MAINTAINERS Makefile.def 56 57 Makefile.in Makefile.tpl README README.SCO boehm-gc/ChangeLog BUGS FAQ LAST_UPDATED 57 MD5SUMS NEWS bugs.html faq.html gcc/ DEV-PHASE gcc/c-parse.c58 MD5SUMS NEWS bugs.html faq.html gcc/BASE-VER gcc/DEV-PHASE gcc/c-parse.c 58 59 gcc/gengtype-lex.c gcc/c-parse.y gcc/gengtype-yacc.c gcc/gengtype-yacc.h gcc/f/BUGS gcc/f/NEWS 59 60 gcc/java/parse-scan.c gcc/java/parse.c gcc/objc/objc-parse.c gcc/objc/objc-parse.y"
Note:
See TracChangeset
for help on using the changeset viewer.