1. 26 Sep, 2018 20 commits
    • [Ada] Missing predicate check on return value · bcbe14db
      The semantics of the return statement includes an implicit conversion of
      the value to the return type of the funcction. This conversion, as
      elsewhere, entails a predicate check if the return type has a predicate
      aspect.
      
      We do not apply the check to a case expression because in the context of
      a return statement it will be expanded into a series of return
      statements, each of which will receive a predicate check.
      
      2018-09-26  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* sem_ch6.adb (Analyze_Function_Return): If the return type has
      	a dynamic_predicate, apply a Predicate_Check to the expression,
      	given that it is implicitly converted to the return type.
      	Exclude case expressions from the check, because in this context
      	the expression is expanded into individual return statements.
      
      gcc/testsuite/
      
      	* gnat.dg/predicate3.adb, gnat.dg/predicate3_pkg.ads: New
      	testcase.
      
      From-SVN: r264611
      Ed Schonberg committed
    • [Ada] ICE on array of task type with -gnatct · 4453a822
      2018-09-26  Eric Botcazou  <ebotcazou@adacore.com>
      
      gcc/ada/
      
      	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Task_Type>: In
      	-gnatct mode, process the discriminants only for a definition.
      
      From-SVN: r264610
      Eric Botcazou committed
    • [Ada] Fix assertion failure on record subtype with -gnatRj · 81d85d4b
      The JSON output of the -gnatR machinery was choking on record subtypes
      and the change fixes this oversight.
      
      The following package must now compile properly with -gnatRj:
      
      package P is
      
        type Rec (D : Integer) is record
            C : Integer;
      
            case D is
               when 1 =>
                  S : String (1 .. 20);
               when 2 =>
                  B : Boolean;
               when others =>
                  Ch1 : Character;
                  F   : Float;
                  Ch2 : Character;
            end case;
      
         end record;
      
         subtype Rec1 is Rec (1);
      
      end P;
      
      2018-09-26  Eric Botcazou  <ebotcazou@adacore.com>
      
      gcc/ada/
      
      	* repinfo.adb (List_Record_Layout): Be prepared for JSON output.
      	(List_Record_Info): Use the flat representation for record
      	subtypes in the JSON format.
      
      From-SVN: r264609
      Eric Botcazou committed
    • [Ada] Regression in partial compilation of RCI units · 05a84157
      This patch fixes an issue whereby the compilation of partial sources
      (packages without bodies that require them) would not occur when said
      sources were remote call interfaces. This is required because such
      interfaces may have bodies that only exist on the server side or vice
      versa
      
      2018-09-26  Justin Squirek  <squirek@adacore.com>
      
      gcc/ada/
      
      	* lib-writ.adb, lib-writ.ads (Write_With_Lines): Add
      	documentation and an extra conditional check for RCI units so
      	that generated ali files will list the spec only instead of a
      	body when a body is not found.
      
      From-SVN: r264608
      Justin Squirek committed
    • [Ada] Set Current_Error_Node directly · 738b83cd
      This changes gigi to set Current_Error_Node directly, which should
      result in a more robust error handling.
      
      2018-09-26  Eric Botcazou  <ebotcazou@adacore.com>
      
      gcc/ada/
      
      	* gcc-interface/gigi.h (error_gnat_node): Delete.
      	* gcc-interface/trans.c (error_gnat_node): Likewise.
      	(gigi): Replace it with Current_Error_Node.
      	(gnat_to_gnu): Likewise.
      	* gcc-interface/utils.c (rest_of_subprog_body_compilation):
      	Likewise.
      	* gcc-interface/misc.c (internal_error_function): Do not set it.
      
      From-SVN: r264607
      Eric Botcazou committed
    • [Ada] Wrong handling of address clause for limited record type · 3b9d1594
      2018-09-26  Eric Botcazou  <ebotcazou@adacore.com>
      
      gcc/ada/
      
      	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: Adjust
      	code retrieving the address when a clause has already been
      	processed.
      	* gcc-interface/trans.c (gnat_to_gnu)
      	<N_Attribute_Definition_Clause>: For an object with a Freeze
      	node, build a meaningful expression.
      
      gcc/testsuite/
      
      	* gnat.dg/addr12.adb, gnat.dg/addr12_a.adb,
      	gnat.dg/addr12_a.ads, gnat.dg/addr12_b.adb,
      	gnat.dg/addr12_b.ads, gnat.dg/addr12_c.ads: New testcase.
      
      From-SVN: r264606
      Eric Botcazou committed
    • [Ada] Introduce -gnatd_A to set Opt.Disable_ALI_File · 1ac984f5
      This will allow us to remove the import of flag_compare_debug in
      lib-writ.adb in a second stage.
      
      2018-09-26  Arnaud Charlet  <charlet@adacore.com>
      
      gcc/ada/
      
      	* gnat1drv.adb (Adjust_Global_Switches): -gnatd_A sets
      	Opt.Disable_ALI_File.
      	* debug.adb: Update debug flags documentation.
      
      From-SVN: r264605
      Arnaud Charlet committed
    • [Ada] Disable special handling for preconditions specified by pragmas · 6d7d342a
      2018-09-26  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* contracts.adb (Analyze_Entry_Or_Subprogram_Contract): The
      	analysis of preconditions specified by pragmas (rather than
      	aspects) is not delayed, and therefore expressions functions
      	that are completions do not need special handling during
      	expansion.
      
      From-SVN: r264604
      Ed Schonberg committed
    • [Ada] Unnesting: fix handling of up level refs for entries · ef8f9700
      2018-09-26  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* exp_unst.adb: Fix handling of up level references for entries.
      
      From-SVN: r264603
      Ed Schonberg committed
    • [Ada] Fix ICE related to type freezing · 33d25517
      2018-09-26  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* contracts.adb (Expand_Subprogram_Contract,
      	Process_Preconditions_For): Apply Freeze_Expr_Types to the
      	expression for a precondition of an expression function that is
      	a completion, when the completion appears in the private part
      	and the declaration it completes is in the visible part of the
      	same package.
      	* freeze.adb (Freeze_Expr_Types): Do not establish the scope of
      	the operation if it is already installed, as will be the case
      	when called to analyze the contract oc the subprogram (which
      	happens when generating code inside the subprogram body).
      
      From-SVN: r264602
      Ed Schonberg committed
    • [Ada] SPARK: update borrowing effects for IN parameters · f0f2d1fc
      2018-09-26  Maroua Maalej  <maalej@adacore.com>
      
      gcc/ada/
      
      	* sem_spark.adb (Check_Param_In, Setup_Parameter_Or_Global):
      	Change the operation associated to assigning to an IN parameter.
      	In SPARK, IN access-to-variable is an observe operation for a
      	function, and borrow operation for a procedure.
      
      From-SVN: r264601
      Maroua Maalej committed
    • [Ada] Vxlink: minor reformatting · 98f57e4c
      2018-09-26  Arnaud Charlet  <charlet@adacore.com>
      
      gcc/ada
      
      	* vxlink.adb: Minor reformatting.
      
      From-SVN: r264600
      Arnaud Charlet committed
    • [Ada] Fix miscellaneous typos · e5d16323
      2018-09-26  Gary Dismukes  <dismukes@adacore.com>
      
      gcc/ada/
      
      	* exp_ch9.adb, layout.adb, sem_attr.adb, sem_res.adb: Fix
      	miscellaneous typos.
      
      From-SVN: r264599
      Gary Dismukes committed
    • A few places in the arm and aarch64 backends check whether an atomic operation… · 5e14418b
      A few places in the arm and aarch64 backends check whether an atomic operation needs acquire or release semantics.
      
      A few places in the arm and aarch64 backends check whether an atomic
      operation needs acquire or release semantics.
      This is generally done with a check like
      
      (is_mm_relaxed (model)
        || is_mm_consume (model)
        || is_mm_release (model))
      
      In this patch we introduce two helper functions to make things a little
      tidier.
      
      There are a few places in the arm/ backend that check whether an
      operation needs memory model semantics with an idiom that can now be
      replaced with the new aarch_mm_needs_* functions, so we make that
      replacement.
      
      There is also some backslash removal to make things a little tidier.
      
      Full bootstrap and regression test plus cross-compilation regression tests done
      on arm-none-linux-gnueabihf.
      Ok for trunk?
      
      gcc/ChangeLog:
      
      2018-09-20  Matthew Malcomson  <matthew.malcomson@arm.com>
      
      	* config/arm/arm.c (arm_split_compare_and_swap, arm_split_atomic_op):
      	Use new helper functions.
      	* config/arm/sync.md (atomic_load<mode>, atomic_store<mode>):
      	Use new helper functions.
      	* config/arm/aarch-common-protos.h (aarch_mm_needs_acquire,
      	aarch_mm_needs_release): New declarations.
      	* config/arm/aarch-common.c (aarch_mm_needs_acquire,
      	aarch_mm_needs_release): New.
      
      From-SVN: r264598
      Matthew Malcomson committed
    • [Ada] Vxlink: kill a CodePeer warning · 53986604
      2018-09-26  Jerome Lambourg  <lambourg@adacore.com>
      
      gcc/ada/
      
      	* vxlink.adb: Kill a CodePeer warning.
      
      From-SVN: r264597
      Jerome Lambourg committed
    • re PR c++/67656 ([concepts] matched variadics in expression constraint report as unmatched) · 9464ed97
      2018-09-26  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/67656
      	* g++.dg/concepts/pr67656.C: New.
      
      From-SVN: r264596
      Paolo Carlini committed
    • arm.c (arm_reorg): Skip Thumb reorg pass for thunks. · f29cfc6b
      	* config/arm/arm.c (arm_reorg): Skip Thumb reorg pass for thunks.
      	(arm32_output_mi_thunk): Deal with long calls.
      
      From-SVN: r264595
      Eric Botcazou committed
    • re PR debug/87428 ("Missed" inline instances cause bogus DWARF to be emitted) · 392047f9
      2018-09-26  Richard Biener  <rguenther@suse.de>
      
      	PR debug/87428
      	PR debug/87362
      	* tree-inline.c (expand_call_inline): When the location
      	of the call is UNKNOWN_LOCATION use DECL_SOURCE_LOCATION
      	or BUILTINS_LOCATION for the BLOCK_SOURCE_LOCATION of
      	the inserted BLOCK to make inlined_function_outer_scope_p
      	recognize it.
      	* dwarf2out.c (add_call_src_coords_attributes): Do not add
      	coords for reserved locations.
      
      From-SVN: r264594
      Richard Biener committed
    • runtime, os: fix the build on Solaris · 201054a7
          
          Reviewed-on: https://go-review.googlesource.com/137535
      
      From-SVN: r264593
      Ian Lance Taylor committed
    • Daily bump. · a1f9402e
      From-SVN: r264592
      GCC Administrator committed
  2. 25 Sep, 2018 20 commits
    • rs6000: Use set_attr_alternative in some places · 0bbadf8b
      Some code is much neater if it uses set_attr_alternative than if it
      does everything by hand.  Change some patterns to use this shorthand.
      
      
      	* config/rs6000/rs6000.md (*movcc_internal1): Use set_attr_alternative.
      	(*call_indirect_nonlocal_sysv<mode>): Ditto.
      	(*call_value_indirect_nonlocal_sysv<mode>): Ditto.
      	(*sibcall_nonlocal_sysv<mode>): Ditto.
      	(*sibcall_value_nonlocal_sysv<mode>): Ditto.
      	(<bd>_<mode>): Ditto.
      	(<bd>tf_<mode>): Ditto.
      
      From-SVN: r264588
      Segher Boessenkool committed
    • rs6000: Simplify "switch (which_alternative)" patterns · 07a38de7
      A few of the rs6000 patterns use C code as output control string, where
      that code is just a "switch (which_alternative)" with all alternatives
      returning a constant string or just the result of a function call as
      template.
      Write such cases as just a list of templates, with the few pieces that
      are C code preceded by "*".
      
      
      	* config/rs6000/altivec.md (*altivec_mov<mode>): Write the output
      	control string as a list of templates instead of as C code.
      	(*altivec_movti): Ditto.
      	* config/rs6000/darwin.md (movdf_low_di): Ditto.
      
      From-SVN: r264587
      Segher Boessenkool committed
    • RISC-V: Fix weak symbols with medany and explicit relocs. · ad117173
      	gcc/
      	* config/riscv/riscv.c (riscv_split_symbol): Mark auipc label as weak
      	when target symbol is weak.
      
      	gcc/testsuite/
      	* gcc.target/riscv/weak-1.c: New.
      
      From-SVN: r264586
      Jim Wilson committed
    • re PR c/87387 (trunk/gcc/builtins.c:585:7: warning: -Wself-assign problem) · c7813484
      	PR c/87387
              * builtins.c (unterminated_array): Simplify.
      	* expr.c (string_constant): Handle SSA_NAME.  Add more exceptions
      	where pointer arithmetic is safe.
      
      	* gcc.dg/warn-stpcpy-no-nul.c: Drop unnecessary xfails.
      	* gcc.dg/warn-stplen-no-nul.c: Likewise.
      
      From-SVN: r264585
      Jeff Law committed
    • rs6000: Do not allow out of range immediate in vsplt[bhw] (PR86987) · a9f6e019
      The original AltiVec manuals had the immediate lane number in the
      splat instructions as a 5-bit number, but anything too big has no
      defined meaning, and gas will choke on it too.  This patch disallows
      it in the instruction patterns as well as in the builtins.  This
      solves PR86987.
      
      
      	PR target/86987
      	* config/rs6000/altivec.md (altivec_vspltb): Use
      	const_0_to_15_operand instead of u5bit_cint_operand.
      	(*altivec_vspltb_internal): Ditto.
      	(altivec_vspltb_direct): Ditto.
      	(altivec_vsplth): Use const_0_to_7_operand instead of
      	u5bit_cint_operand.
      	(*altivec_vsplth_internal): Ditto.
      	(altivec_vsplth_direct): Ditto.
      	(altivec_vspltw): Use const_0_to_3_operand instead of
      	u5bit_cint_operand.
      	(*altivec_vspltw_internal): Ditto.
      	(altivec_vspltw_direct): Ditto.
      	(altivec_vspltsf): Ditto.
      	(*altivec_vspltsf_internal): Ditto.
      	* config/rs6000/rs6000.c (rs6000_expand_binop_builtin): Handle the
      	various splats with the proper size immediate.  Reorder the various
      	cases by ascending size of immediate, and put all such together.
      
      From-SVN: r264584
      Segher Boessenkool committed
    • adjust dinst.adb's expectations for location views · ee850518
      The testcase failed when the compiler used .loc view syntax, because
      it expected discriminators at the end of the .loc lines.
      
      for  gcc/testsuite/ChangeLog
      
      	* gnat.dg/dinst.adb: Adjust for locviews.
      
      From-SVN: r264583
      Alexandre Oliva committed
    • altivec-6.C: Updated vec_splat() calls. · 43ab423d
      [testsuite]
      
      2018-09-25  Will Schmidt  <will_schmidt@vnet.ibm.com>
      
          * g++.dg/ext/altivec-6.C: Updated vec_splat() calls.
          * gcc.target/powerpc/fold-vec-splat-char.c: Remove invalid
          vec_splat calls from recently added tests. Update instruction counts.
          * gcc.target/powerpc/fold-vec-splat-floatdouble.c: Same.
          * gcc.target/powerpc/fold-vec-splat-int.c: Same.
          * gcc.target/powerpc/fold-vec-splat-longlong.c: Same.
          * gcc.target/powerpc/fold-vec-splat-pixel.c: Same.
          * gcc.target/powerpc/fold-vec-splat-short.c: Same.
      
      From-SVN: r264582
      Will Schmidt committed
    • re PR c++/87425 (ICE with virtual assignment operator) · a5bfbcc8
      	PR c++/87425
      	* g++.dg/cpp2a/constexpr-virtual12.C: New test.
      
      From-SVN: r264581
      Marek Polacek committed
    • re PR c++/87398 (g++ ICE on valid code: tree check: expected record_type or… · 69deaf14
      re PR c++/87398 (g++ ICE on valid code: tree check: expected record_type or union_type or qual_union_type, have array_type in cxx_eval_constant_expression, at cp/constexpr.c:4820)
      
      	PR c++/87398
      	* constexpr.c (cxx_eval_constant_expression) <case OBJ_TYPE_REF>: Only
      	look through COMPONENT_REFs with DECL_FIELD_IS_BASE FIELD_DECLs.
      
      	* g++.dg/other/pr87398.C: New test.
      	* g++.dg/cpp2a/constexpr-virtual10.C: New test.
      	* g++.dg/cpp2a/constexpr-virtual11.C: New test.
      
      From-SVN: r264580
      Jakub Jelinek committed
    • [PR 87339] Fix failure of gcc.dg/warn-abs-1.c on some targets · e8753bb8
      2018-09-25  Martin Jambor  <mjambor@suse.cz>
      
      	PR testsuite/87339
      	* gcc.dg/warn-abs-1.c: Do not test _Float128.  Remove dg-skip-if and
      	float125 target.
      	* gcc.target/i386/warn-abs-3.c: New test.
      
      From-SVN: r264579
      Martin Jambor committed
    • * config/i386/i386.md: Move nearbyint patterns closer to rint. · 84848f51
      From-SVN: r264578
      Uros Bizjak committed
    • re PR c++/81246 (ICE on invalid C++ code (with a non-type template parameter… · 0ae1678f
      re PR c++/81246 (ICE on invalid C++ code (with a non-type template parameter having type 'float'): Segmentation fault)
      
      2018-09-25  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/81246
      	* g++.dg/cpp0x/pr81246.C: New.
      
      From-SVN: r264577
      Paolo Carlini committed
    • Use steady_clock to implement condition_variable::wait_for with predicate · 29b26763
      In r263225 (d2e378182a12d68fe5caeffae681252662a2fe7b), I fixed
      condition_variable::wait_for to use std::chrono::steady_clock for the wait.
      Unfortunately, I failed to spot that the same fix is required for the
      wait_for variant that takes a predicate too.
      
      2018-09-25  Mike Crowe  <mac@mcrowe.com>
      
      	* include/std/condition_variable (condition_variable::wait_for): Use
      	steady clock in overload that uses a predicate.
      
      From-SVN: r264575
      Mike Crowe committed
    • PR libstdc++/87431 optimise valueless_by_exception() · 16d30bbd
      If a std::variant can never get into valueless state then we don't need
      to do a runtime check for a valid alternative.
      
      	PR libstdc++/87431
      	* include/std/variant (_Variant_storage<true, _Types...>::_M_valid):
      	Avoid runtime test when all alternatives are scalars and so cannot
      	throw during initialization.
      
      From-SVN: r264574
      Jonathan Wakely committed
    • re PR debug/83941 (Debug info generated with -flto contains useless forwarders) · 4fb792e1
      2018-09-25  Richard Biener  <rguenther@suse.de>
      
      	PR debug/83941
      	* dwarf2out.c (add_AT_external_die_ref): Remove now redundant
      	GC-ification.
      	(maybe_create_die_with_external_ref): Do not create
      	DW_TAG_imported_unit here.
      	(add_abstract_origin_attribute): Handle external BLOCK refs.
      	(dwarf2out_abstract_function): Simplify LTO case.
      	(dwarf2out_early_finish): Create DW_TAG_imported_unit explicitely
      	rather than using maybe_create_die_with_external_ref.
      
      From-SVN: r264573
      Richard Biener committed
    • internal/bytealg, internal/cpu, internal/poll: portability fixes · f5ec13f1
          
          In internal/bytealg correct a +build tag to never build indexbyte_generic.go
          for the gofrontend, where we always use indexbyte_native.go.
          
          For internal/cpu let the Makefile define CacheLineSize using goarch.sh,
          rather than trying to enumerate all the possibilities in cpu_ARCH.go files.
          
          In internal/poll call the C fcntl function rather than using SYS_FCNTL.
          Change mksysinfo.sh to ensure that F_GETPIPE_SZ is always defined,
          and check that in internal/poll.
          
          Reviewed-on: https://go-review.googlesource.com/137256
      
      From-SVN: r264572
      Ian Lance Taylor committed
    • i386.md (frndintxf2_mask_pm): Remove. · be2df8bc
      	* config/i386/i386.md (frndintxf2_mask_pm): Remove.
      	(frndintxf2_mask_pm_i387): Ditto.
      	(nearbyintxf2): Rewrite expander pattern to match rintxf2.
      	Enable for !flag_trapping_math.
      	(nearbyint<mode>2): Enable x87 modes for !flag_trapping_math.
      	Enable SSE modes for TARGET_SSE4_1 and expand them with round insn.
      	Change operand 1 predicate to nonimmediate_operand.
      	(attr "i387_cw"): Remove mask_pm.
      	* config/i386/i386.h (enum ix86_stack_slot): Remove SLOT_CW_MASK_PM.
      	(enum ix86_entity): Remove I387_MASK_PM.
      	* config/i386/i386.c (ix86_i387_mode_needed): Do not
      	handle I387_MASK_PM.
      	(ix86_mode_needed): Ditto.
      	(ix86_mode_after): Ditto.
      	(ix86_mode_entry): Ditto.
      	(ix86_mode_exit): Ditto.
      	(emit_i387_cw_initialization): Do not handle I387_CW_MASK_PM.
      
      From-SVN: r264571
      Uros Bizjak committed
    • cmd/go: pass down testing gccgo in TestScript · b16084d2
          
          This permits TestScript to work when gccgo is not installed.
          Previous testing was using a previously installed gccgo, not the newly
          built one.
          
          This revealed that the testing of whether an internal package is
          permitted was incorrect for standard library packages, since the
          uninstalled gccgo can see internal packages in the uninstalled libgo.
          Fix the internal package tests.
          
          This permitted removing a couple of gccgo-specific changes in the
          testsuite.
          
          Reviewed-on: https://go-review.googlesource.com/137255
      
      From-SVN: r264570
      Ian Lance Taylor committed
    • i386: Compile pr82699-5.c and pr82699-6.c with -fno-pic · 97b8f867
      Compile pr82699-5.c and pr82699-6.c with -fno-pic to avoid
      
      FAIL: gcc.target/i386/pr82699-5.c (test for excess errors)
      Excess errors:
      cc1: sorry, unimplemented: -mfentry isn't supported for 32-bit in combination with -fpic
      FAIL: gcc.target/i386/pr82699-6.c (test for excess errors)
      Excess errors:
      cc1: error: -mnop-mcount is not implemented for -fPIC
      cc1: sorry, unimplemented: -mfentry isn't supported for 32-bit in combination with -fpic
      
      when running GCC testsuite with --target_board='unix{-fpic\ -m32,-fpic}'.
      
      	PR target/82699
      	* gcc.target/i386/pr82699-5.c: Add -fno-pic for ia32.
      	* gcc.target/i386/pr82699-6.c: Add -fno-pic.
      
      From-SVN: r264569
      H.J. Lu committed
    • coarray_lock_7.f90: Adjust scan-tree-dump-times for ILP32. · eeefd00d
      	* gfortran.dg/coarray_lock_7.f90: Adjust scan-tree-dump-times for
      	ILP32.
      
      From-SVN: r264568
      Jakub Jelinek committed