platform/upstream/gcc.git
8 years ago[multiple changes]
Arnaud Charlet [Thu, 7 Jul 2016 13:05:08 +0000 (15:05 +0200)]
[multiple changes]

2016-07-07  Ed Schonberg  <schonberg@adacore.com>

* sem_prag.ads, sem_prag.adb (Build_Classwide_Expression): Include
overridden operation as parameter, in order to map formals of
the overridden and overring operation properly prior to rewriting
the inherited condition.
* freeze.adb (Check_Inherited_Cnonditions): Change call to
Build_Class_Wide_Expression accordingly.  In Spark_Mode, add
call to analyze the contract of the parent operation, prior to
mapping formals between operations.

2016-07-07  Arnaud Charlet  <charlet@adacore.com>

* adabkend.adb (Scan_Back_End_Switches): Ignore -o/-G switches
as done in back_end.adb.
(Scan_Compiler_Args): Remove special case for CodePeer/SPARK, no longer
needed, and prevents proper handling of multi-unit sources.

2016-07-07  Thomas Quinot  <quinot@adacore.com>

* g-sechas.adb, g-sechas.ads (GNAT.Secure_Hashes.H): Add Hash_Stream
type with Write primitive calling Update on the underlying context
(and dummy Read primitive raising P_E).

2016-07-07  Thomas Quinot  <quinot@adacore.com>

* sem_ch13.adb: Minor reformatting.

From-SVN: r238111

8 years ago[multiple changes]
Arnaud Charlet [Thu, 7 Jul 2016 13:02:31 +0000 (15:02 +0200)]
[multiple changes]

2016-07-07  Thomas Quinot  <quinot@adacore.com>

* g-socket.ads: Document performance consideration for stream
wrapper.

2016-07-07  Arnaud Charlet  <charlet@adacore.com>

* osint-c.ads (Set_File_Name): Clarify spec.

From-SVN: r238110

8 years agofreeze.adb: Reenable code.
Eric Botcazou [Thu, 7 Jul 2016 13:00:54 +0000 (13:00 +0000)]
freeze.adb: Reenable code.

2016-07-07  Eric Botcazou  <ebotcazou@adacore.com>

* freeze.adb: Reenable code.

From-SVN: r238109

8 years agominor reformatting.
Arnaud Charlet [Thu, 7 Jul 2016 12:59:19 +0000 (14:59 +0200)]
minor reformatting.

From-SVN: r238107

8 years agosem_ch6.adb (Process_Formals): Set ghost flag on formal entities of ghost subprograms.
Yannick Moy [Thu, 7 Jul 2016 12:59:06 +0000 (12:59 +0000)]
sem_ch6.adb (Process_Formals): Set ghost flag on formal entities of ghost subprograms.

2016-07-07  Yannick Moy  <moy@adacore.com>

* sem_ch6.adb (Process_Formals): Set ghost flag
on formal entities of ghost subprograms.
* ghost.adb (Check_Ghost_Context.Is_OK_Ghost_Context): Accept ghost
entities in use type clauses.

From-SVN: r238106

8 years agoPrevent LTO wrappers to process a recursive execution
Martin Liska [Thu, 7 Jul 2016 12:03:39 +0000 (14:03 +0200)]
Prevent LTO wrappers to process a recursive execution

* file-find.c (remove_prefix): New function.
* file-find.h (remove_prefix): Declare the function.
* gcc-ar.c (main): Skip a folder of the wrapper if
a wrapped binary would point to the same file.

From-SVN: r238089

8 years agotree-scalar-evolution.c (iv_can_overflow_p): export.
Jan Hubicka [Thu, 7 Jul 2016 11:50:55 +0000 (13:50 +0200)]
tree-scalar-evolution.c (iv_can_overflow_p): export.

* tree-scalar-evolution.c (iv_can_overflow_p): export.
* tree-scalar-evolution.h (iv_can_overflow_p): Declare.
* tree-ssa-loop-ivopts.c (alloc_iv): Use it.

From-SVN: r238088

8 years agore PR ipa/71624 ([CHKP] internal compiler error: in duplicate_thunk_for_node)
Ilya Enkovich [Thu, 7 Jul 2016 11:45:11 +0000 (11:45 +0000)]
re PR ipa/71624 ([CHKP] internal compiler error: in duplicate_thunk_for_node)

gcc/

PR ipa/71624
* ipa-inline-analysis.c (compute_inline_parameters): Set
local.can_change_signature to false for intrumentation
thunk callees.

gcc/testsuite/

PR ipa/71624
* g++.dg/pr71624.C: New test.

From-SVN: r238086

8 years agoarm.h (TARGET_USE_MOVT): Check MOVT/MOVW availability with TARGET_HAVE_MOVT.
Thomas Preud'homme [Thu, 7 Jul 2016 08:54:59 +0000 (08:54 +0000)]
arm.h (TARGET_USE_MOVT): Check MOVT/MOVW availability with TARGET_HAVE_MOVT.

2016-07-07  Thomas Preud'homme  <thomas.preudhomme@arm.com>

    gcc/
    * config/arm/arm.h (TARGET_USE_MOVT): Check MOVT/MOVW availability
    with TARGET_HAVE_MOVT.
    (TARGET_HAVE_MOVT): Define.
    * config/arm/arm.c (const_ok_for_op): Check MOVT/MOVW
    availability with TARGET_HAVE_MOVT.
    * config/arm/arm.md (arm_movt): Use TARGET_HAVE_MOVT to check MOVT
    availability.
    (addsi splitter): Use TARGET_THUMB && TARGET_HAVE_MOVT rather than
    TARGET_THUMB2.
    (symbol_refs movsi splitter): Remove TARGET_32BIT check.
    (arm_movtas_ze): Use TARGET_HAVE_MOVT to check MOVT availability.
    * config/arm/constraints.md (define_constraint "j"): Use
    TARGET_HAVE_MOVT to check MOVT availability.

From-SVN: r238083

8 years agoarm-protos.h: Reindent FL_FOR_* macro definitions.
Thomas Preud'homme [Thu, 7 Jul 2016 08:54:50 +0000 (08:54 +0000)]
arm-protos.h: Reindent FL_FOR_* macro definitions.

2016-07-07  Thomas Preud'homme  <thomas.preudhomme@arm.com>

    gcc/
    * config/arm/arm-protos.h: Reindent FL_FOR_* macro definitions.

From-SVN: r238082

8 years agoarm-arches.def (armv8-m.base): Define new architecture.
Thomas Preud'homme [Thu, 7 Jul 2016 08:54:40 +0000 (08:54 +0000)]
arm-arches.def (armv8-m.base): Define new architecture.

2016-07-07  Thomas Preud'homme  <thomas.preudhomme@arm.com>

    gcc/
    * config/arm/arm-arches.def (armv8-m.base): Define new architecture.
    (armv8-m.main): Likewise.
    (armv8-m.main+dsp): Likewise.
    * config/arm/arm-protos.h (FL_FOR_ARCH8M_BASE): Define.
    (FL_FOR_ARCH8M_MAIN): Likewise.
    * config/arm/arm-tables.opt: Regenerate.
    * config/arm/bpabi.h: Add armv8-m.base, armv8-m.main and
    armv8-m.main+dsp to BE8_LINK_SPEC.
    * config/arm/arm.h (TARGET_HAVE_LDACQ): Exclude ARMv8-M.
    (enum base_architecture): Add BASE_ARCH_8M_BASE and BASE_ARCH_8M_MAIN.
    * config/arm/arm.c (arm_arch_name): Increase size to work with ARMv8-M
    Baseline and Mainline.
    (arm_option_override_internal): Also disable arm_restrict_it when
    !arm_arch_notm.  Update comment for -munaligned-access to also cover
    ARMv8-M Baseline.
    (arm_file_start): Increase buffer size for printing architecture name.
    * doc/invoke.texi: Document architectures armv8-m.base, armv8-m.main
    and armv8-m.main+dsp.
    (mno-unaligned-access): Clarify that this is disabled by default for
    ARMv8-M Baseline architectures as well.

    gcc/testsuite/
    * lib/target-supports.exp: Generate add_options_for_arm_arch_FUNC and
    check_effective_target_arm_arch_FUNC_multilib for ARMv8-M Baseline and
    ARMv8-M Mainline architectures.

    libgcc/
    * config/arm/lib1funcs.S (__ARM_ARCH__): Define to 8 for ARMv8-M.

From-SVN: r238081

8 years agolib1funcs.S (HAVE_ARM_CLZ): Define for ARMv6* or later and ARMv5t* rather than for...
Thomas Preud'homme [Thu, 7 Jul 2016 08:54:28 +0000 (08:54 +0000)]
lib1funcs.S (HAVE_ARM_CLZ): Define for ARMv6* or later and ARMv5t* rather than for a fixed list of...

2016-07-07  Thomas Preud'homme  <thomas.preudhomme@arm.com>

    libgcc/
    * config/arm/lib1funcs.S (HAVE_ARM_CLZ): Define for ARMv6* or later
    and ARMv5t* rather than for a fixed list of architectures.

From-SVN: r238080

8 years agoelf.h: Use __ARM_ARCH_ISA_THUMB and __ARM_ARCH_ISA_ARM to decide whether to prevent...
Thomas Preud'homme [Thu, 7 Jul 2016 08:54:18 +0000 (08:54 +0000)]
elf.h: Use __ARM_ARCH_ISA_THUMB and __ARM_ARCH_ISA_ARM to decide whether to prevent...

