]> git.ipfire.org Git - thirdparty/gcc.git/log
thirdparty/gcc.git
6 years agoFix caching of tests for multiple variant runs and update existing target-supports...
tnfchris [Mon, 1 Oct 2018 12:34:05 +0000 (12:34 +0000)] 
Fix caching of tests for multiple variant runs and update existing target-supports tests.

Currently some target supports checks such as vect_int cache their
results in a manner that would cause them not to be rechecked when
running the same tests against a different variant in a multi variant
run.  This causes tests to be skipped or run when they shouldn't be.

there is already an existing caching mechanism in place that does the
caching correctly, but presumably these weren't used because some of these
tests originally only contained static data. e.g. only checked if the target is
aarch64*-*-* etc.

This patch changes every function that needs to do any caching at all to use
check_cached_effective_target which will cache per variant instead of globally.

For those tests that already parameterize over et_index I have created
check_cached_effective_target_indexed to handle this common case by creating a list
containing the property name and the current value of et_index.

These changes result in a much simpler implementation for most tests and a large
reduction in lines for target-supports.exp.

Regtested on
  aarch64-none-elf
  x86_64-pc-linux-gnu
  powerpc64-unknown-linux-gnu
  arm-none-eabi

and no testsuite errors. Difference would depend on your site.exp.
On arm we get about 4500 new testcases and on aarch64 the low 10s.
On PowerPC and x86_64 no changes as expected since the default exp for these
just test the default configuration.

What this means for new target checks is that they should always use either
check_cached_effective_target or check_cached_effective_target_indexed if the
result of the check is to be cached.

As an example the new vect_int looks like

proc check_effective_target_vect_int { } {
    return [check_cached_effective_target_indexed <name> {
      expr {
         <condition>
}}]
}

The debug information that was once there is now all hidden in
check_cached_effective_target, (called from check_cached_effective_target_indexed)
and so the only thing you are required to do is give it a unique cache name and a condition.

The condition doesn't need to be an if statement so simple boolean expressions are enough here:

         [istarget i?86-*-*] || [istarget x86_64-*-*]
         || ([istarget powerpc*-*-*]
     && ![istarget powerpc-*-linux*paired*])
         || ...

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264745 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-10-01 MCC CS <deswurstes@users.noreply.github.com>
rguenth [Mon, 1 Oct 2018 11:25:45 +0000 (11:25 +0000)] 
2018-10-01  MCC CS <deswurstes@users.noreply.github.com>

PR tree-optimization/87261
* match.pd: Remove trailing whitespace.
Add (x & y) | ~(x | y) -> ~(x ^ y),
(~x | y) ^ (x ^ y) -> x | ~y and (x ^ y) | ~(x | y) -> ~(x & y)

* gcc.dg/pr87261.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264744 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * c-ada-spec.c (get_underlying_decl): Get to the main type variant.
ebotcazou [Mon, 1 Oct 2018 09:39:28 +0000 (09:39 +0000)] 
* c-ada-spec.c (get_underlying_decl): Get to the main type variant.
(dump_ada_node): Add const keyword.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264738 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[ARC] Avoid specific constants to end in limm field.
claziss [Mon, 1 Oct 2018 09:37:46 +0000 (09:37 +0000)] 
[ARC] Avoid specific constants to end in limm field.

Avoid constants to end up in the limm field for particular
instructions when compiling for size.

gcc/
xxxx-xx-xx  Claudiu Zissulescu  <claziss@synopsys.com>

* config/arc/arc.md (*add_n): Clean up pattern, update instruction
constraints.
(ashlsi3_insn): Update instruction constraints.
(ashrsi3_insn): Likewise.
(rotrsi3): Likewise.
(add_shift): Likewise.
* config/arc/constraints.md (Csz): New 32 bit constraint. It
avoids placing in the limm field small constants which, otherwise,
could end into a small instruction.

testsuite/
xxxx-xx-xx  Claudiu Zissulescu  <claziss@synopsys.com>

* gcc.target/arc/tph_addx.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264737 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[ARC] Check for odd-even register when emitting double mac ops.
claziss [Mon, 1 Oct 2018 09:37:33 +0000 (09:37 +0000)] 
[ARC] Check for odd-even register when emitting double mac ops.

gcc/
Claudiu Zissulescu  <claziss@synopsys.com>

* config/arc/arc.md (maddsidi4_split): Don't use dmac if the
destination register is not odd-even.
(umaddsidi4_split): Likewise.

gcc/testsuite/
Claudiu Zissulescu  <claziss@synopsys.com>

* gcc.target/arc/tmac-3.c: New file.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264736 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-10-01 Richard Biener <rguenther@suse.de>
rguenth [Mon, 1 Oct 2018 07:48:51 +0000 (07:48 +0000)] 
2018-10-01  Richard Biener  <rguenther@suse.de>

* tree-inline.c (expand_call_inline): Store origin of fn
in BLOCK_ABSTRACT_ORIGIN for the inline BLOCK.
* tree.c (block_ultimate_origin): Simplify and do some
checking.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264734 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[Ada] use -gnatd_A to disable .ali on -fcompare-debug recompile
aoliva [Mon, 1 Oct 2018 00:27:45 +0000 (00:27 +0000)] 
[Ada] use -gnatd_A to disable .ali on -fcompare-debug recompile

for  gcc/ada/ChangeLog

