1. 31 Jul, 2018 29 commits
    • Fix target clones (PR gcov-profile/85370). · 80dde427
      2018-07-31  Martin Liska  <mliska@suse.cz>
      
              PR gcov-profile/85370
      	* coverage.c (coverage_begin_function): Do not mark target
              clones as artificial functions.
      
      From-SVN: r263112
      Martin Liska committed
    • Fix GCOV CFG related issues. · 102fcf94
      2018-07-31  Martin Liska  <mliska@suse.cz>
      
              PR gcov-profile/83813
              PR gcov-profile/84758
              PR gcov-profile/85217
              PR gcov-profile/85332
      	* profile.c (branch_prob): Do not record GOTO expressions
              for GIMPLE statements which locations are already streamed.
      2018-07-31  Martin Liska  <mliska@suse.cz>
      
              PR gcov-profile/83813
              PR gcov-profile/84758
              PR gcov-profile/85217
              PR gcov-profile/85332
      	* gcc.misc-tests/gcov-pr83813.c: New test.
      	* gcc.misc-tests/gcov-pr84758.c: New test.
      	* gcc.misc-tests/gcov-pr85217.c: New test.
      	* gcc.misc-tests/gcov-pr85332.c: New test.
      
      From-SVN: r263111
      Martin Liska committed
    • Fix an UBSAN error in cp/parse.c (PR c++/86653). · 5dbc3940
      2018-07-31  Martin Liska  <mliska@suse.cz>
      
              PR c++/86653
      	* parser.c (cp_parser_condition): Initialize non_constant_p
              to false.
      
      From-SVN: r263110
      Martin Liska committed
    • [Ada] Various code clean-ups from CodePeer messages · ae71d81b
      2018-07-31  Arnaud Charlet  <charlet@adacore.com>
      
      gcc/ada/
      
      	* clean.adb, gnatchop.adb, gnatfind.adb, gnatls.adb,
      	gnatmake.ads, gnatxref.adb, make.adb, make.ads, make_util.ads,
      	sfn_scan.adb, vxaddr2line.adb, xeinfo.adb, xoscons.adb,
      	xr_tabls.adb, xref_lib.adb: Address CodePeer messages.
      
      From-SVN: r263108
      Arnaud Charlet committed
    • [Ada] Fix potential Constraint_Error if Library_Version is too long · 1c0b35aa
      2018-07-31  Arnaud Charlet  <charlet@adacore.com>
      
      gcc/ada/
      
      	* gnatlink.adb: Fix potential Constraint_Error if
      	Library_Version is too long.
      
      From-SVN: r263107
      Arnaud Charlet committed
    • [Ada] Sem_Elab: remove duplicate condition · fa9f3f8c
      2018-07-31  Arnaud Charlet  <charlet@adacore.com>
      
      gcc/ada/
      
      	* sem_elab.adb: Remove duplicate condition detected by CodePeer.
      
      From-SVN: r263106
      Arnaud Charlet committed
    • [Ada] Unnesting: improve support for entries in protected objects · 0d756922
      2018-07-31  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* exp_unst.adb (Subp_Index): In the case of a protected
      	operation, the relevant entry is the generated
      	protected_subprogram_body into which the original body is
      	rewritten. Assorted cleanup and optimizations.
      
      From-SVN: r263105
      Ed Schonberg committed
    • [Ada] Refine generation of range checks to happen in front end · 948071fa
      2018-07-31  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* exp_attr.adb (Expand_Attribute, case Fixed_Value): Set the
      	base type of the result to ensure that proper overflow and range
      	checks are generated.  If the target is a fixed-point tyoe,
      	generate the required overflow and range checks explicitly,
      	rather than relying on Apply_Type_Conversion_Checks, which might
      	simply set the Do_Range_Check flag and rely on the backend to
      	add the check.
      
      From-SVN: r263104
      Ed Schonberg committed
    • [Ada] Secondary stack leak with access-to-subprogram · 51d4bdfb
      This patch modifies call resolution to recognize when the designated type of
      an access-to-subprogram requires secondary stack management, and establish
      the proper transient block.
      
      ------------
      -- Source --
      ------------
      
      --  leak7.adb
      
      procedure Leak7 is
         Max_Iterations : constant := 10_000;
      
         function Func return String is
         begin
            return "Will this leak? Or will it dry?";
         end Func;
      
         type Func_Ptr is access function return String;
      
         procedure Anonymous_Leak (Func : access function return String) is
         begin
            for Iteration in 1 .. Max_Iterations loop
               declare
                  Val : constant String := Func.all;
               begin null; end;
            end loop;
         end Anonymous_Leak;
      
         procedure Named_Leak (Func : Func_Ptr) is
         begin
            for Iteration in 1 .. Max_Iterations loop
               declare
                  Val : constant String := Func.all;
               begin null; end;
            end loop;
         end Named_Leak;
      
      begin
         Anonymous_Leak (Func'Access);
         Named_Leak     (Func'Access);
      end Leak7;
      
      ----------------------------
      -- Compilation and output --
      ----------------------------
      
      $ gnatmake -q leak7.adb
      $ valgrind ./leak7 >& leak7.txt
      $ grep -c "still reachable" leak7.txt
      0
      
      2018-07-31  Hristian Kirtchev  <kirtchev@adacore.com>
      
      gcc/ada/
      
      	* sem_res.adb (Resolve_Call): Establish a transient scope to
      	manage the secondary stack when the designated type of an
      	access-to-subprogram requires it.
      
      From-SVN: r263103
      Hristian Kirtchev committed
    • [Ada] Unnesting: find local subps in nested stmt sequences · 51f2fc7d
      2018-07-31  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada
      
      	* exp_ch7.adb (Check_Unnesting_Elaboration_Code): To find local
      	subprograms in the elaboration code for a package body, recurse
      	through nested statement sequences because a compiler-generated
      	procedure may appear within a condition statement.
      
      From-SVN: r263102
      Ed Schonberg committed
    • [Ada] Spurious error on default parameter in protected operation · 6cdce506
      This patch fixes a spurious compiler error on a call to a protected
      operation whose profile includes a defaulted in-parameter that is a call
      to another protected function of the same object.
      
      2018-07-31  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* exp_ch6.adb (Expand_Protected_Subprogram_Call): Handle
      	properly a protected call that includes a default parameter that
      	is a call to a protected function of the same type.
      
      gcc/testsuite/
      
      	* gnat.dg/prot5.adb, gnat.dg/prot5_pkg.adb,
      	gnat.dg/prot5_pkg.ads: New testcase.
      
      From-SVN: r263101
      Ed Schonberg committed
    • [Ada] GNATmake fails to detect missing body · c992e2e4
      This patch corrects an issue whereby building a multi-unit compilation with
      missing sources resulted in a cryptic "code generation" error instead of the
      appropriate file not found error.
      
      ------------
      -- Source --
      ------------
      
      --  main.adb
      
      with Types;
      procedure Main is
      begin
         null;
      end;
      
      --  types.ads
      
      package Types is
        procedure Force;
      end;
      
      ----------------------------
      -- Compilation and output --
      ----------------------------
      
      & gnatmake -q main.adb
      gnatmake: "types.adb" not found
      
      2018-07-31  Justin Squirek  <squirek@adacore.com>
      
      gcc/ada/
      
      	* lib-writ.adb (Write_With_Lines): Modfiy the generation of
      	dependencies within ali files so that source unit bodies are
      	properly listed even if said bodies are missing.  Perform legacy
      	behavior in GNATprove mode.
      	* lib-writ.ads: Modify documentation to reflect current behavior.
      
      From-SVN: r263100
      Justin Squirek committed
    • [Ada] Fix alignment of mutex_t and cond_t type on 32-bit SPARC/Solaris · a6ed513c
      The alignment of the couple of types from System.OS_Interface was wrongly
      set to 4 (32-bit) instead of 8 (64-bit) in 32-bit mode.
      
      2018-07-31  Eric Botcazou  <ebotcazou@adacore.com>
      
      gcc/ada/
      
      	*  libgnarl/s-osinte__solaris.ads (upad64_t): New private type.
      	(mutex_t): Use it for 'lock' and 'data' components.
      	(cond_t): Likewise for 'data' and use single 'flags' component.
      
      From-SVN: r263099
      Eric Botcazou committed
    • [Ada] Wrong value after assignment of overlain record objects · a7576e13
      This patch corrects an issue whereby objects of a record type with a
      representation clause which are overlain by address would fail to get
      assigned values properly when one or both of said objects were marked
      volatile.
      
      2018-07-31  Justin Squirek  <squirek@adacore.com>
      
      gcc/ada/
      
      	* exp_ch5.adb (Make_Field_Assign): Force temporarily generated
      	objects for assignment of overlaid user objects to be renamings
      	instead of constant declarations.
      
      gcc/testsuite/
      
      	* gnat.dg/addr11.adb: New testcase.
      
      From-SVN: r263098
      Justin Squirek committed
    • [Ada] Spurious error on the placement of aspect Global · 007443a0
      This patch modifies the expansion of stand-alone subprogram bodies that appear
      in the body of a protected type to properly associate aspects and pragmas to
      the newly created spec for the subprogram body. As a result, the annotations
      are properly associated with the initial declaration of the subprogram.
      
      2018-07-31  Hristian Kirtchev  <kirtchev@adacore.com>
      
      gcc/ada/
      
      	* exp_ch9.adb (Analyze_Pragmas): New routine.
      	(Build_Private_Protected_Declaration): Code clean up. Relocate
      	relevant aspects and pragmas from the stand-alone body to the
      	newly created spec.  Explicitly analyze any pragmas that have
      	been either relocated or produced by the analysis of the
      	aspects.
      	(Move_Pragmas): New routine.
      	* sem_prag.adb (Find_Related_Declaration_Or_Body): Recognize the
      	case where a pragma applies to the internally created spec for a
      	stand-along subprogram body declared in a protected body.
      
      gcc/testsuite/
      
      	* gnat.dg/global.adb, gnat.dg/global.ads: New testcase.
      
      From-SVN: r263097
      Hristian Kirtchev committed
    • [Ada] Compiler failure on an extended_return_statement in a block · 76ed5f08
      When compiling with an assertion-enabled compiler, Assert_Failure can be
      raised when expanded an extended_return_statement whose enclosing scope
      is not a function (such as when it's a block_statement). The simple fix
      is to change the Assert to test Current_Subprogram rather than Current_Scope.
      Three such Assert pragmas are corrected in this way.
      
      2018-07-31  Gary Dismukes  <dismukes@adacore.com>
      
      gcc/ada/
      
      	* exp_ch6.adb (Expand_N_Extended_Return_Statement): Replace
      	calls to Current_Scope in three assertions with calls to
      	Current_Subprogram.
      
      gcc/testsuite/
      
      	* gnat.dg/block_ext_return_assert_failure.adb: New testcase.
      
      From-SVN: r263096
      Gary Dismukes committed
    • [Ada] Spurious warning on iteration over range of 64-bit modular type · c4a2e585
      This patch suppresses a spurious warning on the use of a 64-bit modular type
      in a quantified expression, where the range of iteration will include a bound
      that appears larger than the run-time representation of Universal_Integer'last.
      
      2018-07-31  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* sem_eval.adb (Check_Non_Static_Context): Do not warn on an
      	integer literal greater than the upper bound of
      	Universal_Integer'Last when expansion is disabled, to avoid a
      	spurious warning over ranges involving 64-bit modular types.
      
      gcc/testsuite/
      
      	* gnat.dg/iter3.adb: New testcase.
      
      From-SVN: r263095
      Ed Schonberg committed
    • [Ada] Print the Is_Activation_Record flag · 1e739bf7
      2018-07-31  Arnaud Charlet  <charlet@adacore.com>
      
      gcc/ada/
      
      	* einfo.adb (Write_Entity_Flags): Also print
      	Is_Activation_Record flag.
      
      From-SVN: r263094
      Arnaud Charlet committed
    • [Ada] Replace low-level calls to Ekind with high-level calls to Is_Formal · bb6a856b
      High-level wrappers are easier to read. This change came up while reading
      some code related to GNATprove, but then uniformly applied to the entire
      frontend. For the few remaining membership tests that could be replaced
      by Is_Formal it is not obvious whether the high-level routine makes the
      code better.
      
      2018-07-31  Piotr Trojanek  <trojanek@adacore.com>
      
      gcc/ada/
      
      	* exp_aggr.adb, exp_ch4.adb, exp_ch6.adb, lib-xref.adb,
      	repinfo.adb, sem_ch9.adb: Minor replace Ekind membership tests
      	with a wrapper routine.
      
      From-SVN: r263093
      Piotr Trojanek committed
    • [Ada] Deconstruct 'F' as a prefix for an ALI data · e8723e74
      In GNATprove we used to store a variant of cross-reference information in
      the ALI file in lines that started with an 'F' letter. This is no longer
      the case, so the letter can be returned to the pool of unused prefixes.
      
      2018-07-31  Piotr Trojanek  <trojanek@adacore.com>
      
      gcc/ada/
      
      	* ali.adb (Known_ALI_Lines): Remove 'F' as a prefix for lines
      	related to the FORMAL analysis done by GNATprove.
      
      From-SVN: r263092
      Piotr Trojanek committed
    • [Ada] Fix a freezing issue · b09a237a
      2018-07-31  Javier Miranda  <miranda@adacore.com>
      
      gcc/ada/
      
      	* sem.ads (Inside_Preanalysis_Without_Freezing): New global
      	counter.
      	* sem.adb (Semantics): This subprogram has now the
      	responsibility of resetting the counter before analyzing a unit,
      	and restoring its previous value before returning.
      	* freeze.adb (Freeze_Entity): Do not freeze if we are
      	preanalyzing without freezing.
      	* sem_res.adb (Preanalyze_And_Resolve): Set & restore
      	In_Preanalysis_Without_Freezing.
      
      From-SVN: r263091
      Javier Miranda committed
    • [Ada] Fix resolution of class-wide operations that are generic actuals · 3bb9bd7d
      2018-07-31  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* sem_ch4.adb (Traverse_Homonyms): Consider generic actuals that
      	may rename a matching class-wide operation only if the renaming
      	declaration for that actual is in an enclosing scope (i.e.
      	within the corrresponding instance).
      
      From-SVN: r263090
      Ed Schonberg committed
    • [Ada] Minor reformattings · 61770974
      2018-07-31  Hristian Kirtchev  <kirtchev@adacore.com>
      
      gcc/ada
      
      	* checks.adb, contracts.adb, exp_aggr.adb, exp_ch5.adb,
      	exp_disp.adb, make.adb, sem_ch4.adb, sem_eval.adb, sem_res.adb,
      	usage.adb: Minor reformatting.
      
      From-SVN: r263089
      Hristian Kirtchev committed
    • [Ada] Spurious error -- "allocation from empty storage pool" · e78c79ff
      This patch fixes a bug in which if "pragma Default_Storage_Pool (null);"
      is given, then a build-in-place function will get an incorrect error
      message "allocation from empty storage pool" even though there is no
      such allocation in the source program.
      
      2018-07-31  Bob Duff  <duff@adacore.com>
      
      gcc/ada/
      
      	* sem_res.adb (Resolve_Allocator): Do not complain about the
      	implicit allocator that occurs in the expansion of a return
      	statement for a build-in-place function.
      
      From-SVN: r263088
      Bob Duff committed
    • Improve specs processing to allow %* in function arguments · 1102fd64
      2018-07-31  Olivier Hainque  <hainque@adacore.com>
      
      	* gcc.c (handle_spec_function): Accept a soft_matched_part
      	argument, as do_spec_1.  Pass it down to ...
      	(eval_spec_function): Accept a soft_matched_part argument,
      	and pass it down to ...
      	(do_spec_2): Accept a soft_matched_part argument, and pass
      	it down to do_spec_1.
      	(do_spec_1): Pass soft_matched_part to handle_spec_function.
      	(handle_braces): Update call to handle_spec_function.
      	(driver::set_up_specs): Update calls to do_spec_2.
      	(compare_debug_dump_opt_spec_function): Likewise.
      	(compare_debug_self_opt_spec_function): Likewise.
      
      From-SVN: r263087
      Olivier Hainque committed
    • Add support for -nolibc · f37866e8
      2018-06-07  Olivier Hainque  <hainque@adacore.com>
      
      	* common.opt (nolibc): New option.
      	* doc/invoke.texi (Link Options): Document it.
      	* gcc.c (LINK_GCC_C_SEQUENCE_SPEC): Honor nolibc.
      	* config/alpha/linux.h: Likewise.
      	* config/arc/elf.h: Likewise.
      	* config/arm/uclinux-elf.h: Likewise.
      	* config/arm/unknown-elf.h: Likewise.
      	* config/avr/avrlibc.h: Likewise.
      	* config/bfin/bfin.h: Likewise.
      	* config/bfin/linux.h: Likewise.
      	* config/bfin/uclinux.h: Likewise.
      	* config/darwin.h: Likewise.
      	* config/darwin10.h: Likewise.
      	* config/darwin12.h: Likewise.
      	* config/gnu-user.h: Likewise.
      	* config/lm32/uclinux-elf.h: Likewise.
      	* config/pa/pa-hpux11.h: Likewise.
      	* config/pa/pa64-hpux.h: Likewise.
      	* config/sparc/sparc.h: Likewise.
      
      From-SVN: r263083
      Olivier Hainque committed
    • Reverting 'AsyncI/O patch committed' as it is breaking bare-metal builds. · 1d4a51cf
      2018-07-31  Andre Vieira  <andre.simoesdiasvieira@arm.com>
      
      	Revert 'AsyncI/O patch committed'
      	2018-07-25  Nicolas Koenig  <koenigni@gcc.gnu.org>
      		Thomas Koenig <tkoenig@gcc.gnu.org>
      
      	PR fortran/25829
      	* gfortran.texi: Add description of asynchronous I/O.
      	* trans-decl.c (gfc_finish_var_decl): Treat asynchronous variables
      	as volatile.
      	* trans-io.c (gfc_build_io_library_fndecls): Rename st_wait to
      	st_wait_async and change argument spec from ".X" to ".w".
      	(gfc_trans_wait): Pass ID argument via reference.
      
      2018-07-31  Andre Vieira  <andre.simoesdiasvieira@arm.com>
      
      	Revert 'AsyncI/O patch committed'
      	2018-07-25  Nicolas Koenig  <koenigni@gcc.gnu.org>
      		Thomas Koenig <tkoenig@gcc.gnu.org>
      
      	PR fortran/25829
      	* gfortran.dg/f2003_inquire_1.f03: Add write statement.
      	* gfortran.dg/f2003_io_1.f03: Add wait statement.
      
      2018-07-31  Andre Vieira  <andre.simoesdiasvieira@arm.com>
      
      	Revert 'AsyncI/O patch committed'
      	2018-07-25  Nicolas Koenig  <koenigni@gcc.gnu.org>
      		Thomas Koenig <tkoenig@gcc.gnu.org>
      
      	PR fortran/25829
      	* Makefile.am: Add async.c to gfor_io_src.
      	Add async.h to gfor_io_headers.
      	* Makefile.in: Regenerated.
      	* gfortran.map: Add _gfortran_st_wait_async.
      	* io/async.c: New file.
      	* io/async.h: New file.
      	* io/close.c: Include async.h.
      	(st_close): Call async_wait for an asynchronous unit.
      	* io/file_pos.c (st_backspace): Likewise.
      	(st_endfile): Likewise.
      	(st_rewind): Likewise.
      	(st_flush): Likewise.
      	* io/inquire.c: Add handling for asynchronous PENDING
      	and ID arguments.
      	* io/io.h (st_parameter_dt): Add async bit.
      	(st_parameter_wait): Correct.
      	(gfc_unit): Add au pointer.
      	(st_wait_async): Add prototype.
      	(transfer_array_inner): Likewise.
      	(st_write_done_worker): Likewise.
      	* io/open.c: Include async.h.
      	(new_unit): Initialize asynchronous unit.
      	* io/transfer.c (async_opt): New struct.
      	(wrap_scalar_transfer): New function.
      	(transfer_integer): Call wrap_scalar_transfer to do the work.
      	(transfer_real): Likewise.
      	(transfer_real_write): Likewise.
      	(transfer_character): Likewise.
      	(transfer_character_wide): Likewise.
      	(transfer_complex): Likewise.
      	(transfer_array_inner): New function.
      	(transfer_array): Call transfer_array_inner.
      	(transfer_derived): Call wrap_scalar_transfer.
      	(data_transfer_init): Check for asynchronous I/O.
      	Perform a wait operation on any pending asynchronous I/O
      	if the data transfer is synchronous. Copy PDT and enqueue
      	thread for data transfer.
      	(st_read_done_worker): New function.
      	(st_read_done): Enqueue transfer or call st_read_done_worker.
      	(st_write_done_worker): New function.
      	(st_write_done): Enqueue transfer or call st_read_done_worker.
      	(st_wait): Document as no-op for compatibility reasons.
      	(st_wait_async): New function.
      	* io/unit.c (insert_unit): Use macros LOCK, UNLOCK and TRYLOCK;
      	add NOTE where necessary.
      	(get_gfc_unit): Likewise.
      	(init_units): Likewise.
      	(close_unit_1): Likewise. Call async_close if asynchronous.
      	(close_unit): Use macros LOCK and UNLOCK.
      	(finish_last_advance_record): Likewise.
      	(newunit_alloc): Likewise.
      	* io/unix.c (find_file): Likewise.
      	(flush_all_units_1): Likewise.
      	(flush_all_units): Likewise.
      	* libgfortran.h (generate_error_common): Add prototype.
      	* runtime/error.c: Include io.h and async.h.
      	(generate_error_common): New function.
      
      2018-07-31  Andre Vieira  <andre.simoesdiasvieira@arm.com>
      
      	Revert 'AsyncI/O patch committed'.
      	2018-07-25  Nicolas Koenig  <koenigni@gcc.gnu.org>
      		Thomas Koenig <tkoenig@gcc.gnu.org>
      
      	PR fortran/25829
      	* testsuite/libgomp.fortran/async_io_1.f90: New test.
      	* testsuite/libgomp.fortran/async_io_2.f90: New test.
      	* testsuite/libgomp.fortran/async_io_3.f90: New test.
      	* testsuite/libgomp.fortran/async_io_4.f90: New test.
      	* testsuite/libgomp.fortran/async_io_5.f90: New test.
      	* testsuite/libgomp.fortran/async_io_6.f90: New test.
      	* testsuite/libgomp.fortran/async_io_7.f90: New test.
      
      From-SVN: r263082
      Andre Vieira committed
    • getenv_spec_function to prepend / to value for undef var · 58691d4a
      So the value can be used in places where an absolute path
      is expected.
      
      2018-07-31  Olivier Hainque  <hainque@adacore.com>
      
              * gcc.c (getenv_spec_function): Prepend '/' to value for
      	allowed undefined variables.
      
      From-SVN: r263081
      Olivier Hainque committed
    • Daily bump. · c89b64d7
      From-SVN: r263080
      GCC Administrator committed
  2. 30 Jul, 2018 11 commits