aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/gcc-interface
AgeCommit message (Collapse)AuthorFilesLines
2013-10-10[multiple changes]Arnaud Charlet1-0/+9
2013-10-10 Robert Dewar <dewar@adacore.com> * gnatlink.adb: Minor reformatting. 2013-10-10 Yannick Moy <moy@adacore.com> * debug.adb: Free flag d.E and change doc for flag d.K. 2013-10-10 Ed Schonberg <schonberg@adacore.com> * sem_prag.adb (Check_Precondition_Postcondition): If the pragma comes from an aspect spec, and the subprogram is a library unit, treat as a ppc in a declarative part in ASIS mode, so that expression in aspect is properly analyzed. In this case there is no later point at which the aspect specification would be examined. 2013-10-10 Bob Duff <duff@adacore.com> * opt.ads: Minor comment fix. 2013-10-10 Vadim Godunko <godunko@adacore.com> * a-coinho-shared.ads, a-coinho-shared.adb: New file. * s-atocou.ads: Add procedure to initialize counter. * s-atocou.adb: Likewise. * s-atocou-builtin.adb: Likewise. * s-atocou-x86.adb: Likewise. * gcc-interface/Makefile.in: Select special version of Indefinite_Holders package on platforms where atomic built-ins are supported. Update tools target pairs for PikeOS. From-SVN: r203344
2013-09-25Makefile.in (OUTPUT_OPTION): Define as "-o $@".Tom Tromey1-2/+2
* Makefile.in (OUTPUT_OPTION): Define as "-o $@". * configure.ac: Don't invoke AM_PROG_CC_C_O. (NO_MINUS_C_MINUS_O, OUTPUT_OPTION): Don't subst. * configure, config.in: Rebuild. gcc/ada * gcc-interface/Makefile.in (OUTPUT_OPTION): Define as "-o $@". From-SVN: r202896
2013-09-18re PR ada/58264 (incorrect bounds of string when assigned from dereference ↵Eric Botcazou1-49/+91
of function result) PR ada/58264 * gcc-interface/trans.c (Attribute_to_gnu): Define GNAT_PREFIX local variable and use it throughout. <Attr_Length>: Note whether the prefix is the dereference of a pointer to unconstrained array and, in this case, capture the result for both Attr_First and Attr_Last. From-SVN: r202694
2013-09-18* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Abstract_State>: New.Eric Botcazou1-0/+6
From-SVN: r202690
2013-09-18* gcc-interface/trans.c (gigi): Remove dead code.Eric Botcazou1-12/+0
From-SVN: r202688
2013-09-18trans.c (Subprogram_Body_to_gnu): Pop the stack of return variables for ↵Eric Botcazou1-0/+2
subprograms using the CICO mechanism. * gcc-interface/trans.c (Subprogram_Body_to_gnu): Pop the stack of return variables for subprograms using the CICO mechanism. From-SVN: r202684
2013-09-13Fix thinko in the late conversion to the use of configure variables forDominique d'Humieres1-1/+1
the target pairs selection: * gcc-interface/Makefile.in: Fix darwin Filter to match on $target_os, not target_cpu. From-SVN: r202578
2013-09-12Makefile.in: Import target_cpu, target_vendor, target_os and their host_ ↵Thomas Schwinge1-80/+72
counterparts. 2013-10-11 Thomas Schwinge <thomas@codesourcery.com> Olivier Hainque <hainque@adacore.com> * gcc-interface/Makefile.in: Import target_cpu, target_vendor, target_os and their host_ counterparts. Remove host_canonical and target_cpu_default, unused. Remove local ad-hoc computations of "host", "targ", "arch", "osys" and "manu". Replace uses of these by uses of the now imported family, hence back to filters against canonical values. Remove filters on e500 for target_cpu, expected to be canonicalized into powerpc. Invert the logic filtering on 64bit sparc for VxWorks. Simplify the filtering logic for bareboard tools target pairs, now using straight elf/eabi filters on the target_os part only. From-SVN: r202518
2013-09-10[multiple changes]Arnaud Charlet1-134/+141
2013-09-10 Ed Schonberg <schonberg@adacore.com> * sem_ch3.adb: sem_ch3.adb: (Replace_Anonymoous_Access_To_Protected_Subprogram): If the return type is itself an access to function, recurse to emit another anonymous type. gcc-interface/decl.c (gnat_to_gnu_entity): In ASIS mode (type_annotate_only) do not check whether access types have a set size. 2013-09-10 Robert Dewar <dewar@adacore.com> * err_vars.ads (Warning_Doc_Switch): Ignored in VMS mode. * errout.adb (Warning_Doc_Switch): Ignored in VMS mode. * errout.ads (Warning_Doc_Switch): Ignored in VMS mode. * inline.ads (Warnings): New component in Pending_Body_Info. * sem_ch12.adb (Pending_Body_Info): Save and restore warnings at instantiation point. * warnsw.adb (Save_Warnings): New function (Restore_Warnings): New procedure Remove special handling of Warning_Doc_Switch, cleaner to handle the VMS case in errout, than to introduce undocumented oddities here. * warnsw.ads (Warning_Record) : New type. (Save_Warnings): New function. (Restore_Warnings): New procedure. From-SVN: r202467
2013-09-01re PR ada/58239 (pretty-print.c:789: undefined reference to `operator ↵Eric Botcazou2-3/+13
delete(void*)') PR ada/58239 gnattools/ * Makefile.in (CXX_LFLAGS): New. (TOOLS_FLAGS_TO_PASS_NATIVE): Pass CXX and CXX_LFLAGS. (TOOLS_FLAGS_TO_PASS_RE): Likewise. (TOOLS_FLAGS_TO_PASS_CROSS): Pass CXX. gcc/ada/ * gcc-interface/Makefile.in (GCC_LINK_FLAGS): Add -static-libstdc++. (GCC_LINK): Use CXX instead of CC. * gcc-interface/Make-lang.in (CXX_LFLAGS): New. (ADA_TOOLS_FLAGS_TO_PASS): Pass CXX, and CXX_LFLAGS for native. Co-Authored-By: Iain Sandoe <iain@codesourcery.com> From-SVN: r202150
2013-08-13decl.c (gnat_to_gnu_entity): Do not bother about alias sets of derived types ↵Eric Botcazou1-1/+1
in ASIS mode. * gcc-interface/decl.c (gnat_to_gnu_entity): Do not bother about alias sets of derived types in ASIS mode. From-SVN: r201705
2013-08-13decl.c (gnat_to_gnu_entity): Replace True with true.Eric Botcazou4-19/+19
* gcc-interface/decl.c (gnat_to_gnu_entity): Replace True with true. (is_cplusplus_method): Likewise, and False with false. (components_need_strict_alignment): Likewise. * gcc-interface/misc.c (gnat_init_gcc_fp): Likewise. * gcc-interface/trans.c (Loop_Statement_to_gnu): Likewise. (Handled_Sequence_Of_Statements_to_gnu): Likewise. (add_cleanup): Likewise. (Sloc_to_locus1): Likewise. (Sloc_to_locus): Likewise. (set_expr_location_from_node): Likewise. * gcc-interface/utils.c (potential_alignment_gap): Likewise. From-SVN: r201704
2013-08-13trans.c (set_end_locus_from_node): Clear column info for the end_locus of a ↵Thomas Quinot1-2/+6
block if... * gcc-interface/trans.c (set_end_locus_from_node): Clear column info for the end_locus of a block if it does not come from an End_Label. From-SVN: r201703
2013-08-13trans.c (Handled_Sequence_Of_Statements_to_gnu): If there is no End_Label...Thomas Quinot1-14/+44
* gcc-interface/trans.c (Handled_Sequence_Of_Statements_to_gnu): If there is no End_Label, attach cleanup actions to the sloc of the HSS node instead. (Exception_Handler_to_gnu_zcx): Associate cleanup actions with the sloc of the handler itself. (add_cleanup): Clear column information in sloc of cleanup actions. (Sloc_to_locus1): New static function. (Sloc_to_locus): Call it. (set_expr_location_from_node1): New static function. (set_expr_location_from_node): Call it. From-SVN: r201702
2013-08-13trans.c (Call_to_gnu): Deal with specific conditional expressions for ↵Eric Botcazou1-2/+12
misaligned actual parameters. * gcc-interface/trans.c (Call_to_gnu): Deal with specific conditional expressions for misaligned actual parameters. From-SVN: r201700
2013-08-13trans.c (can_equal_min_or_max_val_p): Be prepared for values outside of the ↵Eric Botcazou1-1/+4
range of the type. * gcc-interface/trans.c (can_equal_min_or_max_val_p): Be prepared for values outside of the range of the type. From-SVN: r201692
2013-08-13utils2.c (build_atomic_load): Do a mere view-conversion to the original type ↵Eric Botcazou1-9/+23
before converting to the result type. * gcc-interface/utils2.c (build_atomic_load): Do a mere view-conversion to the original type before converting to the result type. (build_atomic_store): First do a conversion to the original type before view-converting to the effective type, but deal with a padded type specially. From-SVN: r201682
2013-08-08Makefile.in (TOOLS_LIBS): Pick C object files from the compiler build and ↵Eric Botcazou1-9/+8
use standard library variables. * gcc-interface/Makefile.in (TOOLS_LIBS): Pick C object files from the compiler build and use standard library variables. (../../vxaddr2line$(exeext): Do not depend on targext.o and adjust. (gnatmake-re): Do not depend on targext.o. (gnatlink-re): Do not depend on link.o and targext.o. (../../gnatmake$(exeext): Likewise. (../../gnatlink$(exeext): Likewise. From-SVN: r201602
2013-07-21gigi.h: Likewise.Ondřej Bílka3-6/+6
2013-07-21 Ondřej Bílka <neleai@seznam.cz> * gcc-interface/gigi.h: Likewise. * gcc-interface/trans.c: Likewise. * gcc-interface/utils2.c: Likewise. * gnat_rm.texi: Likewise. * gnat_ugn.texi: Likewise. * raise-gcc.c: Likewise. * sigtramp-ppcvxw.c: Likewise. * sysdep.c: Likewise. * terminals.c: Likewise. From-SVN: r201111
2013-07-20re PR ada/57934 (typo in definition of CAT in gcc-interface/ada.h for ↵Eric Botcazou1-2/+2
traditional preprocessor) PR ada/57934 * gcc-interface/ada.h (CAT): Fix typo. From-SVN: r201084
2013-06-13ada-tree.h (DECL_BY_DOUBLE_REF_P): Delete.Eric Botcazou5-77/+18
* gcc-interface/ada-tree.h (DECL_BY_DOUBLE_REF_P): Delete. * gcc-interface/gigi.h (annotate_object): Adjust prototype. (convert_vms_descriptor): Likewise. * gcc-interface/decl.c (gnat_to_gnu_param): Do not pass fat pointer types by double dereference. (annotate_object): Remove BY_DOUBLE_REF parameter and adjust. (gnat_to_gnu_entity): Adjust calls to annotate_object. * gcc-interface/trans.c (Identifier_to_gnu): Do not deal with double dereference. (Call_to_gnu): Likewise. (build_function_stub): Adjust call to convert_vms_descriptor. (Subprogram_Body_to_gnu): Adjust call to annotate_object. * gcc-interface/utils.c (convert_vms_descriptor): Remove BY_REF parameter and adjust. From-SVN: r200057
2013-05-30* gcc-interface/Makefile.in (arm% androideabi): Robustify.Eric Botcazou1-1/+1
From-SVN: r199436
2013-05-26decl.c: (gnat_to_gnu_entity): In ASIS mode, do not check that access types ↵Eric Botcazou1-3/+6
have a set size. * gcc-interface/decl.c: (gnat_to_gnu_entity): In ASIS mode, do not check that access types have a set size. From-SVN: r199343
2013-05-26decl.c (vinfo_t): New type and associated vector.Eric Botcazou1-87/+158
* gcc-interface/decl.c (vinfo_t): New type and associated vector. (components_to_record): Change return type to bool. Lay out the variants in two passes. Do not force a specific layout for the variant part if the variants do not have a representation clause. Take the alignment of the variant part into account when laying out variants without rep clause in a record type with a partial rep clause. (create_rep_part): Do not set the position of the field. From-SVN: r199342
2013-05-26trans.c (Attribute_to_gnu): Add kludge to avoid generating an overflow for -1.Eric Botcazou1-3/+8
* gcc-interface/trans.c (Attribute_to_gnu) <Attr_Last_Bit>: Add kludge to avoid generating an overflow for -1. From-SVN: r199339
2013-05-26gigi.h (create_type_decl): Adjust prototype.Eric Botcazou3-189/+194
* gcc-interface/gigi.h (create_type_decl): Adjust prototype. (create_label_decl): Complete prototype. (process_attributes): Declare. * gcc-interface/decl.c (gnat_to_gnu_entity): Adjust multiple calls to create_type_decl throughout. <E_Enumeration_Type>: Do the layout of the type manually and call process_attributes on it. Reindent. <E_Enumeration_Subtype>: Minor tweak. <E_Floating_Point_Subtype>: Reindent. <E_Array_Subtype>: Call process_attributes on the array type built for a packed array type. <E_Record_Type>: Call process_attributes on the type. <E_Record_Subtype>: Likewise. <E_Access_Type>: Likewise. <E_Subprogram_Type>: Likewise. Likewise for all types at the end of the processing. * gcc-interface/utils.c (make_aligning_type): Adjust call to create_type_decl. (maybe_pad_type): Likewise. (create_index_type): Likewise. (create_type_decl): Remove attr_list parameter and associated code. (create_var_decl_1): Call process_attributes on the variable. (process_attributes): Take a pointer to the object and add in_place and gnat_node parameters and adjust throughout. <ATTR_MACHINE_ATTRIBUTE>: Pass ATTR_FLAG_TYPE_IN_PLACE only on demand and set the input location. Zap the attribute list at the end. (create_subprog_decl): Call process_attributes on the subprogram. (build_unc_object_type): Adjust call to create_type_decl. (handle_vector_type_attribute): Remove dead code. From-SVN: r199338
2013-05-26gigi.h (make_aligning_type): Adjust prototype.Eric Botcazou4-8/+11
* gcc-interface/gigi.h (make_aligning_type): Adjust prototype. * gcc-interface/utils.c (make_aligning_type): Take GNAT_NODE parameter for the position of the associated TYPE_DECL. * gcc-interface/decl.c (gnat_to_gnu_entity): Adjust call to above. * gcc-interface/utils2.c (maybe_wrap_malloc): Likewise. From-SVN: r199337
2013-05-26decl.c (gnat_to_gnu_entity): Do not prematurely elaborate the full view of a ↵Eric Botcazou2-3/+6
type with a freeze node. * gcc-interface/decl.c (gnat_to_gnu_entity): Do not prematurely elaborate the full view of a type with a freeze node. * gcc-interface/trans.c (process_type): Add explicit predicate. From-SVN: r199336
2013-05-26decl.c (gnat_to_gnu_entity): Always build the UNC variable for aliased ↵Eric Botcazou1-19/+12
objects with unconstrained nominal... * gcc-interface/decl.c (gnat_to_gnu_entity) <object>: Always build the UNC variable for aliased objects with unconstrained nominal subtype. From-SVN: r199335
2013-05-24gigi.h (gnat_init_gcc_fp): Declare.Eric Botcazou3-4/+33
* gcc-interface/gigi.h (gnat_init_gcc_fp): Declare. * gcc-interface/trans.c (gigi): Call it. * gcc-interface/misc.c (gnat_init_gcc_fp): New function. From-SVN: r199287
2013-05-24gigi.h (enum inline_status_t): New type.Eric Botcazou4-41/+74
* gcc-interface/gigi.h (enum inline_status_t): New type. (create_subprog_decl): Adjust prototype. * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Procedure>: Adjust calls to create_subprog_decl. (get_minimal_subprog_decl): Likewise. * gcc-interface/trans.c (gigi): Likewise. (build_raise_check): Likewise. (establish_gnat_vms_condition_handler): Likewise. (Compilation_Unit_to_gnu): Likewise. (gnat_to_gnu): Likewise. * gcc-interface/utils.c (create_subprog_decl): Change inline_flag parameter to inline_status and implement for suppressed inlining. From-SVN: r199286
2013-05-24ada-tree.h (LOOP_STMT_NO_UNROLL): New define.Eric Botcazou2-7/+47
* gcc-interface/ada-tree.h (LOOP_STMT_NO_UNROLL): New define. (LOOP_STMT_UNROLL): Likewise. (LOOP_STMT_NO_VECTOR): Likewise. (LOOP_STMT_VECTOR): Likewise. * gcc-interface/trans.c (struct loop_info_d): Replace label field with stmt field. (Pragma_to_gnu) <Pragma_Loop_Optimize>: New case. (Loop_Statement_to_gnu): Save the loop statement onto the stack instead of the label. (gnat_to_gnu) <N_Exit_Statement>: Retrieve the loop label. From-SVN: r199281
2013-05-24trans.c: Include diagnostic.h and opts.h.Eric Botcazou1-1/+86
* gcc-interface/trans.c: Include diagnostic.h and opts.h. (Pragma_to_gnu) <Pragma_Warnings>: New case. From-SVN: r199280
2013-05-24decl.c (gnat_to_gnu_entity): Constify a handful of local variables.Eric Botcazou1-13/+60
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Type>: Constify a handful of local variables. For a derived untagged type that renames discriminants, change the type of the stored discriminants to a subtype with the bounds of the type of the visible discriminants. (build_subst_list): Rename local variable. From-SVN: r199279
2013-05-16Makefile.in (LLINKER): New variable.Jason Merrill1-1/+3
* Makefile.in (LLINKER): New variable. (mostlyclean): Remove link mutex. * configure.ac: Handle --enable-link-mutex. * lock-and-run.sh: New script. From-SVN: r198977
2013-05-13Restore Solaris/amd64 Ada bootstrap (PR ada/57188)Rainer Orth1-1/+1
PR ada/57188 * gcc-interface/Makefile.in: Allow for amd64 solaris2. From-SVN: r198824
2013-05-07re PR ada/56474 (bogus Storage_Error raised for record containing empty ↵Eric Botcazou1-5/+10
zero-based array) PR ada/56474 * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Array_Subtype>: Use int_const_binop to shift bounds by 1 when they are integer constants. From-SVN: r198663
2013-04-25* gcc-interface/Makefile.in (ADA_EXCLUDE_SRCS): Exclude s-init.ad{s,b}Arnaud Charlet1-0/+1
From-SVN: r198300
2013-04-25Update dependencies.Arnaud Charlet1-36/+35
From-SVN: r198299
2013-04-24Update dependencies.Arnaud Charlet1-1418/+1467
From-SVN: r198245
2013-04-24adabkend.adb, [...]: Everything with name 'Alfa' renamed in 'SPARK'.Yannick Moy1-1319/+1277
2013-04-24 Yannick Moy <moy@adacore.com> * adabkend.adb, ali-util.adb, ali.adb, debug.adb, errout.adb, errout.ads, erroutc.adb, exp_ch3.adb, exp_ch4.adb, exp_ch6.adb, exp_ch7.adb, exp_dbug.adb, exp_util.adb, expander.adb, freeze.adb, gnat1drv.adb, lib-writ.adb, lib-writ.ads, lib-xref.adb, lib-xref.ads, opt.adb, opt.ads, restrict.adb, sem_aggr.adb, sem_attr.adb, sem_ch3.adb, sem_ch4.adb, sem_ch5.adb, sem_ch6.adb, sem_eval.adb, sem_prag.adb, sem_res.adb, sem_util.adb: Everything with name 'Alfa' renamed in 'SPARK'. Update comments. Renaming of units with name 'Alfa', renamed with 'SPARK' instead. * exp_alfa.adb: renamed exp_spark.adb. * exp_alfa.ads: renamed exp_spark.ads. * get_alfa.adb: renamed get_spark_xrefs.adb. * get_alfa.ads: renamed get_spark_xrefs.ads. * lib-xref-alfa.adb: renamed lib-xref-spark_specific.adb. * put_alfa.adb: renamed put_spark_xrefs.adb. * put_alfa.ads: renamed put_spark_xrefs.ads. * alfa.adb: renamed spark_xrefs.adb. * alfa.ads: renamed spark_xrefs.ads. * alfa_test.adb: renamed spark_xrefs_test.adb. From-SVN: r198234
2013-04-23Makefile.in (targ): Fix target name check.Eric Botcazou1-3/+3
2013-04-23 Eric Botcazou <ebotcazou@adacore.com> Pascal Obry <obry@adacore.com> * gcc-interface/Makefile.in (targ): Fix target name check. (../../gnatmake$(exeext)): Add '+' for LTO. (../../gnatlink$(exeext)): Likewise. Co-Authored-By: Pascal Obry <obry@adacore.com> From-SVN: r198200
2013-04-23Update dependencies.Arnaud Charlet1-515/+530
From-SVN: r198199
2013-04-12Update dependencies.Arnaud Charlet1-33/+34
From-SVN: r197919
2013-04-11stor-layout.c (skip_simple_constant_arithmetic): Move to...Eric Botcazou1-4/+5
* stor-layout.c (skip_simple_constant_arithmetic): Move to... * tree.c (skip_simple_constant_arithmetic): ...here and make public. (skip_simple_arithmetic): Tidy up. * tree.h (skip_simple_constant_arithmetic): Declare. ada/ * gcc-interface/decl.c (elaborate_expression_1): Skip only constant arithmetics when looking for a read-only variable in the expression. From-SVN: r197815
2013-04-11Minor editing.Arnaud Charlet1-1/+1
From-SVN: r197802
2013-04-11Update dependencies.Arnaud Charlet1-34/+33
From-SVN: r197800
2013-04-11[multiple changes]Arnaud Charlet1-579/+617
2013-04-11 Robert Dewar <dewar@adacore.com> * back_end.adb (Register_Back_End_Types): Moved to Get_Targ * back_end.ads (C_String): Moved to Get_Targ (Register_Type_Proc): Moved to Get_Targ (Register_Back_End_Types): Moved to Get_Targ. * cstand.adb (Register_Float_Type): New interface (Create_Back_End_Float_Types): Use entries in FPT_Mode_Table. * get_targ.adb (Register_Back_End_Types): Moved here from Back_End. * get_targ.ads (C_String): Moved here from Back_End (Register_Type_Proc): Moved here from Back_End (Register_Back_End_Types): here from Back_End. * gnat1drv.adb (GGnat11drv): Add call to Write_Target_Dependent_Values; * lib-writ.ads, lib-writ.adb (Write_ALI): Remove section writing obsolete target dependent info. * opt.ads (Generate_Target_Dependent_Info): Removed (Target_Dependent_Info_Read): New flag (Target_Dependent_Info_Write): New flag * output.adb: Minor comment change * s-os_lib.ads: Minor reformatting * set_targ.ads, set_targ.adb: Minor reformatting. * switch-c.adb (Scan_Switches.First_Ptr): New variable (Scan_Front_End_Switches): Check -gnatd.b, -gnateT come first (Scan_Front_End_Switches): Handle -gnatet, -gnateT * ttypes.ads: Remove documentation section on target dependent info in ali file Remove four letter codes, no longer used Instead of using Get_Targ.Get_xxx, we use Set_Targ.xxx * usage.adb: Add usage lines for -gnatet/-gnateT * gcc-interface/Make-lang.in: Update dependencies. 2013-04-11 Thomas Quinot <quinot@adacore.com> * sem_ch4.adb: Update documentation. * sinfo.ads (N_Expression_With_Actions): Ditto. 2013-04-11 Hristian Kirtchev <kirtchev@adacore.com> * sem_ch13.adb (Analyze_Aspect_Specifications): Add a guard to prevent the double insertion of the same aspect into a rep item list. This previously led to a circularity. 2013-04-11 Ed Schonberg <schonberg@adacore.com> * sem_attr.adb (Eval_Attribute, case 'Access): Reject attribute reference if the prefix is the dereference of an anonymous access to subprogram type. * exp_attr.adb (Expand_N_Attribute_Reference, Access_Cases): Handle properly a reference to the current instance of a protected type from within a protected subprogram. * sem_res.adb (Find_Unique_Access_Type): Treat Attribute_Access_Type like Allocator_Type when resolving an equality operator. From-SVN: r197791
2013-04-11* gcc-interface/Make-lang.in: Update dependencies.Arnaud Charlet1-9/+9
From-SVN: r197754
2013-03-06trans.c (Attribute_to_gnu): Abort instead of erroring out for an ↵Eric Botcazou1-7/+2
unimplemented attribute. * gcc-interface/trans.c (Attribute_to_gnu): Abort instead of erroring out for an unimplemented attribute. From-SVN: r196507