Commit Graph

157392 Commits

Author SHA1 Message Date
Pierre-Marie de Rodat
d0567dc0db [multiple changes]
2017-11-09  Jerome Lambourg  <lambourg@adacore.com>

	* sigtramp-qnx.c: Fix obvious typo.

2017-11-09  Doug Rupp  <rupp@adacore.com>

	* libgnarl/s-taprop__linux.adb (Monotonic_Clock): Minor reformatting.

2017-11-09  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Resolve): If expression is an entity whose type has
	implicit dereference, generate reference to it, because no reference is
	generated for an overloaded entity during analysis, given that its
	identity may not be known.

2017-11-09  Javier Miranda  <miranda@adacore.com>

	* exp_disp.adb (Expand_Interface_Thunk): Replace substraction of
	offset-to-top field by addition.
	(Make_Secondary_DT): Initialize the offset-to-top field with a negative
	offset.
	* exp_ch3.adb (Build_Offset_To_Top_Function): Build functions that
	return a negative offset-to-top value.
	(Initialize_Tag): Invoke runtime services Set_Dynamic_Offset_To_Top and
	Set_Static_Offset_To_Top passing a negative offet-to-top value;
	initialize also the offset-to-top field with a negative offset.
	* libgnat/a-tags.adb (Base_Address): Displace the pointer by means of
	an addition since the offset-to-top field is now a negative value.
	(Displace): Displace the pointer to the object means of a substraction
	since it is now a negative value.
	(Set_Dynamic_Offset_to_top): Displace the pointer to the object by
	means of a substraction since it is now a negative value.

2017-11-09  Eric Botcazou  <ebotcazou@adacore.com>

	* gnat1drv.adb (Gnat1drv): Call Errout.Finalize (Last_Call => True)
	before Errout.Output_Messages also in the case of compilation errors.

2017-11-09  Javier Miranda  <miranda@adacore.com>

	* doc/gnat_ugn/the_gnat_compilation_model.rst (Interfacing with C++ at
	the Class Level): Fix error interfacing with C strings.
	* gnat_ugn.texi: Regenerate.

2017-11-09  Jerome Lambourg  <lambourg@adacore.com>

	* system-qnx-aarch64.ads: Fix the priority constants.
	* s-osinte__qnx.ads: Fix constants for handling the locking protocols
	and scheduling.
	* s-osinte__qnx.adb: New file , prevents the use of priority 0 that
	corresponds to an idle priority on QNX.

2017-11-09  Piotr Trojanek  <trojanek@adacore.com>

	* sem_prag.adb, sem_util.adb, sem_elab.adb: Fix minor typos in
	comments.

From-SVN: r254566
2017-11-09 10:24:45 +00:00
Pierre-Marie de Rodat
6350cb2aa6 [multiple changes]
2017-11-09  Piotr Trojanek  <trojanek@adacore.com>

	* lib-xref-spark_specific.adb (Add_SPARK_Xrefs): Ignore loop parameters
	in expression funtions that are expanded into variables.

2017-11-09  Piotr Trojanek  <trojanek@adacore.com>

	* sem_util.adb: Minor whitespace cleanup.

2017-11-09  Jerome Lambourg  <lambourg@adacore.com>

	* libgnarl/s-taprop__qnx.adb: Refine aarch64-qnx. Use the POSIX
	s-taprop version rather than a custom one.
	* sigtramp-qnx.c (aarch64-qnx): Implement the signal trampoline.

From-SVN: r254563
2017-11-09 09:47:31 +00:00
Martin Liska
136ca74eb9 GCOV: support multiple functions per a line (PR gcov-profile/48463)
2017-11-09  Martin Liska  <mliska@suse.cz>

	PR gcov-profile/48463
	* coverage.c (coverage_begin_function): Output also end locus
	of a function and information whether the function is
	artificial.
	* gcov-dump.c (tag_function): Parse and print the information.
	* gcov.c (INCLUDE_MAP): Add include.
	(INCLUDE_SET): Likewise.
	(struct line_info): Move earlier in the source file because
	of vector<line_info> in function_info structure.
	(line_info::line_info): Likewise.
	(line_info::has_block): Likewise.
	(struct source_info): Add new member index.
	(source_info::get_functions_at_location): New function.
	(function_info::group_line_p): New function.
	(output_intermediate_line): New function.
	(output_intermediate_file): Use the mentioned function.
	(struct function_start): New.
	(struct function_start_pair_hash): Likewise.
	(process_file): Add code that identifies group functions.
	Assign lines either to global or function scope.
	(generate_results): Skip artificial functions.
	(find_source): Assign index for each source file.
	(read_graph_file): Read new flag artificial and end_line.
	(add_line_counts): Assign it either to global of function scope.
	(accumulate_line_counts): Isolate core of the function to
	accumulate_line_info and call it for both function and global
	scope lines.
	(accumulate_line_info): New function.
	(output_line_beginning): Fix GNU coding style.
	(print_source_line): New function.
	(output_line_details): Likewise.
	(output_function_details): Likewise.
	(output_lines): Iterate both source (global) scope and function
	scope.
	(struct function_line_start_cmp): New class.
	* doc/gcov.texi: Reflect changes in documentation.

From-SVN: r254562
2017-11-09 09:11:17 +00:00
Jakub Jelinek
6bc322a11b re PR debug/82837 (ICE in output_operand: invalid expression as operand)
PR debug/82837
	* dwarf2out.c (const_ok_for_output_1): Reject NEG in addition to NOT.
	(mem_loc_descriptor): Handle (const (neg (...))) as (neg (const (...)))
	and similarly for not instead of neg.

	* gcc.dg/debug/dwarf2/pr82837.c: New test.

From-SVN: r254561
2017-11-09 09:54:19 +01:00
Andi Kleen
e7c77c4f12 Add option to force indirect calls for x86
This patch adds a -mforce-indirect-call option to force all calls
or tail calls on x86_64 between functions to indirect. This is similar to the
large code model, but doesn't affect jumps inside functions, so has much
less run time overhead.

This is useful with Intel Processor Trace (PT). PT has precise timing
for indirect calls/jumps, but not for direct ones. So if we can force
them to indirect it allows to time every function relatively accurately
(minus the overhead of the indirect branch)

Without this short functions often don't see a timing update and cannot
be measured.

The timing requires at least Skylake or Goldmont based CPUs.

I made it an option. Originally I tried to make it a new code model,
but since it can be combined with other code models (medium, pic, kernel
etc.) this turned out to be too many combinations.

For example with gcc. This first column is a ns time stamp for the
functions.

