1. 09 Oct, 2018 31 commits
    • [Ada] Fix spurious -Wuninitialized warnings for small records · c743425f
      This change is aimed at getting rid of spurious -Wuninitialized warnings
      issued for small records passed by copy and containing default values
      for some of their components.
      
      The source of the problem is that the _Init parameter of the
      initialization routine is declared as an in/out parameter, so the
      uninitialized object is passed by copy to it and this can be flagged by
      -Wuninitialized.
      
      That's why the mode of the parameter is changed to out, except for the
      cases where information really needs to be passed in: unconstrained
      array types, protected and task types.
      
      For the following record type Rec!
      
       type Rec is record
          B : Boolean := True;
        end record;
      
      the initialization routine must now be:
      
            procedure r__recIP (_init : out r__rec1) is
            begin
               _init.b := true;
               return;
            end r__recIP;
      
      2018-10-09  Eric Botcazou  <ebotcazou@adacore.com>
      
      gcc/ada/
      
      	* exp_ch3.adb (Is_Null_Statement_List): New predicate.
      	(Build_Array_Init_Proc): Use it to find out whether the
      	initialization procedure Is_Null_Init_Proc; if so, set
      	Warnings_Off on the parameter.
      	(Build_Init_Procedure): Likewise.
      	(Init_Formals): Use an in/out first parameter only for
      	unconstrained arrays and for records either containing or built
      	for proteced types or task types; use an out parameter in all
      	the other cases.
      	* fe.h (Is_Init_Proc): Declare.
      	* gcc-interface/decl.c (type_requires_init_of_formal): Do not
      	return true for a discriminant in an unchecked union.
      	(gnat_to_gnu_param): Do not create a PARM_DECL for the Out
      	parameter of an initialization procedure.
      
      From-SVN: r264984
      Eric Botcazou committed
    • [Ada] Fix incorrect computation of Component_Size in ASIS mode · 4b9e1bc7
      2018-10-09  Eric Botcazou  <ebotcazou@adacore.com>
      
      gcc/ada/
      
      	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Constant>: If
      	this is not a definition, retrieve the expression in all cases
      	even if we are just annotating types.
      	* gcc-interface/trans.c (gnat_to_gnu): Also translate Size
      	attribute for constrained types in this mode.
      
      From-SVN: r264983
      Eric Botcazou committed
    • [Ada] Minor tweaks to suppress warnings · 005f870e
      2018-10-09  Eric Botcazou  <ebotcazou@adacore.com>
      
      gcc/ada/
      
      	* adaint.c (__gnat_get_executable_suffix_ptr): Add new line.
      	(__gnat_locate_exec): Check that HOST_EXECUTABLE_SUFFIX is not
      	empty before doing a string search for it.
      	* socket.c (ATTRIBUTE_UNUSED): Define.
      	(__gnat_disable_sigpipe): Add ATTRIBUTE_UNUSED on parameter.
      	* terminals.c (ATTRIBUTE_UNUSED): Move around.
      	(__gnat_setup_child_communication): Add ATTRIBUTE_UNUSED on
      	parameter.
      	(__gnat_send_header): Add ATTRIBUTE_UNUSED on parameters.
      
      From-SVN: r264982
      Eric Botcazou committed
    • [Ada] Ignore pragmas Compile_Time_Error/Warning in GNATprove mode · ea891b43
      GNATprove does not have sometimes the precise information of the
      compiler about size of types and objects, so that it cannot evaluate the
      expressions in pragma Compile_Time_Error/Warning the same way the
      compiler does.  Thus, these pragmas should be ignored in GNATprove mode,
      as it can neither verify them nor assume them (if the expression cannot
      be evaluated at compile time, then the semantics for GNAT is to ignore
      them).
      
      2018-10-09  Yannick Moy  <moy@adacore.com>
      
      gcc/ada/
      
      	* sem_prag.adb (Process_Compile_Time_Warning_Or_Error): Rewrite
      	pragmas as null statements in GNATprove mode.
      
      From-SVN: r264981
      Yannick Moy committed
    • [Ada] Fix spurious error on derived record passed as Out parameter · e693ddbe
      This fixlet gets rid of a spurious error issued in the specific case of
      a call to a subprogram taking an Out parameter of a discriminated record
      type without default discriminants, if the actual parameter is the
      result of the conversion to the record type of a variable whose type is
      derived from the record and has a representation clause.
      
      The compiler was failing to initialize the temporary made around the
      call because of the representation clause, but this is required for a
      type with discriminants because discriminants may be read by the called
      subprogram.
      
      2018-10-09  Eric Botcazou  <ebotcazou@adacore.com>
      
      gcc/ada/
      
      	* exp_ch6.adb (Add_Call_By_Copy_Code): Initialize the temporary
      	made for an Out parameter if the formal type has discriminants.
      
      gcc/testsuite/
      
      	* gnat.dg/derived_type5.adb, gnat.dg/derived_type5_pkg.ads: New
      	testcase.
      
      From-SVN: r264980
      Eric Botcazou committed
    • [Ada] SPARK: fix bug related to non access object permissions · 38c2f655
      2018-10-09  Maroua Maalej  <maalej@adacore.com>
      
      gcc/ada/
      
      	* sem_spark.adb (Check_Declaration): fix bug related to non
      	access object permissions.
      
      From-SVN: r264979
      Maroua Maalej committed
    • [Ada] Minor copyright header fix · 827845b8
      2018-10-09  Doug Rupp  <rupp@adacore.com>
      
      gcc/ada/
      
      	* libgnat/a-ncelfu.ads: Fix name in header to match package.
      
      From-SVN: r264978
      Doug Rupp committed
    • [Ada] Fix strange warning when using Ada.Iterator_Interface · 865234bf
      The back-end was recently changed to issue more -Wuninitialized warnings
      on Out parameters and this has caught a case related to
      Ada.Iterator_Interface.: This patchlet simply kills this uninteresting
      warning.
      
      2018-10-09  Eric Botcazou  <ebotcazou@adacore.com>
      
      gcc/ada/
      
      	* exp_disp.adb (Make_Disp_Asynchronous_Select_Spec): Set
      	Warnings_Off on the B out parameter.
      
      gcc/testsuite/
      
      	* gnat.dg/warn17.adb: New testcase.
      
      From-SVN: r264977
      Eric Botcazou committed
    • [Ada] Einfo: minor comment fix · fd40a157
      2018-10-09  Eric Botcazou  <ebotcazou@adacore.com>
      
      gcc/ada/
      
      	* einfo.ads: Small comment fix.
      
      From-SVN: r264976
      Eric Botcazou committed
    • [Ada] Internal error on inlined renaming of subprogram instance · 0444d067
      This fixes a recent regression introduced in the compiler for the
      inlined renaming of a subprogram instantiated in a package body.  It was
      wrongly clearing the Is_Public flag on the entity associated with the
      body.
      
      2018-10-09  Eric Botcazou  <ebotcazou@adacore.com>
      
      gcc/ada/
      
      	* sem_ch7.adb (Has_Referencer): Add comment for the
      	N_Freeze_Entity case.  Do not rely on
      	Has_Referencer_Of_Non_Subprograms to clear the Is_Public flag on
      	subprogram entities.
      
      gcc/testsuite/
      
      	* gnat.dg/inline14.adb, gnat.dg/inline14_pkg.adb,
      	gnat.dg/inline14_pkg.ads: New testcase.
      
      From-SVN: r264975
      Eric Botcazou committed
    • [Ada] Unnesting: fix handling of private types that are synchronized · c14bd502
      2018-10-09  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* exp_unst.adb (In_Synchronized_Call): Handle properly private
      	types whose full views are synchronized types, in order to
      	recognize generated subprograms whose bodies must be considered
      	reachable even if no direct calls to them are visible in the
      	source.
      
      From-SVN: r264974
      Ed Schonberg committed
    • [Ada] Fix expansion of operations on nonbinary modular types · 184d0451
      2018-10-09  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* exp_ch4.adb (Expand_Modular_Op): When expanding an operation
      	on nonbinary modular types, convert the opersnds to an integer
      	type that is large enough to hold the modulus of the type, which
      	may be larger than Integer'Last.
      
      From-SVN: r264973
      Ed Schonberg committed
    • [Ada] Unnesting: fix handling of uplevel refs to unconstrained formals · 9e25affd
      2018-10-09  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* exp_unst.adb (Unnest_Subprogram):  When an uplevel reference
      	is to an unconstrained formal, the 'Access reference that is
      	created to initialize the corresponding component of the
      	activation record must be wrapped in an unchecked conversion to
      	the generated type of the component. Otherwise, spurious suvtype
      	conformance errors will be generated when the code is within an
      	instantiation and the type of the formal is a formal type of the
      	enclosing generic. Note that during unnesting there is no simple
      	way to determine that the code appears within an instance
      	because ther is no scope stack.
      
      From-SVN: r264972
      Ed Schonberg committed
    • [Ada] Remove spurious -Wuninitialized warning for small array at -O2 · 8dcefdc0
      2018-10-09  Eric Botcazou  <ebotcazou@adacore.com>
      
      gcc/ada/
      
      	* gcc-interface/decl.c (type_requires_init_of_formal): New
      	predicate.
      	(gnat_to_gnu_param): Use it to determine whether a PARM_DECL
      	must be created for an Out parameter passed by copy.
      
      From-SVN: r264971
      Eric Botcazou committed
    • [Ada] Bounded_Holders: fix a typo · da5f6eb4
      2018-10-09  Arnaud Charlet  <charlet@adacore.com>
      
      gcc/ada/
      
      	* libgnat/a-coboho.ads (Storage_Element): Fix a typo.
      
      From-SVN: r264970
      Arnaud Charlet committed
    • [Ada] Functional_Vectors: remove default value for max size · ead46789
      2018-10-09  Claire Dross  <dross@adacore.com>
      
      gcc/ada/
      
      	* libgnat/a-cfinve.ads: Remove default value for
      	Max_Size_In_Storage_Elements as it was not supported in SPARK.
      
      From-SVN: r264969
      Claire Dross committed
    • [Ada] Reset Is_True_Constant on entites used as OUT/IN OUT actuals · 8f0303e7
      2018-10-09  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* exp_ch6.adb (Add_Call_By_Copy_Node,
      	Add_Simple_Call_By_Copy_Node, Expand_Call_Helper): Reset
      	Is_True_Constant on entities used as Out or In_Out parameters in
      	calls.
      
      From-SVN: r264968
      Ed Schonberg committed
    • [Ada] Unnesting: avoid unnecessary loads of System · 73efc7ff
      2018-10-09  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* exp_unst.adb (Unnest_Subprogram): Do not load System to obtain
      	the Address entity unless an activation record is being built.
      	Removes useless with_clauses for System when nested subprograms
      	do not have uplevel references, and therefore do not need
      	activation records.
      
      From-SVN: r264967
      Ed Schonberg committed
    • [Ada] Spurious error message on visibiliy change in aspect expression · e7e72f9b
      This patch removes an improper error message on a visibility change in
      an aspect expression between the freeze point and the end of the
      declaration list, when the expression involves a call to a instance of
      Unchecked_Conversion and the enclosing package declaration has a package
      body with multiple subprogram bodies.
      
      The following must compile quietly:
      
      ----
      package body Par.Rep is
         procedure Nothing is begin null; end;
         procedure Rien is begin null; end;
      end;
      ----
      with Par.Loc;
      package Par.Rep is
         type Rec is record
            X, Y : Integer;
         end record
            with Volatile;
      
         Thing2 : Unsigned_32 := 15;
         Thing3 : Rec
          with Volatile, Address => To_Address (Par.Loc.Flash_Base);
          procedure Nothing;
      end;
      ----
      pragma Restrictions (No_Elaboration_Code);
      with interfaces;  use interfaces;
      pragma unreferenced (interfaces);
      with Tp;       use Tp;
      pragma unreferenced (Tp);
      package Par is
      end Par;
      ----
      with Ada.Unchecked_Conversion;
      with System;
      with Interfaces; use Interfaces;
      package Tp is
      subtype system_address is unsigned_32;
         function to_address is new
            ada.unchecked_conversion (system_address, system.address);
         function To_32 is new
            ada.unchecked_conversion (System.Address, System_Address);
      end;
      ----
      with TP; use TP;
      package Par.Loc is
      FLASH_BASE        : constant system_address := 16#0800_0000#;
      end;
      
      2018-10-09  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* sem_ch6.adb (Fully_Conformant_Expressions): Handle properly
      	the conformance check on an aspect expression that includes a
      	call to an instance of Unchecked_Conversion, or more generally a
      	call to an intrinsic operation.
      
      From-SVN: r264966
      Ed Schonberg committed
    • [Ada] Repinfo: list the mechanism of functions only · 96d268c2
      2018-10-09  Eric Botcazou  <ebotcazou@adacore.com>
      
      gcc/ada/
      
      	* repinfo.adb: Remove with/use clause for Stand.
      	(List_Mechanisms): List the mechanism of functions only.
      
      From-SVN: r264965
      Eric Botcazou committed
    • [Ada] Various User Manual updates for GNATpp · 98ebcae8
      2018-10-09  Bob Duff  <duff@adacore.com>
      
      gcc/ada/
      
      	* doc/gnat_ugn/gnat_utility_programs.rst: Correct spelling of
      	--eol switch.  Document the language-version switches.  Update
      	description for --no-exception.
      
      From-SVN: r264964
      Bob Duff committed
    • [Ada] System.Os_Lib.Normalize_Pathname: fix incorrect comment · 9aa47367
      2018-10-09  Vasiliy Fofanov  <fofanov@adacore.com>
      
      gcc/ada/
      
      	* libgnat/s-os_lib.ads (Normalize_Pathname): Fix incorrect
      	comment.
      
      From-SVN: r264963
      Vasiliy Fofanov committed
    • [Ada] Remove CodePeer annotation · 0960ddad
      2018-10-09  Arnaud Charlet  <charlet@adacore.com>
      
      gcc/ada/
      
      	* vxlink.adb: Remove pragma Annotate, no longer needed.
      
      From-SVN: r264962
      Arnaud Charlet committed
    • [Ada] Preserve Do_Range_Check flags in SPARK mode · 94a98e80
      2018-10-09  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* checks.adb (Apply_Type_Conversion_Checks): Use GNATprove_Mode
      	rather than SPARK_mode in order to preserve the Do_Range_Check
      	flag for verification purposes.
      
      From-SVN: r264961
      Ed Schonberg committed
    • [Ada] Spurious warning on uninitialized entity during code generation · 0ffbef9f
      This patch suppresses a spurious warning coming from the GCC backend, on
      an aggregate that cannot be built in place and for which a temporary
      variable must be created. If the type of the aggregate is a packed
      boolean array, the generated code may appear to use an uninitialized
      value for a component of the array, when in fact the code simply sets a
      single bit of that array.
      
      2018-10-09  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* exp_aggr.adb (Expand_Array_Aggregate): If it is not possible
      	to build in place an aggregate with component associations, set
      	the Warnings_Off flag on the generated temporary, to prevent
      	spurious warnings from the backend when compiling with the
      	-Wuninitialized gcc flag.
      
      gcc/testsuite/
      
      	* gnat.dg/warn18.adb: New testcase.
      
      From-SVN: r264960
      Ed Schonberg committed
    • Define std::string and related typedefs outside __cxx11 namespace · 33b43b0d
      The typedefs for common specializations of std::__cxx11::basic_string do
      not need to be in the std::__cxx11 namespace. Those typedefs are never
      used for linkage purposes so don't appear in mangled names, and so don't
      need to be distinct from the equivalent typedefs for the COW
      std::basic_string specializations. It is OK for the same typedef to
      refer to different types in different translation units.
      
      Defining them directly in namespace std improves diagnostics that use
      those typedefs. For example:
      
      error: could not convert '1' from 'int' to 'std::__cxx11::string' {aka 'std::__cxx11::basic_string<char>'}
      
      will now be printed as:
      
      error: could not convert '1' from 'int' to 'std::string' {aka 'std::__cxx11::basic_string<char>'}
      
      The precise type is still shown, but the typedef is not obfuscated with
      the inline namespace.
      
      	* include/bits/stringfwd.h (string, wstring, u16string, u32string):
      	Define typedefs outside of __cxx11 inline namespace.
      	* python/libstdcxx/v6/printers.py (register_type_printers): Also
      	register printers for typedefs in new location.
      
      From-SVN: r264958
      Jonathan Wakely committed
    • re PR middle-end/63155 (memory hog) · fe8a86e1
      2018-10-09  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/63155
      	* tree-ssa-structalias.c: Include tree-ssa.h.
      	(get_constraint_for_ssa_var): For undefs return nothing_id.
      	(find_func_aliases): Cleanup PHI handling.
      
      From-SVN: r264956
      Richard Biener committed
    • tree-vectorizer.c (dump_stmt_cost): Fix cut&paste missing replacements. · c885142a
      2018-10-09  Richard Biener  <rguenther@suse.de>
      
      	* tree-vectorizer.c (dump_stmt_cost): Fix cut&paste missing
      	replacements.
      
      From-SVN: r264954
      Richard Biener committed
    • ASAN: emit line information of stack variables. · 2c73950d
      2018-10-09  Martin Liska  <mliska@suse.cz>
      
      	* asan.c (asan_emit_stack_protection): If a stack variable
      	is located in a same file as current function, then emit
      	line info into variable definition string.
      2018-10-09  Martin Liska  <mliska@suse.cz>
      
      	* c-c++-common/asan/pr64820.c: Add line number to scanned
      	pattern.
      	* c-c++-common/asan/use-after-return-1.c: Likewise.
      	* g++.dg/asan/function-argument-1.C (main): Likewise.
      	* g++.dg/asan/function-argument-2.C (main): Likewise.
      	* g++.dg/asan/function-argument-3.C (main): Likewise.
      	* g++.dg/asan/use-after-scope-1.C (main): Likewise.
      	* g++.dg/asan/use-after-scope-2.C (main): Likewise.
      	* g++.dg/asan/use-after-scope-types-1.C (main): Likewise.
      	* g++.dg/asan/use-after-scope-types-2.C (main): Likewise.
      	* g++.dg/asan/use-after-scope-types-3.C (main): Likewise.
      	* g++.dg/asan/use-after-scope-types-4.C (main): Likewise.
      	* g++.dg/asan/use-after-scope-types-5.C (main): Likewise.
      	* gcc.dg/asan/pr78541.c (main): Likewise.
      	* gcc.dg/asan/use-after-scope-1.c (main): Likewise.
      	* gcc.dg/asan/use-after-scope-10.c (main): Likewise.
      	* gcc.dg/asan/use-after-scope-2.c (main): Likewise.
      	* gcc.dg/asan/use-after-scope-3.c (main): Likewise.
      	* gcc.dg/asan/use-after-scope-5.c (main): Likewise.
      	* gcc.dg/asan/use-after-scope-9.c (main): Likewise.
      
      From-SVN: r264951
      Martin Liska committed
    • re PR fortran/87151 (allocating array of character) · 9d44426f
      2018-10-09  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/87151
      	* trans-array.c (gfc_get_array_span): Deal with deferred char
      	array components having a TYPE_MAX_VALUE of zero.
      	(gfc_array_init_size): Use the hidden string length component
      	to build the descriptor dtype.
      	(gfc_array_allocate): Remove the erroneous replacement of the
      	charlen backend decl with a temporary.
      	(gfc_conv_expr_descriptor): Use the ss_info string length in
      	the case of deferred character components.
      	(gfc_alloc_allocatable_for_assignment): Actually compare the
      	string lengths for deferred characters. Make sure that kind > 1
      	is handled correctly. Set the span field of the descriptor.
      	* trans-intrinsic.c (gfc_conv_intrinsic_len): Remove the stupid
      	comment.
      
      	PR fortran/80931
      	* trans-array.c (gfc_array_allocate): Set the span field for
      	variable length character arrays.
      
      
      2018-10-09  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/87151
      	* gfortran.dg/deferred_type_component_3.f90: New test.
      
      	PR fortran/80931
      	* gfortran.dg/deferred_character_28.f90: New test.
      	* gfortran.dg/deferred_character_29.f90: New test (note that
      	this test appears in PR83196 comment #4 by mistake).
      
      From-SVN: r264949
      Paul Thomas committed
    • Daily bump. · 6d520963
      From-SVN: r264948
      GCC Administrator committed
  2. 08 Oct, 2018 9 commits