2016-07-07  Thomas Preud'homme  <thomas.preudhomme@arm.com>

    gcc/
    * config/arm/elf.h: Use __ARM_ARCH_ISA_THUMB and __ARM_ARCH_ISA_ARM to
    decide whether to prevent some libgcc routines being included for some
    multilibs rather than __ARM_ARCH_6M__ and add comment to indicate the
    link between this condition and the one in
    libgcc/config/arm/lib1func.S.

    gcc/testsuite/
    * lib/target-supports.exp (check_effective_target_arm_cortex_m): Use
    __ARM_ARCH_ISA_ARM to test for Cortex-M devices.

    libgcc/
    * config/arm/bpabi-v6m.S: Clarify what architectures is the
    implementation suitable for.
    * config/arm/lib1funcs.S (__prefer_thumb__): Define among other cases
    for all Thumb-1 only targets.
    (NOT_ISA_TARGET_32BIT): Define for Thumb-1 only targets.
    (THUMB_LDIV0): Test for NOT_ISA_TARGET_32BIT rather than
    __ARM_ARCH_6M__.
    (EQUIV): Likewise.
    (ARM_FUNC_ALIAS): Likewise.
    (umodsi3): Add check to __ARM_ARCH_ISA_THUMB != 1 to guard the idiv
    version.
    (modsi3): Likewise.
    (clzsi2): Test for NOT_ISA_TARGET_32BIT rather than __ARM_ARCH_6M__.
    (clzdi2): Likewise.
    (ctzsi2): Likewise.
    (L_interwork_call_via_rX): Test for __ARM_ARCH_ISA_ARM rather than
    __ARM_ARCH_6M__ in guard for checking whether it is defined.
    (final includes): Test for NOT_ISA_TARGET_32BIT rather than
    __ARM_ARCH_6M__ and add comment to indicate the connection between
    this condition and the one in gcc/config/arm/elf.h.
    * config/arm/libunwind.S: Test for __ARM_ARCH_ISA_THUMB and
    __ARM_ARCH_ISA_ARM rather than __ARM_ARCH_6M__.
    * config/arm/t-softfp: Likewise.

From-SVN: r238079

8 years agotree-ssa-pre.c: Include alias.h.
Richard Biener [Thu, 7 Jul 2016 07:43:35 +0000 (07:43 +0000)]
tree-ssa-pre.c: Include alias.h.

2016-07-07  Richard Biener  <rguenther@suse.de>

* tree-ssa-pre.c: Include alias.h.
(compute_avail): If we have multiple VN_REFERENCEs with the
same hashtable entry adjust that to make it a valid replacement
for all of them with respect to alignment and aliasing
when doing insertion.
* tree-ssa-sccvn.h (vn_reference_operands_for_lookup): Declare.
* tree-ssa-sccvn.c (vn_reference_operands_for_lookup): New function.

From-SVN: r238078

8 years agors6000: Make the ctr* patterns allow ints in vector regs (PR71763)
Segher Boessenkool [Thu, 7 Jul 2016 03:09:03 +0000 (05:09 +0200)]
rs6000: Make the ctr* patterns allow ints in vector regs (PR71763)

Similar to PR70098, which is about integers in floating point registers,
we can have the completely analogous problem with vector registers as well
now that we allow integers in vector registers.  So, this patch solves it
in the same way.  This only works for targets with direct move.

To recap: register allocation can decide to put an integer mode value in
a floating point or vector register.  If that register is used in a bd*z
instruction, which is a jump instruction, reload can not do an output
reload on it (it does not do output reloads on any jump insns), so the
float or vector register will remain, and we have to allow it here or
recog will ICE.  Later on we will split this to valid instructions,
including a move from that fp/vec register to an int register; it is this
move that will still fail (PR70098) if we do not have direct move enabled.

PR target/70098
PR target/71763
* config/rs6000/rs6000.md (*ctr<mode>_internal1, *ctr<mode>_internal2,
*ctr<mode>_internal5, *ctr<mode>_internal6): Add *wi to the output
constraint.

gcc/testsuite/
PR target/70098
PR target/71763
* gcc.target/powerpc/pr71763.c: New file.

From-SVN: r238076