$ perf record -e intel_pt/noretcomp=1,cyc=1,cyc_thresh=1/u ./cc1 -O3 hello.c
$ perf script --itrace=cr -F callindent,time,sym,addr --ns  | sed -n 180000,182000p | less
...
1184596.432756920:                             build_int_cst                        =>           79c9de c_common_nodes_and_builtins
1184596.432756921:                             tree_cons                            =>           ee2080 tree_cons
1184596.432756938:                                 ggc_internal_alloc               =>           80f3e0 ggc_internal_alloc
1184596.432756951:                                     memset@plt                   =>           598af0 memset@plt
1184596.432756967:                                     __memset_avx2_unaligned_erms =>           80f605 ggc_internal_alloc
1184596.432756969:                                 ggc_internal_alloc               =>           ee20a2 tree_cons
1184596.432756973:                             tree_cons                            =>           79c9f4 c_common_nodes_and_builtins
1184596.432756974:                             build_int_cst                        =>           ef9a40 build_int_cst
1184596.432756996:                                 wide_int_to_tree                 =>           ef93a0 wide_int_to_tree
1184596.432757000:                                     wi::force_to_size            =>           f48f70 wi::force_to_size
1184596.432757005:                                     canonize                     =>           ef94de wide_int_to_tree
1184596.432757021:                                     get_int_cst_ext_nunits       =>           ee1960 get_int_cst_ext_nunits
1184596.432757026:                                     get_int_cst_ext_nunits       =>           ef94fe wide_int_to_tree
1184596.432757042:                                     tree_int_cst_elt_check       =>           83e310 tree_int_cst_elt_check
1184596.432757044:                                     tree_int_cst_elt_check       =>           ef9761 wide_int_to_tree
1184596.432757046:                                 wide_int_to_tree                 =>           ef9a9b build_int_cst

gcc/:
2017-11-08  Andi Kleen  <ak@linux.intel.com>

	* config/i386/i386.opt: Add -mforce-indirect-call.
	* config/i386/predicates.md: Check for flag_force_indirect_call.
	* doc/invoke.texi: Document -mforce-indirect-call

gcc/testsuite/:
2017-11-08  Andi Kleen  <ak@linux.intel.com>

	* gcc.target/i386/force-indirect-call-1.c: New test.
	* gcc.target/i386/force-indirect-call-2.c: New test.
	* gcc.target/i386/force-indirect-call-3.c: New test.

From-SVN: r254560
2017-11-09 05:42:43 +00:00
GCC Administrator
8b74c9cd73 Daily bump.
From-SVN: r254559
2017-11-09 00:16:12 +00:00
Steven G. Kargl
b036979093 re PR fortran/82841 (Segfault in gfc_simplify_transfer)
2017-11-08  Steven G. Kargl  <kargl@kgcc.gnu.org>

	PR Fortran/82841
	* simplify.c(gfc_simplify_transfer): Do not dereference a NULL pointer.
	Unwrap a short line.
 
2017-11-08  Steven G. Kargl  <kargl@kgcc.gnu.org>

	PR Fortran/82841
	* gfortran.dg/transfer_simplify_11.f90: new test.

From-SVN: r254555
2017-11-08 22:56:58 +00:00
Kito Cheng
fb5621b184 RISC-V: Fix build error
- This build error was indroduced by "RISC-V: Implement movmemsi"
    and "RISC-V: Support -mpreferred-stack-boundary flag"

gcc/ChangeLog

2017-11-08  Kito Cheng  <kito.cheng@gmail.com>

        * config/riscv/riscv-protos.h (riscv_slow_unaligned_access_p):
        New extern.
        (MOVE_RATIO): Use riscv_slow_unaligned_access_p.
        config/riscv/riscv.c (predict.h): New include.
        (riscv_slow_unaligned_access_p): No longer static.
        (riscv_block_move_straight): Add require.
        config/riscv/riscv-protos.h (riscv_hard_regno_nregs): Delete.

From-SVN: r254554
2017-11-08 22:04:49 +00:00
Steven G. Kargl
fd5dce5c53 re PR fortran/82884 (ICE in gfc_resolve_character_array_constructor, at fortran/array.c:2069)
2017-11-08  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/82884
	* arith.c (gfc_hollerith2character): Clear pad.

2017-11-08  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/82884
	* gfortran.dg/hollerith_character_array_constructor.f90: New test.

From-SVN: r254553
2017-11-08 20:56:43 +00:00
Jakub Jelinek
deef5083cd re PR target/82855 (AVX512: replace OP+movemask with OP_mask+ktest)
PR target/82855
	* config/i386/sse.md (<avx512>_eq<mode>3<mask_scalar_merge_name>,
	<avx512>_eq<mode>3<mask_scalar_merge_name>_1): Use
	nonimmediate_operand predicate for operand 1 instead of
	register_operand.

From-SVN: r254552
2017-11-08 21:15:42 +01:00
Kyrylo Tkachov
7692ce17a3 [AArch64] Add STP pattern to store a vec_concat of two 64-bit registers
On top of the previous vec_merge simplifications [1] we can add this pattern to perform
a store of a vec_concat of two 64-bit values in distinct registers as an STP.
This avoids constructing such a vector explicitly in a register and storing it as
a Q register.
This way for the code in the testcase we can generate:

construct_lane_1:
        ldp     d1, d0, [x0]
        fmov    d3, 1.0e+0
        fmov    d2, 2.0e+0
        fadd    d4, d1, d3
        fadd    d5, d0, d2
        stp     d4, d5, [x1, 32]
        ret

construct_lane_2:
        ldp     x2, x0, [x0]
        add     x3, x2, 1
        add     x4, x0, 2
        stp     x3, x4, [x1, 32]
        ret

instead of the current:
construct_lane_1:
        ldp     d0, d1, [x0]
        fmov    d3, 1.0e+0
        fmov    d2, 2.0e+0
        fadd    d0, d0, d3
        fadd    d1, d1, d2
        dup     v0.2d, v0.d[0]
        ins     v0.d[1], v1.d[0]
        str     q0, [x1, 32]
        ret

construct_lane_2:
        ldp     x2, x3, [x0]
        add     x0, x2, 1
        add     x2, x3, 2
        dup     v0.2d, x0
        ins     v0.d[1], x2
        str     q0, [x1, 32]
        ret

Bootstrapped and tested on aarch64-none-linux-gnu.

[1] https://gcc.gnu.org/ml/gcc-patches/2017-06/msg00272.html
    https://gcc.gnu.org/ml/gcc-patches/2017-06/msg00273.html
    https://gcc.gnu.org/ml/gcc-patches/2017-06/msg00274.html

	* config/aarch64/aarch64-simd.md (store_pair_lanes<mode>):
	New pattern.
	* config/aarch64/constraints.md (Uml): New constraint.
	* config/aarch64/predicates.md (aarch64_mem_pair_lanes_operand): New
	predicate.

	* gcc.target/aarch64/store_v2vec_lanes.c: New test.

From-SVN: r254551
2017-11-08 18:32:09 +00:00
Kyrylo Tkachov
040939a238 [simplify-rtx] Simplify vec_merge of vec_duplicates into vec_concat
Another vec_merge simplification that's missing from simplify-rtx.c is transforming
a vec_merge of two vec_duplicates. For example:
(set (reg:V2DF 80)
    (vec_merge:V2DF (vec_duplicate:V2DF (reg:DF 84))
        (vec_duplicate:V2DF (reg:DF 81))
        (const_int 2)))

Can be transformed into the simpler:
(set (reg:V2DF 80)
    (vec_concat:V2DF (reg:DF 81)
                (reg:DF 84)))

I believe this should always be beneficial.
I'm still looking into finding a small testcase demonstrating this, but on aarch64 SPEC
I've seen this eliminate some really bizzare codegen where GCC was generating nonsense like:
  ldr q18, [sp, 448]
  ins v18.d[0], v23.d[0]
  ins v18.d[1], v22.d[0]