* gcc-interface/lang-specs.h (default_compilers): When given
fcompare-debug-second, adjust auxbase like cc1, and pass
gnatd_A.
* gcc-interface/misc.c (flag_compare_debug): Remove variable.
(gnat_post_options): Do not set it.
* lib-writ.adb (flag_compare_debug): Remove import.
(Write_ALI): Do not test it.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264732 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoDaily bump.
gccadmin [Mon, 1 Oct 2018 00:16:42 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264731 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * config/i386/mmx.md (EMMS): New int iterator.
uros [Sun, 30 Sep 2018 22:13:36 +0000 (22:13 +0000)] 
* config/i386/mmx.md (EMMS): New int iterator.
(emms): New int attribute.
(mmx_<emms>): Macroize insn from *mmx_emms and *mmx_femms using
EMMS int iterator.  Explicitly declare clobbers.
(mmx_emms): Remove expander.
(mmx_femms): Ditto.
* config/i386/predicates.md (emms_operation): Remove predicate.
(vzeroall_pattern): New predicate.
(vzeroupper_pattern): Rename from vzeroupper_operation.
* config/i386/i386.c (ix86_avx_u128_mode_after): Use
vzeroupper_pattern and vzeroall_pattern predicates.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264727 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agogcc/
bergner [Sun, 30 Sep 2018 20:03:14 +0000 (20:03 +0000)] 
gcc/
PR rtl-optimization/86939
* ira-lives.c (make_hard_regno_born): Rename from this...
(make_hard_regno_live): ... to this.  Remove update to conflict
information.  Update function comment.
(make_hard_regno_dead): Add conflict information update.  Update
function comment.
(make_object_born): Rename from this...
(make_object_live): ... to this.  Remove update to conflict information.
Update function comment.
(make_object_dead):  Add conflict information update.  Update function
comment.
(mark_pseudo_regno_live): Call make_object_live.
(mark_pseudo_regno_subword_live): Likewise.
(mark_hard_reg_dead): Update function comment.
(mark_hard_reg_live): Call make_hard_regno_live.
(process_bb_node_lives): Likewise.
* lra-lives.c (make_hard_regno_born): Rename from this...
(make_hard_regno_live): ... to this.  Remove update to conflict
information.  Remove now uneeded check_pic_pseudo_p argument.
Update function comment.
(make_hard_regno_dead): Add check_pic_pseudo_p argument and add update
to conflict information.  Update function comment.
(mark_pseudo_live): Remove update to conflict information.  Update
function comment.
(mark_pseudo_dead): Add conflict information update.
(mark_regno_live): Call make_hard_regno_live.
(mark_regno_dead): Call make_hard_regno_dead with new arguement.
(process_bb_lives): Call make_hard_regno_live and make_hard_regno_dead.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264726 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-09-30 Paul Thomas <pault@gcc.gnu.org>
pault [Sun, 30 Sep 2018 13:52:55 +0000 (13:52 +0000)] 
2018-09-30  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/87359
* trans-array.c (gfc_is_reallocatable_lhs): Correct the problem
introduced by r264358, which prevented components of associate
names from being reallocated on assignment.

2018-09-30  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/87359
* gfortran.dg/associate_40.f90 : New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264725 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-09-30 Paul Thomas <pault@gcc.gnu.org>
pault [Sun, 30 Sep 2018 12:22:07 +0000 (12:22 +0000)] 
2018-09-30  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/70752
PR fortran/72709
* trans-array.c (gfc_conv_scalarized_array_ref): If this is a
deferred type and the info->descriptor is present, use the
info->descriptor
(gfc_conv_array_ref): Is the se expr is a descriptor type, pass
it as 'decl' rather than the symbol backend_decl.
(gfc_array_allocate): If the se string_length is a component
reference, fix it and use it for the expression string length
if the latter is not a variable type. If it is a variable do
an assignment. Make use of component ref string lengths to set
the descriptor 'span'.
(gfc_conv_expr_descriptor): For pointer assignment, do not set
the span field if gfc_get_array_span returns zero.
* trans.c (get_array_span): If the upper bound a character type
is zero, use the descriptor span if available.

2018-09-30  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/70752
PR fortran/72709
* gfortran.dg/deferred_character_25.f90 : New test.
* gfortran.dg/deferred_character_26.f90 : New test.
* gfortran.dg/deferred_character_27.f90 : New test to verify
that PR82617 remains fixed.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264724 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * doc/xml/manual/messages.xml: Switch link to www.oracle.com
gerald [Sun, 30 Sep 2018 11:41:31 +0000 (11:41 +0000)] 
* doc/xml/manual/messages.xml: Switch link to www.oracle.com
to https.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264723 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * doc/xml/manual/policy_data_structures_biblio.xml: Update
gerald [Sun, 30 Sep 2018 10:53:14 +0000 (10:53 +0000)] 
* doc/xml/manual/policy_data_structures_biblio.xml: Update
link to Microsoft Component Model Object Technologies.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264722 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-09-30 Paul Thomas <pault@gcc.gnu.org>
pault [Sun, 30 Sep 2018 07:02:49 +0000 (07:02 +0000)] 
2018-09-30  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/70149
* trans-decl.c (gfc_get_symbol_decl): A deferred character
length pointer that is initialized needs the string length to
be initialized as well.

2018-09-30  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/70149
* gfortran.dg/deferred_character_24.f90 : New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264721 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoDaily bump.
gccadmin [Sun, 30 Sep 2018 00:16:20 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264720 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoi386: Use TImode for BLKmode values in 2 integer registers
hjl [Sat, 29 Sep 2018 21:59:59 +0000 (21:59 +0000)] 
i386: Use TImode for BLKmode values in 2 integer registers

When passing and returning BLKmode values in 2 integer registers, use
1 TImode register instead of 2 DImode registers. Otherwise, V1TImode
may be used to move and store such BLKmode values, which prevent RTL
optimizations.

gcc/

PR target/87370
* config/i386/i386.c (construct_container): Use TImode for
BLKmode values in 2 integer registers.

gcc/testsuite/

PR target/87370
* gcc.target/i386/pr87370.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264716 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-09-29 Paul Thomas <pault@gcc.gnu.org>
pault [Sat, 29 Sep 2018 17:17:09 +0000 (17:17 +0000)] 
2018-09-29  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/65667
* trans-expr.c (gfc_trans_assignment_1): If there is dependency
fix the rse stringlength.

2018-09-29  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/65667
* gfortran.dg/dependency_52.f90 : New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264715 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * builtins.c (unterminated_array): Pass in c_strlen_data * to
law [Sat, 29 Sep 2018 16:06:09 +0000 (16:06 +0000)] 
* builtins.c (unterminated_array): Pass in c_strlen_data * to
c_strlen rather than just a tree *.
(c_strlen): Change NONSTR argument to a c_strlen_data pointer.
Update recursive calls appropriately.  If caller did not provide a
suitable data pointer, create a local one.  When a non-terminated
string is discovered, bubble up information about the string via the
c_strlen_data object.
* builtins.h (c_strlen): Update prototype.
(c_strlen_data): New structure.
* gimple-fold.c (get_range_strlen): Update calls to c_strlen.
For a type 2 call, if c_strlen indicates a non-terminated string
use the length of the non-terminated string.
(gimple_fold_builtin_stpcpy): Update calls to c_strlen.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264712 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago PR target/87467
jakub [Sat, 29 Sep 2018 16:04:09 +0000 (16:04 +0000)] 
PR target/87467
* config/i386/avx512fintrin.h (_mm512_abs_pd, _mm512_mask_abs_pd): Use
__m512d type for __A argument rather than __m512.

* gcc.target/i386/avx512f-abspd-1.c (SIZE): Divide by two.
(CALC): Use double instead of float.
(TEST): Adjust to test _mm512_abs_pd and _mm512_mask_abs_pd rather than
_mm512_abs_ps and _mm512_mask_abs_ps.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264711 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * doc/xml/gnu/fdl-1.3.xml: The Free Software Foundation web
gerald [Sat, 29 Sep 2018 11:25:57 +0000 (11:25 +0000)] 
* doc/xml/gnu/fdl-1.3.xml: The Free Software Foundation web
site now uses https. Also omit the unnecessary trailing slash.
* doc/xml/gnu/gpl-3.0.xml: Ditto.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264710 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoDaily bump.
gccadmin [Sat, 29 Sep 2018 00:16:19 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264709 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * match.pd (simple_comparison): Don't optimize if either operand is
danglin [Fri, 28 Sep 2018 23:13:10 +0000 (23:13 +0000)] 
* match.pd (simple_comparison): Don't optimize if either operand is
a function pointer when target needs function pointer canonicalization.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264705 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agors5000: Delete all specific asm_cpu_* and ASM_CPU_*_SPEC
segher [Fri, 28 Sep 2018 22:30:45 +0000 (22:30 +0000)] 
rs5000: Delete all specific asm_cpu_* and ASM_CPU_*_SPEC

Now that e.g. ASM_CPU_POWER5_SPEC is always "-mpower5" it is clearer and
easier to just write that directly.

* config/rs6000/driver-rs6000.c (asm_names): Adjust the entries for
power5 .. power9 to remove indirection.
* config/rs6000/rs6000.h (ASM_CPU_POWER5_SPEC, ASM_CPU_POWER6_SPEC,
ASM_CPU_POWER7_SPEC, ASM_CPU_POWER8_SPEC, ASM_CPU_POWER9_SPEC,
ASM_CPU_476_SPEC): Delete.
(ASM_CPU_SPEC): Adjust.
(EXTRA_SPECS): Delete asm_cpu_power5, asm_cpu_power6, asm_cpu_power7,
asm_cpu_power8, asm_cpu_power9, asm_cpu_476.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264704 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agors6000: Delete HAVE_AS_DCI
segher [Fri, 28 Sep 2018 22:02:17 +0000 (22:02 +0000)] 
rs6000: Delete HAVE_AS_DCI

Every supported assembler supports these instructions.  Committing.

* config.in: Delete HAVE_AS_DCI.
* config/powerpcspe/powerpcspe.h: Treat HAVE_AS_DCI as always true.
* config/rs6000/rs6000.h: Ditto.
* configure.ac: Delete HAVE_AS_DCI.
* configure: Regenerate.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264703 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agors6000: Delete HAVE_AS_LWSYNC and TARGET_LWSYNC_INSTRUCTION
segher [Fri, 28 Sep 2018 21:50:34 +0000 (21:50 +0000)] 
rs6000: Delete HAVE_AS_LWSYNC and TARGET_LWSYNC_INSTRUCTION

All supported assemblers know lwsync, so we never need to generate this
instruction using the .long escape hatch.

* config.in (HAVE_AS_LWSYNC): Delete.
* config/powerpcspe/powerpcspe.h (TARGET_LWSYNC_INSTRUCTION): Delete.
* config/powerpcspe/sync.md (*lwsync): Always generate lwsync, never
do it as a .long .
* config/rs6000/rs6000.h (TARGET_LWSYNC_INSTRUCTION): Delete.
* config/rs6000/sync.md (*lwsync): Always generate lwsync, never do it
as a .long .
* configure.ac: Delete HAVE_AS_LWSYNC.
* configure: Regenerate.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264702 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * calls.c (expand_call): Try to do a tail call for thunks at -O0 too.
ebotcazou [Fri, 28 Sep 2018 21:20:53 +0000 (21:20 +0000)] 
* calls.c (expand_call): Try to do a tail call for thunks at -O0 too.
* cgraph.h (struct cgraph_thunk_info): Add indirect_offset.
(cgraph_node::create_thunk): Add indirect_offset parameter.
(thunk_adjust): Likewise.
* cgraph.c (cgraph_node::create_thunk): Add indirect_offset parameter
and initialize the corresponding field with it.
(cgraph_node::dump): Dump indirect_offset field.
* cgraphclones.c (duplicate_thunk_for_node): Deal with indirect_offset.
* cgraphunit.c (cgraph_node::analyze): Be prepared for external thunks.
(thunk_adjust): Add indirect_offset parameter and deal with it.
(cgraph_node::expand_thunk): Deal with the indirect_offset field and
pass it to thunk_adjust.  Do not call the target hook if it's non-zero
or if the thunk is external or local.  Fix formatting.  Do not chain
the RESULT_DECL to BLOCK_VARS.  Pass the static chain to the target,
if any, in the GIMPLE representation.
* ipa-icf.c (sem_function::equals_wpa): Deal with indirect_offset.
* lto-cgraph.c (lto_output_node): Write indirect_offset field.
(input_node): Read indirect_offset field.
* tree-inline.c (expand_call_inline): Pass indirect_offset field in the
call to thunk_adjust.
* tree-nested.c (struct nesting_info): Add thunk_p field.
(create_nesting_tree): Set it.
(convert_all_function_calls): Copy static chain from targets to thunks.
(finalize_nesting_tree_1): Return early for thunks.
(unnest_nesting_tree_1): Do not finalize thunks.
(gimplify_all_functions): Do not gimplify thunks.
cp/
* method.c (use_thunk): Adjust call to cgraph_node::create_thunk.
ada/
* gcc-interface/decl.c (is_cplusplus_method): Do not require C++
convention on Interfaces.
* gcc-interface/trans.c (Subprogram_Body_to_gnu): Try to create a
bona-fide thunk and hand it over to the middle-end.
(get_controlling_type): New function.
(use_alias_for_thunk_p): Likewise.
(thunk_labelno): New static variable.
(make_covariant_thunk): New function.
(maybe_make_gnu_thunk): Likewise.
* gcc-interface/utils.c (finish_subprog_decl): Set DECL_CONTEXT of the
result DECL here instead of...
(end_subprog_body): ...here.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264701 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-09-28 François Dumont <fdumont@gcc.gnu.org>
fdumont [Fri, 28 Sep 2018 20:26:29 +0000 (20:26 +0000)] 
2018-09-28  François Dumont  <fdumont@gcc.gnu.org>

* include/debug/functions.h
(__foreign_iterator_aux3(const _Safe_iterator<>&, const _InputeIter&,
const _InputIter&, __true_type)): Use empty() rather than begin() ==
end().

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264699 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoopt-suggestions.c: fix minor memory leak
dmalcolm [Fri, 28 Sep 2018 17:49:48 +0000 (17:49 +0000)] 
opt-suggestions.c: fix minor memory leak

gcc/ChangeLog:
* opt-suggestions.c (option_proposer::build_option_suggestions):
Release "option_values".

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264698 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agodumpfile.c: use prefixes other than 'note: ' for MSG_{OPTIMIZED_LOCATIONS|MISSED_OPTI...
dmalcolm [Fri, 28 Sep 2018 17:40:04 +0000 (17:40 +0000)] 
dumpfile.c: use prefixes other than 'note: ' for MSG_{OPTIMIZED_LOCATIONS|MISSED_OPTIMIZATION}

As noted at Cauldron, dumpfile.c currently emits "note: " for all kinds
of dump message, so that (after filtering) there's no distinction between
MSG_OPTIMIZED_LOCATIONS vs MSG_NOTE vs MSG_MISSED_OPTIMIZATION in the
textual output.

This patch changes dumpfile.c so that the "note: " varies to show
which MSG_* was used, with the string prefix matching that used for
filtering in -fopt-info, hence e.g.
  directive_unroll_3.f90:24:0: optimized: loop unrolled 7 times
and:
  pr19210-1.c:24:3: missed: missed loop optimization: niters analysis ends up with assumptions.

The patch adds "dg-optimized" and "dg-missed" directives for use
in the testsuite for matching these (with -fopt-info on stderr; they
don't help for dumpfile output).

The patch also converts the various problem-reporting dump messages
in coverage.c:get_coverage_counts to use MSG_MISSED_OPTIMIZATION
rather than MSG_OPTIMIZED_LOCATIONS, as the docs call out "optimized"
as
  "information when an optimization is successfully applied",
whereas "missed" is for
  "information about missed optimizations",
and problems with profile data seem to me to fall much more into the
latter category than the former.  Doing so requires converting a few
tests from using "-fopt-info" (which is implicitly
"-fopt-info-optimized-optall") to getting the "missed" optimizations.
Changing them to "-fopt-info-missed" added lots of noise from the
vectorizer, so I changed these tests to use "-fopt-info-missed-ipa".

gcc/ChangeLog:
* coverage.c (get_coverage_counts): Convert problem-reporting dump
messages from MSG_OPTIMIZED_LOCATIONS to MSG_MISSED_OPTIMIZATION.
* dumpfile.c (kind_as_string): New function.
(dump_loc): Rather than a hardcoded prefix of "note: ", use
kind_as_string to vary the prefix based on dump_kind.
(selftest::test_capture_of_dump_calls): Update for above.

gcc/testsuite/ChangeLog:
* c-c++-common/unroll-1.c: Update expected output from "note" to
"optimized".
* c-c++-common/unroll-2.c: Likewise.
* c-c++-common/unroll-3.c: Likewise.
* g++.dg/tree-ssa/dom-invalid.C: Update expected output from
dg-message to dg-missed.  Convert param from -fopt-info to
-fopt-info-missed-ipa.
* g++.dg/tree-ssa/pr81408.C: Update expected output from
dg-message to dg-missed.
* g++.dg/vect/slp-pr56812.cc: Update expected output from
dg-message to dg-optimized.
* gcc.dg/pr26570.c: Update expected output from dg-message to
dg-missed.  Convert param from -fopt-info to
-fopt-info-missed-ipa.
* gcc.dg/pr32773.c: Likewise.
* gcc.dg/tree-ssa/pr19210-1.c: Update expected output from
dg-message to dg-missed.
* gcc.dg/unroll-2.c: Update expected output from dg-message to
dg-optimized.
* gcc.dg/vect/nodump-vect-opt-info-1.c: Likewise.  Convert param
from -fopt-info to -fopt-info-vec.
* gfortran.dg/directive_unroll_1.f90: Update expected output from
"note" to "optimized".
* gfortran.dg/directive_unroll_2.f90: Likewise.
* gfortran.dg/directive_unroll_3.f90: Likewise.
* gnat.dg/unroll4.adb: Likewise.
* lib/gcc-dg.exp (dg-optimized): New procedure.
(dg-missed): New procedure.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264697 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoFix gcc.dg/torture/fp-int-convert.h for excess precision after PR c/87390.
jsm28 [Fri, 28 Sep 2018 15:45:51 +0000 (15:45 +0000)] 
Fix gcc.dg/torture/fp-int-convert.h for excess precision after PR c/87390.

As reported in
<https://gcc.gnu.org/ml/gcc-patches/2018-09/msg01684.html>, some
fp-int-convert tests fail after my fix for PR c/87390, in Arm /
AArch64 configurations where _Float16 uses excess precision by
default.  The issue is comparisons of the results of a conversion by
assignment (compile-time or run-time) from integer to floating-point
with the original integer value; previously this would compare against
an implicit compile-time conversion to the target type, but now, for
C11 and later, it compares against an implicit compile-time conversion
to a possibly wider evaluation format.  This is fixed by adding casts
to the test so that the comparison is with a value converted
explicitly to the target type at compile time, without any use of a
wider evaluation format.

PR c/87390
* gcc.dg/torture/fp-int-convert.h (TEST_I_F_VAL): Convert integer
values explicitly to target type for comparison.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264696 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * config/i386/i386.h (SSE_REGNO): Fix check for FIRST_REX_SSE_REG.
uros [Fri, 28 Sep 2018 15:30:46 +0000 (15:30 +0000)] 
* config/i386/i386.h (SSE_REGNO): Fix check for FIRST_REX_SSE_REG.
(GET_SSE_REGNO): Rename from SSE_REGNO.  Update all uses for rename.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264695 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * config/i386/i386.h (CC_REGNO): Remove FPSR_REGS.
uros [Fri, 28 Sep 2018 15:15:57 +0000 (15:15 +0000)] 
* config/i386/i386.h (CC_REGNO): Remove FPSR_REGS.
* config/i386/i386.c (ix86_fixed_condition_code_regs): Use
INVALID_REGNUM instead of FPSR_REG.
(ix86_md_asm_adjust): Do not clobber FPSR_REG.
* config/i386/i386.md: Update comment of FP compares.
(fldenv): Do not clobber FPSR_REG.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264694 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago Fix date in ChangeLog file.
sje [Fri, 28 Sep 2018 14:46:21 +0000 (14:46 +0000)] 
Fix date in ChangeLog file.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264693 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-09-28 Steve Ellcey <sellcey@cavium.com>
sje [Fri, 28 Sep 2018 14:44:15 +0000 (14:44 +0000)] 
2018-09-28  Steve Ellcey  <sellcey@cavium.com>

PR testsuite/87433
* gcc.target/aarch64/ashltidisi.c: Expect 3 asr instructions
instead of 4.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264692 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-09-28 Steve Ellcey <sellcey@cavium.com>
sje [Fri, 28 Sep 2018 14:41:45 +0000 (14:41 +0000)] 
2018-09-28  Steve Ellcey  <sellcey@cavium.com>

PR testsuite/87433
* gcc.dg/zero_bits_compound-1.c: Do not run on aarch64*-*-*.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264691 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago compiler: fix parsing issue with non-ASCII first package char
ian [Fri, 28 Sep 2018 13:50:44 +0000 (13:50 +0000)] 
compiler: fix parsing issue with non-ASCII first package char

    Fix a bug in the parser code that decides whether a given name should
    be considered exported or not. The function Lex::is_exported_name
    (which assumes that its input is a mangled name) was being called on
    non-mangled (raw utf-8) names in various places. For the bug in
    question this caused an imported package to be registered under the
    wrong name. To fix the issue, rename 'Lex::is_exported_name' to
    'Lex::is_exported_mangled_name', and add a new 'Lex::is_exported_name'
    that works on utf-8 strings.

    Fixes golang/go#27836.

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

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264690 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-09-28 Richard Biener <rguenther@suse.de>
rguenth [Fri, 28 Sep 2018 11:33:29 +0000 (11:33 +0000)] 
2018-09-28  Richard Biener  <rguenther@suse.de>

* tree.h (BLOCK_ORIGIN): New.
* omp-expand.c (grid_expand_target_grid_body): Assign
BLOCK_ORIGIN to BLOCK_ABSTRACT_ORIGIN.
* tree-inline.c (remap_block): Likewise.

* auto-profile.c (get_function_decl_from_block): Simplify
by eliding the BLOCK_ABSTRACT_ORIGIN chasing.
* langhooks.c (lhd_print_error_function): Likewise.
* optinfo-emit-json.cc (optrecord_json_writer::inlining_chain_to):
Likewise.
* tree-ssa-live.c (remove_unused_scope_block_p): Likewise.
* tree.c (block_nonartificial_location): Likewise.
(block_ultimate_origin): Likewise.
* tree-pretty-print.c (percent_K_format): Likewise.  Remove
no longer needed LTO case.

cp/
* error.c (cp_print_error_function): Simplify by eliding
the BLOCK_ABSTRACT_ORIGIN chasing.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264689 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoSimplify vec_merge according to the mask.
ams [Fri, 28 Sep 2018 10:54:34 +0000 (10:54 +0000)] 
Simplify vec_merge according to the mask.

This patch was part of the original patch we acquired from Honza and Martin.

It simplifies nested vec_merge operations using the same mask.

Self-tests are included.

2018-09-28  Andrew Stubbs  <ams@codesourcery.com>
    Jan Hubicka  <jh@suse.cz>
    Martin Jambor  <mjambor@suse.cz>

* simplify-rtx.c (simplify_merge_mask): New function.
(simplify_ternary_operation): Use it, also see if VEC_MERGEs with the
same masks are used in op1 or op2.
(test_vec_merge): New function.
(test_vector_ops): Call test_vec_merge.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264688 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * config/sparc/sparc-protos.h (sparc_branch_cost): Declare.
ebotcazou [Fri, 28 Sep 2018 08:47:20 +0000 (08:47 +0000)] 
* config/sparc/sparc-protos.h (sparc_branch_cost): Declare.
* config/sparc/sparc.h (BRANCH_COST): Call sparc_branch_cost.
* config/sparc/sparc.c (struct processor_costs): Add branch_cost field.
(cypress_costs): Set it.
(supersparc_costs): Likewise.
(hypersparc_costs): Likewise.
(leon_cost): Likewise.
(leon3_costs): Likewise.
(sparclet_costs): Likewise.
(ultrasparc_costs): Likewise.
(ultrasparc_costs): Likewise.
(niagara_costs): Likewise.
(niagara2_costs): Likewise.
(niagara3_costs): Likewise.
(niagara4_costs): Likewise.
(niagara7_costs): Likewise.
(m8_costs): Likewise.
(TARGET_CAN_FOLLOW_JUMP): Define.
(pass_work_around_errata::gate): Minor tweak.
(sparc_option_override): Remove MASK_FSMULD mask for V7 processors.
Do not set both MASK_VIS4 and MASK_VIS4B for M8 processor.
Automaitcally clear MASK_FSMULD mask for V7 processors.
(sparc_can_follow_jump): New static function.
(output_ubranch): Deal with CROSSING_JUMP_P.
(sparc_use_sched_lookahead): Rewrite using switch statement.
(sparc_issue_rate): Reorder.
(sparc_branch_cost): New function.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264687 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoDaily bump.
gccadmin [Fri, 28 Sep 2018 00:16:43 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264685 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agors6000: Fix one more vec_splat case
segher [Thu, 27 Sep 2018 22:56:37 +0000 (22:56 +0000)] 
rs6000: Fix one more vec_splat case

This fixes the one remaining case where the stricter vec_splat checking
complains in the testsuite.

* g++.dg/ext/altivec-6.C: Change the vec_splat second argument to a
valid value, in the "vector bool int" case.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264681 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agogcc/ChangeLog:
msebor [Thu, 27 Sep 2018 22:55:23 +0000 (22:55 +0000)] 
gcc/ChangeLog:

* tree.h (tree_to_shwi): Add attribute nonnull and pure.
(tree_to_poly_int64, tree_to_uhwi, tree_to_poly_uint64): Same.
(int_fits_type_p): Same.

gcc/ada/ChangeLog:

* gcc-interface/utils.c (make_packable_type): Introduce a temporary
to avoid -Wnonnull.
(unchecked_convert): Same.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264680 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-09-27 Jinsong Ji <jji@us.ibm.com>
wschmidt [Thu, 27 Sep 2018 20:48:53 +0000 (20:48 +0000)] 
2018-09-27  Jinsong Ji  <jji@us.ibm.com>
    Bill Schmidt  <wschmidt@linux.ibm.com>

* config/rs6000/mmintrin.h (_mm_unpackhi_pi8): Change __int128_t
to __int128.
(_mm_unpacklo_pi8): Likewise.
(_mm_add_pi8): Likewise.
(_mm_add_pi16): Likewise.
(_mm_add_pi32): Likewise.
(_mm_sub_pi8): Likewise.
(_mm_sub_pi16): Likewise.
(_mm_sub_pi32): Likewise.
(_mm_cmpgt_pi8): Likewise.
(_mm_cmpeq_pi16): Likewise.
(_mm_cmpgt_pi16): Likewise.
(_mm_cmpeq_pi32): Likewise.
(_mm_cmpgt_pi32): Likewise.
(_mm_adds_pi8): Likewise.
(_mm_adds_pi16): Likewise.
(_mm_adds_pu8): Likewise.
(_mm_adds_pu16): Likewise.
(_mm_subs_pi8): Likewise.
(_mm_subs_pi16): Likewise.
(_mm_subs_pu8): Likewise.
(_mm_subs_pu16): Likewise.
(_mm_madd_pi16): Likewise.
(_mm_mulhi_pi16): Likewise.
(_mm_mullo_pi16): Likewise.
(_mm_sll_pi16): Likewise.
(_mm_sra_pi16): Likewise.
(_mm_srl_pi16): Likewise.
(_mm_set1_pi16): Likewise.
(_mm_set1_pi8): Likewise.
* config/rs6000/xmmintrin.h (_mm_max_pi16): Likewise.
(_mm_max_pu8): Likewise.
(_mm_min_pi16): Likewise.
(_mm_min_pu8): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264678 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * config/i386/i386.md (UNSPEC_FLDCW): Remove.
uros [Thu, 27 Sep 2018 20:21:06 +0000 (20:21 +0000)] 
* config/i386/i386.md (UNSPEC_FLDCW): Remove.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264677 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * config/i386/i386.md (FPSR_REG): Remove.
uros [Thu, 27 Sep 2018 20:04:15 +0000 (20:04 +0000)] 
* config/i386/i386.md (FPSR_REG): Remove.
(x86_fnstcw_1): Use (const_int 0) instead of FPCR_REG.
(x86_fldcw_1): Remove insn pattern.
(fnstenv): Do not clobber FPCR_REG.
(fldenv): Ditto.
* config/i386/i386.h (FIXED_REGISTERS) Remove fpsr register.
(CALL_USED_REGISTERS): Ditto.
(REG_ALLOC_ORDER): Ditto.
(REG_CLASS_CONTENTS): Ditto.
(HI_REGISTER_NAMES): Ditto.
(ADDITIONAL_REGISTER_NAMES): Use defines instead
of numerical constants.
* config/i386/i386.c (regclass_map): Remove fpsr register.
(dbx_register_map): Ditto.
(dbx64_register_map): Ditto.
(svr4_dbx_register_map): Ditto.
(print_reg): Do not handle FPCR_REG.

testsuite/ChangeLog:

* gcc.dg/rtl/x86_64/dfinit.c: Update scan-rtl-dump string.
* gcc.dg/rtl/x86_64/times-two.c.before-df.c: Ditto.
* gcc.target/i386/pr79804.c (foo): Use register "19", not "20".

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264676 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agors6000: Delete many HAVE_AS_* (PR87149)
segher [Thu, 27 Sep 2018 19:54:09 +0000 (19:54 +0000)] 
rs6000: Delete many HAVE_AS_* (PR87149)

This deletes most HAVE_AS_* that determine if the assembler supports
some ISA level (and also HAVE_AS_MFPGPR and HAVE_AS_DFP).

These are not useful: we will only generate an instruction that requires
some newer ISA if the user specifically asked for it (with -mcpu=, say).
If the assembler cannot handle that, it is fine if it gives an error.

They also hurt: it increases the number of possible situations that all
need handling and all need testing.  We do not handle all cases, and
obviously do not test all either.

This patch removes:

HAVE_AS_POPCNTB (power5,  2.02)
HAVE_AS_FPRND   (power5+, 2.04)
HAVE_AS_CMPB    (power6,  2.05)
HAVE_AS_POPCNTD (power7,  2.06)
HAVE_AS_POWER8  (power8,  2.07)
HAVE_AS_POWER9  (power9,  3.0)

HAVE_AS_DFP     (power6,  2.05, server)
HAVE_AS_MFPGPR  (power6x but not later, not arch)

PR target/87149
* config.in (HAVE_AS_CMPB, HAVE_AS_DFP, HAVE_AS_FPRND, HAVE_AS_MFPGPR,
HAVE_AS_POPCNTB, HAVE_AS_POPCNTD, HAVE_AS_POWER8, HAVE_AS_POWER9):
Delete, always treat as true.
* config/powerpcspe/powerpcspe.c (rs6000_option_override_internal):
Ditto.  Simplify remaining code.
* config/powerpcspe/powerpcspe.h: Ditto.
* config/rs6000/rs6000.c (rs6000_option_override_internal): Ditto.
Simplify remaining code.
(rs6000_expand_builtin): Ditto.
* config/rs6000/rs6000.h: Ditto.
* configure.ac: Ditto.
* configure: Regenerate.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264675 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-09-27 Martin Liska <mliska@suse.cz>
rguenth [Thu, 27 Sep 2018 14:53:35 +0000 (14:53 +0000)] 
2018-09-27  Martin Liska  <mliska@suse.cz>

* coverage.c (get_coverage_counts): Revert the formatting
of missing profile opt info.

* g++.dg/pr60518.C: Add -Wno-missing-profile.
* g++.dg/torture/pr59265.C: Likewise.
* g++.dg/tree-prof/morefunc.C: Likewise.
* g++.dg/tree-ssa/dom-invalid.C: Likewise.
* gcc.dg/pr26570.c: Likewise.
* gcc.dg/pr32773.c: Likewise.
* gcc.dg/pr40209.c: Likewise.
* gcc.dg/pr51957-1.c: Likewise.
* gcc.dg/pr80747.c: Likewise.
* gcc.target/aarch64/pr62262.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264669 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-09-27 Richard Biener <rguenther@suse.de>
rguenth [Thu, 27 Sep 2018 14:17:52 +0000 (14:17 +0000)] 
2018-09-27  Richard Biener  <rguenther@suse.de>

PR testsuite/87451
* gcc.dg/debug/dwarf2/inline5.c: Deal with different comment characters.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264668 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-09-27 Richard Biener <rguenther@suse.de>
rguenth [Thu, 27 Sep 2018 14:10:45 +0000 (14:10 +0000)] 
2018-09-27  Richard Biener  <rguenther@suse.de>

PR debug/37801
PR debug/87440
* dwarf2out.c (set_block_origin_self): Do not mark outermost
block as we do not output that.
(gen_inlined_subroutine_die): Elide the originally outermost
block, matching what we do for concrete instances.
(decls_for_scope): Add parameter specifying whether to recurse
to subblocks.

* gcc.dg/debug/dwarf2/inline2.c: Adjust.
* gcc.dg/debug/dwarf2/inline4.c: New testcase.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264667 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[pr82089] Don't sign-extend SFV 1 in BImode
ams [Thu, 27 Sep 2018 11:15:48 +0000 (11:15 +0000)] 
[pr82089] Don't sign-extend SFV 1 in BImode

This is an update of the patch posted to PR82089 long ago.  We ran into the
same bug on GCN, so we need this fixed as part of this series.

2018-09-27  Andrew Stubbs  <ams@codesourcery.com>
            Tom de Vries  <tom@codesourcery.com>

PR 82089

gcc/
* expmed.c (emit_cstore): Fix handling of result_mode == BImode and
STORE_FLAG_VALUE == 1.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264666 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-09-27 Paolo Carlini <paolo.carlini@oracle.com>
paolo [Thu, 27 Sep 2018 09:53:08 +0000 (09:53 +0000)] 
2018-09-27  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/67544
* g++.dg/concepts/pr67544.C: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264665 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago/cp
paolo [Thu, 27 Sep 2018 08:33:41 +0000 (08:33 +0000)] 
/cp
2018-09-27  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/84940
* semantics.c (finish_unary_op_expr): Check return value of
build_x_unary_op for error_mark_node.

/testsuite
2018-09-27  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/84940
* g++.dg/expr/unary4.C: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264664 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoS/390: Implement speculation barrier
krebbel [Thu, 27 Sep 2018 08:03:42 +0000 (08:03 +0000)] 
S/390: Implement speculation barrier

gcc/ChangeLog:

2018-09-27  Andreas Krebbel  <krebbel@linux.ibm.com>

* config/s390/s390.md (PPA_TX_ABORT, PPA_OOO_BARRIER): New
constant definitions.
("tx_assist"): Replace magic number with PPA_TX_ABORT.
("*ppa"): Enable pattern also for -march=zEC12 -mno-htm.
("speculation_barrier"): New expander definition.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264663 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoDaily bump.
gccadmin [Thu, 27 Sep 2018 00:16:55 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264661 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-09-26 Indu Bhagat <indu.bhagat@oracle.com>
qinzhao [Wed, 26 Sep 2018 22:29:54 +0000 (22:29 +0000)] 
2018-09-26  Indu Bhagat  <indu.bhagat@oracle.com>

PR gcov-profile/86957
* common.opt: New warning option -Wmissing-profile.
* coverage.c (get_coverage_counts): Add warning for missing .gcda file.
* doc/invoke.texi: Document -Wmissing-profile.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264657 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoSupport excess precision for integer / floating-point comparisons (PR c/87390).
jsm28 [Wed, 26 Sep 2018 21:14:16 +0000 (21:14 +0000)] 
Support excess precision for integer / floating-point comparisons (PR c/87390).

In C11, implicit conversions from integer to floating-point types
produce results with the range and precision of the corresponding
evaluation format rather than only those of the type implicitly
converted to.  This patch implements that case of C11 excess precision
semantics in the case of a comparison between integer and
floating-point types, previously missed when implementing other cases
of excess precision for such implicit conversions.  As with other such
fixes, this patch conservatively follows the reading of C99 where
conversions from integer to floating-point do not produce results with
excess precision and so the change is made for C11 mode only.

Bootstrapped with no regressions on x86_64-pc-linux-gnu.

gcc/c:
PR c/87390
* c-typeck.c (build_binary_op): Use excess precision for
comparisons of integers and floating-point for C11 and later.

gcc/testsuite:
PR c/87390
* gcc.target/i386/excess-precision-9.c,
gcc.target/i386/excess-precision-10.c: New tests.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264656 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoRISC-V: Add missing negate patterns.
wilson [Wed, 26 Sep 2018 21:06:01 +0000 (21:06 +0000)] 
RISC-V: Add missing negate patterns.

gcc/
* config/riscv/riscv.md (subsi3_extended2): Add J constraint.
(negdi2, negsi2, negsi2_extended, negsi2_extended2): New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264655 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agogcc/ChangeLog:
msebor [Wed, 26 Sep 2018 19:03:26 +0000 (19:03 +0000)] 
gcc/ChangeLog:

* tree.c (zerop): Change return type to bool.
(integer_zerop, integer_onep, integer_each_onep): Same.
(integer_all_onesp, integer_minus_onep, integer_pow2p): Same.
(integer_nonzerop, integer_truep, tree_ctz, real_zerop): Same.
(real_onep, real_minus_onep, chain_index): Same.
(print_type_hash_statistics, type_list_equal): Same.
* tree.h (zerop): Same.
(zerop, integer_zerop, integer_onep, integer_each_onep): Same.
(integer_all_onesp, integer_minus_onep, integer_pow2p): Same.
(integer_nonzerop, integer_truep, tree_ctz, real_zerop): Same.
(real_onep, real_minus_onep, chain_index): Same.
(print_type_hash_statistics, type_list_equal): Same.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264653 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoRISC-V: Delete obsolete MIPS comment.
wilson [Wed, 26 Sep 2018 18:42:19 +0000 (18:42 +0000)] 
RISC-V: Delete obsolete MIPS comment.

gcc/
* config/riscv/riscv.h (FUNCTION_ARG_REGNO_P): Fix comment.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264652 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago PR target/87414
jakub [Wed, 26 Sep 2018 17:00:49 +0000 (17:00 +0000)] 
PR target/87414
* config/i386/i386.c: Include debug.h and dwarf2out.h.
(output_indirect_thunk): Emit DW_CFA_def_cfa_offset after the
call.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264651 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoFix AArch64 ILP32 ICE.
ams [Wed, 26 Sep 2018 15:59:13 +0000 (15:59 +0000)] 
Fix AArch64 ILP32 ICE.

Ensure that the address really is the correct mode for an address.

2018-09-25  Andrew Stubbs  <ams@codesourcery.com>

gcc/
* builtins.c (get_builtin_sync_mem): Force address mode conversion.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264650 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * config/i386/crtprec.c (set_precision): Use fnstcw instead of fstcw.
uros [Wed, 26 Sep 2018 15:25:15 +0000 (15:25 +0000)] 
* config/i386/crtprec.c (set_precision): Use fnstcw instead of fstcw.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264649 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * config/i386/i386.h (enum reg_class): Remove FP_TOP_SSE_REGS
uros [Wed, 26 Sep 2018 15:17:32 +0000 (15:17 +0000)] 
* config/i386/i386.h (enum reg_class): Remove FP_TOP_SSE_REGS
and FP_SECOND_SSE_REGS.
(REG_CLASS_NAMES): Ditto.
(REG_CLASS_CONTENTS): Ditto.
* config/i386/i386.c (ix86_preferred_reload_class) Do not handle
FP_TOP_SSE_REGS and FP_SECOND_SSE_REGS classes.
(ix86_preferred_output_reload_class): Ditto.
* config/i386/i386.md (fix_trunc<mode>_i387_fisttp): Change "=&1f"
clobber constraint to "=&f".
(fix_truncdi_i387): Ditto.
(lrintxfdi2): Ditto.
(fistdi2_<rounding>): Ditto.
(fpremxf4_i387): Change "=u" constraint to "=f".
(fprem1xf4_i387): Ditto.
(sincosxf3): Ditto.
(fptanxf4_i387): Ditto.
(fxtractxf3_i387): Ditto.
(fscalexf4_i387): Ditto.
(atan2xf3): Change "u" constraint to "f".
(fyl2xxf3_i387): Ditto.
(fyl2xp1xf3_i387): Ditto.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264648 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago syscall: don't assume we have a GETEUID system call
ian [Wed, 26 Sep 2018 15:17:30 +0000 (15:17 +0000)] 
syscall: don't assume we have a GETEUID system call

    On Alpha GNU/Linux there is no geteuid system call, there is only
    getresuid.  The raw geteuid system call is only used for testing, so
    just skip the test if it's not available.

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

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264647 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * ChangeLog: Add missing PR number.
uros [Wed, 26 Sep 2018 15:00:00 +0000 (15:00 +0000)] 
* ChangeLog: Add missing PR number.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264646 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago PR target/87439
uros [Wed, 26 Sep 2018 14:55:59 +0000 (14:55 +0000)] 
PR target/87439
* config/i386/i386.h (NUM_MODES_FOR_MODE_SWITCHING): Update
for removed I387_MASK_PM entity.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264645 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago Revert
law [Wed, 26 Sep 2018 14:50:03 +0000 (14:50 +0000)] 
Revert
2018-09-26  Alexey Neyman  <stilor@att.net>

* graphite.h: Include <isl/id.h> and <isl/space.h>; these
headers are no longer pulled in by <isl/val.h>.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264644 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-09-26 Richard Biener <rguenther@suse.de>
rguenth [Wed, 26 Sep 2018 14:35:48 +0000 (14:35 +0000)] 
2018-09-26  Richard Biener  <rguenther@suse.de>

PR debug/87443
* dwarf2out.c (gen_lexical_block_die): Do not equate inline
or concrete instance DIE to the tree.  Create abstract origin
attributes also for concrete instances.

* gcc.dg/debug/dwarf2/inline5.c: New testcase.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264643 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * graphite.h: Include <isl/id.h> and <isl/space.h>; these
law [Wed, 26 Sep 2018 14:09:03 +0000 (14:09 +0000)] 
* graphite.h: Include <isl/id.h> and <isl/space.h>; these
headers are no longer pulled in by <isl/val.h>.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264642 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoIgnore chmod errors during mostlyclean-local, check-go-tool
ro [Wed, 26 Sep 2018 12:56:09 +0000 (12:56 +0000)] 
Ignore chmod errors during mostlyclean-local, check-go-tool

* Makefile.am (mostlyclean-local): Ignore chmod errors.
(check-go-tool): Likewise.
* Makefile.in: Regenerate.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264641 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[PR 87347] Prevent segfaults if TYPE_ARG_TYPES is NULL
jamborm [Wed, 26 Sep 2018 11:58:18 +0000 (11:58 +0000)] 
[PR 87347] Prevent segfaults if TYPE_ARG_TYPES is NULL

2018-09-26  Martin Jambor  <mjambor@suse.cz>

PR c/87347
c/
* c-parser.c (warn_for_abs): Bail out if TYPE_ARG_TYPES is NULL.  Fix
        comment.

testsuite/
* gcc.dg/pr87347.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264640 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-09-26 Paolo Carlini <paolo.carlini@oracle.com>
paolo [Wed, 26 Sep 2018 09:59:56 +0000 (09:59 +0000)] 
2018-09-26  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/71131
* g++.dg/concepts/pr71131.C: New.

2018-09-26  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/71127
* g++.dg/concepts/pr71127.C: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264639 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2018-09-26 Paolo Carlini <paolo.carlini@oracle.com>
paolo [Wed, 26 Sep 2018 09:23:00 +0000 (09:23 +0000)] 
2018-09-26  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/67655
* g++.dg/concepts/pr67655.C: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264638 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[Ada] SPARK: minor error message enhancement
pmderodat [Wed, 26 Sep 2018 09:20:10 +0000 (09:20 +0000)] 
[Ada] SPARK: minor error message enhancement

2018-09-26  Elisa Barboni  <barboni@adacore.com>

gcc/ada/

* sem_prag.adb (Check_Refined_Global_Item): Improve error
message.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264637 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[Ada] Fix inheritance of representation items defined as aspects
pmderodat [Wed, 26 Sep 2018 09:20:05 +0000 (09:20 +0000)] 
[Ada] Fix inheritance of representation items defined as aspects

When a representation item is defined by a pragma or attribute
definition clause, the entity it applies to is that of the Name of the
representation item. But when it is defined by an aspect definition, the
entity is directly denoted by the Entity attribute of the represenation
item. The circuitry that inherits representation items for derived types
or subtypes must account for these two possible cases.

2018-09-26  Thomas Quinot  <quinot@adacore.com>

gcc/ada/

* sem_ch13.adb (Inherit_Aspects_At_Freeze_Point): For a
representation item that is an N_Aspect_Definition, retrieve the
entity it applies to using the Entity attribute.

gcc/testsuite/

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

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264636 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[Ada] Spurious ineffective use_clause warning
pmderodat [Wed, 26 Sep 2018 09:19:53 +0000 (09:19 +0000)] 
[Ada] Spurious ineffective use_clause warning

This patch fixes an issue whereby user-defined subprograms used as
generic actuals with corresponding formals containing other formal types
led to spurious ineffective use_clause warnings.

2018-09-26  Justin Squirek  <squirek@adacore.com>

gcc/ada/

* sem_ch8.adb (Analyze_Subprogram_Renaming): Add extra condition
to check for unmarked subprogram references coming from
renamings.

gcc/testsuite/

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

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264635 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[Ada] Store -G xxx switches
pmderodat [Wed, 26 Sep 2018 09:19:47 +0000 (09:19 +0000)] 
[Ada] Store -G xxx switches

2018-09-26  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

* back_end.adb (Scan_Compiler_Arguments): Store -G xxx switches.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264634 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[Ada] Issue info message on inlined subprograms in GNATprove mode
pmderodat [Wed, 26 Sep 2018 09:19:43 +0000 (09:19 +0000)] 
[Ada] Issue info message on inlined subprograms in GNATprove mode

Issue a positive message that inlining was performed in GNATprove mode,
when corresponding debug switch -gnatd_f is set.

2018-09-26  Yannick Moy  <moy@adacore.com>

gcc/ada/

* errout.ads: Update comment for insertion character '?'.
* inline.adb: Use simple insertion character '?' for GNATprove
info messages.
* sem_res.adb (Resolve_Call): Issue an info message on inlining
in GNATprove mode.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264633 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[Ada] Missing front-end code for constraint checks on fixed point exprs
pmderodat [Wed, 26 Sep 2018 09:19:38 +0000 (09:19 +0000)] 
[Ada] Missing front-end code for constraint checks on fixed point exprs

This patch ensures that the front-end generates constraint checks for
some operations that previously depended on gigi for the corresponding
check. The patch also resets the Do_Range_Check flag so that it never
appears in the tree presented to gigi.

2018-09-26  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

* checks.adb (Apply_Type_Conversion_Checks): Do not generate a
range check on the expression of the conversion if it involves a
fixed-point type, as such conversions are handled specially
during expansion.
* exp_ch4.adb (Expand_N_Type_Conversion): In a conversion from
Fixed to Integer, use the base type of the expression to ensure
that the caller will generate the proper constraint check when
needed.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264632 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[Ada] SPARK: fix a bug related to loop exit environment
pmderodat [Wed, 26 Sep 2018 09:19:33 +0000 (09:19 +0000)] 
[Ada] SPARK: fix a bug related to loop exit environment

2018-09-26  Maroua Maalej  <maalej@adacore.com>

gcc/ada/

* sem_spark.adb (Check_Loop_Statement): Fix a bug related to
loop exit environment.
(Check_Statement): fixing a bug when comparing the source and
target in an assignment statement.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264631 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[Ada] Spurious elaboration issue due to inlining
pmderodat [Wed, 26 Sep 2018 09:19:28 +0000 (09:19 +0000)] 
[Ada] Spurious elaboration issue due to inlining

This patch ensures that the full compilation context is captured prior
to package or subprogram instantiation/inlining and restored after the
action takes place.

2018-09-26  Hristian Kirtchev  <kirtchev@adacore.com>

gcc/ada/

* sem_ch12.adb (Instantiate_Package_Body): Capture and restore
the full compilation context.
(Instantiate_Subprogram_Body): Capture and restore the full
compilation context.

gcc/testsuite/

* gnat.dg/elab7.adb, gnat.dg/elab7_pkg1.adb,
gnat.dg/elab7_pkg1.ads, gnat.dg/elab7_pkg2.adb,
gnat.dg/elab7_pkg2.ads: New testcase.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264630 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[Ada] Do not issue by default info messages for inlining in GNATprove
pmderodat [Wed, 26 Sep 2018 09:19:12 +0000 (09:19 +0000)] 
[Ada] Do not issue by default info messages for inlining in GNATprove

Info messages about lack of inlining for analysis in GNATprove may be
confusing to users. They are now only issued when GNATprove is called
with switch --info, which it passes on to gnat2why with switch -gnatd_f.

There is no effect on compilation.

2018-09-26  Yannick Moy  <moy@adacore.com>

gcc/ada/

* debug.adb: Add use for -gnatd_f switch.
* inline.adb (Cannot_Inline): Only issue info message for
failure to inline in GNATprove mode when switch -gnatd_f is
used.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264629 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[Ada] Spurious error on interface conversion under ZFP
pmderodat [Wed, 26 Sep 2018 09:19:04 +0000 (09:19 +0000)] 
[Ada] Spurious error on interface conversion under ZFP

The frontend reports an error under ZFP when performing the type
conversion of a tagged object to one of its covered interface types.

2018-09-26  Javier Miranda  <miranda@adacore.com>

gcc/ada/

* exp_disp.adb (Expand_Interface_Conversion): No displacement of
the pointer needed when the type of the operand is an interface
type that maches the target type and we are compiling under
configurable runtime. Adding also documentation explaining why
this cannot be done when compiling with the full runtime.
* exp_intr.adb: Update comment.

gcc/testsuite/

* gnat.dg/interface8.adb, gnat.dg/interface8.ads: New testcase.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264628 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[Ada] Add a No_Return annotation to ease static analysis
pmderodat [Wed, 26 Sep 2018 09:18:58 +0000 (09:18 +0000)] 
[Ada] Add a No_Return annotation to ease static analysis

2018-09-26  Hristian Kirtchev  <kirtchev@adacore.com>

gcc/ada/

* sem_ch5.adb (Wrap_Loop_Statement): Annotate as No_Return.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264627 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[Ada] Spurious error on private extension with predicate
pmderodat [Wed, 26 Sep 2018 09:18:52 +0000 (09:18 +0000)] 
[Ada] Spurious error on private extension with predicate

This patch fixes a spurious error involving a private extension whose
full view includes a dynamic predicate, when the parent type is itself
private at the point of the predicate check.  The conversion is known to
be legal so no extra conversion checks are required.

2018-09-26  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

* exp_util.adb (Make_Predicate_Call): Use OK_Convert_To when
applying a predicate check to prevent spurious errors when
private ancestors are involved.

gcc/testsuite/

* gnat.dg/predicate2-containers.ads,
gnat.dg/predicate2-project-name_values.ads,
gnat.dg/predicate2-project-registry-attribute.ads,
gnat.dg/predicate2-project-registry.ads,
gnat.dg/predicate2-project-typ-set.ads,
gnat.dg/predicate2-project-typ.ads,
gnat.dg/predicate2-project.ads,
gnat.dg/predicate2-source_reference.ads, gnat.dg/predicate2.ads,
gnat.dg/predicate2_main.adb: New testcase.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264626 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[Ada] Spurious dependency on secondary stack
pmderodat [Wed, 26 Sep 2018 09:18:35 +0000 (09:18 +0000)] 
[Ada] Spurious dependency on secondary stack

This patch reimplements the handling of the secondary stack when the
iteration scheme of a loop statement requires this support.

Prior to this modification, an iterator loop over a container was
assumed to require unconditional secondary stack management. This is
however not always true because of user-defined iterator types, where
routines First and Next return an iterator that does require the
secondary stack.

------------
-- Source --
------------

--  gnat.adc

pragma Restrictions (No_Secondary_Stack);

--  test.ads

package Test is
   type Test_Type is private
   with
      Default_Initial_Condition,
      Iterable => (First       => First_Element,
                   Next        => Next_Element,
                   Has_Element => Has_Element,
                   Element     => Element);

   type Cursor_Type is private;

   function First_Element (T : Test_Type) return Cursor_Type;

   function Next_Element (T : Test_Type; C : Cursor_Type) return Cursor_Type;

   function Has_Element (T : Test_Type; C : Cursor_Type) return Boolean;

   function Element (T : Test_Type; C : Cursor_Type) return Natural;

private
   type Cursor_Type is new Natural;

   type Test_Type is record
      null;
   end record;

   function First_Element (T : Test_Type) return Cursor_Type
   is (0);

   function Next_Element (T : Test_Type; C : Cursor_Type) return Cursor_Type
   is (0);

   function Has_Element (T : Test_Type; C : Cursor_Type) return Boolean
   is (False);

   function Element (T : Test_Type; C : Cursor_Type) return Natural
   is (0);
end Test;

--  main.adb

with Test; use Test;

procedure Main is
   F : Boolean;
   M : Test_Type;

begin
   for Elem of M loop
      null;
   end loop;

   F := (for all C of M => C = 1);
   F := (for all C in M => True);
end Main;

-----------------
-- Compilation --
-----------------

$ gnatmake -q --RTS=zfp -nostdlib main.adb

2018-09-26  Hristian Kirtchev  <kirtchev@adacore.com>

gcc/ada/

* exp_ch4.adb (Expand_N_Allocator): Ensure that the use of the
secondary stack does not clash with restriction
No_Secondary_Stack.
* exp_ch6.adb (Expand_N_Extended_Return_Statement): Ensure that
the use of the secondary stack does not clash with restriction
No_Secondary_Stack.
* sem_ch5.adb (Analyze_Loop_Statement): Wrap the loop in a block
prior to analysis in order to either provide a local scope for
an iterator, or ensure that the secondary stack is properly
managed.
(Check_Call): Account for the case where the tree may be
unanalyzed or contain prior errors.
(Has_Call_Using_Secondary_Stack): Renamed to Has_Sec_Stack_Call.
Update all uses of the subprogram.
(Prepare_Loop_Statement): New routine.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264625 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[Ada] Mimic the C++ ABI when passing class-wide conversion actuals
pmderodat [Wed, 26 Sep 2018 09:18:29 +0000 (09:18 +0000)] 
[Ada] Mimic the C++ ABI when passing class-wide conversion actuals

This patch does not affect the behavior of Ada-only code but improves
consistency with the code generated by the C++ compiler.

2018-09-26  Javier Miranda  <miranda@adacore.com>

gcc/ada/

* sem_res.adb (Resolve_Actuals): If the formal is a class-wide
type conversion then do not skip resolving and expanding the
conversion; required to displace the pointer to the object and
reference the dispatch table associated with the target
interface type.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264624 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[Ada] Pair miscount in Dynamic_HTable.Put
pmderodat [Wed, 26 Sep 2018 09:18:23 +0000 (09:18 +0000)] 
[Ada] Pair miscount in Dynamic_HTable.Put

This patch corrects the logic of GNAT.Dynamic_HTables.Dynamic_HTable.Put to
update the number of key-value pairs in the hash table only when the put is
adding a new pair, rather than updating the value of an existing pair.

2018-09-26  Hristian Kirtchev  <kirtchev@adacore.com>

gcc/ada/

* libgnat/g-dynhta.adb (Prepend_Or_Replace): Update the number
of key-value pairs in the hash table only when adding a brand
new pair.

gcc/testsuite/

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

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264623 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[Ada] Add notes about processing of aggregate projects
pmderodat [Wed, 26 Sep 2018 09:18:16 +0000 (09:18 +0000)] 
[Ada] Add notes about processing of aggregate projects

2018-09-26  Sergey Rybin  <rybin@adacore.com>

gcc/ada/

* doc/gnat_ugn/gnat_utility_programs.rst: Add note about
processing of aggregate projects in gnatmetric and gnatstub.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264622 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[Ada] Minor reformattings
pmderodat [Wed, 26 Sep 2018 09:18:09 +0000 (09:18 +0000)] 
[Ada] Minor reformattings

2018-09-26  Hristian Kirtchev  <kirtchev@adacore.com>

gcc/ada/

* contracts.adb, exp_unst.adb, exp_util.adb, gnat1drv.adb,
opt.ads, par-prag.adb, sem_ch3.adb, sem_ch5.adb, sem_prag.adb,
sinfo.ads, snames.ads-tmpl: Minor reformatting.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264621 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[Ada] New unit GNAT.Sets
pmderodat [Wed, 26 Sep 2018 09:18:02 +0000 (09:18 +0000)] 
[Ada] New unit GNAT.Sets

This patch implements unit GNAT.Sets which currently offers a general purpose
membership set. The patch also streamlines GNAT.Dynamic_HTables and GNAT.Lists
to use parts of the same API, types, and exceptions as those used by GNAT.Sets.

2018-09-26  Hristian Kirtchev  <kirtchev@adacore.com>

gcc/ada/

* gcc-interface/Make-lang.in: Add unit GNAT.Sets to the list of
front end sources.
* impunit.adb: Add unit GNAT.Sets to the list of predefined
units.
* Makefile.rtl: Add unit GNAT.Sets to the list of non-tasking
units.
* libgnat/g-sets.adb: New unit.
* libgnat/g-sets.ads: New unit.
* libgnat/g-dynhta.adb (Minimum_Size): Decrease to 8 in order to
allow for small sets.  Update all occurrences of Table_Locked to
Iterated.
(Ensure_Unlocked): Query the number of iterators.
(Find_Node): Use the supplied equality.
(Is_Empty): New routine.
(Lock): Update the number of iterators.
(Prepend_Or_Replace): Use the supplied equality.
(Size): Update the return type.
(Unlock): Update the number of iterators.
* libgnat/g-dynhta.ads: Update all occurrences of Table_Locked
to Iterated.  Rename formal subprogram Equivalent_Keys to "=".
(Bucket_Range_Type, Pair_Count_Type): Remove types.
(Not_Created, Table_Locked, Iterator_Exhausted): Remove
exceptions.
(Hash_Table): Update to store the number of iterators rather
than locks.
(Is_Empty): New routine.
(Size): Update the return type.
* libgnat/g-lists.adb: Update all occurrences of List_Locked to
Iterated.
(Ensure_Unlocked): Query the number of iterators.
(Length): Remove.
(Lock): Update the number of iterators.
(Size): New routine.
(Unlock): Update the number of iterators.
* libgnat/g-lists.ads: Update all occurrences of List_Locked to
Iterated.
(Element_Count_Type): Remove type.
(Not_Created, Table_Locked, Iterator_Exhausted): Remove
exceptions.
(Linked_List): Update type to store the number of iterators
rather than locks.
(Length): Remove.
(Size): New routine.
* libgnat/gnat.ads (Bucket_Range_Type): New type.
(Iterated, Iterator_Exhausted, and Not_Created): New exceptions.

gcc/testsuite/

* gnat.dg/sets1.adb: New testcase.
* gnat.dg/dynhash.adb, gnat.dg/linkedlist.adb: Update testcases
to new API.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264620 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[Ada] ICE on mix of tagged and limited interfaces
pmderodat [Wed, 26 Sep 2018 09:17:56 +0000 (09:17 +0000)] 
[Ada] ICE on mix of tagged and limited interfaces

2018-09-26  Javier Miranda  <miranda@adacore.com>

gcc/ada/

* checks.adb (Install_Null_Excluding_Check): Do not add
null-excluding checks when the tree may not be fully decorated.
This patch cascade errors.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264619 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[Ada] Illegal formal objects associated with anonymous acc-to-subp args
pmderodat [Wed, 26 Sep 2018 09:17:51 +0000 (09:17 +0000)] 
[Ada] Illegal formal objects associated with anonymous acc-to-subp args

The compiler was incorrectly accepting generic instantiations with
formal objects of named access-to-subprogram types associated with an
actual of an anonymous access-to-subprogram type.
Analyze_Object_Declaration tests for objects initialized anonymous
access-to-subprogram values, and wraps a conversion around the argument,
which normally will result in error checks during resolution in
Valid_Conversion, but the conversion was only created when the
initialization expression Comes_From_Source, which prevented the
conversion wrapping from happening for constant declarations resulting
from generic expansion. The test for Comes_From_Source was removed.

The following test must report the error output given further below for
the three constructs marked as errors when compiled with this command:

gcc -c -gnatj70 bad_anon_access_instance.adb

procedure Bad_Anon_Access_Instance (Anon_Acc : access procedure) is

   type Ref is access procedure;

   Ref_1 : Ref := Anon_Acc;           -- ERROR (flagged by GNAT)

   Ref_2 : constant Ref := Anon_Acc;  -- ERROR (flagged by GNAT)

   generic
      Formal_Ref : Ref;
   package Gen is
   end Gen;

   package Inst
     is new Gen (Formal_Ref => Anon_Acc); -- ERROR (but not flagged by GNAT)

begin
   null;
end Bad_Anon_Access_Instance;

-------------
Error output:
-------------

bad_anon_access_instance.adb:4:19: illegal attempt to store anonymous
                                   access to subprogram, value has
                                   deeper accessibility than any
                                   master (RM 3.10.2 (13)), use named
                                   access type for "Anon_Acc" instead
                                   of access parameter
bad_anon_access_instance.adb:6:28: illegal attempt to store anonymous
                                   access to subprogram, value has
                                   deeper accessibility than any
                                   master (RM 3.10.2 (13)), use named
                                   access type for "Anon_Acc" instead
                                   of access parameter
bad_anon_access_instance.adb:14:32: illegal attempt to store
                                    anonymous access to subprogram,
                                    value has deeper accessibility
                                    than any master (RM 3.10.2 (13)),
                                    use named access type for
                                    "Anon_Acc" instead of access
                                    parameter

2018-09-26  Gary Dismukes  <dismukes@adacore.com>

gcc/ada/

* sem_ch3.adb (Analyze_Object_Declaration): Remove test for
Comes_From_Source, which prevented implicit conversions from
being applied to anonymous access-to-subprogram formals in
constant declartions that arise from instance associations for
generic formal objects.  Add RM and AARM references to comment.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264618 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[Ada] Front-end support for OpenACC pragmas
pmderodat [Wed, 26 Sep 2018 09:17:46 +0000 (09:17 +0000)] 
[Ada] Front-end support for OpenACC pragmas

This patch introduces the upper part of the Ada front-end support for a first
set of OpenACC directives (Acc_Kernels, Acc_Loop, Acc_Parallel, Acc_Data) and
their clauses.

The pragmas syntax is documented, pragmas are recognized and checked for
syntactic correctness, keyed on -fopenacc. A couple of new flags are defined
on loop statements in the GNAT tree.

2018-09-26  Olivier Hainque  <hainque@adacore.com>

gcc/ada/

* opt.ads (OpenAcc_Enabled): New flag. False by default. True
when OpenACC pragmas are requested to be honored, when -fopenacc
is found on the command line.
* back_end.adb (Scan_Compiler_Arguments): Set OpenACC_Enabled if
-fopenacc is seen on the command line.
* sinfo.adb, sinfo.ads (Is_OpenAcc_Environment): New
flag/predicate on Loop statements which embed an Acc_Kernels,
Acc_Parallel or Acc_Data pragma.
(Is_OpenAcc_Loop): New flag/predicate on Loop statements which
embed an Acc_Loop pragma.
(Set_Is_OpenAcc_Environment, Set_Is_OpenAcc_Loop): Setters for
the new flags.
* par-prag.adb (Prag): Handle Acc_Data, Acc_Loop, Acc_Parallel
and Acc_Kernels pragmas.  Nothing to do here, all handled by
sem_prag.
* sem_prag.adb (Acc_First, Acc_Next,
Validate_Acc_Condition_Clause, Validate_Acc_Data_Clause,
Validate_Acc_Int_Expr_Clause, Validate_Acc_Int_Expr_List_Clause,
Validate_Acc_Loop_Collapse, Validate_Acc_Loop_Gang,
Validate_Acc_Loop_Vector, Validate_Acc_Loop_Worker,
Validate_Acc_Name_Reduction, Validate_Acc_Size_Expressions): New
helper for Analyze_Pragma, to handle OpenACC pragmas.
(Analyze_Pragma): Handle Acc_Data, Acc_Loop, Acc_Parallel and
Acc_Kernels pragmas.
* sem_ch5.adb (Disable_Constant): Unset Is_True_Constant on
variable entity, action for ...
(Disable_Constants): Helper for Analyze_Loop_Statement, to ...
(Analyze_Loop_Statement): Disable True_Constant on variables
referenced within an OpenACC environment.
* snames.ads-tmpl: Declare Name_Ids for the OpenACC directives
and clauses we can handle. Remove an exraneous whitespace before
columns, preventing line length overflow in the generated spec
with Ids now reaching beyond 999.
* doc/gnat_rm/implementation_defined_pragmas.rst: Document
pragma Acc_Parallel, Acc_Loop, Acc_Kernels and Acc_Data.
* gnat_rm.texi: Regenerate.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264617 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[Ada] Missing error on non-limited derived type with limited component
pmderodat [Wed, 26 Sep 2018 09:17:41 +0000 (09:17 +0000)] 
[Ada] Missing error on non-limited derived type with limited component

This patch fixes a missing error on a type extension with limited
components, when the parent type is a derived limited interface. This
may allow the unit to improperly compile, but may lead to bind-time
errors when compiling a client of that unit.

Compiling p.adb must yield:

 keys.ads:8:06: extension of nonlimited type cannot have limited components
 keys.ads:8:06: limitedness is not inherited from limited interface
 keys.ads:8:06: add "limited" to type indication

----
with Keys;
procedure P is
begin
  null;
end;
----
with GNAT.Semaphores;
package Keys is

  type Ref0 is limited interface;
  type Ref2 is limited interface and Ref0;

  type Object is new Ref2 with record
     Lock : aliased GNAT.Semaphores.Binary_Semaphore
       (True, GNAT.Semaphores.Default_Ceiling);
  end record;

end;

2018-09-26  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

* sem_ch3.adb (Is_Onown_Limited): A derived type whose parent P
is a derived limited record is not itself limited if P is a
derived limited interface.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264616 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[Ada] Inlining of renamed subprogram instances in package body
pmderodat [Wed, 26 Sep 2018 09:17:36 +0000 (09:17 +0000)] 
[Ada] Inlining of renamed subprogram instances in package body

This fixes a small discrepancy in the handling of renamed subprograms
declared in a package body, between those originally a regular
subprogram and those an instance of a generic subprogram, the latter
being slightly hindered.

The difference comes from the setting of the Is_Public flag, which was
more conservative in the latter case because instantiations of generic
subprograms are done in compiler-generated local packages.

It is eliminated by allowing Has_Referencer to recurse into nested
packages, but only if they are themselves not instances of generic
packages.

The compiler must now fully inline Doit_I into Doit at -O2 in:

package P is

  generic procedure Doit_G;

  procedure Doit;
end P;

package body P is

  N : Natural := 0;

  procedure Doit_G is
  begin
    N := 1;
  end Doit_G;

  procedure Doit_I is new Doit_G;

  procedure Doit renames Doit_I;

end P;

2018-09-26  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

* sem_ch7.adb (Has_Referencer): Remove Top_Level parameter and
add In_Nested_Instance and
Has_Outer_Referencer_Of_Non_Subprograms parameters.  Rename
Has_Non_Subprograms_Referencer variable into
Has_Referencer_Of_Non_Subprograms and initialize it with the new
third parameter.  Adjust recursive calls and to the renaming.
Replace test on Top_Level with test on In_Nested_Instance to
decide whether to clear the Is_Public flag on entities.
(Hide_Public_Entities): Adjust call to Has_Referencer.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264615 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[Ada] Preparation for new description of interface thunks
pmderodat [Wed, 26 Sep 2018 09:17:31 +0000 (09:17 +0000)] 
[Ada] Preparation for new description of interface thunks

This adjusts and exposes a couple of functions of the front-end used for the
generation of interface thunks so as to make them callable from gigi.  This
also propagates the debug info setting from the targets to the thunks so as
to make stepping into primitives work better in the debugger.

2018-09-26  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

* exp_disp.adb (Expand_Interface_Conversion): Use Present test.
(Expand_Interface_Thunk): Propagate debug info setting from
target.
* exp_util.ads (Find_Interface_Tag): Adjust comment.
* exp_util.adb (Find_Interface_Tag): Remove assertions of
success.
* sem_util.adb (Is_Variable_Size_Record): Only look at
components and robustify the implementation.
* fe.h (Find_Interface_Tag): Declare.
(Is_Variable_Size_Record): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264614 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[Ada] Propagate bit order and SSO from root to classwide equivalent type
pmderodat [Wed, 26 Sep 2018 09:17:26 +0000 (09:17 +0000)] 
[Ada] Propagate bit order and SSO from root to classwide equivalent type

2018-09-26  Thomas Quinot  <quinot@adacore.com>

gcc/ada/

* exp_util.adb (Make_CW_Equivalent_Type): Propagate bit order
and scalar storage order from root type to classwide equivalent
type, to prevent rejection of the equivalent type by the
freezing circuitry.

gcc/testsuite/

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

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264613 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[Ada] Crash on expression functions within quantified expressions
pmderodat [Wed, 26 Sep 2018 09:17:21 +0000 (09:17 +0000)] 
[Ada] Crash on expression functions within quantified expressions

This patch fixes an issue whereby using a call to an expression function
as the domain of iteration for a loop would trigger a crash due to the
function not being frozen appropriately.

2018-09-26  Justin Squirek  <squirek@adacore.com>

gcc/ada/

* sem_ch5.adb (Analyze_Iterator_Specification): Add conditional
to freeze called functions within iterator specifications during
full analysis.
(Preanalyze_Range): Minor typo fix.

gcc/testsuite/

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

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264612 138bc75d-0d04-0410-961f-82ee72b054a4