8 years agoDaily bump.
GCC Administrator [Thu, 7 Jul 2016 00:16:21 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r238073

8 years agoremove unused CTOR_LISTS_DEFINED_EXTERNALLY macro
Trevor Saunders [Wed, 6 Jul 2016 23:55:52 +0000 (23:55 +0000)]
remove unused CTOR_LISTS_DEFINED_EXTERNALLY macro

The last target to use this was i386-interix, so since that is gone we
don't need this anymore.

libgcc/ChangeLog:

2016-07-06  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>

* libgcc2.c (SYMBOL__MAIN): Remove checks for
CTOR_LISTS_DEFINED_EXTERNALLY.

From-SVN: r238067

8 years agomake side_effects a vec<rtx>
Trevor Saunders [Wed, 6 Jul 2016 23:53:20 +0000 (23:53 +0000)]
make side_effects a vec<rtx>

gcc/ChangeLog:

2016-07-06  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>

* var-tracking.c (struct adjust_mem_data): Make side_effects a vector.
(adjust_mems): Adjust.
(adjust_insn): Likewise.
(prepare_call_arguments): Likewise.

From-SVN: r238066

8 years agomake stores rtx_insn_list a vec
Trevor Saunders [Wed, 6 Jul 2016 23:53:15 +0000 (23:53 +0000)]
make stores rtx_insn_list a vec

gcc/ChangeLog:

2016-07-06  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>

* gcse.c (struct ls_expr): Make stores field a vector.
(ldst_entry): Adjust.
(free_ldst_entry): Likewise.
(print_ldst_list): Likewise.
(compute_ld_motion_mems): Likewise.
(update_ld_motion_stores): Likewise.

From-SVN: r238065

8 years agoremove unused loads rtx_insn_list
Trevor Saunders [Wed, 6 Jul 2016 23:53:10 +0000 (23:53 +0000)]
remove unused loads rtx_insn_list

gcc/ChangeLog:

2016-07-06  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>

* gcse.c (struct ls_expr): Remove loads field.
(ldst_entry): Adjust.
(free_ldst_entry): Likewise.
(print_ldst_list): Likewise.
(compute_ld_motion_mems): Likewise.

From-SVN: r238064

8 years agomake antic_stores a vec<rtx_insn *>
Trevor Saunders [Wed, 6 Jul 2016 23:53:04 +0000 (23:53 +0000)]
make antic_stores a vec<rtx_insn *>

gcc/ChangeLog:

2016-07-06  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>

* store-motion.c (struct st_expr): Make antic_stores a vector.
(st_expr_entry): Adjust.
(free_st_expr_entry): Likewise.
(print_store_motion_mems): Likewise.
(find_moveable_store): Likewise.
(compute_store_table): Likewise.
(remove_reachable_equiv_notes): Likewise.
(replace_store_insn): Likewise.
(build_store_vectors): Likewise.

From-SVN: r238063

8 years agoImplement std::any.
Ville Voutilainen [Wed, 6 Jul 2016 22:33:20 +0000 (01:33 +0300)]
Implement std::any.

* include/Makefile.am: Add any and c++17_warning.h to exported headers.
* include/Makefile.in: Likewise.
* include/std/any: New.
* testsuite/20_util/any/assign/1.cc: Likewise.
* testsuite/20_util/any/assign/2.cc: Likewise.
* testsuite/20_util/any/assign/self.cc: Likewise.
* testsuite/20_util/any/cons/1.cc: Likewise.
* testsuite/20_util/any/cons/2.cc: Likewise.
* testsuite/20_util/any/cons/aligned.cc: Likewise.
* testsuite/20_util/any/cons/nontrivial.cc: Likewise.
* testsuite/20_util/any/misc/any_cast.cc: Likewise.
* testsuite/20_util/any/misc/any_cast_neg.cc: Likewise.
* testsuite/20_util/any/misc/any_cast_no_rtti.cc: Likewise.
* testsuite/20_util/any/misc/swap.cc: Likewise.
* testsuite/20_util/any/modifiers/1.cc: Likewise.
* testsuite/20_util/any/observers/type.cc: Likewise.
* testsuite/20_util/any/typedefs.cc: Likewise.

From-SVN: r238061

8 years agoAdd a new header for diagnosing the use of C++17 facilities in pre-C++17 modes.
Ville Voutilainen [Wed, 6 Jul 2016 18:07:57 +0000 (21:07 +0300)]
Add a new header for diagnosing the use of C++17 facilities in pre-C++17 modes.

From-SVN: r238058

8 years agoescape: Implement tag phase.
Ian Lance Taylor [Wed, 6 Jul 2016 17:34:03 +0000 (17:34 +0000)]
escape: Implement tag phase.

    Adds notes to function parameters which summarize the escape of that
    parameter with respect to the function's scope.

    Reviewed-on: https://go-review.googlesource.com/18443

From-SVN: r238057

8 years ago[ARM] Add support for some ARMv8-A cores to driver-arm.c
Kyrylo Tkachov [Wed, 6 Jul 2016 16:22:47 +0000 (16:22 +0000)]
[ARM] Add support for some ARMv8-A cores to driver-arm.c

* config/arm/driver-arm.c (arm_cpu_table): Add entries for cortex-a32,
cortex-a35, cortex-a53, cortex-a57, cortex-a72, cortex-a73.

From-SVN: r238056

8 years agore PR tree-optimization/71518 (wrong code at -O3 on x86_64-linux-gnu in 64-bit mode...
Yuri Rumyantsev [Wed, 6 Jul 2016 14:37:26 +0000 (14:37 +0000)]
re PR tree-optimization/71518 (wrong code at -O3 on x86_64-linux-gnu in 64-bit mode (not in 32-bit mode))

gcc/

2016-07-06  Yuri Rumyantsev  <ysrumyan@gmail.com>

PR tree-optimization/71518
* tree-vect-data-refs.c (vect_compute_data_ref_alignment): Adjust
misalign also for outer loops with negative step.

gcc/testsuite/

2016-07-06  Yuri Rumyantsev  <ysrumyan@gmail.com>

PR tree-optimization/71518
        * gcc.dg/pr71518.c: New test.

From-SVN: r238055

8 years agosem_ch6.adb (Check_Inline_Pragma): if the subprogram has no spec then move its aspect...
Javier Miranda [Wed, 6 Jul 2016 13:45:55 +0000 (13:45 +0000)]
sem_ch6.adb (Check_Inline_Pragma): if the subprogram has no spec then move its aspects to the internally built...

2016-07-06  Javier Miranda  <miranda@adacore.com>

* sem_ch6.adb (Check_Inline_Pragma): if the subprogram has no spec
then move its aspects to the internally built subprogram spec.

From-SVN: r238052

8 years agosem_ch6.adb (Analyze_Expression_Function): Mark body of expression function as ghost...
Yannick Moy [Wed, 6 Jul 2016 13:41:20 +0000 (13:41 +0000)]
sem_ch6.adb (Analyze_Expression_Function): Mark body of expression function as ghost if needed when created.

2016-07-06  Yannick Moy  <moy@adacore.com>

* sem_ch6.adb (Analyze_Expression_Function): Mark body of
expression function as ghost if needed when created.
* sem_prag.adb (Analyze_Pragma.Process_Inline.Set_Inline_Flags):
Remove special case.

From-SVN: r238051

8 years ago[multiple changes]
Arnaud Charlet [Wed, 6 Jul 2016 13:38:37 +0000 (15:38 +0200)]
[multiple changes]

2016-07-06  Arnaud Charlet  <charlet@adacore.com>

* lib.adb (Check_Same_Extended_Unit): Complete previous change.
* sem_intr.adb (Errint): New parameter Relaxed. Refine previous
change to only disable errors selectively.
* sem_util.adb: minor style fix in object declaration

2016-07-06  Yannick Moy  <moy@adacore.com>

* sem_warn.adb (Check_Infinite_Loop_Warning.Find_Var): Special case a
call to a volatile function, so that it does not lead to a warning in
that case.

2016-07-06  Hristian Kirtchev  <kirtchev@adacore.com>

* sem_ch12.adb, sem_ch4.adb, sem_ch6.adb: Minor reformatting.

2016-07-06  Hristian Kirtchev  <kirtchev@adacore.com>

* gnat1drv.adb: Code clean up. Do not emit any
code generation errors when the unit is ignored Ghost.

2016-07-06  Ed Schonberg  <schonberg@adacore.com>

* sem_eval.adb (Check_Non_Static_Context): If the expression
is a real literal of a floating point type that is part of a
larger expression and is not a static expression, transform it
into a machine number now so that the rest of the computation,
even if other components are static, is not evaluated with
extra precision.

2016-07-06  Javier Miranda  <miranda@adacore.com>

* sem_ch13.adb (Freeze_Entity_Checks): Undo previous patch and move the
needed functionality to Analyze_Freeze_Generic_Entity.
(Analyze_Freeze_Generic_Entity): If the entity is not already frozen
and has delayed aspects then analyze them.

2016-07-06  Yannick Moy  <moy@adacore.com>

* sem_prag.adb (Analyze_Pragma.Process_Inline.Set_Inline_Flags):
Special case for unanalyzed body entity of ghost expression function.

From-SVN: r238050

8 years agoImplement LWG 2451, optional<T> should 'forward' T's implicit conversions.
Ville Voutilainen [Wed, 6 Jul 2016 13:26:10 +0000 (16:26 +0300)]
Implement LWG 2451, optional<T> should 'forward' T's implicit conversions.

Implement LWG 2451, optional<T> should 'forward' T's
implicit conversions.
* include/experimental/optional (__is_optional_impl, __is_optional):
New.
(optional()): Make constexpr and default.
(optional(_Up&&), optional(const optional<_Up>&),
optional(optional<_Up>&& __t): New.
(operator=(_Up&&)): Constrain.
(operator=(const optional<_Up>&), operator=(optional<_Up>&&)): New.
* testsuite/experimental/optional/cons/value.cc:
Add tests for the functionality added by LWG 2451.
* testsuite/experimental/optional/cons/value_neg.cc: New.

From-SVN: r238049

8 years agoThis patch improves the accuracy of the Cortex-A53 integer scheduler...
Wilco Dijkstra [Wed, 6 Jul 2016 13:17:23 +0000 (13:17 +0000)]
This patch improves the accuracy of the Cortex-A53 integer scheduler...

This patch improves the accuracy of the Cortex-A53 integer scheduler,
resulting in performance gains across a wide range of benchmarks.

    gcc/
* config/arm/cortex-a53.md: Use final_presence_set for in-order.
(cortex_a53_shift): Add mov_shift.
(cortex_a53_shift_reg): Add new reservation for register shifts.
(cortex_a53_alu): Remove bfm.
(cortex_a53_alu_shift): Add bfm, remove mov_shift.
(cortex_a53_alu_extr): Add new reservation for EXTR.
(bypasses): Improve bypass modelling.

From-SVN: r238048

8 years agosem_ch7.adb (Analyze_Package_Specification): Insert its freezing nodes after the...
Javier Miranda [Wed, 6 Jul 2016 13:14:25 +0000 (13:14 +0000)]
sem_ch7.adb (Analyze_Package_Specification): Insert its freezing nodes after the last declaration.

2016-07-06  Javier Miranda  <miranda@adacore.com>

* sem_ch7.adb (Analyze_Package_Specification): Insert its
freezing nodes after the last declaration. Needed to ensure
that global entities referenced in aspects of frozen types are
properly handled.
* freeze.adb (Freeze_Entity): Minor code reorganization to ensure
that freezing nodes of generic packages are handled.
* sem_ch13.adb (Freeze_Entity_Checks): Handle N_Freeze_Generic nodes.
* sem_ch12.adb (Save_References_In_Identifier): Handle selected
components which denote a named number that is constant folded
in the analyzed copy of the tree.

From-SVN: r238047

8 years agoFix prototype in vst1Q_laneu64-1.c to unsigned char*.
Wilco Dijkstra [Wed, 6 Jul 2016 13:02:53 +0000 (13:02 +0000)]
Fix prototype in vst1Q_laneu64-1.c to unsigned char*.

    gcc/testsuite/
* gcc.target/arm/vst1Q_laneu64-1.c (foo): Use unsigned char*.

From-SVN: r238046

8 years ago[multiple changes]
Arnaud Charlet [Wed, 6 Jul 2016 12:40:07 +0000 (14:40 +0200)]
[multiple changes]

2016-07-06  Hristian Kirtchev  <kirtchev@adacore.com>

* exp_aggr.adb Remove with and use clauses for Exp_Ch11 and Inline.
(Initialize_Array_Component): Protect the initialization
statements in an abort defer / undefer block when the associated
component is controlled.
(Initialize_Record_Component): Protect the initialization statements
in an abort defer / undefer block when the associated component is
controlled.
(Process_Transient_Component_Completion): Use Build_Abort_Undefer_Block
to create an abort defer / undefer block.
* exp_ch3.adb Remove with and use clauses for Exp_ch11 and Inline.
(Default_Initialize_Object): Use Build_Abort_Undefer_Block to
create an abort defer / undefer block.
* exp_ch5.adb (Expand_N_Assignment_Statement): Mark an abort
defer / undefer block as such.
* exp_ch9.adb (Find_Enclosing_Context): Do not consider an abort
defer / undefer block as a suitable context for an activation
chain or a master.
* exp_util.adb Add with and use clauses for Exp_Ch11.
(Build_Abort_Undefer_Block): New routine.
* exp_util.ads (Build_Abort_Undefer_Block): New routine.
* sinfo.adb (Is_Abort_Block): New routine.
(Set_Is_Abort_Block): New routine.
* sinfo.ads New attribute Is_Abort_Block along with occurrences
in nodes.
(Is_Abort_Block): New routine along with pragma Inline.
(Set_Is_Abort_Block): New routine along with pragma Inline.

2016-07-06  Justin Squirek  <squirek@adacore.com>

* sem_ch4.adb (Analyze_One_Call): Add a conditional to handle
disambiguation.

From-SVN: r238045

8 years ago[multiple changes]
Arnaud Charlet [Wed, 6 Jul 2016 12:37:54 +0000 (14:37 +0200)]
[multiple changes]

2016-07-06  Hristian Kirtchev  <kirtchev@adacore.com>

* einfo.adb Flag252 is now used as Is_Finalized_Transient. Flag295
is now used as Is_Ignored_Transient.
(Is_Finalized_Transient): New routine.
(Is_Ignored_Transient): New routine.
(Is_Processed_Transient): Removed.
(Set_Is_Finalized_Transient): New routine.
(Set_Is_Ignored_Transient): New routine.
(Set_Is_Processed_Transient): Removed.
(Write_Entity_Flags): Output Flag252 and Flag295.
* einfo.ads: New attributes Is_Finalized_Transient
and Is_Ignored_Transient along with occurrences in
entities. Remove attribute Is_Processed_Transient.
(Is_Finalized_Transient): New routine along with pragma Inline.
(Is_Ignored_Transient): New routine along with pragma Inline.
(Is_Processed_Transient): Removed along with pragma Inline.
(Set_Is_Finalized_Transient): New routine along with pragma Inline.
(Set_Is_Ignored_Transient): New routine along with pragma Inline.
(Set_Is_Processed_Transient): Removed along with pragma Inline.
* exp_aggr.adb Add with and use clauses for Exp_Ch11 and Inline.
(Build_Record_Aggr_Code): Change the handling
of controlled record components.
(Ctrl_Init_Expression): Removed.
(Gen_Assign): Add new formal parameter In_Loop
along with comment on usage.  Remove local variables Stmt and
Stmt_Expr. Change the handling of controlled array components.
(Gen_Loop): Update the call to Gen_Assign.
(Gen_While): Update the call to Gen_Assign.
(Initialize_Array_Component): New routine.
(Initialize_Ctrl_Array_Component): New routine.
(Initialize_Ctrl_Record_Component): New routine.
(Initialize_Record_Component): New routine.
(Process_Transient_Component): New routine.
(Process_Transient_Component_Completion): New routine.
* exp_ch4.adb (Process_Transient_In_Expression): New routine.
(Process_Transient_Object): Removed. Replace all existing calls
to this routine with calls to Process_Transient_In_Expression.
* exp_ch6.adb (Expand_Ctrl_Function_Call): Remove local constant
Is_Elem_Ref. Update the comment on ignoring transients.
* exp_ch7.adb (Process_Declarations): Do not process ignored
or finalized transient objects.
(Process_Transient_In_Scope): New routine.
(Process_Transients_In_Scope): New routine.
(Process_Transient_Objects): Removed. Replace all existing calls
to this routine with calls to Process_Transients_In_Scope.
* exp_util.adb (Build_Transient_Object_Statements): New routine.
(Is_Finalizable_Transient): Do not consider a transient object
which has been finalized.
(Requires_Cleanup_Actions): Do not consider ignored or finalized
transient objects.
* exp_util.ads (Build_Transient_Object_Statements): New routine.
* sem_aggr.adb: Major code clean up.
* sem_res.adb: Update documentation.

2016-07-06  Ed Schonberg  <schonberg@adacore.com>

* sem_ch3.adb (Analyze_Subtype_Declaration): For generated
subtypes, such as actual subtypes of unconstrained formals,
inherit predicate functions, if any, from the parent type rather
than creating redundant new ones.

From-SVN: r238044

8 years ago[multiple changes]
Arnaud Charlet [Wed, 6 Jul 2016 12:34:52 +0000 (14:34 +0200)]
[multiple changes]

2016-07-06  Hristian Kirtchev  <kirtchev@adacore.com>

* exp_attr.adb, sem_attr.adb, sem_ch13.adb: Minor reformatting.

2016-07-06  Arnaud Charlet  <charlet@adacore.com>

* lib.adb (Check_Same_Extended_Unit): Prevent looping forever.
* gnatbind.adb: Disable some consistency checks in codepeer mode,
which are not needed.

2016-07-06  Ed Schonberg  <schonberg@adacore.com>

* sem_ch12.adb (Check_Fixed_Point_Actual): Add a warning when
a formal fixed point type is instantiated with a type that has
a user-defined arithmetic operations, but the generic has no
corresponding formal functions. This is worth a warning because
of the special semantics of fixed-point operators.

From-SVN: r238043

8 years agosem_attr.adb (Analyze_Attribute): Allow any expression of discrete type.
Bob Duff [Wed, 6 Jul 2016 12:32:35 +0000 (12:32 +0000)]
sem_attr.adb (Analyze_Attribute): Allow any expression of discrete type.

2016-07-06  Bob Duff  <duff@adacore.com>

* sem_attr.adb (Analyze_Attribute): Allow any expression of
discrete type.
* exp_attr.adb (Expand_N_Attribute_Reference): Change the
constant-folding code to correctly handle cases newly allowed
by Analyze_Attribute.

From-SVN: r238042

8 years agore PR target/50739 ([avr] nameless error with -fmerge-all-constants)
Senthil Kumar Selvaraj [Wed, 6 Jul 2016 11:40:17 +0000 (11:40 +0000)]
re PR target/50739 ([avr] nameless error with -fmerge-all-constants)

Fix PR target/50739

This patch fixes a problem with fmerge-all-constants and the progmem
attribute.

gcc/

PR target/50739
* config/avr/avr.c (avr_asm_select_section): Strip off
SECTION_DECLARED from flags when calling get_section.

testsuite/

PR target/50739
* gcc.target/avr/pr50739.c: New test

From-SVN: r238041

8 years ago* gcc.dg/tree-ssa/scev-14.c: update template.
Jan Hubicka [Wed, 6 Jul 2016 10:03:08 +0000 (12:03 +0200)]
* gcc.dg/tree-ssa/scev-14.c: update template.

From-SVN: r238040

8 years ago[7/7] Add negative and zero strides to vect_memory_access_type
Richard Sandiford [Wed, 6 Jul 2016 08:16:53 +0000 (08:16 +0000)]
[7/7] Add negative and zero strides to vect_memory_access_type

This patch uses the vect_memory_access_type from patch 6 to represent
the effect of a negative contiguous stride or a zero stride.  The latter
is valid only for loads.

Tested on aarch64-linux-gnu and x86_64-linux-gnu.

gcc/
* tree-vectorizer.h (vect_memory_access_type): Add
VMAT_INVARIANT, VMAT_CONTIGUOUS_DOWN and VMAT_CONTIGUOUS_REVERSED.
* tree-vect-stmts.c (compare_step_with_zero): New function.
(perm_mask_for_reverse): Move further up file.
(get_group_load_store_type): Stick to VMAT_ELEMENTWISE if the
step is negative.
(get_negative_load_store_type): New function.
(get_load_store_type): Call it.  Add an ncopies argument.
(vectorizable_mask_load_store): Update call accordingly and
remove tests for negative steps.
(vectorizable_store, vectorizable_load): Likewise.  Handle new
memory_access_types.

From-SVN: r238039

8 years ago[6/7] Explicitly classify vector loads and stores
Richard Sandiford [Wed, 6 Jul 2016 08:15:28 +0000 (08:15 +0000)]
[6/7] Explicitly classify vector loads and stores

This is the main patch in the series.  It adds a new enum and routines
for classifying a vector load or store implementation.

Originally there were three motivations:

      (1) Reduce cut-&-paste

      (2) Make the chosen vectorisation strategy more obvious.  At the
          moment this is derived implicitly from various other bits of
          state (GROUPED, STRIDED, SLP, etc.)

      (3) Decouple the vectorisation strategy from those other bits of state,
          so that there can be a choice of implementation for a given scalar
          statement.  The specific problem here is that we class:

              for (...)
                {
                  ... = a[i * x];
                  ... = a[i * x + 1];
                }

          as "strided and grouped" but:

              for (...)
                {
                  ... = a[i * 7];
                  ... = a[i * 7 + 1];
                }

          as "non-strided and grouped".  Before the patch, "strided and
          grouped" loads would always try to use separate scalar loads
          while "non-strided and grouped" loads would always try to use
          load-and-permute.  But load-and-permute is never supported for
          a group size of 7, so the effect was that the first loop was
          vectorisable and the second wasn't.  It seemed odd that not
          knowing x (but accepting it could be 7) would allow more
          optimisation opportunities than knowing x is 7.

Unfortunately, it looks like we underestimate the cost of separate
scalar accesses on at least aarch64, so I've disabled (3) for now;
see the "if" statement at the end of get_load_store_type.  I think
the patch still does (1) and (2), so that's the justification for
it in its current form.  It also means that (3) is now simply a
case of removing the FIXME code, once the cost model problems have
been sorted out.  (I did wonder about adding a --param, but that
seems overkill.  I hope to get back to this during GCC 7 stage 1.)

Tested on aarch64-linux-gnu and x86_64-linux-gnu.

gcc/
* tree-vectorizer.h (vect_memory_access_type): New enum.
(_stmt_vec_info): Add a memory_access_type field.
(STMT_VINFO_MEMORY_ACCESS_TYPE): New macro.
(vect_model_store_cost): Take an access type instead of a boolean.
(vect_model_load_cost): Likewise.
* tree-vect-slp.c (vect_analyze_slp_cost_1): Update calls to
vect_model_store_cost and vect_model_load_cost.
* tree-vect-stmts.c (vec_load_store_type): New enum.
(vect_model_store_cost): Take an access type instead of a
store_lanes_p boolean.  Simplify tests.
(vect_model_load_cost): Likewise, but for load_lanes_p.
(get_group_load_store_type, get_load_store_type): New functions.
(vectorizable_store): Use get_load_store_type.  Record the access
type in STMT_VINFO_MEMORY_ACCESS_TYPE.
(vectorizable_load): Likewise.
(vectorizable_mask_load_store): Likewise.  Replace is_store
variable with vls_type.

From-SVN: r238038

8 years ago[5/7] Move the fix for PR65518
Richard Sandiford [Wed, 6 Jul 2016 08:14:41 +0000 (08:14 +0000)]
[5/7] Move the fix for PR65518

This patch moves the fix for PR65518 to the code that checks whether
load-and-permute operations are supported.   If the group size is
greater than the vectorisation factor, it would still be possible
to fall back to elementwise loads (as for strided groups) rather
than fail vectorisation entirely.

Tested on aarch64-linux-gnu and x86_64-linux-gnu.

gcc/
* tree-vectorizer.h (vect_grouped_load_supported): Add a
single_element_p parameter.
* tree-vect-data-refs.c (vect_grouped_load_supported): Likewise.
Check the PR65518 case here rather than in vectorizable_load.
* tree-vect-loop.c (vect_analyze_loop_2): Update call accordignly.
* tree-vect-stmts.c (vectorizable_load): Likewise.

From-SVN: r238037

8 years ago[4/7] Add a gather_scatter_info structure
Richard Sandiford [Wed, 6 Jul 2016 08:13:49 +0000 (08:13 +0000)]
[4/7] Add a gather_scatter_info structure

This patch just refactors the gather/scatter support so that all
information is in a single structure, rather than separate variables.
This reduces the number of arguments to a function added in patch 6.

Tested on aarch64-linux-gnu and x86_64-linux-gnu.

gcc/
* tree-vectorizer.h (gather_scatter_info): New structure.
(vect_check_gather_scatter): Return a bool rather than a decl.
Replace return-by-pointer arguments with a single
gather_scatter_info *.
* tree-vect-data-refs.c (vect_check_gather_scatter): Likewise.
(vect_analyze_data_refs): Update call accordingly.
* tree-vect-stmts.c (vect_mark_stmts_to_be_vectorized): Likewise.
(vectorizable_mask_load_store): Likewise.  Also record the
offset dt and vectype in the gather_scatter_info.
(vectorizable_store): Likewise.
(vectorizable_load): Likewise.

From-SVN: r238036

8 years ago[3/7] Fix load/store costs for strided groups
Richard Sandiford [Wed, 6 Jul 2016 08:12:36 +0000 (08:12 +0000)]
[3/7] Fix load/store costs for strided groups

vect_model_store_cost had:

      /* Costs of the stores.  */
      if (STMT_VINFO_STRIDED_P (stmt_info)
          && !STMT_VINFO_GROUPED_ACCESS (stmt_info))
        {
          /* N scalar stores plus extracting the elements.  */
          inside_cost += record_stmt_cost (body_cost_vec,
       ncopies * TYPE_VECTOR_SUBPARTS (vectype),
       scalar_store, stmt_info, 0, vect_body);

But non-SLP strided groups also use individual scalar stores rather than
vector stores, so I think we should skip this only for SLP groups.

The same applies to vect_model_load_cost.

Tested on aarch64-linux-gnu and x86_64-linux-gnu.

gcc/
* tree-vect-stmts.c (vect_model_store_cost): For non-SLP
strided groups, use the cost of N scalar accesses instead
of ncopies vector accesses.
(vect_model_load_cost): Likewise.

From-SVN: r238035

8 years ago[2/7] Clean up vectorizer load/store costs
Richard Sandiford [Wed, 6 Jul 2016 08:11:31 +0000 (08:11 +0000)]
[2/7] Clean up vectorizer load/store costs

Add a bit more commentary and try to make the structure more obvious.
The horrendous:

      if (grouped_access_p
          && represents_group_p
          && !store_lanes_p
          && !STMT_VINFO_STRIDED_P (stmt_info)
          && !slp_node)

checks go away in patch 6.

Tested on aarch64-linux-gnu and x86_64-linux-gnu.

gcc/
* tree-vect-stmts.c (vect_cost_group_size): Delete.
(vect_model_store_cost): Avoid calling it.  Use first_stmt_p
variable to indicate when once-per-group costs are being used.
(vect_model_load_cost): Likewise.  Fix comment and misindented code.

From-SVN: r238034

8 years ago[1/7] Remove unnecessary peeling for gaps check
Richard Sandiford [Wed, 6 Jul 2016 08:10:29 +0000 (08:10 +0000)]
[1/7] Remove unnecessary peeling for gaps check

I recently relaxed the peeling-for-gaps conditions for LD3 but
kept them as-is for load-and-permute.  I don't think the conditions
are needed for load-and-permute either though.  No current load-and-
permute should load outside the group, so if there is no gap at the end,
the final vector element loaded will correspond to an element loaded
by the original scalar loop.

The patch for PR68559 (a missed optimisation PR) increased the peeled
cases from "exact_log2 (groupsize) == -1" to "vf % group_size == 0", so
before that fix, we didn't peel for gaps if there was no gap at the end
of the group and if the group size was a power of 2.

The only current non-power-of-2 load-and-permute size is 3, which
doesn't require loading more than 3 vectors.

The testcase is based on gcc.dg/vect/pr49038.c.

Tested on aarch64-linux-gnu and x86_64-linux-gnu.

gcc/
* tree-vect-stmts.c (vectorizable_load): Remove unnecessary
peeling-for-gaps condition.

gcc/testsuite/
* gcc.dg/vect/group-no-gaps-1.c: New test.

From-SVN: r238033

8 years agoS/390: Fix vecinit expansion.
Andreas Krebbel [Wed, 6 Jul 2016 07:05:11 +0000 (07:05 +0000)]
S/390: Fix vecinit expansion.

The fallback routine in the S/390 vecinit expander did not check
whether each of the initializer elements is a proper general_operand.
Since revision r236582 the expander is invoked also with e.g. symbol
refs with an odd addend resulting in invalid insns.

Fixed by forcing the element into a register in such cases.

gcc/ChangeLog:

2016-07-06  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

* config/s390/s390.c (s390_expand_vec_init): Force initializer
element to register if it doesn't match general_operand.

From-SVN: r238032

8 years agoFix MPX tests on systems with MPX disabled
Andi Kleen [Wed, 6 Jul 2016 02:38:49 +0000 (02:38 +0000)]
Fix MPX tests on systems with MPX disabled

I have a Skylake system with MPX in the CPU, but MPX is disabled
in the kernel configuration.

This makes all the MPX tests fail because they assume if MPX
is in CPUID it works

Check the output of XGETBV too to detect non MPX kernels.

gcc/testsuite/:

2016-07-05  Andi Kleen  <ak@linux.intel.com>

* gcc.target/i386/mpx/mpx-check.h: Check XGETBV output
if kernel supports MPX.

From-SVN: r238031

8 years agoDaily bump.
GCC Administrator [Wed, 6 Jul 2016 00:16:22 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r238029

8 years agopr69102.c: Require fpic support.
Kito Cheng [Tue, 5 Jul 2016 18:51:38 +0000 (18:51 +0000)]
pr69102.c: Require fpic support.

2016-07-05  Kito Cheng <kito.cheng@gmail.com>

* gcc.c-torture/compile/pr69102.c: Require fpic support.

From-SVN: r238023

8 years agoImplement LWG 2509,
Ville Voutilainen [Tue, 5 Jul 2016 18:33:18 +0000 (21:33 +0300)]
Implement LWG 2509,

any_cast doesn't work with rvalue reference targets and cannot
move with a value target.
* include/experimental/any (any(_ValueType&&)): Constrain and
add an overload that doesn't forward.
(any_cast(any&&)): Constrain and add an overload that moves.
* testsuite/experimental/any/misc/any_cast.cc: Add tests for
the functionality added by LWG 2509.

From-SVN: r238022

8 years agore PR c++/71214 (Typo in feature test macro for rvalue references)
Markus Trippelsdorf [Tue, 5 Jul 2016 17:50:41 +0000 (17:50 +0000)]
re PR c++/71214 (Typo in feature test macro for rvalue references)

Fix PR c++/71214

       PR c++/71214
       * c-cppbuiltin.c (c_cpp_builtins): Define __cpp_rvalue_references.

From-SVN: r238017

8 years agors6000-protos.h (rs6000_split_signbit): New prototype.
Michael Meissner [Tue, 5 Jul 2016 17:50:22 +0000 (17:50 +0000)]
rs6000-protos.h (rs6000_split_signbit): New prototype.

[gcc]

2016-07-05  Michael Meissner  <meissner@linux.vnet.ibm.com>
    Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

* config/rs6000/rs6000-protos.h (rs6000_split_signbit): New
prototype.
* config/rs6000/rs6000.c (rs6000_split_signbit): New function.
* config/rs6000/rs6000.md (UNSPEC_SIGNBIT): New constant.
(SIGNBIT): New mode iterator.
(Fsignbit): New mode attribute.
(signbit<mode>2): Change operand1 to match FLOAT128 instead of
IBM128; dispatch to gen_signbit{kf,tf}2_dm for __float128
when direct moves are available.
(signbit<mode>2_dm): New define_insn_and_split).
(signbit<mode>2_dm2): New define_insn.

[gcc/testsuite]

2016-07-05  Michael Meissner  <meissner@linux.vnet.ibm.com>
    Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

* gcc.target/powerpc/signbit-1.c: New test.
* gcc.target/powerpc/signbit-2.c: New test.
* gcc.target/powerpc/signbit-3.c: New test.

Co-Authored-By: Bill Schmidt <wschmidt@linux.vnet.ibm.com>
From-SVN: r238016

8 years ago[RTL ifcvt] PR rtl-optimization/71594: ICE in noce_emit_cmove due to mismatched sourc...
Kyrylo Tkachov [Tue, 5 Jul 2016 16:37:40 +0000 (16:37 +0000)]
[RTL ifcvt] PR rtl-optimization/71594: ICE in noce_emit_cmove due to mismatched source modes

PR rtl-optimization/71594
* ifcvt.c (noce_convert_multiple_sets): Wrap new_val or old_val
into subregs of appropriate mode before trying to emit a conditional
move.

* gcc.dg/torture/pr71594.c: New test.

From-SVN: r238013

8 years agotree-scalar-evolution.c (iv_can_overflow_p): New function.
Jan Hubicka [Tue, 5 Jul 2016 16:17:12 +0000 (18:17 +0200)]
tree-scalar-evolution.c (iv_can_overflow_p): New function.

* tree-scalar-evolution.c (iv_can_overflow_p): New function.
(simple_iv): Use it.

* gcc.dg/tree-ssa/scev-14.c: new testcase.

From-SVN: r238012

8 years ago* tree-ssa-loop-niter.c (nowrap_type_p): Use ANY_INTEGRAL_TYPE_P.
Jan Hubicka [Tue, 5 Jul 2016 16:13:46 +0000 (18:13 +0200)]
* tree-ssa-loop-niter.c (nowrap_type_p): Use ANY_INTEGRAL_TYPE_P.

From-SVN: r238011

8 years ago[LRA] Don't count spilling cost for it offmemok
Jiong Wang [Tue, 5 Jul 2016 16:05:27 +0000 (16:05 +0000)]
[LRA] Don't count spilling cost for it offmemok

* lra-constraints.c (process_alt_operands): Don't add spilling cost for
"offmemok".

From-SVN: r238010

8 years agotree-scalar-evoluiton.c (simple_iv): Use nowrap_type to check if IV can overflow.
Jan Hubicka [Tue, 5 Jul 2016 16:02:52 +0000 (18:02 +0200)]
tree-scalar-evoluiton.c (simple_iv): Use nowrap_type to check if IV can overflow.

* tree-scalar-evoluiton.c (simple_iv): Use nowrap_type to check if
IV can overflow.

From-SVN: r238009

8 years agoPR c++/62314: add fixit hint for "expected ';' after class definition"
David Malcolm [Tue, 5 Jul 2016 15:50:54 +0000 (15:50 +0000)]
PR c++/62314: add fixit hint for "expected ';' after class definition"

gcc/cp/ChangeLog:
PR c++/62314
* parser.c (cp_parser_class_specifier_1): When reporting
missing semicolons, use a fixit-hint to suggest insertion
of a semicolon immediately after the closing brace,
offsetting the reported column accordingly.

gcc/testsuite/ChangeLog:
PR c++/62314
* gcc/testsuite/g++.dg/parse/error5.C: Update column
number of missing semicolon error.
* g++.dg/pr62314-2.C: New test case.

From-SVN: r238008

8 years agoSecond review of STAT= patch + tests
Alessandro Fanfarillo [Tue, 5 Jul 2016 15:33:06 +0000 (09:33 -0600)]
Second review of STAT= patch + tests

From-SVN: r238007

8 years agogimple-ssa-split-paths.c (find_block_to_duplicate_for_splitting_pa): Handle empty...
Richard Biener [Tue, 5 Jul 2016 13:25:47 +0000 (13:25 +0000)]
gimple-ssa-split-paths.c (find_block_to_duplicate_for_splitting_pa): Handle empty else block.

2016-07-05  Richard Biener  <rguenther@suse.de>

* gimple-ssa-split-paths.c (find_block_to_duplicate_for_splitting_pa):
Handle empty else block.
(is_feasible_trace): Likewise.
(split_paths): Likewise.

From-SVN: r238005

8 years agotree-loop-distribution.c (distribute_loop): Fix issue with the cost model loop.
Richard Biener [Tue, 5 Jul 2016 13:25:19 +0000 (13:25 +0000)]
tree-loop-distribution.c (distribute_loop): Fix issue with the cost model loop.

2016-07-05  Richard Biener  <rguenther@suse.de>

* tree-loop-distribution.c (distribute_loop): Fix issue with
the cost model loop.

From-SVN: r238004

8 years agoUpdate documentation.
Arnaud Charlet [Tue, 5 Jul 2016 12:18:48 +0000 (14:18 +0200)]
Update documentation.

From-SVN: r238003

8 years agore PR fortran/71623 (Segfault when allocating deferred-length characters to size...
Andre Vehreschild [Tue, 5 Jul 2016 12:06:22 +0000 (14:06 +0200)]
re PR fortran/71623 (Segfault when allocating deferred-length characters to size of a pointer)

gcc/fortran/ChangeLog:

2016-07-05  Andre Vehreschild  <vehre@gcc.gnu.org>

PR fortran/71623
* trans-stmt.c (gfc_trans_allocate): Add code of pre block of typespec
in allocate to parent block.

gcc/testsuite/ChangeLog:

2016-07-05  Andre Vehreschild  <vehre@gcc.gnu.org>

PR fortran/71623
* gfortran.dg/deferred_character_17.f90: New test.

From-SVN: r238002

8 years agodecl.c (gnat_to_gnu_entity): Invoke global_bindings_p last when possible.
Eric Botcazou [Tue, 5 Jul 2016 10:32:43 +0000 (10:32 +0000)]
decl.c (gnat_to_gnu_entity): Invoke global_bindings_p last when possible.

* gcc-interface/decl.c (gnat_to_gnu_entity): Invoke global_bindings_p
last when possible.  Do not call elaborate_expression_2 on offsets in
local record types and avoid useless processing for constant offsets.

From-SVN: r238001

8 years ago[ARM][testsuite] neon-testgen.ml removal
Christophe Lyon [Tue, 5 Jul 2016 09:24:38 +0000 (09:24 +0000)]
[ARM][testsuite] neon-testgen.ml removal

2016-07-05  Christophe Lyon  <christophe.lyon@linaro.org>

gcc/
* config/arm/neon-testgen.ml: Delete.
* config/arm/neon.ml: Delete.

gcc/testsuite/
* gcc.target/arm/neon/polytypes.c: Move to ...
* gcc.target/arm/polytypes.c: ... here.
* gcc.target/arm/neon/pr51534.c: Move to ...
* gcc.target/arm/pr51534.c: ... here.
* gcc.target/arm/neon/vect-vcvt.c: Move to ...
* gcc.target/arm/vect-vcvt.c: ... here.
* gcc.target/arm/neon/vect-vcvtq.c: Move to ...
* gcc.target/arm/vect-vcvtq.c: ... here.
* gcc.target/arm/neon/vfp-shift-a2t2.c: Move to ...
* gcc.target/arm/vfp-shift-a2t2.c: ... here.
* gcc.target/arm/neon/vst1Q_laneu64-1.c: Move to ...
* gcc.target/arm/vst1Q_laneu64-1.c: ... here. Fix foo() prototype.
* gcc.target/arm/neon/neon.exp: Delete.
* gcc.target/arm/neon/*.c: Delete.

From-SVN: r238000

8 years agoDaily bump.
GCC Administrator [Tue, 5 Jul 2016 00:16:18 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r237998

8 years agore PR fortran/66575 (Endless compilation on missing end interface)
Jerry DeLisle [Mon, 4 Jul 2016 21:04:55 +0000 (21:04 +0000)]
re PR fortran/66575 (Endless compilation on missing end interface)

2016-07-04  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

PR fortran/66575
* decl.c (match_procedure_interface): Exit loop if procedure
interface refers to itself.

* gfortran.dg: pr65575.f90: New test.

From-SVN: r237994

8 years agore PR fortran/35849 ("wrong" line shown in error message for parameter)
Jerry DeLisle [Mon, 4 Jul 2016 19:14:54 +0000 (19:14 +0000)]
re PR fortran/35849 ("wrong" line shown in error message for parameter)

2016-07-04  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
    Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/35849
* simplify.c (gfc_simplify_ishftc): Check that absolute value of
SHIFT is less than or equal to SIZE.

* gfortran.dg: pr35849.f90: New test.

Co-Authored-By: Steven G. Kargl <kargl@gcc.gnu.org>
From-SVN: r237993

8 years agore PR c++/71739 (ICE on valid C++11 code: tree check: expected identifier_node, have...
Jakub Jelinek [Mon, 4 Jul 2016 17:31:38 +0000 (19:31 +0200)]
re PR c++/71739 (ICE on valid C++11 code: tree check: expected identifier_node, have tree_list in private_is_attribute_p, at tree.c:6080)

PR c++/71739
* tree.c (attribute_value_equal): Use get_attribute_name instead of
directly using TREE_PURPOSE.

* g++.dg/cpp0x/pr71739.C: New test.

From-SVN: r237991

8 years ago[AArch64] Renaming ARMv8.1 to ARMv8.1-A in comments and documentations
Jiong Wang [Mon, 4 Jul 2016 16:27:46 +0000 (16:27 +0000)]
[AArch64] Renaming ARMv8.1 to ARMv8.1-A in comments and documentations

* config/aarch64/aarch64.h: Rename "ARMv8.1" to "ARMv8.1-A".
* config/aarch64/aarch64_neon.h: Likewise.
* config/aarch64/arm_neon.h: Likewise.
* config/aarch64/atomics.md: Likewise.
* config/aarch64/aarch64-simd-builtins.def: Likewise.
* doc/invoke.texi: Likewise.

From-SVN: r237988

8 years ago[testsuite] asan/clone-test-1.c: Handle clone() failure
Christophe Lyon [Mon, 4 Jul 2016 16:19:03 +0000 (16:19 +0000)]
[testsuite] asan/clone-test-1.c: Handle clone() failure

2016-07-04  Christophe Lyon  <christophe.lyon@linaro.org>

* c-c++-common/asan/clone-test-1.c (main): Handle clone() failure.

From-SVN: r237987

8 years agoAdd tests for inserting aliased objects into std::vector
François Dumont [Mon, 4 Jul 2016 14:52:54 +0000 (14:52 +0000)]
Add tests for inserting aliased objects into std::vector

2016-07-04  François Dumont  <fdumont@gcc.gnu.org>

* testsuite/23_containers/vector/modifiers/emplace/self_emplace.cc:
New test.
* testsuite/23_containers/vector/modifiers/insert/self_insert.cc: New
test.

From-SVN: r237986

8 years agoFix std::vector's use of temporary objects
Jonathan Wakely [Mon, 4 Jul 2016 14:52:46 +0000 (15:52 +0100)]
Fix std::vector's use of temporary objects

* include/bits/stl_vector.h (emplace(const_iterator, _Args&&...)):
Define inline. Forward to _M_emplace_aux.
(insert(const_iterator, value_type&&)): Forward to _M_insert_rval.
(_M_insert_rval, _M_emplace_aux): Declare new functions.
(_Temporary_value): New RAII type using allocator to construct/destroy.
(_S_insert_aux_assign): Remove.
(_M_insert_aux): Make non-variadic.
* include/bits/vector.tcc (insert(const_iterator, const value_type&)):
Use _Temporary_value.
(emplace(const_iterator, _Args&&...)): Remove definition.
(_M_insert_rval, _M_emplace_aux): Define.
(_M_insert_aux): Make non-variadic, stop using _S_insert_aux_assign.
(_M_fill_insert): Use _Temporary_value.
* testsuite/23_containers/vector/allocator/construction.cc: New test.
* testsuite/23_containers/vector/modifiers/insert_vs_emplace.cc:
Adjust expected results for emplacing an lvalue with reallocation.
* testsuite/23_containers/vector/check_construct_destroy.cc: Adjust
expected results to account for construction/destruction of temporary
using allocator.

From-SVN: r237985

8 years agoS/390: Add support for z13 instructions lochi and locghi.
Dominik Vogt [Mon, 4 Jul 2016 14:25:22 +0000 (14:25 +0000)]
S/390: Add support for z13 instructions lochi and locghi.

The attached patch adds patterns to make use of the z13 LOCHI and
LOCGHI instructions.

gcc/ChangeLog:

2016-07-04  Dominik Vogt  <vogt@linux.vnet.ibm.com>

* config/s390/s390.md: Add "z13" cpu_facility.
("*mov<mode>cc"): Add support for z13 instructions lochi and locghi.
* config/s390/predicates.md ("loc_operand"): New predicate for "load on
condition" type instructions.

gcc/testsuite/ChangeLog:

2016-07-04  Dominik Vogt  <vogt@linux.vnet.ibm.com>

* gcc.target/s390/vector/vec-scalar-cmp-1.c: Expect lochi instead
of locr.
* gcc.target/s390/loc-1.c: New test.

From-SVN: r237984

8 years agoMinor cleanup to allocate_dynamic_stack_space
Dominik Vogt [Mon, 4 Jul 2016 14:21:06 +0000 (14:21 +0000)]
Minor cleanup to allocate_dynamic_stack_space

gcc/ChangeLog:

2016-07-04  Dominik Vogt  <vogt@linux.vnet.ibm.com>
    Jeff Law  <law@redhat.com>

* explow.c (allocate_dynamic_stack_space): Simplify knowing that
MUST_ALIGN was always true and extra_align ist always BITS_PER_UNIT.

Co-Authored-By: Jeff Law <law@redhat.com>
From-SVN: r237983

8 years agoi386.c (ix86_expand_vec_perm): Add handle one-operand permutation for TARGET_AVX512F.
Yuri Rumyantsev [Mon, 4 Jul 2016 14:06:27 +0000 (14:06 +0000)]
i386.c (ix86_expand_vec_perm): Add handle one-operand permutation for TARGET_AVX512F.

gcc/
* config/i386/i386.c (ix86_expand_vec_perm): Add handle one-operand
permutation for TARGET_AVX512F.
(ix86_expand_vec_one_operand_perm_avx512): New function.
(expand_vec_perm_1): Invoke introduced function.
* tree-vect-loop.c (vect_transform_loop): Clear-up safelen value since
it may be not valid after vectorization.

gcc/testsuite/
* gcc/testsuite/gcc.target/i386/avx512f-vect-perm-1.c: New test.
* gcc/testsuite/gcc.target/i386/avx512f-vect-perm-2.c: New test.

From-SVN: r237982

8 years agoUpdate documentation.
Arnaud Charlet [Mon, 4 Jul 2016 12:57:30 +0000 (12:57 +0000)]
Update documentation.

From-SVN: r237979

8 years agore PR libstdc++/71313 ([Filesystem TS] remove_all fails to remove directory contents...
Ville Voutilainen [Mon, 4 Jul 2016 12:52:49 +0000 (15:52 +0300)]
re PR libstdc++/71313 ([Filesystem TS] remove_all fails to remove directory contents recursively)

PR libstdc++/71313
* src/filesystem/ops.cc (remove_all(const path&, error_code&)):
Call remove_all for children of a directory.
* testsuite/experimental/filesystem/operations/create_directories.cc:
Adjust.

From-SVN: r237978

8 years agoCleanups.
Arnaud Charlet [Mon, 4 Jul 2016 12:47:30 +0000 (12:47 +0000)]
Cleanups.

From-SVN: r237977

8 years ago[multiple changes]
Arnaud Charlet [Mon, 4 Jul 2016 12:32:22 +0000 (14:32 +0200)]
[multiple changes]

2016-07-04  Ed Schonberg  <schonberg@adacore.com>

* sem_attr.adb (Analyze_Attribute_Old_Result): The attributes can
appear in the postcondition of a subprogram renaming declaration,
when the renamed entity is an attribute reference that is a
function (such as 'Value).
* sem_attr.adb (Eval_Attribute): It doesn't
need to be static, just known at compile time, so use
Compile_Time_Known_Value instead of Is_Static_Expression.
This is an efficiency improvement over the previous bug fix.
* sem_ch13.adb (Analyze_One_Aspect): Use Original_Node to detect
illegal aspects on subprogram renaming declarations that may
have been rewritten as bodies.

2016-07-04  Arnaud Charlet  <charlet@adacore.com>

* sem_intr.adb (Errint): Do not emit error message in
Relaxed_RM_Semantics mode.

From-SVN: r237976

8 years agosem_attr.adb (Eval_Attribute): The code was assuming that X'Enum_Rep...
Bob Duff [Mon, 4 Jul 2016 12:30:44 +0000 (12:30 +0000)]
sem_attr.adb (Eval_Attribute): The code was assuming that X'Enum_Rep...

2016-07-04  Bob Duff  <duff@adacore.com>

* sem_attr.adb (Eval_Attribute): The code was assuming
that X'Enum_Rep, where X denotes a constant, can be constant
folded. Fix it so it makes that assumption only when X denotes
a STATIC constant.

From-SVN: r237975

8 years agoMinor reformatting.
Arnaud Charlet [Mon, 4 Jul 2016 10:48:59 +0000 (12:48 +0200)]
Minor reformatting.

From-SVN: r237974

8 years ago[multiple changes]
Arnaud Charlet [Mon, 4 Jul 2016 10:48:48 +0000 (12:48 +0200)]
[multiple changes]

2016-07-04  Ed Schonberg  <schonberg@adacore.com>

* sem_ch4.adb (Compatible_Types_In_Predicate): New function
to handle cases where a formal of a predicate function and the
corresponding actual have different views of the same type.

2016-07-04  Philippe Gil  <gil@adacore.com>

* g-debpoo.adb (Free_Blocks) free blocks also until
Logically_Deallocated less than Maximum_Logically_Freed_Memory
(Dump) add dump of number of traceback & validity elements
already allocated.

2016-07-04  Justin Squirek  <squirek@adacore.com>

* sem_ch12.adb (Instantiate_Package_Body): Add
a guard to ignore Itypes which fail when installing primitives.

From-SVN: r237973

8 years agosem_eval.adb (Decompose_Expr): Set 'out' parameters Kind and Cons to valid values...
Bob Duff [Mon, 4 Jul 2016 10:46:47 +0000 (10:46 +0000)]
sem_eval.adb (Decompose_Expr): Set 'out' parameters Kind and Cons to valid values, to avoid use of uninit vars.

2016-07-04  Bob Duff  <duff@adacore.com>

* sem_eval.adb (Decompose_Expr): Set 'out' parameters
Kind and Cons to valid values, to avoid use of uninit vars.
(Extract_Length): Reorder the check to make it clearer that
we're depending on BOTH Ent1 and Ent2 to be Present.
* sem_aggr.adb (Resolve_Aggregate): Remove dead code.
(Check_Misspelled_Component): Remove exit statement, because
it's covered by the 'while' condition.
* checks.adb (Apply_Selected_Range_Checks): Remove useless
condition "or else not Checks_On".
(Selected_Range_Checks):
Initialize Known_LB and Known_HB to False, because they are
tested unconditionally; avoid use of uninit vars.
* frontend.adb (Frontend): Removed useless condition
"Operating_Mode = Check_Semantics and then", and added an Assert
to clarify why it was useless.
* prep.adb (Preprocess): Remove redundant condition. Add an
assertion.
* sem_ch10.adb (Analyze_Proper_Body): Moved redundant condition
"Original_Operating_Mode = Generate_Code" to an Assert.
(Process_Spec_Clauses, Process_Body_Clauses): Change parameters
from 'in out' to 'out', and don't initialize actuals.
* sem_ch12.adb (Is_In_Main_Unit): Removed useless condition
"Unum = Main_Unit or else".
(Save_Global_Descendant): Moved
redundant condition "D = Union_Id (No_List)" to an Assert.
* sem_ch4.adb (Check_Misspelled_Selector): Remove exit
statement, because it's covered by the 'while' condition.
(Analyze_Case_Expression): Initialize Wrong_Alt to Empty,
because it looks like it is used uninitialized otherwise.
* sem_ch6.adb (Check_Return_Subtype_Indication): Moved redundant
condition "not R_Type_Is_Anon_Access" to an Assert.
* sem_elim.adb (Line_Num_Match): Moved redundant condition
"Sloc_Trace (Idx) = '['" to an Assert.
* sem_util.adb (Compile_Time_Constraint_Error): Change "J" to
"J - 1". This code is trying to replace "?" with "<", but not if
the "?" is quoted, as in "'?", so we want to check the PREVIOUS
character for '''.
* snames.adb-tmpl (Is_Pragma_Name): Remove useless condition
"or else N = Name_Relative_Deadline". It's useless because
Name_Relative_Deadline is in the range First_Pragma_Name
.. Last_Pragma_Name.
* treepr.adb (Visit_Node): Moved redundant condition "D =
Union_Id (No_List)" to an Assert.
* sem_ch3.adb (Derive_Subprogram, Derive_Subprograms): Change
parameters from 'in out' to 'out'.
* errout.adb (Error_Msg_Internal): Replace redundant test with Assert.
* inline.adb (Add_Inlined_Body): Code cleanup.

From-SVN: r237972

8 years agog-sercom-mingw.adb, [...]: Minor reformatting.
Hristian Kirtchev [Mon, 4 Jul 2016 10:44:24 +0000 (10:44 +0000)]
g-sercom-mingw.adb, [...]: Minor reformatting.

2016-07-04  Hristian Kirtchev  <kirtchev@adacore.com>

* g-sercom-mingw.adb, sem_ch6.adb: Minor reformatting.

From-SVN: r237971

8 years ago[multiple changes]
Arnaud Charlet [Mon, 4 Jul 2016 10:43:01 +0000 (12:43 +0200)]
[multiple changes]

2016-07-04  Olivier Hainque  <hainque@adacore.com>

* g-sercom-mingw.adb (Set): Fix port configuration for the
non-blocking + null-timeout case, request of immediate return.

2016-07-04  Ed Schonberg  <schonberg@adacore.com>

* sem_ch6.adb (Is_Non_Overriding_Operation): Add guard to test
of generic parent type when operation is a parameterless function
that may dispatch on result.

From-SVN: r237970

8 years ago[multiple changes]
Arnaud Charlet [Mon, 4 Jul 2016 10:41:23 +0000 (12:41 +0200)]
[multiple changes]

2016-07-04  Hristian Kirtchev  <kirtchev@adacore.com>

* freeze.adb, ghost.adb, sem_ch13.adb: Minor reformatting.

2016-07-04  Pascal Obry  <obry@adacore.com>

* g-forstr.ads: More documentation for the Formatted_String
support.

2016-07-04  Justin Squirek  <squirek@adacore.com>

* sem_ch7.adb (Install_Parent_Private_Declarations): When
instantiating a child unit, do not install private declaration of
a non-generic ancestor of the generic that is also an ancestor
of the current unit: its private part will be installed when
private part of ancestor itself is analyzed.

2016-07-04  Ed Schonberg  <schonberg@adacore.com>

* sem_ch12.adb (Instantiate_Object): In SPARK mode add a guard
to verify that the actual is an object reference before checking
for volatility.
(Check_Generic_Child_Unit): Prevent cascaded errors when prefix
is illegal.

From-SVN: r237969

8 years ago[multiple changes]
Arnaud Charlet [Mon, 4 Jul 2016 10:38:22 +0000 (12:38 +0200)]
[multiple changes]

2016-07-04  Gary Dismukes  <dismukes@adacore.com>

* sem_ch12.ads, freeze.adb: Minor reformatting and typo fixes.

2016-07-04  Ed Schonberg  <schonberg@adacore.com>

* sem_ch13.adb (New_Stream_Subprogram): If the attribute
definition clause comes from an aspect specification, place the
generated subprogram renaming in the freeze actions of the type.

2016-07-04  Philippe Gil  <gil@adacore.com>

* g-debpoo.adb (Dump.Do_Report) - add space prefix to backtrace
address dump - avoid new line sent directly to stdout.

2016-07-04  Arnaud Charlet  <charlet@adacore.com>

* gnat1drv.adb, sem_ch12.adb, sem_elab.adb, sem_prag.adb, sem_res.adb:
Relax elaboration checks in SPARK_Mode so that we rely on the
static elaboration model (if used). We'll have a more precise
check performed in flow analysis of gnat2why.

From-SVN: r237968

8 years agoghost.adb (Prune_Node): A freeze node for an ignored ghost entity must be pruned...
Ed Schonberg [Mon, 4 Jul 2016 10:29:02 +0000 (10:29 +0000)]
ghost.adb (Prune_Node): A freeze node for an ignored ghost entity must be pruned as well.

2016-07-04  Ed Schonberg  <schonberg@adacore.com>

* ghost.adb (Prune_Node): A freeze node for an ignored ghost
entity must be pruned as well.

From-SVN: r237967

8 years agosem_type.adb, [...]: Minor reformatting and typo fix.
Gary Dismukes [Mon, 4 Jul 2016 10:25:35 +0000 (10:25 +0000)]
sem_type.adb, [...]: Minor reformatting and typo fix.

2016-07-04  Gary Dismukes  <dismukes@adacore.com>

* sem_type.adb, einfo.ads, freeze.adb, exp_ch6.adb: Minor reformatting
and typo fix.

From-SVN: r237966

8 years agosem_ch3.adb, [...]: Minor reformatting.
Hristian Kirtchev [Mon, 4 Jul 2016 10:19:10 +0000 (10:19 +0000)]
sem_ch3.adb, [...]: Minor reformatting.

2016-07-04  Hristian Kirtchev  <kirtchev@adacore.com>

* sem_ch3.adb, sem_type.adb, sem_ch12.adb, xref_lib.adb,
freeze.adb, sinput-l.adb, sinput-l.ads, sem_ch4.adb, sem_ch8.adb:
Minor reformatting.

From-SVN: r237965

8 years ago[multiple changes]
Arnaud Charlet [Mon, 4 Jul 2016 10:17:30 +0000 (12:17 +0200)]
[multiple changes]

2016-07-04  Justin Squirek  <squirek@adacore.com>

* sem_prag.adb (Analyze_Unmodified_Or_Unused and
Analyze_Unreferenced_Or_Unused): Change warning message to be
more clear about pragma duplicates.

2016-07-04  Yannick Moy  <moy@adacore.com>

* sinput-l.adb (Create_Instantiation_Source): Set component
Inlined_Call for inherited pragma case.
* sinput.adb, sinput.ads (Instantiation): Return component
Inlined_Call for inherited pragma case.

2016-07-04  Bob Duff  <duff@adacore.com>

* sem_type.adb (Remove_Conversions): Protect
the call to Left_Opnd by checking for Nkind in N_Unary_Op --
unary operators do not have a left operand.

2016-07-04  Ed Schonberg  <schonberg@adacore.com>

* sem_ch3.adb (Analyze_Object_Declaration): A declaration of a
constant in a protected operation may be a homonym of a private
component of the enclosing protected type. This declaration hides
the component renaming constructed within the protected operation.

From-SVN: r237964

8 years ago[multiple changes]
Arnaud Charlet [Mon, 4 Jul 2016 10:09:04 +0000 (12:09 +0200)]
[multiple changes]

2016-07-04  Bob Duff  <duff@adacore.com>

* xref_lib.adb (Parse_X_Filename, Parse_Identifier_Info): Ignore
unknown files. Check that File_Nr is in the range of files we
know about. The previous code was checking the lower bound,
but not the upper bound.

2016-07-04  Arnaud Charlet  <charlet@adacore.com>

* tracebak.c: Minor reformatting.

2016-07-04  Yannick Moy  <moy@adacore.com>

* sem_ch12.adb, sem_ch12.ads Update calls to
Create_Instantiation_Source to use default argument.
(Adjust_Inherited_Pragma_Sloc): New function to adjust sloc
of inherited pragma.
(Set_Copied_Sloc_For_Inherited_Pragma):
New function that wraps call to Create_Instantiation_Source for
copying an inherited pragma.
(Set_Copied_Sloc_For_Inlined_Body): Update call to
Create_Instantiation_Source with new arguments.
* sem_prag.adb (Build_Pragma_Check_Equivalent): In the case
of inherited pragmas, use the generic machinery to get chained
locations for the pragma and its sub-expressions.
* sinput-c.adb: Adapt to new type Source_File_Record.
* sinput-l.adb, sinput-l.ads (Create_Instantiation_Source):
Add parameter Inherited_Pragma and make parameter Inlined_Body
optional.
* sinput.adb, sinput.ads (Comes_From_Inherited_Pragma): New
function to return when a location comes from an inherited pragma.
(Inherited_Pragma): New function to detect when a location comes
from an inherited pragma.
(Source_File_Record): New component Inherited_Pragma.

2016-07-04  Yannick Moy  <moy@adacore.com>

* sem_elab.adb: Register existence of quickfix for error message.

2016-07-04  Ed Schonberg  <schonberg@adacore.com>

* sem_ch4.adb (Resolve_One_Call): In the context of a predicate
function the formal and the actual in a call may have different
views of the same type, because of the delayed analysis of
predicates aspects. Extend the patch that handles this potential
discrepancy to handle private and full views as well.
* sem_ch8.adb (Find_Selected_Component): Refine predicate that
produces additional error when an illegal selected component
looks like a prefixed call whose first formal is untagged.

From-SVN: r237963

8 years agoMinor reformatting.
Arnaud Charlet [Mon, 4 Jul 2016 10:06:17 +0000 (12:06 +0200)]
Minor reformatting.

From-SVN: r237962

8 years agoeinfo.adb (Has_Pragma_Unused): Create this function as a setter for a new flag294...
Justin Squirek [Mon, 4 Jul 2016 10:05:53 +0000 (10:05 +0000)]
einfo.adb (Has_Pragma_Unused): Create this function as a setter for a new flag294 (Set_Has_Pragma_Unused):...

2016-07-04  Justin Squirek  <squirek@adacore.com>

* einfo.adb (Has_Pragma_Unused): Create this function as a setter
for a new flag294 (Set_Has_Pragma_Unused): Create this procedure
as a getter for flag294 (Write_Entity_Flags): Register the new
flag with an alias
* einfo.ads Add comment documenting Has_Pragma_Unused (flag294)
and subsequent getter and setter declarations.
* lib-xref.adb (Generate_Reference): Recognize Has_Pragma_Unused
flag to print appropriate warning messages.
* par-prag.adb (Prag): Classify Pragma_Unused into "All Other
Pragmas."
* snames.ads-tmpl Add a new name to the name constants and a
new pramga to Pragma_Id for pramga Unused.
* sem_prag.adb (Analyze_Pragma): Create case for Pragma_Unused
and move the block for Pragma_Unmodified and Pragma_Unreferenced
out and into local subprograms.
(Analyze_Unmodified, Analyze_Unreferenced): From the old pragma blocks
that have been separated in to local subprograms add a parameter to
indicate the if they are being called in the context of Pragma_Unused
and handle it accordingly.
(Is_Non_Significant_Pragma_Reference): Add an entry for Pragma_Unused
and correct the position of Pragma_Unevaluated_Use_Of_Old.
* sem_util.adb (Note_Possible_Modification): Recognize
Has_Pragma_Unused flag to print appropriate warning messages.

From-SVN: r237961

8 years agofreeze.adb (Check_Inherited_Conditions): Perform two passes over the primitive operat...
Ed Schonberg [Mon, 4 Jul 2016 10:03:34 +0000 (10:03 +0000)]
freeze.adb (Check_Inherited_Conditions): Perform two passes over the primitive operations of the type...

2016-07-04  Ed Schonberg  <schonberg@adacore.com>

* freeze.adb (Check_Inherited_Conditions): Perform two passes over
the primitive operations of the type: one over source overridings
to build the primitives mapping, and one over inherited operations
to check for the need to create wrappers, and to check legality
of inherited condition in SPARK.
* sem_prag.ads (Update_Primitive_Mapping): Make public, for use
in freeze actions.
* sem_prag.adb (Build_Pragma_Check_Equivalent): Refine error
message in the case of an inherited condition in SPARK that
includes a call to some other overriding primitive.

From-SVN: r237960

8 years ago[multiple changes]
Arnaud Charlet [Mon, 4 Jul 2016 10:00:57 +0000 (12:00 +0200)]
[multiple changes]

2016-07-04  Hristian Kirtchev  <kirtchev@adacore.com>

* exp_aggr.adb (Ctrl_Init_Expression): New routine.
(Gen_Assign): Code cleanup. Perform in-place side effect removal when
the expression denotes a controlled function call.
* exp_util.adb (Remove_Side_Effects): Do not remove side effects
on a function call which has this behavior suppressed.
* sem_aggr.adb Code cleanup.
* sinfo.adb (No_Side_Effect_Removal): New routine.
(Set_Side_Effect_Removal): New routine.
* sinfo.ads New attribute No_Side_Effect_Removal along with
occurences in nodes.
(No_Side_Effect_Removal): New routine along with pragma Inline.
(Set_Side_Effect_Removal): New routine along with pragma Inline.

2016-07-04  Arnaud Charlet  <charlet@adacore.com>

* opt.ads, sem_prag.adb (Universal_Addressing_On_AAMP): Removed.
Remove support for pragma No_Run_Time. Update comments.

2016-07-04  Pascal Obry  <obry@adacore.com>

* g-forstr.ads: More documentation for the Formatted_String
support.

2016-07-04  Ed Schonberg  <schonberg@adacore.com>

* exp_ch13.adb (Expand_N_Attribute_Definition_Clause, case
'Address): If the address comes from an aspect specification
and not a source attribute definition clause, do not remove
side effects from the expression, because the expression must
be elaborated at the freeze point of the object and not at the
object declaration, because of the delayed analysis of aspect
specifications.

From-SVN: r237959

8 years ago[AArch64] Fix PR target/63874
Ramana Radhakrishnan [Mon, 4 Jul 2016 09:06:02 +0000 (09:06 +0000)]
[AArch64] Fix PR target/63874

     In this PR we have a situation where we aren't really detecting
weak references vs weak definitions. If one has a weak definition that
binds locally there's no reason not to put out PC relative
relocations.

However if you have a genuine weak reference that is known not to bind
locally it makes very little sense to put out an entry into the
literal pool which doesn't always work with DSOs and shared objects.

Tested aarch64-none-linux-gnu bootstrap and regression test with no
regressions

2016-07-04  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>

PR target/63874
* config/aarch64/aarch64.c (aarch64_classify_symbol): Fix
typo in comment.  Only force to memory if it is a weak
external reference.

2016-07-04  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>

PR target/63874
* gcc.target/aarch64/pr63874.c: New test.

From-SVN: r237957

8 years ago[AArch64] ARMv8.2 command line and feature macros support
Matthew Wahab [Mon, 4 Jul 2016 08:17:57 +0000 (08:17 +0000)]
[AArch64] ARMv8.2 command line and feature macros support

* config/aarch64/aarch64-arches.def: Add "armv8.2-a".
* config/aarch64/aarch64.h (AARCH64_FL_V8_2): New.
(AARCH64_FL_F16): New.
(AARCH64_FL_FOR_ARCH8_2): New.
(AARCH64_ISA_8_2): New.
(AARCH64_ISA_F16): New.
(TARGET_FP_F16INST): New.
(TARGET_SIMD_F16INST): New.
* config/aarch64/aarch64-option-extensions.def ("fp16"): New entry.
("fp"): Disabling "fp" also disables "fp16".
* config/aarch64/aarch64-c.c (arch64_update_cpp_builtins): Conditionally define
__ARM_FEATURE_FP16_SCALAR_ARITHMETIC and __ARM_FEATURE_FP16_VECTOR_ARITHMETIC.
* doc/invoke.texi (AArch64 Options): Document "armv8.2-a" and "fp16".

Co-Authored-By: Jiong Wang <jiong.wang@arm.com>
From-SVN: r237956