With q18 being pushed and popped off the stack in the prologue and epilogue of the function!
These are large files from SPEC that I haven't been able to analyse yet as to why GCC even attempts
to do that, but with this patch it doesn't try to load a register and overwrite all its lanes.
This patch shaves off about 5k of code size from zeusmp on aarch64 at -O3, so I believe it's a good
thing to do. 

	* simplify-rtx.c (simplify_ternary_operation): Simplify vec_merge
	of two vec_duplicates into a vec_concat.

From-SVN: r254550
2017-11-08 18:29:38 +00:00
Kyrylo Tkachov
40757a25d4 vec_merge + vec_duplicate + vec_concat simplification
Another vec_merge simplification that's missing is transforming:
(vec_merge (vec_duplicate x) (vec_concat (y) (z)) (const_int N))
into
(vec_concat x z) if N == 1 (0b01) or
(vec_concat y x) if N == 2 (0b10)

For the testcase in this patch on aarch64 this allows us to try matching during combine the pattern:
(set (reg:V2DI 78 [ x ])
    (vec_concat:V2DI
        (mem:DI (reg/v/f:DI 76 [ y ]) [1 *y_4(D)+0 S8 A64])
        (mem:DI (plus:DI (reg/v/f:DI 76 [ y ])
                (const_int 8 [0x8])) [1 MEM[(long long int *)y_4(D) + 8B]+0 S8 A64])))

rather than the more complex:
(set (reg:V2DI 78 [ x ])
    (vec_merge:V2DI (vec_duplicate:V2DI (mem:DI (plus:DI (reg/v/f:DI 76 [ y ])
                    (const_int 8 [0x8])) [1 MEM[(long long int *)y_4(D) + 8B]+0 S8 A64]))
        (vec_duplicate:V2DI (mem:DI (reg/v/f:DI 76 [ y ]) [1 *y_4(D)+0 S8 A64]))
        (const_int 2 [0x2])))

We don't actually have an aarch64 pattern for the simplified version above, but it's a simple enough
form to add, so this patch adds such a pattern that performs a concatenated load of two 64-bit vectors
in adjacent memory locations as a single Q-register LDR. The new aarch64 pattern is needed to demonstrate
the effectiveness of the simplify-rtx change, so I've kept them together as one patch.

Now for the testcase in the patch we can generate:
construct_lanedi:
        ldr     q0, [x0]
        ret

construct_lanedf:
        ldr     q0, [x0]
        ret

instead of:
construct_lanedi:
        ld1r    {v0.2d}, [x0]
        ldr     x0, [x0, 8]
        ins     v0.d[1], x0
        ret

construct_lanedf:
        ld1r    {v0.2d}, [x0]
        ldr     d1, [x0, 8]
        ins     v0.d[1], v1.d[0]
        ret

The new memory constraint Utq is needed because we need to allow only the Q-register addressing modes but
the MEM expressions in the RTL pattern have 64-bit vector modes, and if we don't constrain them they will
allow the D-register addressing modes during register allocation/address mode selection, which will produce
invalid assembly.

Bootstrapped and tested on aarch64-none-linux-gnu. 

	* simplify-rtx.c (simplify_ternary_operation, VEC_MERGE):
	Simplify vec_merge of vec_duplicate and vec_concat.
	* config/aarch64/constraints.md (Utq): New constraint.
	* config/aarch64/aarch64-simd.md (load_pair_lanes<mode>): New
	define_insn.

	* gcc.target/aarch64/load_v2vec_lanes_1.c: New test.

From-SVN: r254549
2017-11-08 18:27:57 +00:00
Kyrylo Tkachov
6432f025b4 Simplify vec_merge of vec_duplicate with const_vector
I'm trying to improve some of the RTL-level handling of vector lane operations on aarch64 and that
involves dealing with a lot of vec_merge operations. One simplification that I noticed missing
from simplify-rtx are combinations of vec_merge with vec_duplicate.
In this particular case:
(vec_merge (vec_duplicate (X)) (const_vector [A, B]) (const_int N))

which can be replaced with

(vec_concat (X) (B)) if N == 1 (0b01) or
(vec_concat (A) (X)) if N == 2 (0b10).

For the aarch64 testcase in this patch this simplifications allows us to try to combine:
(set (reg:V2DI 77 [ x ])
    (vec_concat:V2DI (mem:DI (reg:DI 0 x0 [ y ]) [1 *y_3(D)+0 S8 A64])
        (const_int 0 [0])))

instead of the more complex:
(set (reg:V2DI 77 [ x ])
    (vec_merge:V2DI (vec_duplicate:V2DI (mem:DI (reg:DI 0 x0 [ y ]) [1 *y_3(D)+0 S8 A64]))
        (const_vector:V2DI [
                (const_int 0 [0])
                (const_int 0 [0])
            ])
        (const_int 1 [0x1])))


For the simplified form above we already have an aarch64 pattern: *aarch64_combinez<mode> which
is missing a DI/DFmode version due to an oversight, so this patch extends that pattern as well to
use the VDC mode iterator that includes DI and DFmode (as well as V2HF which VD_BHSI was missing).
The aarch64 hunk is needed to see the benefit of the simplify-rtx.c hunk, so I didn't split them
into separate patches.

Before this for the testcase we'd generate:
construct_lanedi:
        movi    v0.4s, 0
        ldr     x0, [x0]
        ins     v0.d[0], x0
        ret

construct_lanedf:
        movi    v0.2d, 0
        ldr     d1, [x0]
        ins     v0.d[0], v1.d[0]
        ret

but now we can generate:
construct_lanedi:
        ldr     d0, [x0]
        ret

construct_lanedf:
        ldr     d0, [x0]
        ret

Bootstrapped and tested on aarch64-none-linux-gnu.


	* simplify-rtx.c (simplify_ternary_operation, VEC_MERGE):
	Simplify vec_merge of vec_duplicate and const_vector.
	* config/aarch64/predicates.md (aarch64_simd_or_scalar_imm_zero):
	New predicate.
	* config/aarch64/aarch64-simd.md (*aarch64_combinez<mode>): Use VDC
	mode iterator.  Update predicate on operand 1 to
	handle non-const_vec constants.  Delete constraints.
	(*aarch64_combinez_be<mode>): Likewise for operand 2.

	* gcc.target/aarch64/construct_lane_zero_1.c: New test.

From-SVN: r254548
2017-11-08 18:23:35 +00:00
Pierre-Marie de Rodat
8d9a1ba7bb [multiple changes]
2017-11-08  Piotr Trojanek  <trojanek@adacore.com>

	* lib-xref.ads, lib-xref-spark_specific.adb
	(Traverse_Compilation_Unit): Move declaration to package body.

2017-11-08  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_spark.adb (Expand_SPARK_N_Object_Renaming_Declaration): Obtain
	the type of the renaming from its defining entity, rather then the
	subtype mark as there may not be a subtype mark.

2017-11-08  Jerome Lambourg  <lambourg@adacore.com>

	* adaint.c, s-oscons-tmplt.c, init.c, libgnat/system-qnx-aarch64.ads,
	libgnarl/a-intnam__qnx.ads, libgnarl/s-intman__qnx.adb,
	libgnarl/s-osinte__qnx.ads, libgnarl/s-qnx.ads,
	libgnarl/s-taprop__qnx.adb, s-oscons-tmplt.c, sigtramp-qnx.c,
	terminals.c: Initial port of GNAT for aarch64-qnx

