- 13 Jan, 2017 40 commits
-
-
PR libstdc++/65411 * config/io/basic_file_stdio.cc (__basic_file<char>::close()): Don't retry fclose on EINTR. From-SVN: r244451
Jonathan Wakely committed -
PR c++/71166 * g++.dg/cpp0x/constexpr-array18.C: New test. From-SVN: r244450
Marek Polacek committed -
* include/profile/base.h: Remove unused header that leads to header cycle in C++17 mode. From-SVN: r244449
Jonathan Wakely committed -
In order to handle large character lengths on (L)LP64 targets, switch the GFortran character length from an int to a size_t. This is an ABI change, as procedures with character arguments take hidden arguments with the character length. I also changed the _size member in vtables from int to size_t, as there were some cases where character lengths and sizes were apparently mixed up and caused regressions otherwise. Although I haven't tested, this might enable very large derived types as well. Also, as there are some places in the frontend were negative character lengths are used as special flag values, in the frontend the character length is handled as a signed variable of the same size as a size_t, although in the runtime library it really is size_t. I haven't changed the character length variables for the co-array intrinsics, as this is something that may need to be synchronized with OpenCoarrays. This is v4 of the patch. v3 was applied but had to reverted due to breaking bootstrap. The fix is in resolve.c:resolve_charlen, where it's necessary to check that an expression is constant before using mpz_sgn. Overview of v3 of the patch: All the issues pointed out by FX's review of v2 have been fixed. In particular, there are now new functions gfc_mpz_get_hwi and gfc_mpz_set_hwi, similar to the GMP functions mpz_get_si and mpz_set_si, except that they get/set a HOST_WIDE_INT instead of a long value. Similarly, gfc_get_int_expr now takes a HOST_WIDE_INT instead of a long, gfc_extract_long is replaced by gfc_extract_hwi. Also, the preliminary work to handle gfc_charlen_type_node being unsigned has been removed. Regtested on x86_64-pc-linux-gnu and i686-pc-linux-gnu. frontend: 2017-01-13 Janne Blomqvist <jb@gcc.gnu.org> PR fortran/78534 PR fortran/66310 * class.c (gfc_find_derived_vtab): Use gfc_size_kind instead of hardcoded kind. (find_intrinsic_vtab): Likewise. * expr.c (gfc_get_character_expr): Length parameter of type gfc_charlen_t. (gfc_get_int_expr): Value argument of type HOST_WIDE_INT. (gfc_extract_hwi): New function. (simplify_const_ref): Make string_len of type gfc_charlen_t. (gfc_simplify_expr): Use HOST_WIDE_INT for substring refs. * gfortran.h (gfc_mpz_get_hwi): New prototype. (gfc_mpz_set_hwi): Likewise. (gfc_charlen_t): New typedef. (gfc_expr): Use gfc_charlen_t for character lengths. (gfc_size_kind): New extern variable. (gfc_extract_hwi): New prototype. (gfc_get_character_expr): Use gfc_charlen_t for character length. (gfc_get_int_expr): Use HOST_WIDE_INT type for value argument. * iresolve.c (gfc_resolve_repeat): Pass string length directly without temporary, use gfc_charlen_int_kind. * match.c (select_intrinsic_set_tmp): Use HOST_WIDE_INT for charlen. * misc.c (gfc_mpz_get_hwi): New function. (gfc_mpz_set_hwi): New function. * module.c (atom_int): Change type from int to HOST_WIDE_INT. (parse_integer): Don't complain about large integers. (write_atom): Use HOST_WIDE_INT for integers. (mio_integer): Handle integer type mismatch. (mio_hwi): New function. (mio_intrinsic_op): Use HOST_WIDE_INT. (mio_array_ref): Likewise. (mio_expr): Likewise. * resolve.c (resolve_select_type): Use HOST_WIDE_INT for charlen, use snprintf. (resolve_substring_charlen): Use gfc_charlen_int_kind. (resolve_charlen): Use mpz_sgn to determine sign. * simplify.c (gfc_simplify_repeat): Use HOST_WIDE_INT/gfc_charlen_t instead of long. * target-memory.c (size_character): Length argument of type gfc_charlen_t. (gfc_encode_character): Likewise. (gfc_interpret_character): Use gfc_charlen_t. * target-memory.h (gfc_encode_character): Modify prototype. * trans-array.c (get_array_ctor_var_strlen): Use gfc_conv_mpz_to_tree_type. * trans-const.c (gfc_conv_mpz_to_tree_type): New function. * trans-const.h (gfc_conv_mpz_to_tree_type): New prototype. * trans-expr.c (gfc_class_len_or_zero_get): Build const of type gfc_charlen_type_node. (gfc_conv_intrinsic_to_class): Use gfc_charlen_int_kind instead of 4, fold_convert to correct type. (gfc_conv_class_to_class): Build const of type size_type_node for size. (gfc_copy_class_to_class): Likewise. (gfc_conv_string_length): Use same type in expression. (gfc_conv_substring): Likewise, use HOST_WIDE_INT for charlen. (gfc_conv_string_tmp): Make sure len is of the right type. (gfc_conv_concat_op): Use same type in expression. (gfc_conv_procedure_call): Likewise. (alloc_scalar_allocatable_for_subcomponent_assignment): fold_convert to right type. (gfc_trans_subcomponent_assign): Likewise. (trans_class_vptr_len_assignment): Build const of correct type. (gfc_trans_pointer_assignment): Likewise. (alloc_scalar_allocatable_for_assignment): fold_convert to right type in expr. (trans_class_assignment): Build const of correct type. * trans-intrinsic.c (gfc_conv_associated): Likewise. (gfc_conv_intrinsic_repeat): Do calculation in sizetype. * trans-io.c (gfc_build_io_library_fndecls): Use gfc_charlen_type_node for character lengths. * trans-stmt.c (gfc_trans_label_assign): Build const of gfc_charlen_type_node. (gfc_trans_character_select): Likewise. (gfc_trans_allocate): Likewise, don't typecast strlen result. (gfc_trans_deallocate): Don't typecast strlen result. * trans-types.c (gfc_size_kind): New variable. (gfc_init_types): Determine gfc_charlen_int_kind and gfc_size_kind from size_type_node. testsuite: 2017-01-13 Janne Blomqvist <jb@gcc.gnu.org> PR fortran/78534 PR fortran/66310 * gfortran.dg/repeat_4.f90: Use integers of kind C_SIZE_T. * gfortran.dg/repeat_7.f90: New test for PR 66310. * gfortran.dg/scan_2.f90: Handle potential cast in assignment. * gfortran.dg/string_1.f90: Limit to ilp32 targets. * gfortran.dg/string_1_lp64.f90: New test. * gfortran.dg/string_3.f90: Limit to ilp32 targets. * gfortran.dg/string_3_lp64.f90: New test. libgfortran: 2017-01-13 Janne Blomqvist <jb@gcc.gnu.org> PR fortran/78534 * intrinsics/args.c (getarg_i4): Use gfc_charlen_type. (get_command_argument_i4): Likewise. (get_command_i4): Likewise. * intrinsics/chmod.c (chmod_internal): Likewise. * intrinsics/env.c (get_environment_variable_i4): Likewise. * intrinsics/extends_type_of.c (struct vtype): Use size_t for size member. * intrinsics/gerror.c (gerror): Use gfc_charlen_type. * intrinsics/getlog.c (getlog): Likewise. * intrinsics/hostnm.c (hostnm_0): Likewise. * intrinsics/string_intrinsics_inc.c (string_len_trim): Rework to work if gfc_charlen_type is unsigned. (string_scan): Likewise. * io/transfer.c (transfer_character): Modify prototype. (transfer_character_write): Likewise. (transfer_character_wide): Likewise. (transfer_character_wide_write): Likewise. (transfer_array): Typecast to avoid signed-unsigned comparison. * io/unit.c (is_trim_ok): Use gfc_charlen_type. * io/write.c (namelist_write): Likewise. * libgfortran.h (gfc_charlen_type): Change typedef to size_t. From-SVN: r244448
Janne Blomqvist committed -
A big source of cache misses when compiling a recent version of gimple-match.ii was the call to cv_cache.empty () in clear_cv_cache. The problem was that at one early point the hash table had grown to 8191 entries (128k on LP64 hosts). It then stayed at that size for the rest of the compilation, even though subsequent uses needed only a small number of entries (usually fewer than ten). We would still clear the whole 128k each time clear_cv_cache was called. empty() already looks for cases where the hash table is very big and cuts it down. At the moment it fires when the table is 1M in size and reduces it to the next selected prime above 1K (so almost 2K in practice). One fix would have been to lower the threshold, but that didn't feel like the right approach. Reducing the current limit of 1M by a factor of 8 would be pretty significant on its own, but I think this cv_cache behaviour would have been a problem even with 64k or 32k tables. I think the existing check is really for cases in which even a well-populated table would need to be shrunk rather than cleared. Here the problem isn't that the table is excessively big in absolute terms, more that one outlier has made the table much too big for the general case. traverse() already shrinks the table if it's "too empty", which is taken to be if: no. elements * 8 < capacity && capacity > 32 So an alternative would be to apply the same test (and the same choice of shrunken size) to empty_slow too. The patch below does this. It gives a 2.5% improvement in gimple-match.ii compile time at -O0 -g and doesn't seem to adversely affect any other tests I've tried. Of course, there's a theoretical risk of a table alternating between one large element count and one small element count. If there was a factor of eight difference between the two, we could shrink the table on seeing each small element count, then grow it again when adding the large number of elements. That seems pretty unlikely in practice though. Also, empty_slow() does involve a traversal if some form of manual gc is needed on active elements, so trying to recover from an outlier should have even more benefit there. (cv_cache uses automatic gc and so the traversal gets optimised away.) The calculation of the existing 1M threshold was assuming that each entry was pointer-sized. This patch makes it use the actual size of the entry instead. Tested on aarch64-linux-gnu and x86_64-linux-gnu. gcc/ * hash-table.h (hash_table::too_empty_p): New function. (hash_table::expand): Use it. (hash_table::traverse): Likewise. (hash_table::empty_slot): Use sizeof (value_type) instead of sizeof (PTR) to convert bytes to elements. Shrink the table if the current size is excessive for the current number of elements. From-SVN: r244447
Richard Sandiford committed -
record_reg_classes is often the hottest function when generating unoptimised output. It seems typical for over 60% of the instructions it handles to be moves, and of course moves tend to be the instructions with the longest constraint strings. Maybe we should avoid using move constraints to set costs in unoptimised output and instead use the "natural" class for the mode being moved. That's too invasive for stage 3 though. However, seeing so many moves means that we see many "failing" alternatives, usually because of '*' or because of hard registers in function call sequences. The frequency of alternatives that are detected as failures after the first operand tends again to be more than 60%. Previously we would continue to process the other operands of the alternative regardless. This patch instead adds a short-cut. As well as avoiding unnecessary work, it means that the alt_fail variable can be jump-threaded away. Tested on aach64-linux-gnu and x86_64-linux-gnu. It reduces compile time by about 1% on some tests with "-g -O0". gcc/ * ira-costs.c (record_reg_classes): Break from the inner loop early once alt_fail is known to be true. Update outer loop handling accordingly. From-SVN: r244446
Richard Sandiford committed -
PR libstdc++/79075 * include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI] (basic_string): Make _If_sv private. [!_GLIBCXX_USE_CXX11_ABI] (basic_string): Add member functions taking basic_string_view arguments. From-SVN: r244445
Jonathan Wakely committed -
* tree-ssa-dse.c (decrement_count): New function. (increment_start_addr, maybe_trim_memstar_call): Likewise. (dse_dom_walker::optimize_stmt): Call maybe_trim_memstar_call directly when we know the partially dead statement is a mem* function. * gcc.dg/tree-ssa/ssa-dse-25.c: New test. From-SVN: r244444
Jeff Law committed -
PR tree-optimization/61912 PR tree-optimization/77485 * tree-ssa-dse.c: Include expr.h. (maybe_trim_constructor_store): New function. (maybe_trim_partially_dead_store): Call maybe_trim_constructor_store. PR tree-optimization/61912 PR tree-optimization/77485 * g++.dg/tree-ssa/ssa-dse-1.C: New test. * gcc.dg/tree-ssa/pr30375: Adjust expected output. * gcc.dg/tree-ssa/ssa-dse-24.c: New test. From-SVN: r244443
Jeff Law committed -
PR tree-optimization/33562 PR tree-optimization/61912 PR tree-optimization/77485 * doc/invoke.texi: Document new dse-max-object-size param. * params.def (PARM_DSE_MAX_OBJECT_SIZE): New PARAM. * tree-ssa-dse.c: Include params.h. (dse_store_status): New enum. (initialize_ao_ref_for_dse): New, partially extracted from dse_optimize_stmt. (valid_ao_ref_for_dse, normalize_ref): New. (setup_live_bytes_from_ref, compute_trims): Likewise. (clear_bytes_written_by, maybe_trim_complex_store): Likewise. (maybe_trim_partially_dead_store): Likewise. (maybe_trim_complex_store): Likewise. (dse_classify_store): Renamed from dse_possibly_dead_store_p. Track what bytes live from the original store. Return tri-state for dead, partially dead or live. (dse_dom_walker): Add constructor, destructor and new private members. (delete_dead_call, delete_dead_assignment): New extracted from dse_optimize_stmt. (dse_optimize_stmt): Make a member of dse_dom_walker. Use initialize_ao_ref_for_dse. PR tree-optimization/33562 PR tree-optimization/61912 PR tree-optimization/77485 * gcc.dg/tree-ssa/complex-4.c: Remove xfail. * gcc.dg/tree-ssa/complex-5.c: Likewise. * gcc.dg/tree-ssa/ssa-dse-9.c: Likewise. * gcc.dg/tree-ssa/ssa-dse-18.c: New test. * gcc.dg/tree-ssa/ssa-dse-19.c: Likewise. * gcc.dg/tree-ssa/ssa-dse-20.c: Likewise. * gcc.dg/tree-ssa/ssa-dse-21.c: Likewise. From-SVN: r244442
Jeff Law committed -
PR tree-optimization/33562 PR tree-optimization/61912 PR tree-optimization/77485 * sbitmap.h (bitmap_count_bits): Prototype. (bitmap_clear_range, bitmap_set_range): Likewise. * sbitmap.c (bitmap_clear_range): New function. (bitmap_set_range, sbitmap_popcount, bitmap_count_bits): Likewise. From-SVN: r244441
Jeff Law committed -
PR libstdc++/79075 * testsuite/lib/libstdc++.exp (check_v3_target_filesystem_ts): Remove redundant option from cxxflags. (check_effective_target_cxx11-abi): Define. * testsuite/21_strings/basic_string/allocator/71964.cc: Use cxx11-abi effective target. * testsuite/21_strings/basic_string/allocator/char/copy.cc: Likewise. * testsuite/21_strings/basic_string/allocator/char/copy_assign.cc: Likewise. * testsuite/21_strings/basic_string/allocator/char/minimal.cc: Likewise. * testsuite/21_strings/basic_string/allocator/char/move.cc: Likewise. * testsuite/21_strings/basic_string/allocator/char/move_assign.cc: Likewise. * testsuite/21_strings/basic_string/allocator/char/noexcept.cc: Likewise. * testsuite/21_strings/basic_string/allocator/char/swap.cc: Likewise. * testsuite/21_strings/basic_string/allocator/wchar_t/copy.cc: Likewise. * testsuite/21_strings/basic_string/allocator/wchar_t/copy_assign.cc: Likewise. * testsuite/21_strings/basic_string/allocator/wchar_t/minimal.cc: Likewise. * testsuite/21_strings/basic_string/allocator/wchar_t/move.cc: Likewise. * testsuite/21_strings/basic_string/allocator/wchar_t/move_assign.cc: Likewise. * testsuite/21_strings/basic_string/allocator/wchar_t/noexcept.cc: Likewise. * testsuite/21_strings/basic_string/allocator/wchar_t/swap.cc: Likewise. * testsuite/23_containers/list/61347.cc: Likewise. * testsuite/27_io/basic_fstream/cons/base.cc: Likewise. * testsuite/27_io/ios_base/failure/cxx11.cc: Likewise. From-SVN: r244440
Jonathan Wakely committed -
PR libstdc++/78389 * include/bits/list.tcc (merge(list&&)): Adjust list sizes if the comparator throws. (merge(list&&, _StrictWeakOrdering)): Likewise. (sort()): Splice elements back from the scratch buffers if the comparator throws. (sort(_StrictWeakOrdering)): Likewise. * testsuite/23_containers/list/operations/78389.cc: New. From-SVN: r244439
Ville Voutilainen committed -
* testsuite/23_containers/unordered_set/allocator/ext_ptr.cc: Mark XFAIL for C++17 until node reinsertion supports fancy pointers. From-SVN: r244436
Jonathan Wakely committed -
2017-01-13 Martin Liska <mliska@suse.cz> PR ipa/79043 * function.c (set_cfun): Add new argument force. * function.h (set_cfun): Likewise. * ipa-inline-transform.c (inline_call): Use the function when strict alising from is dropped for function we inline to. 2017-01-13 Martin Liska <mliska@suse.cz> PR ipa/79043 * gcc.c-torture/execute/pr79043.c: New test. From-SVN: r244435
Martin Liska committed -
2017-01-13 Richard Biener <rguenther@suse.de> * gimple-parser.c (c_parser_gimple_compound_statement): Handle nops. From-SVN: r244434
Richard Biener committed -
2017-01-13 Richard Biener <rguenther@suse.de> * tree-pretty-print.c (dump_generic_node): Fix inverted condition for dumping GIMPLE INTEGER_CSTs. From-SVN: r244433
Richard Biener committed -
2017-01-13 Jonathan Wakely <jwakely@redhat.com> PR libstdc++/78361 * testsuite/20_util/add_pointer/value.cc: Test forming function pointers. 2017-01-13 Michael Brune <lucdanton@free.fr> PR libstdc++/78361 * include/std/type_traits (__is_referenceable): Handle noexcept function types. From-SVN: r244432
Jonathan Wakely committed -
* gcc-interface/Makefile.in (SPARC/Solaris): Fix typo. From-SVN: r244431
Rainer Orth committed -
* config/sol2.h (TARGET_OS_CPP_BUILTINS): Define __STDC_VERSION__ to 201112L since C++17. From-SVN: r244430
Rainer Orth committed -
* Import zlib 1.2.10. * configure: Regenerate. From-SVN: r244429
Matthias Klose committed -
PR libstdc++/78979 * inclhack.def (solaris_gets_c11, solaris_gets_cxx14) (solaris_std_gets_cxx14, solaris_stdlib_noreturn): New fixes. * fixincl.x: Regenerate. * tests/base/iso/stdio_iso.h [SOLARIS_GETS_C11_CHECK, SOLARIS_GETS_CXX14_CHECK, SOLARIS_STD_GETS_CXX14_CHECK, SOLARIS_STDLIB_NORETURN_CHECK]: New tests. From-SVN: r244428
Rainer Orth committed -
2017-01-13 Richard Biener <rguenther@suse.de> PR middle-end/78411 * gcc.target/i386/pr45685.c: Add -ftree-loop-if-convert. From-SVN: r244427
Richard Biener committed -
* doc/gnat_ugn/getting_started_with_gnat.rst, doc/gnat_ugn/inline_assembler.rst, doc/gnat_ugn/building_executable_programs_with_gnat.rst, doc/gnat_ugn/elaboration_order_handling_in_gnat.rst, doc/gnat_ugn/about_this_guide.rst, doc/gnat_ugn/platform_specific_information.rst, doc/gnat_ugn/example_of_binder_output.rst, doc/gnat_ugn/gnat_and_program_execution.rst, doc/gnat_ugn/gnat_utility_programs.rst, doc/gnat_ugn/the_gnat_compilation_model.rst, doc/gnat_rm/implementation_defined_attributes.rst, doc/gnat_rm/compatibility_and_porting_guide.rst, doc/gnat_rm/standard_library_routines.rst, doc/gnat_rm/standard_and_implementation_defined_restrictions.rst, doc/gnat_rm/implementation_defined_pragmas.rst, doc/gnat_rm/the_gnat_library.rst, doc/gnat_rm/obsolescent_features.rst, doc/gnat_rm/about_this_guide.rst, doc/gnat_rm/the_implementation_of_standard_i_o.rst, doc/gnat_rm/implementation_of_ada_2012_features.rst, doc/gnat_rm/interfacing_to_other_languages.rst, doc/gnat_rm/implementation_defined_aspects.rst, doc/gnat_rm.rst: Update documentation. * gnat_rm.texi, gnat_ugn.texi: Regenerated. From-SVN: r244426
Arnaud Charlet committed -
2017-01-13 Ed Schonberg <schonberg@adacore.com> * einfo.ads: minor grammar fixes in comment of Normalized_Position_Max. * scil_ll.adb: Minor style fix in comment. * sem_ch8.adb (Analyze_Expanded_Name): Perform dimension analysis even if entity is already set, because the node may be renalyzed after inlining transformations. 2017-01-13 Javier Miranda <miranda@adacore.com> * sem_res.adb (Resolve_Call): Do not establish a transient scope for a call to inlinable expression function (since the call will be replaced by its returned object). * exp_ch6.ads (Is_Inlinable_Expression_Function): New subprogram. * exp_ch6.adb (Expression_Of_Expression_Function): New subprogram. (Expand_Call): For inlinable expression function call replace the call by its returned object. (Is_Inlinable_Expression_Function): New subprogram. From-SVN: r244425
Arnaud Charlet committed -
2017-01-13 Gary Dismukes <dismukes@adacore.com> * checks.adb: Minor typo fix and reformatting. 2017-01-13 Javier Miranda <miranda@adacore.com> * contracts.adb (Contract_Only_Subprograms): Remove formal. (Copy_Original_Specification): Removed. (Skip_Contract_Only_Subprogram): Move here checks previously located in the caller of this routine (to leave the code more clean). (Build_Contract_Only_Subprogram): Code cleanup. * scil_ll.ads, scil_ll.adb (Get_Contract_Only_Body_Name): Removed. (Get_Contract_Only_Missing_Body_Name): Removed. From-SVN: r244424
Arnaud Charlet committed -
2017-01-13 Javier Miranda <miranda@adacore.com> * sem_ch6.adb (Cloned_Expression): New subprogram. (Freeze_Expr_Types): Complete previous patch since the expression of an expression-function may have iterators and loops with defining identifiers which, as part of the preanalysis of the expression, may be left decorated with itypes that will not be available in the tree passed to the backend. 2017-01-13 Ed Schonberg <schonberg@adacore.com> * checks.adb (Apply_Type_Conversion_Checks): Optimize a type conversion to Integer of an expression that is an attribute reference 'Pos on an enumeration type. 2017-01-13 Bob Duff <duff@adacore.com> * atree.ads: Minor comment fix. From-SVN: r244423
Arnaud Charlet committed -
sem_ch6.adb (Check_Aggregate_Accessibility): Ignore function calls in accessibility check on return statement. 2017-01-13 Justin Squirek <squirek@adacore.com> * sem_ch6.adb (Check_Aggregate_Accessibility): Ignore function calls in accessibility check on return statement. From-SVN: r244422
Justin Squirek committed -
sem_ch6.adb (Analyze_Subprogram_Body_Helper): Ensure that the input body is a subprogram body before trying to determine... 2017-01-13 Hristian Kirtchev <kirtchev@adacore.com> * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Ensure that the input body is a subprogram body before trying to determine whether it denoted an expression function. Note that subprogram body stubs cannot denote expression functions. From-SVN: r244421
Hristian Kirtchev committed -
2017-01-13 Gary Dismukes <dismukes@adacore.com> * bindgen.adb, sem_ch6.adb, binde.adb, exp_ch3.adb: Minor reformatting and typo fixes. From-SVN: r244420
Gary Dismukes committed -
2017-01-13 Javier Miranda <miranda@adacore.com> * einfo.ads (Component_Bit_Offset): Fix documentation. * sem_ch13.adb (Check_Record_Representation_Clause): Skip check on record holes for components with unknown compile-time offsets. 2017-01-13 Bob Duff <duff@adacore.com> * ali.ads, ali.adb (Static_Elaboration_Model_Used): Remove unused flag. * g-locfil.ads: Minor comment fix. 2017-01-13 Bob Duff <duff@adacore.com> * binde.adb (Elab_New): New elaboration order algorithm that is expected to cause fewer ABE issues. This is a work in progress. The new algorithm is currently disabled, and can be enable by the -dp switch, or by modifying the Do_Old and Do_New etc. flags and rebuilding. Experimental code is included to compare the results of the old and new algorithms. * binde.ads: Use GNAT.Dynamic_Tables instead of Table, so we can have multiple of these tables, so the old and new algorithms can coexist. * bindgen.ads (Gen_Output_File): Pass Elab_Order as an 'in' parameter of type array. This avoids the global variable, and allows bounds checking (which is normally defeated by the tables packages). It also ensures that the Elab_Order is read-only to Bindgen. * bindgen.adb: Pass Elab_Order as an 'in' parameter to all subprograms that need it, as above. * debug.adb: Document new -dp switch. Modify doc of old -do switch. * gnatbind.adb (Gnatbind): Make use of new interfaces to Binde and Bindgen. Move writing of closure (-R and -Ra switches) to Binde; that's more convenient. 2017-01-13 Ed Schonberg <schonberg@adacore.com> * sem_ch6.adb (Analyze_Expression_Function): If the expression function is a completion, all entities referenced in the expression are frozen. As a consequence, a reference to an uncompleted private type from an enclosing scope is illegal. From-SVN: r244419
Arnaud Charlet committed -
2017-01-13 Javier Miranda <miranda@adacore.com> * sem_ch6.adb (Freeze_Expr_Types): New subprogram. (Analyze_Subprogram_Body_Helper): At the occurrence of an expression function declaration that is a completion, its expression causes freezing (AI12-0103). 2017-01-13 Vadim Godunko <godunko@adacore.com> * a-coinho-shared.adb: Fix memory leaks in Constant_Reference and Reference functions of Ada.Containers.Indefinite_Holders. 2017-01-13 Bob Duff <duff@adacore.com> * s-os_lib.ads: Minor comment fixes. 2017-01-13 Hristian Kirtchev <kirtchev@adacore.com> * exp_ch3.adb (Default_Initialize_Object): Do not default initialize an object when it is of a task type and restriction No_Tasking is in effect because the initialization is obsolete. * exp_ch9.adb (Build_Master_Entity): Do not generate a master when restriction No_Tasking is in effect. (Build_Master_Renaming): Do not rename a master when restriction No_Tasking is in effect. From-SVN: r244418
Arnaud Charlet committed -
2017-01-13 Ed Schonberg <schonberg@adacore.com> * sem_aggr.adb (Resolve_Array_Aggregate): The code that verifies the legality of An others clause applies as well to a choice in an Iterated_component_ association. (Resolve_Iterated_Component_Association): An others choice is legal. * exp_aggr.adb (Aggr_Assignment_OK_For_Backend): An Iterated_Component_Association is not static. 2017-01-13 Hristian Kirtchev <kirtchev@adacore.com> * exp_ch3.adb (Freeze_Type): Mark the Ghost mode as set in case control is passed to the expresion handler before the new mode is set. * sem_ch12.adb (Analyze_Package_Instantiation, Analyze_Subprogram_Instantiation): Mark the Ghost mode as set in case control is passed to the expresion handler before the new mode is set. From-SVN: r244417
Arnaud Charlet committed -
2017-01-13 Hristian Kirtchev <kirtchev@adacore.com> * sem_aggr.adb, sem_ch3.adb, inline.adb, sem_util.adb, exp_ch4.adb, exp_aggr.adb: Minor reformatting. From-SVN: r244416
Hristian Kirtchev committed -
2017-01-13 Gary Dismukes <dismukes@adacore.com> * inline.adb: Minor reformatting and typo fix. From-SVN: r244415
Gary Dismukes committed -
2017-01-13 Ed Schonberg <schonberg@adacore.com> * sem_util.ads, sem_util.adb (Choice_List): Move function here from sem_aggr.adb, for use elsewhere. * sem_ch3.adb (Analyze_Object_Declaration): Use Choice_List. * sem_aggr.adb (Resolve_Array_Aggregate): Remove Iterated_Component_Present. * exp_aggr.adb: Use Choice_List throughout, to handle Iterated_Component_Associations. (Gen_Loop): Generate proper loop for an Iterated_Component_Association: loop variable has the identifier of the original association. Generate a loop even for a single component choice, in order to make loop parameter visible in expression. (Flatten): An Iterated_Component_Association is not static. 2017-01-13 Yannick Moy <moy@adacore.com> * exp_ch4.adb (Expand_N_Op_Expon): Ensure that the value of float exponentiation for statically known small negative values is the reciprocal of the exponentiation for the opposite value of the exponent. * s-exnllf.adb (Exn_Float, Exn_Long_Float, Exn_Long_Long_Float): Ensure that the value of float exponentiation for negative values is the reciprocal of the exponentiation for the opposite value of the exponent. * inline.adb (Expand_Inlined_Call): Fix the count for the number of generated gotos. From-SVN: r244414
Arnaud Charlet committed -
gcc/testsuite/ChangeLog: 2017-01-13 Andre Vehreschild <vehre@gcc.gnu.org> PR fortran/70697 * gfortran.dg/coarray/event_4.f08: New test. gcc/fortran/ChangeLog: 2017-01-13 Andre Vehreschild <vehre@gcc.gnu.org> PR fortran/70697 * resolve.c (resolve_lock_unlock_event): Resolve the expression for event's until_count. From-SVN: r244413
Andre Vehreschild committed -
From-SVN: r244412
Arnaud Charlet committed -
2017-01-13 Yannick Moy <moy@adacore.com> * inline.adb: Code cleanup. * sem_util.adb (Is_OK_Volatile_Context): Add expression in delay statement as OK for volatile context. 2017-01-13 Ed Schonberg <schonberg@adacore.com> * sem_aggr.adb (Resolve_Array_Aggregate): In normal compilation mode a choice that is a subtype with a static predicate is replaced by the values it covers. This transformation must not be performed in ASIS mode, to preserve the source for analysis. 2017-01-13 Justin Squirek <squirek@adacore.com> * nlists.ads: Correct minor typo. From-SVN: r244411
Arnaud Charlet committed -
2017-01-13 Gary Dismukes <dismukes@adacore.com> * sem_ch13.adb: Minor reformatting and typo fix. 2017-01-13 Ed Schonberg <schonberg@adacore.com> * par-ch4.adb (P_Aggregate_Or_Parent_Expr): An Iterated_Component_Association is a named association in an array aggregate. * sem_aggr.adb (Resolve_Iterated_Component_Association): New procedure, subsidiary of Resolve_Array_Aggregate, to analyze and resolve the discrete choices and the expression of the new construct. * sinfo.adb, sinfo.ads: In analogy with N_Component_Association, Loop_Actions and Box_Present are attributes of N_Iterated_Component_Association nodes. Box_Present is always False in this case. * sprint.adb (Sprint_Node): An Iterated_Component_Association has a Discrete_Choices list, as specified in the RM. A Component_Association for aggregate uses instead a Choices list. We have to live with this small inconsistency because the new construct also has a defining identifier, and there is no way to merge the two node structures. From-SVN: r244410
Arnaud Charlet committed
-