- 30 Jan, 2013 16 commits
-
-
From-SVN: r195591
Ian Lance Taylor committed -
PR sanitizer/55374 * gcc.c (LIBASAN_SPEC): Define just to ADD_STATIC_LIBASAN_LIBS if LIBASAN_EARLY_SPEC is defined. (LIBASAN_EARLY_SPEC): Define to empty string if not already defined. (LINK_COMMAND_SPEC): Add LIBASAN_EARLY_SPEC for -fsanitize=address, before %o. * config/gnu-user.h (LIBASAN_EARLY_SPEC): Define. * g++.dg/asan/large-func-test-1.C: Allow both _Zna[jm] in addition to _Znw[jm] in the backtrace. Allow _Zna[jm] to be the first frame printed in backtrace. * g++.dg/asan/deep-stack-uaf-1.C: Use malloc instead of operator new to avoid errors about mismatched allocation vs. deallocation. From-SVN: r195585
Jakub Jelinek committed -
re PR c++/55742 (__attribute__ in class function declaration cause "prototype does not match" errors.) PR c++/55742 * config/i386/i386.c (ix86_valid_target_attribute_inner_p): Diagnose invalid args instead of ICEing on it. (ix86_valid_target_attribute_tree): Return error_mark_node if ix86_valid_target_attribute_inner_p failed. (ix86_valid_target_attribute_p): Return false only if ix86_valid_target_attribute_tree returned error_mark_node. Allow target("default") attribute. (sorted_attr_string): Change argument from const char * to tree, merge in all target attribute arguments rather than just one. Formatting fix. Use XNEWVEC instead of xmalloc and XDELETEVEC instead of free. Avoid using strcat. (ix86_mangle_function_version_assembler_name): Mangle target("default") as if no target attribute is present. Adjust sorted_attr_string caller. Avoid leaking memory. Use XNEWVEC instead of xmalloc and XDELETEVEC instead of free. (ix86_function_versions): Don't return true if one of the decls doesn't have target attribute. If they don't and one of the decls is DECL_FUNCTION_VERSIONED, report an error. Adjust sorted_attr_string caller. Use XDELETEVEC instead of free. (ix86_supports_function_versions): Remove. (make_name): Fix up formatting. (make_dispatcher_decl): Remove resolver_name and its initialization. Avoid leaking memory. (is_function_default_version): Return true if there is target("default") attribute rather than no target attribute at all. (make_resolver_func): Avoid leaking memory. (ix86_generate_version_dispatcher_body): Likewise. (TARGET_OPTION_SUPPORTS_FUNCTION_VERSIONS): Remove. * target.def (supports_function_versions): Remove. * doc/tm.texi.in (SUPPORTS_FUNCTION_VERSIONS): Remove. * doc/tm.texi: Regenerated. * c-common.c (handle_target_attribute): Revert 2012-12-26 change. * g++.dg/mv1.C: Moved to... * g++.dg/ext/mv1.C: ... here. Adjust test. * g++.dg/mv2.C: Moved to... * g++.dg/ext/mv2.C: ... here. Adjust test. * g++.dg/mv3.C: Moved to... * g++.dg/ext/mv3.C: ... here. * g++.dg/mv4.C: Moved to... * g++.dg/ext/mv4.C: ... here. * g++.dg/mv5.C: Moved to... * g++.dg/ext/mv5.C: ... here. Adjust test. * g++.dg/mv6.C: Moved to... * g++.dg/ext/mv6.C: ... here. Adjust test. * g++.dg/ext/mv7.C: New test. * g++.dg/ext/mv8.C: New test. * g++.dg/ext/mv9.C: New test. * g++.dg/ext/mv10.C: New test. * g++.dg/ext/mv11.C: New test. From-SVN: r195584
Jakub Jelinek committed -
2013-01-30 Vladimir Makarov <vmakarov@redhat.com> PR rtl-optimization/56144 * lra-constraints.c (get_reload_reg): Don't reuse reload pseudo for values with side effects. 2013-01-30 Vladimir Makarov <vmakarov@redhat.com> PR rtl-optimization/56144 * gcc.dg/pr56144.c: New. From-SVN: r195582
Vladimir Makarov committed -
PR other/54620 PR target/39064 * md5.h (md5_uintptr, md5_uint32): Define as uintptr_t/uint32_t if stdint.h and sys/types.h headers are present. * sha1.h (sha1_uintptr, sha1_uint32): Likewise. From-SVN: r195579
Kai Tietz committed -
* g++.dg/cpp0x/constexpr-53094-2.C: Ignore non-standard ABI message. * g++.dg/cpp0x/constexpr-53094-3.C: Same. * g++.dg/cpp0x/constexpr-55573.C: Same From-SVN: r195578
David Edelsohn committed -
2013-01-30 Richard Biener <rguenther@suse.de> * sparseset.h (sparseset_bit_p): Use gcc_checking_assert. (sparseset_pop): Likewise. * cfganal.c (compute_idf): Likewise. Increase work-stack size to be able to use quick_push in the worker loop. From-SVN: r195577
Richard Biener committed -
From-SVN: r195576
Marek Polacek committed -
2013-01-30 Richard Biener <rguenther@suse.de> PR lto/56147 * lto-symtab.c (lto_symtab_merge_decls_1): Guard DECL_BUILT_IN check. From-SVN: r195575
Richard Biener committed -
gcc/ PR tree-optimization/56064 * fixed-value.c (fixed_from_double_int): New function. * fixed-value.h (fixed_from_double_int): New prototype. (const_fixed_from_double_int): New static inline function. * fold-const.c (native_interpret_fixed): New static function. (native_interpret_expr) <FIXED_POINT_TYPE>: Use it. (can_native_interpret_type_p) <FIXED_POINT_TYPE>: Return true. (native_encode_fixed): New static function. (native_encode_expr) <FIXED_CST>: Use it. (native_interpret_int): Move double_int worker code to... * double-int.c (double_int::from_buffer): ...this new static method. * double-int.h (double_int::from_buffer): Prototype it. gcc/testsuite/ PR tree-optimization/56064 * gcc.dg/fixed-point/view-convert.c: New test. From-SVN: r195574
Georg-Johann Lay committed -
2013-01-30 Richard Biener <rguenther@suse.de> * tree-ssa-structalias.c (final_solutions, final_solutions_obstack): New pointer-map and obstack. (init_alias_vars): Allocate pointer-map and obstack. (delete_points_to_sets): Free them. (find_what_var_points_to): Cache result. (find_what_p_points_to): Adjust for changed interface of find_what_var_points_to. (compute_points_to_sets): Likewise. (ipa_pta_execute): Likewise. From-SVN: r195573
Richard Biener committed -
* configure.ac (HAVE_AS_SPARC_NOBITS): New test. * configure: Regenerate. * config.in: Regenerate. * config/sparc/sparc.c (sparc_solaris_elf_asm_named_section): Emit #nobits/#progbits if supported. From-SVN: r195572
Rainer Orth committed -
* lib/target-supports-dg.exp (dg-process-target): Use expr to evaluate the end index in string range. From-SVN: r195571
Andreas Schwab committed -
2012-01-30 Tobias Burnus <burnus@net-b.de> PR fortran/56138 * trans-decl.c (gfc_trans_deferred_vars): Fix deferred-length results for functions without extra result variable. 2012-01-30 Tobias Burnus <burnus@net-b.de> PR fortran/56138 * gfortran.dg/allocatable_function_6.f90: New. From-SVN: r195570
Tobias Burnus committed -
From-SVN: r195569
Ian Lance Taylor committed -
From-SVN: r195568
GCC Administrator committed
-
- 29 Jan, 2013 24 commits
-
-
2013-01-29 Janus Weil <janus@gcc.gnu.org> Mikael Morin <mikael@gcc.gnu.org> PR fortran/54107 * gfortran.h (gfc_component): Delete members 'formal' and 'formal_ns'. (gfc_copy_formal_args,gfc_copy_formal_args_ppc,gfc_expr_replace_symbols, gfc_expr_replace_comp): Delete. (gfc_sym_get_dummy_args): New prototype. * dependency.c (gfc_check_fncall_dependency): Use 'gfc_sym_get_dummy_args'. * expr.c (gfc_is_constant_expr): Ditto. (replace_symbol,gfc_expr_replace_symbols,replace_comp, gfc_expr_replace_comp): Deleted. * frontend-passes.c (doloop_code,do_function): Use 'gfc_sym_get_dummy_args'. * interface.c (gfc_check_operator_interface,gfc_compare_interfaces, gfc_procedure_use,gfc_ppc_use,gfc_arglist_matches_symbol, gfc_check_typebound_override): Ditto. * module.c (MOD_VERSION): Bump module version. (mio_component): Do not read/write 'formal' and 'formal_ns'. * resolve.c (resolve_procedure_interface,resolve_fl_derived0): Do not copy formal args, but just keep a pointer to the interface. (resolve_function,resolve_call,resolve_typebound_generic_call, resolve_ppc_call,resolve_expr_ppc,generate_component_assignments, resolve_fl_procedure,gfc_resolve_finalizers,check_generic_tbp_ambiguity, resolve_typebound_procedure,check_uop_procedure): Use 'gfc_sym_get_dummy_args'. * symbol.c (free_components): Do not free 'formal' and 'formal_ns'. (gfc_copy_formal_args,gfc_copy_formal_args_ppc): Deleted. (gfc_sym_get_dummy_args): New function. * trans-array.c (get_array_charlen,gfc_walk_elemental_function_args): Use 'gfc_sym_get_dummy_args'. * trans-decl.c (build_function_decl,create_function_arglist, build_entry_thunks,init_intent_out_dt,gfc_trans_deferred_vars, add_argument_checking): Ditto. * trans-expr.c (gfc_map_fcn_formal_to_actual,gfc_conv_procedure_call, gfc_conv_statement_function): Ditto. * trans-stmt.c (gfc_conv_elemental_dependencies): Ditto. * trans-types.c (create_fn_spec,gfc_get_function_type): Ditto. 2013-01-29 Janus Weil <janus@gcc.gnu.org> Mikael Morin <mikael@gcc.gnu.org> PR fortran/54107 * gfortran.dg/proc_ptr_comp_36.f90: New. Co-Authored-By: Mikael Morin <mikael@gcc.gnu.org> From-SVN: r195562
Janus Weil committed -
From-SVN: r195560
Ian Lance Taylor committed -
From-SVN: r195559
Oleg Endo committed -
PR target/56121 * config/sh/sh.md (bclr_m2a, bset_m2a, bst_m2a, bld_m2a, bldsign_m2a, bld_reg, *bld_regqi, band_m2a, bandreg_m2a, bor_m2a, borreg_m2a, bxor_m2a, bxorreg_m2a): Add satisfies_constraint_K03 condition. From-SVN: r195558
Oleg Endo committed -
2013-01-29 Greta Yorsh <Greta.Yorsh@arm.com> * config/arm/cortex-a7.md (cortex_a7_neon, cortex_a7_all): Remove. (cortex_a7_idiv): Use cortex_a7_both instead of cortex_a7_all. From-SVN: r195555
Greta Yorsh committed -
2013-01-29 Greta Yorsh <Greta.Yorsh@arm.com> * config/arm/arm.c (cortexa7_younger): Return true for TYPE_CALL. * config/arm/cortex-a7.md (cortex_a7_call): Update required units. From-SVN: r195554
Greta Yorsh committed -
2013-01-29 Greta Yorsh <Greta.Yorsh@arm.com> * config/arm/arm-protos.h (arm_mac_accumulator_is_result): New declaration. * config/arm/arm.c (arm_mac_accumulator_is_result): New function. * config/arm/cortex-a7.md: New bypasses using arm_mac_accumulator_is_result. From-SVN: r195553
Greta Yorsh committed -
2013-01-29 Greta Yorsh <Greta.Yorsh@arm.com> * config/arm/cortex-a7.md (cortex_a7_neon_mul): New reservation. (cortex_a7_neon_mla): Likewise. (cortex_a7_fpfmad): New reservation. (cortex_a7_fpmacs): Use ffmas and update required units. (cortex_a7_fpmuld): Update required units and latency. (cortex_a7_fpmacd): Likewise. (cortex_a7_fdivs, cortex_a7_fdivd): Likewise. (cortex_a7_neon). Likewise. (bypass) Update participating units. From-SVN: r195552
Greta Yorsh committed -
2013-01-29 Greta Yorsh <Greta.Yorsh@arm.com> * config/arm/arm.md (type): Add ffmas and ffmad to "type" attribute. * config/arm/vfp.md (fma,fmsub,fnmsub,fnmadd): Change type from fmac to ffma. * config/arm/vfp11.md (vfp_farith): Use ffmas. (vfp_fmul): Use ffmad. * config/arm/cortex-r4f.md (cortex_r4_fmacs): Use ffmas. (cortex_r4_fmacd): Use ffmad. * config/arm/cortex-m4-fpu.md (cortex_m4_fmacs): Use ffmas. * config/arm/cortex-a9.md (cortex_a9_fmacs): Use ffmas. (cortex_a9_fmacd): Use ffmad. * config/arm/cortex-a8-neon.md (cortex_a8_vfp_macs): Use ffmas. (cortex_a8_vfp_macd): Use ffmad. * config/arm/cortex-a5.md (cortex_a5_fpmacs): Use ffmas. (cortex_a5_fpmacd): Use ffmad. * config/arm/cortex-a15-neon.md (cortex_a15_vfp_macs) Use ffmas. (cortex_a15_vfp_macd): Use ffmad. * config/arm/arm1020e.md (v10_fmul): Use ffmas and ffmad. From-SVN: r195551
Greta Yorsh committed -
re PR libstdc++/54314 (undefined references to 'construction vtable for std::ostream-in-std::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >') PR libstdc++/54314 gcc/ * varasm.c (default_assemble_visibility): Don't warn about visibility on artificial decls. gcc/cp/ * class.c (build_ctor_vtbl_group): Give construction vtables hidden visibility. libstdc++-v3/ * config/abi/pre/gnu.ver: Don't export construction vtables. * config/abi/pre/gnu-versioned-namespace.ver: Likewise. From-SVN: r195550
Jason Merrill committed -
2013-01-29 Ben Brosgol <brosgol@adacore.com> * gnat_rm.texi: Fixed typos. Minor edits. 2013-01-29 Bob Duff <duff@adacore.com> * a-convec.adb: Minor reformatting. 2013-01-29 Pascal Obry <obry@adacore.com> * tempdir.adb, tempdir.ads (Use_Temp_Dir): Set wether to use the temp directory. From-SVN: r195548
Arnaud Charlet committed -
From-SVN: r195547
Arnaud Charlet committed -
2013-01-29 Ed Schonberg <schonberg@adacore.com> * exp_ch5.adb (Expand_Iterator_Loop_Over_Array): Preserve loop identifier only if it comes from source. (Expand_N_Loop_Statement): If the domain of iteration is an enumeration type with a representation clause, remove from visibility the loop identifier before rewriting the loop as a block with a declaration for said identifier. * sem_util.adb (Remove_Homonym): Handle properly the default case. 2013-01-29 Vincent Celier <celier@adacore.com> * prj-proc.adb: Minor comment spelling fix. From-SVN: r195546
Arnaud Charlet committed -
2013-01-29 Pascal Obry <obry@adacore.com> * prj-proc.adb (Process_Expression_Variable_Decl): Prepend Project_Path to current environment. From-SVN: r195545
Pascal Obry committed -
2013-01-29 Thomas Quinot <quinot@adacore.com> * sprint.adb (Sprint_Node_Actual): Output freeze nodes for itypes even if Dump_Freeze_Null is not set. 2013-01-29 Robert Dewar <dewar@adacore.com> * sem_util.adb: Minor reformatting. * s-rident.ads: Minor comment fixes. 2013-01-29 Pascal Obry <obry@adacore.com> * prj-env.ads, prj-env.adb (Add_Directories): Add parameter to control if the path is prepended or appended. From-SVN: r195544
Arnaud Charlet committed -
2013-01-29 Ed Schonberg <schonberg@adacore.com> * sem_ch6.adb (Analyze_Expression_Function): An expression function declaration is not a subprogram declaration, and thus cannot appear in a protected definition. 2013-01-29 Hristian Kirtchev <kirtchev@adacore.com> * exp_util.adb (Insert_Actions): When new actions come from the expression of the expression with actions, then they must be added to the list of existing actions. 2013-01-29 Eric Botcazou <ebotcazou@adacore.com> * sem_ch3.adb (Analyze_Subtype_Declaration) <Private_Kind>: For the subtype of a constrained private type with discriminants that has got a full view, show that the completion is a clone of the full view. From-SVN: r195543
Arnaud Charlet committed -
2013-01-29 Richard Biener <rguenther@suse.de> PR tree-optimization/56113 * tree-ssa-structalias.c (equiv_class_lookup): Also return the bitmap leader. (label_visit): Free duplicate bitmaps and record the leader instead. (perform_var_substitution): Adjust. From-SVN: r195541
Richard Biener committed -
2013-01-29 Javier Miranda <miranda@adacore.com> * errout.ads, errout.adb (Get_Ignore_Errors): New subprogram. * opt.ads (Warn_On_Overlap): Update documentation. * sem_aggr.adb (Resolve_Aggregate, Resolve_Extension_Aggregate): Check function writable actuals. * sem_ch3.adb (Build_Derived_Record_Type, Record_Type_Declaration): Check function writable actuals. * sem_ch4.adb (Analyze_Range): Check function writable actuals. * sem_ch5.adb (Analyze_Assignment): Remove code of the initial implementation of AI05-0144. * sem_ch6.adb (Analyze_Function_Return, (Analyze_Procedure_Call.Analyze_Call_And_Resolve): Remove code of the initial implementation of AI05-0144. * sem_res.adb (Resolve): Remove code of the initial implementation. (Resolve_Actuals): Call Check_Function_Writable_Actuals and remove call of the initial implementation. (Resolve_Arithmetic_Op, Resolve_Logical_Op, Resolve_Membership_Op): Check function writable actuals. * sem_util.ad[sb] (Actuals_In_Call): Removed (Check_Order_Dependence): Removed (Save_Actual): Removed (Check_Function_Writable_Actuals): New subprogram. * usage.adb (Usage): Update documentation. * warnsw.adb (Set_Warning_Switch): Enable warn_on_overlap when setting all warnings. From-SVN: r195540
Javier Miranda committed -
2013-01-29 Robert Dewar <dewar@adacore.com> * a-calend-vms.adb: Minor comment fix. 2013-01-29 Robert Dewar <dewar@adacore.com> * mlib-utl.adb, gnatlink.adb: Avoid reference to ASCII.Back_Slash because of casing issues. * sem_util.ads: Minor comment fix. * style.adb (Check_Identifier): Set proper casing for entities in ASCII. * styleg.adb: Minor comment improvement. * stylesw.ads (Style_Check_Standard): Fix bad comments. 2013-01-29 Hristian Kirtchev <kirtchev@adacore.com> * sem_prag.adb: Add the grammar for pragmas Abstract_State and Global. (Analyze_Pragma): Push the scope of the related subprogram and install its formals once before starting the analysis of the [moded] global list. 2013-01-29 Pascal Obry <obry@adacore.com> * prj-proc.adb (Process_Expression_Variable_Decl): Always handle relative paths in Project_Path as relative to the aggregate project location. Note that this was what was documented. 2013-01-29 Vincent Celier <celier@adacore.com> * gnatcmd.adb: For "gnat stub -P ...", do not check the naming scheme for Ada, when Ada is not a language for the project. From-SVN: r195539
Arnaud Charlet committed -
sem_ch3.adb (Analyze_Subtype_Declaration): Inherit Is_Generic_Actual_Type flag in a nested instance. 2013-01-29 Ed Schonberg <schonberg@adacore.com> * sem_ch3.adb (Analyze_Subtype_Declaration): Inherit Is_Generic_Actual_Type flag in a nested instance. * sem_ch12.adb (Restore_Private_Views): Preserve Is_Generic_Actual_Type flag if actual is a Generic_Actual_Type of an enclosing instance. * sem_util.adb (Corresponding_Generic_Type): Handle generic actual which is an actual of an enclosing instance. * sem_type.adb (Real_Actual): If a generic_actual_type is the formal of an enclosing generic and thus renames the corresponding actual, use the actual of the enclosing instance to resolve spurious ambiguities in instantiations when two formals are instantiated with the same actual. From-SVN: r195538
Ed Schonberg committed -
2013-01-29 Robert Dewar <dewar@adacore.com> * gnat_rm.texi: Document all Ada 2005 and Ada 2012 pragmas as being available as implementation-defined pragmas in earlier versions of Ada. 2013-01-29 Vincent Celier <celier@adacore.com> * clean.adb (Delete): On VMS, delete all versions of the file. From-SVN: r195537
Arnaud Charlet committed -
2013-01-29 Robert Dewar <dewar@adacore.com> * par-ch6.adb (No_Constraint_Maybe_Expr_Func): New procedure. * par-util.adb (No_Constraint): Undo special handling, moved to par-ch6.adb. 2013-01-29 Robert Dewar <dewar@adacore.com> * aspects.ads: Aspect Warnings is implementation defined Add some other missing entries to impl-defined list Mark Warnings as GNAT pragma in main list. * sem_ch8.adb: Process aspects for all cases of renaming declarations. 2013-01-29 Robert Dewar <dewar@adacore.com> * sem_ch6.adb (Analyze_Function_Call): Set In_Assertion flag. * sem_elab.adb (Check_Internal_Call_Continue): Do not issue warnings about possible elaboration error if call is within an assertion. * sinfo.ads, sinfo.adb (In_Assertion): New flag in N_Function_Call node. 2013-01-29 Robert Dewar <dewar@adacore.com> * a-calend-vms.adb, g-eacodu-vms.adb, g-trasym-vms-alpha.adb, * s-auxdec-vms-ia64.adb, s-mastop-vms.adb, s-osprim-vms.adb, s-tasdeb-vms.adb: Replace pragma Interface by pragma Import. 2013-01-29 Robert Dewar <dewar@adacore.com> * opt.ads (Ignore_Style_Checks_Pragmas): New flag. * par-prag.adb (Par, case Style_Checks): Recognize Ignore_Style_Checks_Pragmas. * sem_prag.adb (Analyze_Pragma, case Style_Checks): Recognize Ignore_Style_Checks_Pragmas. * switch-c.adb: Recognize -gnateY switch. * usage.adb: Add documentation for "-gnateY". * vms_data.ads: Add IGNORE_STYLE_CHECKS_PRAGMAS (-gnateY). 2013-01-29 Vincent Celier <celier@adacore.com> * clean.adb (Clean_Executables): Add Sid component when calling Queue.Insert. * make.adb: When inserting in the Queue, add the Source_Id (Sid) when it is known (Start_Compile_If_Possible): When the Source_Id is known (Sid), get the path name of the ALI file (Full_Lib_File) from it, to avoid finding old ALI files in other object directories. * makeutl.ads (Source_Info): New Source_Id component Sid in Format_Gnatmake variant. 2013-01-29 Robert Dewar <dewar@adacore.com> * gnat_ugn.texi: Document -gnateY. 2013-01-29 Doug Rupp <rupp@adacore.com> * s-osinte-vms.ads, s-taprop-vms.adb, system-vms_64.ads, system-vms-ia64.ads: Replace pragma Interface by pragma Import. From-SVN: r195536
Arnaud Charlet committed -
2013-01-29 Robert Dewar <dewar@adacore.com> * atree.ads, atree.adb (Node30): New function. (Set_Node30): New procedure. (Num_Extension_Nodes): Change to 5 (activate new fields/flags). * atree.h: Add macros for Field30 and Node30. * einfo.ads, einfo.adb: Move some fields to avoid duplexing. * treepr.adb (Print_Entity_Information): Print fields 30-35. 2013-01-29 Robert Dewar <dewar@adacore.com> * sem_prag.adb (Analyze_Pragma, case Interface): Consider to be a violation of No_Obsolescent_Features even in Ada 95. Also generates a warning in -gnatwj mode. (Analyze_Pragma, case Interface_Name): Generates a warning in -gnatwj mode. * gnat_ugn.texi: Additional documentation on -gnatwj and pragma Interface[_Name]. 2013-01-29 Vincent Celier <celier@adacore.com> * snames.ads-tmpl: Add new standard name Trailing_Switches. 2013-01-29 Ed Schonberg <schonberg@adacore.com> * sem_disp.adb (Check_Controlling_Type): If a designated type T of an anonymous access type is a limited view of a tagged type, it can be a controlling type only if the subprogram is in the same scope as T. 2013-01-29 Vincent Celier <celier@adacore.com> * gnatcmd.adb: Use the project where the config pragmas file is declared to get its path. 2013-01-29 Vincent Celier <celier@adacore.com> * prj-attr.adb: New attribute Linker'Trailing_Switches. From-SVN: r195535
Arnaud Charlet committed -
From Rainer Orth. From-SVN: r195534
Ian Lance Taylor committed
-