2017-11-08  Elisa Barboni  <barboni@adacore.com>

	* exp_util.adb (Find_DIC_Type): Move...
	* sem_util.ads, sem_util.adb (Find_DIC_Type): ... here.

2017-11-08  Justin Squirek  <squirek@adacore.com>

	* sem_res.adb (Resolve_Allocator): Add info messages corresponding to
	the owner and corresponding coextension.

2017-11-08  Ed Schonberg  <schonberg@adacore.com>

	* sem_aggr.adb (Resolve_Delta_Aggregate): Divide into the
	following separate procedures.
	(Resolve_Delta_Array_Aggregate): Previous code form
	Resolve_Delta_Aggregate.
	(Resolve_Delta_Record_Aggregate): Extend previous code to cover latest
	ARG decisions on the legality rules for delta aggregates for records:
	in the case of a variant record, components from different variants
	cannot be specified in the delta aggregate, and this must be checked
	statically.

From-SVN: r254547
2017-11-08 17:32:18 +00:00
Pierre-Marie de Rodat
76b37a56d2 [multiple changes]
2017-11-08  Piotr Trojanek  <trojanek@adacore.com>

	* spark_xrefs.ads (SPARK_Scope_Record): Remove File_Num component.
	* lib-xref-spark_specific.adb (Add_SPARK_Scope): Skip initialization of
	removed component.

2017-11-08  Gary Dismukes  <dismukes@adacore.com>

	* sem_ch4.adb: Minor typo fix.

From-SVN: r254546
2017-11-08 17:10:05 +00:00
Pierre-Marie de Rodat
ec98bb7dac [multiple changes]
2017-11-08  Piotr Trojanek  <trojanek@adacore.com>

	* spark_xrefs.ads (SPARK_Scope_Record): Remove Spec_File_Num and
	Spec_Scope_Num components.
	* spark_xrefs.adb (dspark): Skip pretty-printing to removed components.
	* lib-xref-spark_specific.adb (Add_SPARK_Scope): Skip initialization of
	removed components.
	(Collect_SPARK_Xrefs): Skip setting proper values of removed
	components.

2017-11-08  Gary Dismukes  <dismukes@adacore.com>

	* exp_ch4.adb (Expand_N_Type_Conversion): Add test that the selector
	name is a discriminant in check for unconditional accessibility
	violation within instances.

From-SVN: r254545
2017-11-08 16:52:32 +00:00
Pierre-Marie de Rodat
9ac3cbb39d lib-xref-spark_specific.adb (Add_SPARK_Xrefs): Remove special-case for constants (with variable input).
gcc/ada/

2017-11-08  Piotr Trojanek  <trojanek@adacore.com>

	* lib-xref-spark_specific.adb (Add_SPARK_Xrefs): Remove special-case
	for constants (with variable input).
	(Is_Constant_Object_Without_Variable_Input): Remove.

2017-11-08  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch9.adb, sem_disp.adb, sem_util.adb: Minor reformatting.

2017-11-08  Piotr Trojanek  <trojanek@adacore.com>

	* spark_xrefs.ads (Rtype): Remove special-casing of constants for SPARK
	cross-references.
	(dspark): Remove hardcoded table bound.

2017-11-08  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Analyze_Aggregate): For Ada2020 delta aggregates, use
	the type of the base of the construct to determine the type (or
	candidate interpretations) of the delta aggregate. This allows the
	construct to appear in a context that expects a private extension.
	* sem_res.adb (Resolve): Handle properly a delta aggregate with an
	overloaded base.

gcc/testsuite/

2017-11-08  Ed Schonberg  <schonberg@adacore.com>

	* gnat.dg/delta_aggr.adb: New testcase.

From-SVN: r254544
2017-11-08 16:45:55 +00:00
Pierre-Marie de Rodat
2cf8eabd48 [multiple changes]
2017-11-08  Piotr Trojanek  <trojanek@adacore.com>

	* spark_xrefs.ads (SPARK_Xref_Record): Replace file and scope indices
	with Entity_Id of the reference.
	* spark_xrefs.adb (dspark): Adapt pretty-printing routine.
	* lib-xref-spark_specific.adb (Add_SPARK_Xrefs): Store Entity_Id of the
	reference, not the file and scope indices.

2017-11-08  Arnaud Charlet  <charlet@adacore.com>

	* errout.ads (Current_Node): New.
	* errout.adb (Error_Msg): Use Current_Node.
	* par-ch6.adb, par-ch7.adb, par-ch9.adb, par-util.adb: Set Current_Node
	when relevant.
	* style.adb: Call Error_Msg_N when possible.

From-SVN: r254543
2017-11-08 16:31:39 +00:00
Piotr Trojanek
45a6947d0f spark_xrefs.ads (SPARK_Scope_Record): Rename Scope_Id component to Entity.
2017-11-08  Piotr Trojanek  <trojanek@adacore.com>

	* spark_xrefs.ads (SPARK_Scope_Record): Rename Scope_Id component to
	Entity.
	* lib-xref-spark_specific.adb, spark_xrefs.adb: Propagate renaming of
	the Scope_Id record component.

From-SVN: r254542
2017-11-08 16:25:03 +00:00
Piotr Trojanek
00b3de222b spark_xrefs.ads (SPARK_File_Record): Remove string components.
2017-11-08  Piotr Trojanek  <trojanek@adacore.com>

	* spark_xrefs.ads (SPARK_File_Record): Remove string components.
	* spark_xrefs.adb (dspark): Remove pretty-printing of removed
	SPARK_File_Record components.
	* lib-xref-spark_specific.adb (Add_SPARK_File): Do not store string
	representation of files/units.

From-SVN: r254541
2017-11-08 16:22:37 +00:00
Piotr Trojanek
784ef0fb7c lib-xref.ads, [...] (Traverse_Declarations): Remove Inside_Stubs parameter.
2017-11-08  Piotr Trojanek  <trojanek@adacore.com>

	* lib-xref.ads, lib-xref-spark_specific.adb (Traverse_Declarations):
	Remove Inside_Stubs parameter.

From-SVN: r254540
2017-11-08 16:16:04 +00:00
Pierre-Marie de Rodat
3e5400f4ac [multiple changes]
2017-11-08  Piotr Trojanek  <trojanek@adacore.com>

	* spark_xrefs.ads (SPARK_Xref_Record): Referenced object is now
	represented by Entity_Id.
	(SPARK_Scope_Record): Referenced scope (e.g. subprogram) is now
	represented by Entity_Id; this information is not repeated as
	Scope_Entity.
	(Heap): Moved from lib-xref-spark_specific.adb, to reside next to
	Name_Of_Heap_Variable.
	* spark_xrefs.adb (dspark): Adapt debug routine to above changes in
	data types.
	* lib-xref-spark_specific.adb: Adapt routines for populating SPARK
	scope and xrefs tables to above changes in data types.

2017-11-08  Justin Squirek  <squirek@adacore.com>

	* sem_ch8.adb (Mark_Use_Clauses): Add condition to always mark the
	primitives of generic actuals.
	(Mark_Use_Type): Add recursive call to properly mark class-wide type's
	base type clauses as per ARM 8.4 (8.2/3).

2017-11-08  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Analyze_Generic_Subprobram_Body): Validate
	categorization dependency of the body, as is done for non-generic
	units.
	(New_Overloaded_Entity, Visible_Part_Type): Remove linear search
	through declarations (Simple optimization, no behavior change).

From-SVN: r254539
2017-11-08 16:04:35 +00:00
Piotr Trojanek
013e9958f8 spark_xrefs.ads (SPARK_Xref_Record): Remove inessential components.
2017-11-08  Piotr Trojanek  <trojanek@adacore.com>

	* spark_xrefs.ads (SPARK_Xref_Record): Remove inessential components.
	(SPARK_Scope_Record): Remove inessential components.
	* spark_xrefs.adb (dspark): Remove pretty-printing of removed record
	components.
	* lib-xref-spark_specific.adb (Add_SPARK_Scope): Remove setting of
	removed record components.
	(Add_SPARK_Xrefs): Remove setting of removed record components.

From-SVN: r254538
2017-11-08 15:48:46 +00:00
Jakub Jelinek
388f3a6454 pr57878.C (__sso_string_base::_M_get_allocator): Return a value.
* g++.dg/pr57878.C (__sso_string_base::_M_get_allocator): Return
	a value.

From-SVN: r254537
2017-11-08 16:48:30 +01:00
Jakub Jelinek
383ac8dc26 re PR tree-optimization/78821 (GCC7: Copying whole 32 bits structure field by field not optimised into copying whole 32 bits at once)
PR tree-optimization/78821
	* gimple-ssa-store-merging.c (struct store_operand_info): Add bit_not_p
	data member.
	(store_operand_info::store_operand_info): Initialize it to false.
	(pass_store_merging::terminate_all_aliasing_chains): Rewritten to use
	ref_maybe_used_by_stmt_p and stmt_may_clobber_ref_p on lhs of each
	store in the group, and if chain_info is non-NULL, to ignore altogether
	that chain.
	(compatible_load_p): Fail if bit_not_p does not match.
	(imm_store_chain_info::output_merged_store): Handle bit_not_p loads.
	(handled_load): Fill in bit_not_p.  Handle BIT_NOT_EXPR.
	(pass_store_merging::process_store): Adjust
	terminate_all_aliasing_chains calls to pass NULL in all current spots,
	call terminate_all_aliasing_chains newly when adding a store into
	a chain with non-NULL chain_info.

	* gcc.dg/store_merging_2.c: Expect 3 store mergings instead of 2.
	* gcc.dg/store_merging_13.c (f7, f8, f9, f10, f11, f12, f13): New
	functions.
	(main): Test also those.  Expect 13 store mergings instead of 6.
	* gcc.dg/store_merging_14.c (f7, f8, f9): New functions.
	(main): Test also those.  Expect 9 store mergings instead of 6.

From-SVN: r254536
2017-11-08 16:46:58 +01:00
Piotr Trojanek
a14ab2c346 lib-xref-spark_specific.adb (Add_SPARK_Xrefs): Remove dead check for empty entities.
2017-11-08  Piotr Trojanek  <trojanek@adacore.com>

	* lib-xref-spark_specific.adb (Add_SPARK_Xrefs): Remove dead check for
	empty entities.

From-SVN: r254535
2017-11-08 15:38:51 +00:00
Wilco Dijkstra
6216fd904f [AArch64] Simplify aarch64_can_eliminate
Simplify aarch64_can_eliminate - if we need a frame pointer, we must
eliminate to HARD_FRAME_POINTER_REGNUM.  Rather than hardcoding all
combinations from the ELIMINABLE_REGS list, just do the correct check.

    gcc/
	* config/aarch64/aarch64.c (aarch64_can_eliminate): Simplify logic.

From-SVN: r254534
2017-11-08 15:36:34 +00:00
Wilco Dijkstra
7040939b9e [AArch64] Remove aarch64_frame_pointer_required
To implement -fomit-leaf-frame-pointer, there are 2 places where we need
to check whether we have to use a frame chain (since register allocation
may allocate LR in a leaf function that omits the frame pointer, but if
LR is spilled we must emit a frame chain).  To simplify this do not force
frame_pointer_needed via aarch64_frame_pointer_required, but enable the
frame chain in aarch64_layout_frame.  Now aarch64_frame_pointer_required
can be removed and aarch64_can_eliminate is simplified.

    gcc/
	* config/aarch64/aarch64.c (aarch64_frame_pointer_required)
	Remove.
	(aarch64_layout_frame): Initialise emit_frame_chain.
	(aarch64_can_eliminate): Remove omit leaf frame pointer code.
	(TARGET_FRAME_POINTER_REQUIRED): Remove define.

    testsuite/
	* gcc.target/aarch64/dwarf-cfa-reg.c: Update.

From-SVN: r254533
2017-11-08 15:34:36 +00:00
Pierre-Marie de Rodat
7cc7f3aa68 sem_disp.adb (Is_Inherited_Public_Operation): Extend the functionality of this routine to handle multiple levels of derivations.
gcc/ada/

2017-11-08  Javier Miranda  <miranda@adacore.com>

	* sem_disp.adb (Is_Inherited_Public_Operation): Extend the
	functionality of this routine to handle multiple levels of derivations.

2017-11-08  Hristian Kirtchev  <kirtchev@adacore.com>

	* einfo.adb: Elist36 is now used as Nested_Scenarios.
	(Nested_Scenarios): New routine.
	(Set_Nested_Scenarios): New routine.
	(Write_Field36_Name): New routine.
	* einfo.ads: Add new attribute Nested_Scenarios along with occurrences
	in entities.
	(Nested_Scenarios): New routine along with pragma Inline.
	(Set_Nested_Scenarios): New routine along with pragma Inline.
	* sem_elab.adb (Find_And_Process_Nested_Scenarios): New routine.
	(Process_Nested_Scenarios): New routine.
	(Traverse_Body): When a subprogram body is traversed for the first
	time, find, save, and process all suitable scenarios found within.
	Subsequent traversals of the same subprogram body utilize the saved
	scenarios.

2017-11-08  Piotr Trojanek  <trojanek@adacore.com>

	* lib-xref-spark_specific.adb (Add_SPARK_Scope): Remove detection of
	protected operations.
	(Add_SPARK_Xrefs): Simplify detection of empty entities.
	* get_spark_xrefs.ads, get_spark_xrefs.adb, put_spark_xrefs.ads,
	put_spark_xrefs.adb, spark_xrefs_test.adb: Remove code for writing,
	reading and testing SPARK cross-references stored in the ALI files.
	* lib-xref.ads (Output_SPARK_Xrefs): Remove.
	* lib-writ.adb (Write_ALI): Do not write SPARK cross-references to the
	ALI file.
	* spark_xrefs.ads, spark_xrefs.adb (pspark): Remove, together
	with description of the SPARK xrefs ALI format.
	* gcc-interface/Make-lang.in (GNAT_ADA_OBJS): Remove get_spark_refs.o
	and put_spark_refs.o.

2017-11-08  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch4.adb (Apply_Accessibility_Check): Do not finalize the object
	when the associated access type is subject to pragma
	No_Heap_Finalization.
	* exp_intr.adb (Expand_Unc_Deallocation): Use the available view of the
	designated type in case it comes from a limited withed unit.

gcc/testsuite/

2017-11-08  Javier Miranda  <miranda@adacore.com>

	* gnat.dg/overriding_ops2.adb, gnat.dg/overriding_ops2.ads,
	gnat.dg/overriding_ops2_pkg.ads, gnat.dg/overriding_ops2_pkg-high.ads:
	New testcase.

From-SVN: r254532
2017-11-08 15:17:43 +00:00
Hristian Kirtchev
daf82dd806 exp_ch3.adb (Expand_N_Object_Declaration): Save and restore relevant SPARK-related flags.
2017-11-08  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch3.adb (Expand_N_Object_Declaration): Save and restore relevant
	SPARK-related flags.  Add ??? comment.
	* exp_util.adb (Insert_Actions): Add an entry for node
	N_Variable_Reference_Marker.
	* sem.adb (Analyze): Add an entry for node N_Variable_Reference_Marker.
	* sem_ch8.adb (Find_Direct_Name): Add constant Is_Assignment_LHS. Build
	and record a variable reference marker for the current name.
	(Find_Expanded_Name): Add constant Is_Assignment_LHS. Build and record
	a variable reference marker for the current name.
	* sem_elab.adb (Build_Variable_Reference_Marker): New routine.
	(Extract_Variable_Reference_Attributes): Reimplemented.
	(Info_Scenario): Add output for variable references and remove output
	for variable reads.
	(Info_Variable_Read): Removed.
	(Info_Variable_Reference): New routine.
	(Is_Suitable_Scenario): Variable references are now suitable scenarios
	while variable reads are not.
	(Output_Active_Scenarios): Add output for variable references and
	remove output for variable reads.
	(Output_Variable_Read): Removed.
	(Output_Variable_Reference): New routine.
	(Process_Variable_Read): Removed.
	(Process_Variable_Reference): New routine.
	(Process_Variable_Reference_Read): New routine.
	* sem_elab.ads (Build_Variable_Reference_Marker): New routine.
	* sem_res.adb (Resolve_Actuals): Build and record a variable reference
	marker for the current actual.
	* sem_spark.adb (Check_Node): Add an entry for node
	N_Variable_Reference_Marker.
	* sem_util.adb (Within_Subprogram_Call): Moved to the library level.
	* sem_util.ads (Within_Subprogram_Call): Moved to the library level.
	* sinfo.adb (Is_Read): New routine.
	(Is_Write): New routine.
	(Target): Updated to handle variable reference markers.
	(Set_Is_Read): New routine.
	(Set_Is_Write): New routine.
	(Set_Target): Updated to handle variable reference markers.
	* sinfo.ads: Add new attributes Is_Read and Is_Write along with
	occurrences in nodes. Update attribute Target. Add new node
	kind N_Variable_Reference_Marker.
	(Is_Read): New routine along with pragma Inline.
	(Is_Write): New routine along with pragma Inline.
	(Set_Is_Read): New routine along with pragma Inline.
	(Set_Is_Write): New routine along with pragma Inline.
	* sprint.adb (Sprint_Node_Actual): Add an entry for node
	N_Variable_Reference_Marker.

From-SVN: r254531
2017-11-08 14:07:31 +00:00
Andreas Schwab
428dab52e9 aarch64-vect-lane-2.c (search_line_fast): Change type to void.
* c-c++-common/torture/aarch64-vect-lane-2.c (search_line_fast):
	Change type to void.

From-SVN: r254530
2017-11-08 13:56:04 +00:00
Arnaud Charlet
879e92d057 sem_util.adb (Subprogram_Name): Append suffix for overloaded subprograms.
2017-11-08  Arnaud Charlet  <charlet@adacore.com>

	* sem_util.adb (Subprogram_Name): Append suffix for overloaded
	subprograms.

From-SVN: r254529
2017-11-08 13:52:43 +00:00
Pierre-Marie de Rodat
e5148da096 [multiple changes]
2017-11-08  Yannick Moy  <moy@adacore.com>

	* sem_ch8.adb (Use_One_Type, Update_Use_Clause_Chain): Do not report
	about unused use-type or use-package clauses inside inlined bodies.

2017-11-08  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_elab.adb (Ensure_Prior_Elaboration): Add new parameter
	In_Partial_Fin along with a comment on its usage. Do not guarantee the
	prior elaboration of a unit when the need came from a partial
	finalization context.
	(In_Initialization_Context): Relocated to Process_Call.
	(Is_Partial_Finalization_Proc): New routine.
	(Process_Access): Add new parameter In_Partial_Fin along with a comment
	on its usage.
	(Process_Activation_Call): Add new parameter In_Partial_Fin along with
	a comment on its usage.
	(Process_Activation_Conditional_ABE_Impl): Add new parameter
	In_Partial_Fin along with a comment on its usage. Do not emit any ABE
	diagnostics when the activation occurs in a partial finalization
	context.
	(Process_Activation_Guaranteed_ABE_Impl): Add new parameter
	In_Partial_Fin along with a comment on its usage.
	(Process_Call): Add new parameter In_Partial_Fin along with a comment
	on its usage. A call is within a partial finalization context when it
	targets a finalizer or primitive [Deep_]Finalize, and the call appears
	in initialization actions. Pass this information down to the recursive
	steps of the Processing phase.
	(Process_Call_Ada): Add new parameter In_Partial_Fin along with a
	comment on its usage. Remove the guard which suppresses the generation
	of implicit Elaborate[_All] pragmas. This is now done in
	Ensure_Prior_Elaboration.
	(Process_Call_Conditional_ABE): Add new parameter In_Partial_Fin along
	with a comment on its usage. Do not emit any ABE diagnostics when the
	call occurs in a partial finalization context.
	(Process_Call_SPARK): Add new parameter In_Partial_Fin along with a
	comment on its usage.
	(Process_Instantiation): Add new parameter In_Partial_Fin along with a
	comment on its usage.
	(Process_Instantiation_Ada): Add new parameter In_Partial_Fin along
	with a comment on its usage.
	(Process_Instantiation_Conditional_ABE): Add new parameter
	In_Partial_Fin along with a comment on its usage. Do not emit any ABE
	diagnostics when the instantiation occurs in a partial finalization
	context.
	(Process_Instantiation_SPARK): Add new parameter In_Partial_Fin along
	with a comment on its usage.
	(Process_Scenario): Add new parameter In_Partial_Fin along  with a
	comment on its usage.
	(Process_Single_Activation): Add new parameter In_Partial_Fin along
	with a comment on its usage.
	(Traverse_Body): Add new parameter In_Partial_Fin along with a comment
	on its usage.

2017-11-08  Arnaud Charlet  <charlet@adacore.com>

	* sem_ch13.adb: Add optional parameter to Error_Msg.

2017-11-08  Jerome Lambourg  <lambourg@adacore.com>

	* fname.adb (Is_Internal_File_Name): Do not check the 8+3 naming schema
	for the Interfaces.* hierarchy as longer unit names are now allowed.

2017-11-08  Arnaud Charlet  <charlet@adacore.com>

	* sem_util.adb (Subprogram_Name): Emit sloc for the enclosing
	subprogram as well.  Support more cases of entities.
	(Append_Entity_Name): Add some defensive code.

From-SVN: r254528
2017-11-08 13:46:19 +00:00
Janne Blomqvist
63ee540430 PR 82869 Introduce logical_type_node and use it
Earlier GFortran used to redefine boolean_type_node, which in the rest
of the compiler means the C/C++ _Bool/bool type, to the Fortran
default logical type.  When this redefinition was removed, a few
issues surfaced. Namely,

1) PR 82869, where we created a boolean tmp variable, and passed it to
the runtime library as a Fortran logical variable of a different size.

2) Fortran specifies that logical operations should be done with the
default logical kind, not in any other kind.

3) Using 8-bit variables have some issues, such as
   - on x86, partial register stalls and length prefix changes.
   - s390 has a compare with immediate and jump instruction which
     works with 32-bit but not 8-bit quantities.

This patch addresses these issues by introducing a type
logical_type_node which is a Fortran LOGICAL variable of default
kind. It is then used in places were the Fortran standard mandates, as
well as for compiler generated temporary variables.

For x86-64, using the Polyhedron benchmark suite, no performance or
code size difference worth mentioning was observed.

Regtested on x86_64-pc-linux-gnu.

gcc/fortran/ChangeLog:

2017-11-08  Janne Blomqvist  <jb@gcc.gnu.org>

	PR 82869
	* convert.c (truthvalue_conversion): Use logical_type_node.
	* trans-array.c (gfc_trans_allocate_array_storage): Likewise.
	(gfc_trans_create_temp_array): Likewise.
	(gfc_trans_array_ctor_element): Likewise.
	(gfc_trans_array_constructor_value): Likewise.
	(trans_array_constructor): Likewise.
	(trans_array_bound_check): Likewise.
	(gfc_conv_array_ref): Likewise.
	(gfc_trans_scalarized_loop_end): Likewise.
	(gfc_conv_array_extent_dim): Likewise.
	(gfc_array_init_size): Likewise.
	(gfc_array_allocate): Likewise.
	(gfc_trans_array_bounds): Likewise.
	(gfc_trans_dummy_array_bias): Likewise.
	(gfc_conv_array_parameter): Likewise.
	(duplicate_allocatable): Likewise.
	(duplicate_allocatable_coarray): Likewise.
	(structure_alloc_comps): Likewise
	(get_std_lbound): Likewise
	(gfc_alloc_allocatable_for_assignment): Likewise
	* trans-decl.c (add_argument_checking): Likewise
	(gfc_generate_function_code): Likewise
	* trans-expr.c (gfc_copy_class_to_class): Likewise
	(gfc_trans_class_array_init_assign): Likewise
	(gfc_trans_class_init_assign): Likewise
	(gfc_conv_expr_present): Likewise
	(gfc_conv_substring): Likewise
	(gfc_conv_cst_int_power): Likewise
	(gfc_conv_expr_op): Likewise
	(gfc_conv_procedure_call): Likewise
	(fill_with_spaces): Likewise
	(gfc_trans_string_copy): Likewise
	(gfc_trans_alloc_subarray_assign): Likewise
	(gfc_trans_pointer_assignment): Likewise
	(gfc_trans_scalar_assign): Likewise
	(fcncall_realloc_result): Likewise
	(alloc_scalar_allocatable_for_assignment): Likewise
	(trans_class_assignment): Likewise
	(gfc_trans_assignment_1): Likewise
	* trans-intrinsic.c (build_fixbound_expr): Likewise
	(gfc_conv_intrinsic_aint): Likewise
	(gfc_trans_same_strlen_check): Likewise
	(conv_caf_send): Likewise
	(trans_this_image): Likewise
	(conv_intrinsic_image_status): Likewise
	(trans_image_index): Likewise
	(gfc_conv_intrinsic_bound): Likewise
	(conv_intrinsic_cobound): Likewise
	(gfc_conv_intrinsic_mod): Likewise
	(gfc_conv_intrinsic_dshift): Likewise
	(gfc_conv_intrinsic_dim): Likewise
	(gfc_conv_intrinsic_sign): Likewise
	(gfc_conv_intrinsic_ctime): Likewise
	(gfc_conv_intrinsic_fdate): Likewise
	(gfc_conv_intrinsic_ttynam): Likewise
	(gfc_conv_intrinsic_minmax): Likewise
	(gfc_conv_intrinsic_minmax_char): Likewise
	(gfc_conv_intrinsic_anyall): Likewise
	(gfc_conv_intrinsic_arith): Likewise
	(gfc_conv_intrinsic_minmaxloc): Likewise
	(gfc_conv_intrinsic_minmaxval): Likewise
	(gfc_conv_intrinsic_btest): Likewise
	(gfc_conv_intrinsic_bitcomp): Likewise
	(gfc_conv_intrinsic_shift): Likewise
	(gfc_conv_intrinsic_ishft): Likewise
	(gfc_conv_intrinsic_ishftc): Likewise
	(gfc_conv_intrinsic_leadz): Likewise
	(gfc_conv_intrinsic_trailz): Likewise
	(gfc_conv_intrinsic_mask): Likewise
	(gfc_conv_intrinsic_spacing): Likewise
	(gfc_conv_intrinsic_rrspacing): Likewise
	(gfc_conv_intrinsic_size): Likewise
	(gfc_conv_intrinsic_sizeof): Likewise
	(gfc_conv_intrinsic_transfer): Likewise
	(gfc_conv_allocated): Likewise
	(gfc_conv_associated): Likewise
	(gfc_conv_same_type_as): Likewise
	(gfc_conv_intrinsic_trim): Likewise
	(gfc_conv_intrinsic_repeat): Likewise
	(conv_isocbinding_function): Likewise
	(conv_intrinsic_ieee_is_normal): Likewise
	(conv_intrinsic_ieee_is_negative): Likewise
	(conv_intrinsic_ieee_copy_sign): Likewise
	(conv_intrinsic_move_alloc): Likewise
	* trans-io.c (set_parameter_value_chk): Likewise
	(set_parameter_value_inquire): Likewise
	(set_string): Likewise
	* trans-openmp.c (gfc_walk_alloc_comps): Likewise
	(gfc_omp_clause_default_ctor): Likewise
	(gfc_omp_clause_copy_ctor): Likewise
	(gfc_omp_clause_assign_op): Likewise
	(gfc_omp_clause_dtor): Likewise
	(gfc_omp_finish_clause): Likewise
	(gfc_trans_omp_clauses): Likewise
	(gfc_trans_omp_do): Likewise
	* trans-stmt.c (gfc_trans_goto): Likewise
	(gfc_trans_sync): Likewise
	(gfc_trans_arithmetic_if): Likewise
	(gfc_trans_simple_do): Likewise
	(gfc_trans_do): Likewise
	(gfc_trans_forall_loop): Likewise
	(gfc_trans_where_2): Likewise
	(gfc_trans_allocate): Likewise
	(gfc_trans_deallocate): Likewise
	* trans-types.c (gfc_init_types): Initialize logical_type_node and
	its true/false trees.
	(gfc_get_array_descr_info): Use logical_type_node.
	* trans-types.h (logical_type_node): New tree.
	(logical_true_node): Likewise.
	(logical_false_node): Likewise.
	* trans.c (gfc_trans_runtime_check): Use logical_type_node.
	(gfc_call_malloc): Likewise
	(gfc_allocate_using_malloc): Likewise
	(gfc_allocate_allocatable): Likewise
	(gfc_add_comp_finalizer_call): Likewise
	(gfc_add_finalizer_call): Likewise
	(gfc_deallocate_with_status): Likewise
	(gfc_deallocate_scalar_with_status): Likewise
	(gfc_call_realloc): Likewise

gcc/testsuite/ChangeLog:

2017-11-08  Janne Blomqvist  <jb@gcc.gnu.org>

	PR 82869
	* gfortran.dg/logical_temp_io.f90: New test.
	* gfortran.dg/logical_temp_io_kind8.f90: New test.

From-SVN: r254526
2017-11-08 13:51:00 +02:00
Martin Liska
c8ce479d39 Fix vrp101.c test-case.
2017-11-08  Martin Liska  <mliska@suse.cz>

	* gcc.dg/tree-ssa/vrp101.c: Update expected pattern as
	frequencies are not longer printed in dump output.

From-SVN: r254525
2017-11-08 11:46:07 +00:00
Martin Liska
9f6fbcd3c9 Simplify call of gimple_call_internal_p.
2017-11-08  Martin Liska  <mliska@suse.cz>

	* gimplify.c (expand_FALLTHROUGH_r): Simplify usage
	of gimple_call_internal_p.

From-SVN: r254524
2017-11-08 11:45:35 +00:00
Eric Botcazou
106db840d0 * gcc.dg/strlenopt-33g.c: Remove duplicate dg-do command.
From-SVN: r254523
2017-11-08 10:00:31 +00:00
Rainer Orth
89334d4b19 Fix -Wreturn-type fallout in g++.old-deja/g++.brendan/asm-extn1.C
* g++.old-deja/g++.brendan/asm-extn1.C: Accept all sparc* targets.
	(main): Add return type.

From-SVN: r254522
2017-11-08 09:39:33 +00:00
Tom de Vries
66d4b7331f [mips] Wrap ASM_OUTPUT_LABELREF in do {} while (0)
2017-11-07  Tom de Vries  <tom@codesourcery.com>

	* config/mips/mips.h (ASM_OUTPUT_LABELREF): Wrap in "do {} while (0)".

From-SVN: r254521
2017-11-08 08:51:52 +00:00
Tom de Vries
65f371e47e [mips] Remove semicolon after do {} while (0) in ASM_OUTPUT_CASE_END
2017-11-07  Tom de Vries  <tom@codesourcery.com>

	* config/mips/mips.h (ASM_OUTPUT_CASE_END): Remove semicolon after
	"do {} while (0)".

From-SVN: r254520
2017-11-08 08:51:43 +00:00
Martin Liska
053ee6a774 Fix fallthrough attribute ignorance w/ -fsanitize=address (PR sanitizer/82792).
2017-11-08  Martin Liska  <mliska@suse.cz>

	PR sanitizer/82792
	* gimplify.c (expand_FALLTHROUGH_r): Skip IFN_ASAN_MARK.
2017-11-08  Martin Liska  <mliska@suse.cz>

	PR sanitizer/82792
	* g++.dg/asan/pr82792.C: New test.

From-SVN: r254519
2017-11-08 08:17:30 +00:00
Jakub Jelinek
5925290f7d re PR bootstrap/82670 (UBSAN bootstrap broken after recent libsanitizer merge)
PR bootstrap/82670
	* ubsan/Makefile.am (ubsan_files): Remove ubsan_init_standalone.cc
	and ubsan_signals_standalone.cc.
	* ubsan/Makefile.in: Regenerated.

From-SVN: r254518
2017-11-08 09:17:02 +01:00
Martin Liska
caba2b36fa analyze_brprob.py: fix SI units
2017-11-08  Martin Liska  <mliska@suse.cz>

	* analyze_brprob.py: Fix abbreviations for SI units.

From-SVN: r254517
2017-11-08 07:24:14 +00:00
GCC Administrator
41f1dada8e Daily bump.
From-SVN: r254516
2017-11-08 00:16:19 +00:00
Eric Botcazou
f47440662e * gimple-pretty-print.c (dump_profile): Return "" instead of NULL.
From-SVN: r254513
2017-11-07 23:58:52 +00:00
Boris Kolpackov
5666f12bba [PATCH] Install cp/operators.def as part of plugin headers
https://gcc.gnu.org/ml/gcc-patches/2017-11/msg00498.html
2017-11-07 Boris Kolpackov  <boris@codesynthesis.com>
	* Make-lang.in (CP_PLUGIN_HEADERS): Add operators.def since included
	in cp-tree.h.

From-SVN: r254512
2017-11-07 22:49:25 +00:00
Jakub Jelinek
4dbeb71612 re PR c++/82835 (ICE on valid code with -fopenmp)
PR c++/82835
	* cp-gimplify.c (cxx_omp_clause_apply_fn): For methods pass i - 1 to
	convert_default_arg instead of i.

	* testsuite/libgomp.c++/pr82835.C: New test.

From-SVN: r254511
2017-11-07 21:51:05 +01:00
Jakub Jelinek
acd377795f re PR target/82855 (AVX512: replace OP+movemask with OP_mask+ktest)
PR target/82855
	* config/i386/i386.md (SWI1248_AVX512BWDQ2_64): New mode iterator.
	(*cmp<mode>_ccz_1): New insn with $k alternative.

	* gcc.target/i386/avx512dq-pr82855.c: New test.

From-SVN: r254510
2017-11-07 21:49:30 +01:00
Jakub Jelinek
682d3a4076 re PR target/82855 (AVX512: replace OP+movemask with OP_mask+ktest)
PR target/82855
	* config/i386/i386.c (ix86_swap_binary_operands_p): Treat
	RTX_COMM_COMPARE as commutative as well.
	(ix86_binary_operator_ok): Formatting fix.
	* config/i386/sse.md (*mul<mode>3<mask_name><round_name>,
	*<code><mode>3<mask_name><round_saeonly_name>,
	*<code><mode>3<mask_name>, *<code>tf3, *mul<mode>3<mask_name>,
	*<s>mul<mode>3_highpart<mask_name>,
	*vec_widen_umult_even_v16si<mask_name>,
	*vec_widen_umult_even_v8si<mask_name>,
	*vec_widen_umult_even_v4si<mask_name>,
	*vec_widen_smult_even_v16si<mask_name>,
	*vec_widen_smult_even_v8si<mask_name>, *sse4_1_mulv2siv2di3<mask_name>,
	*avx2_pmaddwd, *sse2_pmaddwd, *<sse4_1_avx2>_mul<mode>3<mask_name>,
	*avx2_<code><mode>3, *avx512f_<code><mode>3<mask_name>,
	*sse4_1_<code><mode>3<mask_name>, *<code>v8hi3,
	*sse4_1_<code><mode>3<mask_name>, *<code>v16qi3, *avx2_eq<mode>3,
	<avx512>_eq<mode>3<mask_scalar_merge_name>_1, *sse4_1_eqv2di3,
	*sse2_eq<mode>3, <mask_codefor><code><mode>3<mask_name>,
	*<code><mode>3, *<sse2_avx2>_uavg<mode>3<mask_name>,
	*<ssse3_avx2>_pmulhrsw<mode>3<mask_name>, *ssse3_pmulhrswv4hi3): Use
	!(MEM_P (operands[1]) && MEM_P (operands[2])) condition instead of
	ix86_binary_operator_ok.  Formatting fixes.
	(*<plusminus_insn><mode>3<mask_name><round_name>,
	*<plusminus_insn><mode>3, *<plusminus_insn><mode>3_m): Formatting
	fixes.

From-SVN: r254509
2017-11-07 21:48:35 +01:00