platform/upstream/gcc.git
7 years agors6000-c (altivec_overloaded_builtins): Add support for built-in functions vector...
Carl Love [Mon, 16 Jan 2017 17:18:05 +0000 (17:18 +0000)]
rs6000-c (altivec_overloaded_builtins): Add support for built-in functions vector signed char vec_nabs (vector signed...

gcc/ChangeLog:

2017-01-16  Carl Love  <cel@us.ibm.com>

* config/rs6000/rs6000-c (altivec_overloaded_builtins): Add support
for built-in functions
vector signed char vec_nabs (vector signed char)
vector signed short vec_nabs (vector signed short)
vector signed int vec_nabs (vector signed int)
vector signed long long vec_nabs (vector signed long long)
vector float vec_nabs (vector float)
vector double vec_nabs (vector double)
* config/rs6000/rs6000-builtin.def: Add definitions for NABS functions
and NABS overload.
* config/rs6000/altivec.md: New define_expand nabs<mode>2 types
* config/rs6000/altivec.h: New define for vec_nabs built-in function.
* doc/extend.texi: Update the documentation file for the new built-in
functions.

gcc/testsuite/ChangeLog:

2017-01-16  Carl Love  <cel@us.ibm.com>

* gcc.target/powerpc/builtins-3.c: New vec_nabs testcase.
* gcc.target/powerpc/builtins-3-p8.c: New vec_nabs testcase.

From-SVN: r244501

7 years agogimple-ssa-sprintf.c (format_directive): Correct a typo in a warning message.
Martin Sebor [Mon, 16 Jan 2017 17:08:42 +0000 (17:08 +0000)]
gimple-ssa-sprintf.c (format_directive): Correct a typo in a warning message.

gcc/ChangeLog:
* gimple-ssa-sprintf.c (format_directive): Correct a typo in a warning
message.

From-SVN: r244500

7 years agobuiltins-3-p9.c (test_ne_long()): Change arguments and return type to bool long long.
Carl Love [Mon, 16 Jan 2017 17:03:14 +0000 (17:03 +0000)]
builtins-3-p9.c (test_ne_long()): Change arguments and return type to bool long long.

gcc/testsuite/ChangeLog:

2017-01-16 Carl Love  <cel@us.ibm.com>

* gcc.target/powerpc/builtins-3-p9.c (test_ne_long()):
Change arguments and return type to bool long long.

From-SVN: r244499

7 years agoPR66145 use new ABI for std::ios::failure exceptions
Jonathan Wakely [Mon, 16 Jan 2017 15:58:06 +0000 (15:58 +0000)]
PR66145 use new ABI for std::ios::failure exceptions

PR libstdc++/66145
* src/c++11/functexcept.cc: Use new ABI for std::ios_base::failure
exceptions.
* testsuite/27_io/basic_ios/copyfmt/char/1.cc: Don't override ABI
for test, so new ios::failure can be caught.
* testsuite/27_io/basic_ios/exceptions/char/1.cc: Likewise.
* testsuite/27_io/basic_istream/extractors_arithmetic/char/
exceptions_failbit.cc: Likewise.
* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
exceptions_failbit.cc: Likewise.
* testsuite/27_io/basic_istream/extractors_other/char/
exceptions_null.cc: Likewise.
* testsuite/27_io/basic_istream/extractors_other/wchar_t/
exceptions_null.cc: Likewise.
* testsuite/27_io/basic_istream/sentry/char/12297.cc: Likewise.
* testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc: Likewise.
* testsuite/27_io/basic_ostream/inserters_other/char/
exceptions_null.cc: Likewise.
* testsuite/27_io/basic_ostream/inserters_other/wchar_t/
exceptions_null.cc: Likewise.
* testsuite/27_io/ios_base/storage/2.cc: Likewise.

From-SVN: r244498

7 years agoPR testsuite/79051 - FAIL: gcc.dg/attr-alloc_size-4.c (test for warnings, line 140)
Martin Sebor [Mon, 16 Jan 2017 15:50:47 +0000 (15:50 +0000)]
PR testsuite/79051 - FAIL: gcc.dg/attr-alloc_size-4.c (test for warnings, line 140)

gcc/testsuite/ChangeLog:
* gcc.dg/attr-alloc_size-4.c: Avoid exercising a test case except
on x86.

From-SVN: r244497

7 years agorevert: re PR c++/71737 (ICE following 2x pack expansion in non-pack with template...
Paolo Carlini [Mon, 16 Jan 2017 15:43:06 +0000 (15:43 +0000)]
revert: re PR c++/71737 (ICE following 2x pack expansion in non-pack with template alias)

/c-family
2017-01-16  Paolo Carlini  <paolo.carlini@oracle.com>

Revert:
      2017-01-16  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/71737
* c-common.c (set_underlying_type): Always set DECL_ORIGINAL_TYPE.

/testsuite
2017-01-16  Paolo Carlini  <paolo.carlini@oracle.com>

Revert:
        2017-01-16  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/71737
* g++.dg/cpp0x/pr71737.C: New.

From-SVN: r244496

7 years agors6000.c (rtx_is_swappable_p): Change UNSPEC_VSX__XXSPLTD to require special splat...
Bill Schmidt [Mon, 16 Jan 2017 15:05:35 +0000 (15:05 +0000)]
rs6000.c (rtx_is_swappable_p): Change UNSPEC_VSX__XXSPLTD to require special splat handling.

[gcc]

2017-01-16  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

* config/rs6000/rs6000.c (rtx_is_swappable_p): Change
UNSPEC_VSX__XXSPLTD to require special splat handling.

[gcc/testsuite]

2017-01-16  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

* gcc.target/powerpc/swaps-p8-27.c: New.

From-SVN: r244495

7 years agosystem.h: Poison strndup (PR bootstrap/78616)
David Malcolm [Mon, 16 Jan 2017 15:03:41 +0000 (15:03 +0000)]
system.h: Poison strndup (PR bootstrap/78616)

gcc/ChangeLog:
PR bootstrap/78616
* system.h: Poison strndup.

From-SVN: r244494

7 years agoPR78702 fix accessibility of locale::facet::__shim
Jonathan Wakely [Mon, 16 Jan 2017 11:41:41 +0000 (11:41 +0000)]
PR78702 fix accessibility of locale::facet::__shim

PR libstdc++/78702
* include/bits/locale_classes.h (locale::facet::__shim): Change from
private to protected.
* src/c++11/cxx11-shim_facets.cc (__shim_accessor): Define helper to
make locale::facet::__shim accessible.

From-SVN: r244491

7 years agoPR libstdc++/78389 fix backwards size adjustments.
Ville Voutilainen [Mon, 16 Jan 2017 11:36:33 +0000 (13:36 +0200)]
PR libstdc++/78389 fix backwards size adjustments.

PR libstdc++/78389
* include/bits/list.tcc (merge(list&&)): Fix backwards size adjustments.
(merge(list&&, _StrictWeakOrdering)): Likewise.
* testsuite/23_containers/list/operations/78389.cc: Add
better test for the sizes.

From-SVN: r244490

7 years agoPowerpc bootstrap failure due to duplicate case value
Alan Modra [Mon, 16 Jan 2017 11:12:57 +0000 (21:42 +1030)]
Powerpc bootstrap failure due to duplicate case value

PR target/79098
* config/rs6000/rs6000.c (rs6000_legitimate_combined_insn): Don't
use a switch.

From-SVN: r244489

7 years agoavr.h (BRANCH_COST): Increase by 4.
Georg-Johann Lay [Mon, 16 Jan 2017 09:48:45 +0000 (09:48 +0000)]
avr.h (BRANCH_COST): Increase by 4.

gcc/
* config/avr/avr.h (BRANCH_COST) [reload_completed]: Increase by 4.

From-SVN: r244488

7 years agore PR tree-optimization/77283 (Revision 238005 disables loop unrolling)
Richard Biener [Mon, 16 Jan 2017 09:33:12 +0000 (09:33 +0000)]
re PR tree-optimization/77283 (Revision 238005 disables loop unrolling)

2017-01-13  Richard Biener  <rguenther@suse.de>

PR tree-optimization/77283
* gimple-ssa-split-paths.c: Include gimple-ssa.h, tree-phinodes.h
and ssa-iterators.h.
(is_feasible_trace): Implement a cost model based on joiner
PHI node uses.

* gcc.dg/tree-ssa/split-path-7.c: Adjust.
* gcc.dg/tree-ssa/split-path-8.c: New testcase.
* gcc.dg/tree-ssa/split-path-9.c: Likewise.

From-SVN: r244487

7 years agore PR c++/71737 (ICE following 2x pack expansion in non-pack with template alias)
Paolo Carlini [Mon, 16 Jan 2017 09:09:30 +0000 (09:09 +0000)]
re PR c++/71737 (ICE following 2x pack expansion in non-pack with template alias)

/c-family
2017-01-16  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/71737
* c-common.c (set_underlying_type): Always set DECL_ORIGINAL_TYPE.

/testsuite
2017-01-16  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/71737
* g++.dg/cpp0x/pr71737.C: New.

From-SVN: r244486

7 years agoopt62.adb: New test.
Eric Botcazou [Mon, 16 Jan 2017 08:46:20 +0000 (08:46 +0000)]
opt62.adb: New test.

* gnat.dg/opt62.adb: New test.
* gnat.dg/opt62_pkg.ads: New helper.

From-SVN: r244485

7 years agoruntime: rename siginfo to _siginfo_t
Ian Lance Taylor [Mon, 16 Jan 2017 01:21:42 +0000 (01:21 +0000)]
runtime: rename siginfo to _siginfo_t

    Since the name siginfo winds up in runtime.inc, this avoids a name
    collision on systems that define "struct siginfo" in the system header
    files.

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

From-SVN: r244484

7 years agolibgo: correct golang_org Makefile variables not used on all systems
Ian Lance Taylor [Mon, 16 Jan 2017 01:05:10 +0000 (01:05 +0000)]
libgo: correct golang_org Makefile variables not used on all systems

    Patch by Rainer Orth.

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

From-SVN: r244483

7 years agoDaily bump.
GCC Administrator [Mon, 16 Jan 2017 00:16:21 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r244482

7 years agoi386.c (ix86_legitimate_combined_insn): Do not call recog here.
Uros Bizjak [Sun, 15 Jan 2017 18:42:29 +0000 (19:42 +0100)]
i386.c (ix86_legitimate_combined_insn): Do not call recog here.

* config/i386/i386.c (ix86_legitimate_combined_insn): Do not
call recog here.  Assert that INSN_CODE (insn) is non-negative.

From-SVN: r244478

7 years agoMake rtl_split_edge work for jumps that fall through (PR72749)
Segher Boessenkool [Sun, 15 Jan 2017 17:06:00 +0000 (18:06 +0100)]
Make rtl_split_edge work for jumps that fall through (PR72749)

If a jump always falls through but that cannot be optimised away, like
is the case with the PowerPC bdnz insn if its jump target is the same as
the fallthrough, sched gets confused if it schedules some instructions
from before that jump instruction to behind it: it splits the
fallthrough branch, but the jump target isn't updated, and things fall
apart as in the PR.  This patch fixes it.

The second patch fragment makes -fsched-verbose=N work for N>=4; the
currently scheduled fragment can now contain a label.  Everything else
seems to work fine with that.

PR target/72749
* cfgrtl.c (rtl_split_edge): Also patch jump insns that jump to the
fallthrough.
* haifa-sched.c (dump_insn_stream): Don't crash if there is a label
in the currently scheduled RTL fragment.

From-SVN: r244477

7 years agoifcvt: Don't make invalid insns for a cond trap (PR78751)
Segher Boessenkool [Sun, 15 Jan 2017 17:03:55 +0000 (18:03 +0100)]
ifcvt: Don't make invalid insns for a cond trap (PR78751)

As shown in the PR, ifcvt will happily make invalid insns when given the
chance.  This patch teaches it some manners.

PR rtl-optimization/78751
* ifcvt.c (find_cond_trap): If we generated a non-existing insn,
give up.

From-SVN: r244476

7 years agore PR tree-optimization/79090 (DSE wrongly removes store at variable offset)
Jeff Law [Sun, 15 Jan 2017 09:34:01 +0000 (02:34 -0700)]
re PR tree-optimization/79090 (DSE wrongly removes store at variable offset)

PR tree-optimization/79090
* tree-ssa-dse.c (valid_ao_ref_for_dse): Reject zero length and
variable length stores.
(compute_trims): Delete dead assignment to *trim_tail.
(dse_dom_walker::dse_optimize_stmt): Optimize mem* calls with
zero length.

From-SVN: r244472

7 years agoDaily bump.
GCC Administrator [Sun, 15 Jan 2017 00:16:21 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r244471

7 years ago* fr.po: Update.
Joseph Myers [Sun, 15 Jan 2017 00:03:19 +0000 (00:03 +0000)]
* fr.po: Update.

From-SVN: r244468

7 years agore PR rtl-optimization/78626 (ICE in rtl_verify_bb_insns, at cfgrtl.c:2656 (error...
Bernd Schmidt [Sat, 14 Jan 2017 16:52:18 +0000 (09:52 -0700)]
re PR rtl-optimization/78626 (ICE in rtl_verify_bb_insns, at cfgrtl.c:2656 (error: flow control insn inside a basic block))

PR rtl-optimization/78626
PR rtl-optimization/78727
* cprop.c (one_cprop_pass): Collect unconditional traps in the middle
of a block, and split such blocks after everything else is finished.

        PR rtl-optimization/78626
        PR rtl-optimization/78727
* gcc.dg/torture/pr78626.c: New test.
* gcc.dg/torture/pr78727.c: New test.

From-SVN: r244467

7 years agoTestcase from pr72749
Alan Modra [Sat, 14 Jan 2017 13:29:29 +0000 (23:59 +1030)]
Testcase from pr72749

PR target/72749
* gcc.c-torture/compile/pr72749.c: New test.

From-SVN: r244466

7 years agoAvoid PR72749 by not using unspecs
Alan Modra [Sat, 14 Jan 2017 13:24:46 +0000 (23:54 +1030)]
Avoid PR72749 by not using unspecs

Rather than using unspecs in doloop insns to stop combine creating
these insns, use legitimate_combined_insn.

PR target/72749
* combine.c (recog_for_combine_1): Set INSN_CODE before calling
target legitimate_combined_insn.
* config/rs6000/rs6000.c (TARGET_LEGITIMATE_COMBINED_INSN): Define.
(rs6000_legitimate_combined_insn): New function.
* config/rs6000/rs6000.md (UNSPEC_DOLOOP): Delete, and remove
all uses.
(ctr<mode>_internal3): Rename from *ctr<mode>_internal5.
(ctr<mode>_internal4): Rename from *ctr<mode>_internal6.
(ctr<mode>_internal1, ctr<mode>_internal2): Remove '*' from name.

From-SVN: r244465

7 years agoSkip tests that are incompatible with Profile Mode
Jonathan Wakely [Sat, 14 Jan 2017 11:55:22 +0000 (11:55 +0000)]
Skip tests that are incompatible with Profile Mode

* testsuite/23_containers/array/specialized_algorithms/swap_cxx17.cc:
Skip test when -D_GLIBCXX_PROFILE mode is included in options.
* testsuite/23_containers/map/modifiers/extract.cc: Likewise.
* testsuite/23_containers/map/modifiers/insert_or_assign/1.cc:
Likewise.
* testsuite/23_containers/map/modifiers/try_emplace/1.cc: Likewise.
* testsuite/23_containers/multimap/modifiers/extract.cc: Likewise.
* testsuite/23_containers/multiset/modifiers/extract.cc: Likewise.
* testsuite/23_containers/set/modifiers/extract.cc: Likewise.
* testsuite/23_containers/unordered_map/modifiers/extract.cc:
Likewise.
* testsuite/23_containers/unordered_multimap/modifiers/extract.cc::
Likewise.
* testsuite/23_containers/unordered_multiset/modifiers/extract.cc::
Likewise.
* testsuite/23_containers/unordered_set/modifiers/extract.cc:
Likewise.
* testsuite/23_containers/vector/modifiers/insert_vs_emplace.cc:
Likewise.
* testsuite/25_algorithms/binary_search/partitioned.cc: Likewise.
* testsuite/25_algorithms/equal_range/partitioned.cc: Likewise.
* testsuite/25_algorithms/lexicographical_compare/71545.cc: Likewise.
* testsuite/25_algorithms/lower_bound/partitioned.cc: Likewise.
* testsuite/25_algorithms/upper_bound/partitioned.cc: Likewise.
* testsuite/libstdc++-prettyprinters/cxx11.cc: Likewise.
* testsuite/libstdc++-prettyprinters/cxx17.cc: Likewise.
* testsuite/libstdc++-prettyprinters/debug.cc: Likewise.
* testsuite/libstdc++-prettyprinters/debug_cxx11.cc: Likewise.
* testsuite/libstdc++-prettyprinters/libfundts.cc: Likewise.
* testsuite/libstdc++-prettyprinters/simple.cc: Likewise.
* testsuite/libstdc++-prettyprinters/simple11.cc: Likewise.
* testsuite/libstdc++-prettyprinters/whatis.cc: Likewise.

From-SVN: r244464

7 years ago* doc/frontends.texi (G++ and GCC): Remove references to Java.
Gerald Pfeifer [Sat, 14 Jan 2017 08:03:17 +0000 (08:03 +0000)]
* doc/frontends.texi (G++ and GCC): Remove references to Java.

From-SVN: r244463

7 years agoFix comment
Jeff Law [Sat, 14 Jan 2017 06:20:16 +0000 (23:20 -0700)]
Fix comment

From-SVN: r244462

7 years agore PR tree-optimization/33562 (aggregate DSE disabled)
Jeff Law [Sat, 14 Jan 2017 06:16:23 +0000 (23:16 -0700)]
re PR tree-optimization/33562 (aggregate DSE disabled)

PR tree-optimization/33562
PR tree-optimization/61912
PR tree-optimization/77485
* tree-ssa-dse.c (delete_dead_call): Accept gsi rather than
a statement.
(delete_dead_assignment): Likewise.
(dse_dom_walker::dse_optimize_stmt): Pass in the gsi rather than
statement to delete_dead_call and delete_dead_assignment.

From-SVN: r244461

7 years agocompiler: implement type aliases
Ian Lance Taylor [Sat, 14 Jan 2017 01:50:31 +0000 (01:50 +0000)]
compiler: implement type aliases

    This is a start of implementing type aliases (`type T1 = T2`) in the
    Go frontend.  This is incomplete, in that the reflection information
    is not updated for an embedded type alias.  It is also not well
    tested.  Finally, the change to the language has not been approved.
    This should be regarded as preliminary work for experimental use.

    Update golang/go#18130.

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

From-SVN: r244460

7 years agoDaily bump.
GCC Administrator [Sat, 14 Jan 2017 00:16:13 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r244459

7 years agolibgo: update to Go 1.8 release candidate 1
Ian Lance Taylor [Sat, 14 Jan 2017 00:05:42 +0000 (00:05 +0000)]
libgo: update to Go 1.8 release candidate 1

    Compiler changes:
      * Change map assignment to use mapassign and assign value directly.
      * Change string iteration to use decoderune, faster for ASCII strings.
      * Change makeslice to take int, and use makeslice64 for larger values.
      * Add new noverflow field to hmap struct used for maps.

    Unresolved problems, to be fixed later:
      * Commented out test in go/types/sizes_test.go that doesn't compile.
      * Commented out reflect.TestStructOf test for padding after zero-sized field.

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

gotools/:
Updates for Go 1.8rc1.
* Makefile.am (go_cmd_go_files): Add bug.go.
(s-zdefaultcc): Write defaultPkgConfig.
* Makefile.in: Rebuild.

From-SVN: r244456

7 years agot-msp430 (libmul_none.a, [...]): Filter archived prerequisites.
Joe Seymour [Fri, 13 Jan 2017 22:18:07 +0000 (22:18 +0000)]
t-msp430 (libmul_none.a, [...]): Filter archived prerequisites.

2017-01-13  Joe Seymour  <joe.s@somniumtech.com>
* config/msp430/t-msp430 (libmul_none.a, libmul_16.a, libmul_32.a,
libmul_f5.a): Filter archived prerequisites.

From-SVN: r244455

7 years agoRevert r244448
Janne Blomqvist [Fri, 13 Jan 2017 19:53:16 +0000 (21:53 +0200)]
Revert r244448

From-SVN: r244454

7 years agoDon't suppress bogus usage of macros from system headers in -Wformat (PR c/78304)
David Malcolm [Fri, 13 Jan 2017 19:27:43 +0000 (19:27 +0000)]
Don't suppress bogus usage of macros from system headers in -Wformat (PR c/78304)

gcc/ChangeLog:
PR c/78304
* substring-locations.c (format_warning_va): Strengthen case 1 so
that both endpoints of the substring must be within the format
range for just the substring to be printed.

gcc/testsuite/ChangeLog:
PR c/78304
* gcc.dg/format/diagnostic-ranges.c (test_macro): Undef INT_FMT.
(test_macro_2): New test.
(test_macro_3): New test.
(test_macro_4): New test.
(test_non_contiguous_strings): Convert line number to line offset.
* gcc.dg/format/pr78304-2.c: New test case.
* gcc.dg/format/pr78304.c: New test case.

From-SVN: r244453

7 years agoi386.opt (msgx): Use ix86_isa_flags2 variable.
Uros Bizjak [Fri, 13 Jan 2017 18:32:44 +0000 (19:32 +0100)]
i386.opt (msgx): Use ix86_isa_flags2 variable.

* config/i386/i386.opt (msgx): Use ix86_isa_flags2 variable.
* config/i386/i386.c (ix86_target_string): Add missing options
to isa_opts and reorder options by implied ISAs.  Rename isa_opts2 to
isa2_opts, ix86_flag_opts to flag2_opts, ix86_target_other to
flags_other and ix86_target_other to flags2_other.  Display unknown
isa2 options.
(ix86_valid_target_attribute_inner_p): Add missing options and
reorder options by implied ISAs, as in ix86_target_string.

testsuite/ChangeLog:

* gcc.target/i386/funcspec-56.inc: Add missing options and
reorder options by implied ISAs, as in ix86_target_string.

From-SVN: r244452

7 years agoPR65411 don't retry fclose on EINTR
Jonathan Wakely [Fri, 13 Jan 2017 17:52:34 +0000 (17:52 +0000)]
PR65411 don't retry fclose on EINTR

PR libstdc++/65411
* config/io/basic_file_stdio.cc (__basic_file<char>::close()): Don't
retry fclose on EINTR.

From-SVN: r244451

7 years agore PR c++/71166 (ICE with nested constexpr/initializer)
Marek Polacek [Fri, 13 Jan 2017 17:27:54 +0000 (17:27 +0000)]
re PR c++/71166 (ICE with nested constexpr/initializer)

PR c++/71166
* g++.dg/cpp0x/constexpr-array18.C: New test.

From-SVN: r244450

7 years agoRemove unused include from Profile Mode header
Jonathan Wakely [Fri, 13 Jan 2017 17:20:23 +0000 (17:20 +0000)]
Remove unused include from Profile Mode header

* include/profile/base.h: Remove unused header that leads to header
cycle in C++17 mode.

From-SVN: r244449

7 years agoPR 78534 Change character length from int to size_t
Janne Blomqvist [Fri, 13 Jan 2017 17:05:48 +0000 (19:05 +0200)]
PR 78534 Change character length from int to size_t

In order to handle large character lengths on (L)LP64 targets, switch
the GFortran character length from an int to a size_t.

This is an ABI change, as procedures with character arguments take
hidden arguments with the character length.

I also changed the _size member in vtables from int to size_t, as
there were some cases where character lengths and sizes were
apparently mixed up and caused regressions otherwise. Although I
haven't tested, this might enable very large derived types as well.

Also, as there are some places in the frontend were negative character
lengths are used as special flag values, in the frontend the character
length is handled as a signed variable of the same size as a size_t,
although in the runtime library it really is size_t.

I haven't changed the character length variables for the co-array
intrinsics, as this is something that may need to be synchronized with
OpenCoarrays.

This is v4 of the patch. v3 was applied but had to reverted due to
breaking bootstrap. The fix is in resolve.c:resolve_charlen, where
it's necessary to check that an expression is constant before using
mpz_sgn.

Overview of v3 of the patch: All the issues pointed out by FX's review
of v2 have been fixed. In particular, there are now new functions
gfc_mpz_get_hwi and gfc_mpz_set_hwi, similar to the GMP functions
mpz_get_si and mpz_set_si, except that they get/set a HOST_WIDE_INT
instead of a long value. Similarly, gfc_get_int_expr now takes a
HOST_WIDE_INT instead of a long, gfc_extract_long is replaced by
gfc_extract_hwi. Also, the preliminary work to handle
gfc_charlen_type_node being unsigned has been removed.

Regtested on x86_64-pc-linux-gnu and i686-pc-linux-gnu.

frontend:

2017-01-13  Janne Blomqvist  <jb@gcc.gnu.org>

PR fortran/78534
PR fortran/66310
* class.c (gfc_find_derived_vtab): Use gfc_size_kind instead of
hardcoded kind.
(find_intrinsic_vtab): Likewise.
* expr.c (gfc_get_character_expr): Length parameter of type
gfc_charlen_t.
(gfc_get_int_expr): Value argument of type HOST_WIDE_INT.
(gfc_extract_hwi): New function.
(simplify_const_ref): Make string_len of type gfc_charlen_t.
(gfc_simplify_expr): Use HOST_WIDE_INT for substring refs.
* gfortran.h (gfc_mpz_get_hwi): New prototype.
(gfc_mpz_set_hwi): Likewise.
(gfc_charlen_t): New typedef.
(gfc_expr): Use gfc_charlen_t for character lengths.
(gfc_size_kind): New extern variable.
(gfc_extract_hwi): New prototype.
(gfc_get_character_expr): Use gfc_charlen_t for character length.
(gfc_get_int_expr): Use HOST_WIDE_INT type for value argument.
* iresolve.c (gfc_resolve_repeat): Pass string length directly without
temporary, use gfc_charlen_int_kind.
* match.c (select_intrinsic_set_tmp): Use HOST_WIDE_INT for charlen.
* misc.c (gfc_mpz_get_hwi): New function.
(gfc_mpz_set_hwi): New function.
* module.c (atom_int): Change type from int to HOST_WIDE_INT.
(parse_integer): Don't complain about large integers.
(write_atom): Use HOST_WIDE_INT for integers.
(mio_integer): Handle integer type mismatch.
(mio_hwi): New function.
(mio_intrinsic_op): Use HOST_WIDE_INT.
(mio_array_ref): Likewise.
(mio_expr): Likewise.
* resolve.c (resolve_select_type): Use HOST_WIDE_INT for charlen,
use snprintf.
(resolve_substring_charlen): Use gfc_charlen_int_kind.
(resolve_charlen): Use mpz_sgn to determine sign.
* simplify.c (gfc_simplify_repeat): Use HOST_WIDE_INT/gfc_charlen_t
instead of long.
* target-memory.c (size_character): Length argument of type
gfc_charlen_t.
(gfc_encode_character): Likewise.
(gfc_interpret_character): Use gfc_charlen_t.
* target-memory.h (gfc_encode_character): Modify prototype.
* trans-array.c (get_array_ctor_var_strlen): Use
gfc_conv_mpz_to_tree_type.
* trans-const.c (gfc_conv_mpz_to_tree_type): New function.
* trans-const.h (gfc_conv_mpz_to_tree_type): New prototype.
* trans-expr.c (gfc_class_len_or_zero_get): Build const of type
gfc_charlen_type_node.
(gfc_conv_intrinsic_to_class): Use gfc_charlen_int_kind instead of
4, fold_convert to correct type.
(gfc_conv_class_to_class): Build const of type size_type_node for
size.
(gfc_copy_class_to_class): Likewise.
(gfc_conv_string_length): Use same type in expression.
(gfc_conv_substring): Likewise, use HOST_WIDE_INT for charlen.
(gfc_conv_string_tmp): Make sure len is of the right type.
(gfc_conv_concat_op): Use same type in expression.
(gfc_conv_procedure_call): Likewise.
(alloc_scalar_allocatable_for_subcomponent_assignment):
fold_convert to right type.
(gfc_trans_subcomponent_assign): Likewise.
(trans_class_vptr_len_assignment): Build const of correct type.
(gfc_trans_pointer_assignment): Likewise.
(alloc_scalar_allocatable_for_assignment): fold_convert to right
type in expr.
(trans_class_assignment): Build const of correct type.
* trans-intrinsic.c (gfc_conv_associated): Likewise.
(gfc_conv_intrinsic_repeat): Do calculation in sizetype.
* trans-io.c (gfc_build_io_library_fndecls): Use
gfc_charlen_type_node for character lengths.
* trans-stmt.c (gfc_trans_label_assign): Build const of
gfc_charlen_type_node.
(gfc_trans_character_select): Likewise.
(gfc_trans_allocate): Likewise, don't typecast strlen result.
(gfc_trans_deallocate): Don't typecast strlen result.
* trans-types.c (gfc_size_kind): New variable.
(gfc_init_types): Determine gfc_charlen_int_kind and gfc_size_kind
from size_type_node.

testsuite:

2017-01-13  Janne Blomqvist  <jb@gcc.gnu.org>

PR fortran/78534
PR fortran/66310
* gfortran.dg/repeat_4.f90: Use integers of kind C_SIZE_T.
* gfortran.dg/repeat_7.f90: New test for PR 66310.
* gfortran.dg/scan_2.f90: Handle potential cast in assignment.
* gfortran.dg/string_1.f90: Limit to ilp32 targets.
* gfortran.dg/string_1_lp64.f90: New test.
* gfortran.dg/string_3.f90: Limit to ilp32 targets.
* gfortran.dg/string_3_lp64.f90: New test.

libgfortran:

2017-01-13  Janne Blomqvist  <jb@gcc.gnu.org>

PR fortran/78534
* intrinsics/args.c (getarg_i4): Use gfc_charlen_type.
(get_command_argument_i4): Likewise.
(get_command_i4): Likewise.
* intrinsics/chmod.c (chmod_internal): Likewise.
* intrinsics/env.c (get_environment_variable_i4): Likewise.
* intrinsics/extends_type_of.c (struct vtype): Use size_t for size
member.
* intrinsics/gerror.c (gerror): Use gfc_charlen_type.
* intrinsics/getlog.c (getlog): Likewise.
* intrinsics/hostnm.c (hostnm_0): Likewise.
* intrinsics/string_intrinsics_inc.c (string_len_trim): Rework to
work if gfc_charlen_type is unsigned.
(string_scan): Likewise.
* io/transfer.c (transfer_character): Modify prototype.
(transfer_character_write): Likewise.
(transfer_character_wide): Likewise.
(transfer_character_wide_write): Likewise.
(transfer_array): Typecast to avoid signed-unsigned comparison.
* io/unit.c (is_trim_ok): Use gfc_charlen_type.
* io/write.c (namelist_write): Likewise.
* libgfortran.h (gfc_charlen_type): Change typedef to size_t.

From-SVN: r244448

7 years agoAvoid excessively-big hash tables in empty-add cycles
Richard Sandiford [Fri, 13 Jan 2017 16:00:26 +0000 (16:00 +0000)]
Avoid excessively-big hash tables in empty-add cycles

A big source of cache misses when compiling a recent version of
gimple-match.ii was the call to cv_cache.empty () in clear_cv_cache.
The problem was that at one early point the hash table had grown
to 8191 entries (128k on LP64 hosts).  It then stayed at that size
for the rest of the compilation, even though subsequent uses needed
only a small number of entries (usually fewer than ten).  We would
still clear the whole 128k each time clear_cv_cache was called.

empty() already looks for cases where the hash table is very big
and cuts it down.  At the moment it fires when the table is 1M
in size and reduces it to the next selected prime above 1K (so
almost 2K in practice).  One fix would have been to lower the
threshold, but that didn't feel like the right approach.  Reducing
the current limit of 1M by a factor of 8 would be pretty significant
on its own, but I think this cv_cache behaviour would have been a
problem even with 64k or 32k tables.

I think the existing check is really for cases in which even a
well-populated table would need to be shrunk rather than cleared.
Here the problem isn't that the table is excessively big in
absolute terms, more that one outlier has made the table much
too big for the general case.

traverse() already shrinks the table if it's "too empty",
which is taken to be if:

      no. elements * 8 < capacity && capacity > 32

So an alternative would be to apply the same test (and the same choice
of shrunken size) to empty_slow too.  The patch below does this.
It gives a 2.5% improvement in gimple-match.ii compile time at -O0 -g
and doesn't seem to adversely affect any other tests I've tried.

Of course, there's a theoretical risk of a table alternating between
one large element count and one small element count.  If there was a
factor of eight difference between the two, we could shrink the table
on seeing each small element count, then grow it again when adding the
large number of elements.  That seems pretty unlikely in practice
though.

Also, empty_slow() does involve a traversal if some form of manual
gc is needed on active elements, so trying to recover from an outlier
should have even more benefit there.  (cv_cache uses automatic gc and so
the traversal gets optimised away.)

The calculation of the existing 1M threshold was assuming that each
entry was pointer-sized.  This patch makes it use the actual size of the
entry instead.

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

gcc/
* hash-table.h (hash_table::too_empty_p): New function.
(hash_table::expand): Use it.
(hash_table::traverse): Likewise.
(hash_table::empty_slot): Use sizeof (value_type) instead of
sizeof (PTR) to convert bytes to elements.  Shrink the table
if the current size is excessive for the current number of
elements.

From-SVN: r244447

7 years agoShort-circuit alt_fail case in record_reg_classes
Richard Sandiford [Fri, 13 Jan 2017 15:56:04 +0000 (15:56 +0000)]
Short-circuit alt_fail case in record_reg_classes

record_reg_classes is often the hottest function when generating
unoptimised output.  It seems typical for over 60% of the instructions
it handles to be moves, and of course moves tend to be the instructions
with the longest constraint strings.

Maybe we should avoid using move constraints to set costs in unoptimised
output and instead use the "natural" class for the mode being moved.
That's too invasive for stage 3 though.

However, seeing so many moves means that we see many "failing"
alternatives, usually because of '*' or because of hard registers
in function call sequences.  The frequency of alternatives that are
detected as failures after the first operand tends again to be more
than 60%.  Previously we would continue to process the other operands
of the alternative regardless.  This patch instead adds a short-cut.

As well as avoiding unnecessary work, it means that the alt_fail
variable can be jump-threaded away.

Tested on aach64-linux-gnu and x86_64-linux-gnu.  It reduces compile
time by about 1% on some tests with "-g -O0".

gcc/
* ira-costs.c (record_reg_classes): Break from the inner loop
early once alt_fail is known to be true.  Update outer loop
handling accordingly.

From-SVN: r244446

7 years agoAdd string_view support to COW std::string
Jonathan Wakely [Fri, 13 Jan 2017 15:53:07 +0000 (15:53 +0000)]
Add string_view support to COW std::string

PR libstdc++/79075
* include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI] (basic_string):
Make _If_sv private.
[!_GLIBCXX_USE_CXX11_ABI] (basic_string): Add member functions taking
basic_string_view arguments.

From-SVN: r244445

7 years agotree-ssa-dse.c (decrement_count): New function.
Jeff Law [Fri, 13 Jan 2017 15:50:11 +0000 (08:50 -0700)]
tree-ssa-dse.c (decrement_count): New function.

* tree-ssa-dse.c (decrement_count): New function.
(increment_start_addr, maybe_trim_memstar_call): Likewise.
(dse_dom_walker::optimize_stmt): Call maybe_trim_memstar_call directly
when we know the partially dead statement is a mem* function.

* gcc.dg/tree-ssa/ssa-dse-25.c: New test.

From-SVN: r244444

7 years agore PR middle-end/61912 (Missed (partial) dead store elimination for structures on...
Jeff Law [Fri, 13 Jan 2017 15:46:22 +0000 (08:46 -0700)]
re PR middle-end/61912 (Missed (partial) dead store elimination for structures on GIMPLE)

PR tree-optimization/61912
PR tree-optimization/77485
* tree-ssa-dse.c: Include expr.h.
(maybe_trim_constructor_store): New function.
(maybe_trim_partially_dead_store): Call maybe_trim_constructor_store.

PR tree-optimization/61912
PR tree-optimization/77485
* g++.dg/tree-ssa/ssa-dse-1.C: New test.
* gcc.dg/tree-ssa/pr30375: Adjust expected output.
* gcc.dg/tree-ssa/ssa-dse-24.c: New test.

From-SVN: r244443

7 years agore PR tree-optimization/33562 (aggregate DSE disabled)
Jeff Law [Fri, 13 Jan 2017 15:42:08 +0000 (08:42 -0700)]
re PR tree-optimization/33562 (aggregate DSE disabled)

        PR tree-optimization/33562
        PR tree-optimization/61912
        PR tree-optimization/77485
* doc/invoke.texi: Document new dse-max-object-size param.
* params.def (PARM_DSE_MAX_OBJECT_SIZE): New PARAM.
* tree-ssa-dse.c: Include params.h.
(dse_store_status): New enum.
(initialize_ao_ref_for_dse): New, partially extracted from
dse_optimize_stmt.
(valid_ao_ref_for_dse, normalize_ref): New.
(setup_live_bytes_from_ref, compute_trims): Likewise.
(clear_bytes_written_by, maybe_trim_complex_store): Likewise.
(maybe_trim_partially_dead_store): Likewise.
(maybe_trim_complex_store): Likewise.
(dse_classify_store): Renamed from dse_possibly_dead_store_p.
Track what bytes live from the original store.  Return tri-state
for dead, partially dead or live.
(dse_dom_walker): Add constructor, destructor and new private members.
(delete_dead_call, delete_dead_assignment): New extracted from
dse_optimize_stmt.
(dse_optimize_stmt): Make a member of dse_dom_walker.
Use initialize_ao_ref_for_dse.

        PR tree-optimization/33562
        PR tree-optimization/61912
        PR tree-optimization/77485
* gcc.dg/tree-ssa/complex-4.c: Remove xfail.
* gcc.dg/tree-ssa/complex-5.c: Likewise.
* gcc.dg/tree-ssa/ssa-dse-9.c: Likewise.
* gcc.dg/tree-ssa/ssa-dse-18.c: New test.
* gcc.dg/tree-ssa/ssa-dse-19.c: Likewise.
* gcc.dg/tree-ssa/ssa-dse-20.c: Likewise.
* gcc.dg/tree-ssa/ssa-dse-21.c: Likewise.

From-SVN: r244442

7 years agore PR tree-optimization/33562 (aggregate DSE disabled)
Jeff Law [Fri, 13 Jan 2017 15:37:09 +0000 (08:37 -0700)]
re PR tree-optimization/33562 (aggregate DSE disabled)

PR tree-optimization/33562
PR tree-optimization/61912
PR tree-optimization/77485
* sbitmap.h (bitmap_count_bits): Prototype.
(bitmap_clear_range, bitmap_set_range): Likewise.
* sbitmap.c (bitmap_clear_range): New function.
(bitmap_set_range, sbitmap_popcount, bitmap_count_bits): Likewise.

From-SVN: r244441

7 years agoDefine cxx11-abi effective target for libstdc++ tests
Jonathan Wakely [Fri, 13 Jan 2017 14:57:33 +0000 (14:57 +0000)]
Define cxx11-abi effective target for libstdc++ tests

PR libstdc++/79075
* testsuite/lib/libstdc++.exp (check_v3_target_filesystem_ts): Remove
redundant option from cxxflags.
(check_effective_target_cxx11-abi): Define.
* testsuite/21_strings/basic_string/allocator/71964.cc: Use cxx11-abi
effective target.
* testsuite/21_strings/basic_string/allocator/char/copy.cc: Likewise.
* testsuite/21_strings/basic_string/allocator/char/copy_assign.cc:
Likewise.
* testsuite/21_strings/basic_string/allocator/char/minimal.cc:
Likewise.
* testsuite/21_strings/basic_string/allocator/char/move.cc: Likewise.
* testsuite/21_strings/basic_string/allocator/char/move_assign.cc:
Likewise.
* testsuite/21_strings/basic_string/allocator/char/noexcept.cc:
Likewise.
* testsuite/21_strings/basic_string/allocator/char/swap.cc: Likewise.
* testsuite/21_strings/basic_string/allocator/wchar_t/copy.cc:
Likewise.
* testsuite/21_strings/basic_string/allocator/wchar_t/copy_assign.cc:
Likewise.
* testsuite/21_strings/basic_string/allocator/wchar_t/minimal.cc:
Likewise.
* testsuite/21_strings/basic_string/allocator/wchar_t/move.cc:
Likewise.
* testsuite/21_strings/basic_string/allocator/wchar_t/move_assign.cc:
Likewise.
* testsuite/21_strings/basic_string/allocator/wchar_t/noexcept.cc:
Likewise.
* testsuite/21_strings/basic_string/allocator/wchar_t/swap.cc:
Likewise.
* testsuite/23_containers/list/61347.cc: Likewise.
* testsuite/27_io/basic_fstream/cons/base.cc: Likewise.
* testsuite/27_io/ios_base/failure/cxx11.cc: Likewise.

From-SVN: r244440

7 years agore PR libstdc++/78389 (list::merge and list::sort are not exception safe)
Ville Voutilainen [Fri, 13 Jan 2017 14:46:25 +0000 (16:46 +0200)]
re PR libstdc++/78389 (list::merge and list::sort are not exception safe)

PR libstdc++/78389
* include/bits/list.tcc (merge(list&&)):
Adjust list sizes if the comparator throws.
(merge(list&&, _StrictWeakOrdering)): Likewise.
(sort()): Splice elements back from the scratch buffers
if the comparator throws.
(sort(_StrictWeakOrdering)): Likewise.
* testsuite/23_containers/list/operations/78389.cc: New.

From-SVN: r244439

7 years agoMark test as XFAIL for C++17 mode
Jonathan Wakely [Fri, 13 Jan 2017 13:01:48 +0000 (13:01 +0000)]
Mark test as XFAIL for C++17 mode

* testsuite/23_containers/unordered_set/allocator/ext_ptr.cc: Mark
XFAIL for C++17 until node reinsertion supports fancy pointers.

From-SVN: r244436

7 years agoReload global options when strict aliasing is dropped (PR ipa/79043).
Martin Liska [Fri, 13 Jan 2017 12:56:54 +0000 (13:56 +0100)]
Reload global options when strict aliasing is dropped (PR ipa/79043).

2017-01-13  Martin Liska  <mliska@suse.cz>

PR ipa/79043
* function.c (set_cfun): Add new argument force.
* function.h (set_cfun): Likewise.
* ipa-inline-transform.c (inline_call): Use the function when
strict alising from is dropped for function we inline to.
2017-01-13  Martin Liska  <mliska@suse.cz>

PR ipa/79043
* gcc.c-torture/execute/pr79043.c: New test.

From-SVN: r244435

7 years agogimple-parser.c (c_parser_gimple_compound_statement): Handle nops.
Richard Biener [Fri, 13 Jan 2017 12:55:12 +0000 (12:55 +0000)]
gimple-parser.c (c_parser_gimple_compound_statement): Handle nops.

2017-01-13  Richard Biener  <rguenther@suse.de>

* gimple-parser.c (c_parser_gimple_compound_statement): Handle
nops.

From-SVN: r244434

7 years agotree-pretty-print.c (dump_generic_node): Fix inverted condition for dumping GIMPLE...
Richard Biener [Fri, 13 Jan 2017 12:54:16 +0000 (12:54 +0000)]
tree-pretty-print.c (dump_generic_node): Fix inverted condition for dumping GIMPLE INTEGER_CSTs.

2017-01-13  Richard Biener  <rguenther@suse.de>

* tree-pretty-print.c (dump_generic_node): Fix inverted condition
for dumping GIMPLE INTEGER_CSTs.

From-SVN: r244433

7 years agoPR78361 recognise noexcept functions as referenceable
Jonathan Wakely [Fri, 13 Jan 2017 12:18:42 +0000 (12:18 +0000)]
PR78361 recognise noexcept functions as referenceable

2017-01-13  Jonathan Wakely  <jwakely@redhat.com>

PR libstdc++/78361
* testsuite/20_util/add_pointer/value.cc: Test forming function
pointers.

2017-01-13  Michael Brune  <lucdanton@free.fr>

PR libstdc++/78361
* include/std/type_traits (__is_referenceable): Handle noexcept
function types.

From-SVN: r244432

7 years agoRestore Solaris/SPARC Ada bootstrap
Rainer Orth [Fri, 13 Jan 2017 12:14:06 +0000 (12:14 +0000)]
Restore Solaris/SPARC Ada bootstrap

* gcc-interface/Makefile.in (SPARC/Solaris): Fix typo.

From-SVN: r244431

7 years agoRequire C11 for C++17 on Solaris
Rainer Orth [Fri, 13 Jan 2017 12:11:00 +0000 (12:11 +0000)]
Require C11 for C++17 on Solaris

* config/sol2.h (TARGET_OS_CPP_BUILTINS): Define __STDC_VERSION__
to 201112L since C++17.

From-SVN: r244430

7 years ago2017-01-13 Matthias Klose <doko@ubuntu.com>
Matthias Klose [Fri, 13 Jan 2017 12:10:39 +0000 (12:10 +0000)]
2017-01-13  Matthias Klose  <doko@ubuntu.com>

        * Import zlib 1.2.10.
        * configure: Regenerate.

From-SVN: r244429

7 years agoOnly declare gets for C++ < 2014 on Solaris (PR libstdc++/78979)
Rainer Orth [Fri, 13 Jan 2017 12:09:13 +0000 (12:09 +0000)]
Only declare gets for C++ < 2014 on Solaris (PR libstdc++/78979)

PR libstdc++/78979
* inclhack.def (solaris_gets_c11, solaris_gets_cxx14)
(solaris_std_gets_cxx14, solaris_stdlib_noreturn): New fixes.
* fixincl.x: Regenerate.
* tests/base/iso/stdio_iso.h [SOLARIS_GETS_C11_CHECK,
SOLARIS_GETS_CXX14_CHECK, SOLARIS_STD_GETS_CXX14_CHECK,
SOLARIS_STDLIB_NORETURN_CHECK]: New tests.

From-SVN: r244428

7 years agore PR middle-end/78411 (FAIL: gcc.target/i386/pr45685.c scan-assembler-times cmov 6)
Richard Biener [Fri, 13 Jan 2017 11:34:40 +0000 (11:34 +0000)]
re PR middle-end/78411 (FAIL: gcc.target/i386/pr45685.c scan-assembler-times cmov 6)

2017-01-13  Richard Biener  <rguenther@suse.de>

PR middle-end/78411
* gcc.target/i386/pr45685.c: Add -ftree-loop-if-convert.

From-SVN: r244427

7 years agogetting_started_with_gnat.rst, [...]: Update documentation.
Arnaud Charlet [Fri, 13 Jan 2017 11:23:42 +0000 (11:23 +0000)]
getting_started_with_gnat.rst, [...]: Update documentation.

* doc/gnat_ugn/getting_started_with_gnat.rst,
doc/gnat_ugn/inline_assembler.rst,
doc/gnat_ugn/building_executable_programs_with_gnat.rst,
doc/gnat_ugn/elaboration_order_handling_in_gnat.rst,
doc/gnat_ugn/about_this_guide.rst,
doc/gnat_ugn/platform_specific_information.rst,
doc/gnat_ugn/example_of_binder_output.rst,
doc/gnat_ugn/gnat_and_program_execution.rst,
doc/gnat_ugn/gnat_utility_programs.rst,
doc/gnat_ugn/the_gnat_compilation_model.rst,
doc/gnat_rm/implementation_defined_attributes.rst,
doc/gnat_rm/compatibility_and_porting_guide.rst,
doc/gnat_rm/standard_library_routines.rst,
doc/gnat_rm/standard_and_implementation_defined_restrictions.rst,
doc/gnat_rm/implementation_defined_pragmas.rst,
doc/gnat_rm/the_gnat_library.rst,
doc/gnat_rm/obsolescent_features.rst,
doc/gnat_rm/about_this_guide.rst,
doc/gnat_rm/the_implementation_of_standard_i_o.rst,
doc/gnat_rm/implementation_of_ada_2012_features.rst,
doc/gnat_rm/interfacing_to_other_languages.rst,
doc/gnat_rm/implementation_defined_aspects.rst,
doc/gnat_rm.rst: Update documentation.
* gnat_rm.texi, gnat_ugn.texi: Regenerated.

From-SVN: r244426

7 years ago[multiple changes]
Arnaud Charlet [Fri, 13 Jan 2017 11:16:56 +0000 (12:16 +0100)]
[multiple changes]

2017-01-13  Ed Schonberg  <schonberg@adacore.com>

* einfo.ads: minor grammar fixes in comment of Normalized_Position_Max.
* scil_ll.adb: Minor style fix in comment.
* sem_ch8.adb (Analyze_Expanded_Name): Perform dimension analysis
even if entity is already set, because the node may be renalyzed
after inlining transformations.

2017-01-13  Javier Miranda  <miranda@adacore.com>

* sem_res.adb (Resolve_Call): Do not establish a transient scope
for a call to inlinable expression function (since the call will
be replaced by its returned object).
* exp_ch6.ads (Is_Inlinable_Expression_Function): New subprogram.
* exp_ch6.adb (Expression_Of_Expression_Function): New subprogram.
(Expand_Call): For inlinable expression function call replace the
call by its returned object.
(Is_Inlinable_Expression_Function): New subprogram.

From-SVN: r244425

7 years ago[multiple changes]
Arnaud Charlet [Fri, 13 Jan 2017 11:13:00 +0000 (12:13 +0100)]
[multiple changes]

2017-01-13  Gary Dismukes  <dismukes@adacore.com>

* checks.adb: Minor typo fix and reformatting.

2017-01-13  Javier Miranda  <miranda@adacore.com>

* contracts.adb (Contract_Only_Subprograms): Remove formal.
(Copy_Original_Specification): Removed.
(Skip_Contract_Only_Subprogram): Move here checks previously
located in the caller of this routine (to leave the code more clean).
(Build_Contract_Only_Subprogram): Code cleanup.
* scil_ll.ads, scil_ll.adb (Get_Contract_Only_Body_Name): Removed.
(Get_Contract_Only_Missing_Body_Name): Removed.

From-SVN: r244424

7 years ago[multiple changes]
Arnaud Charlet [Fri, 13 Jan 2017 11:08:57 +0000 (12:08 +0100)]
[multiple changes]

2017-01-13  Javier Miranda  <miranda@adacore.com>

* sem_ch6.adb (Cloned_Expression): New subprogram.
(Freeze_Expr_Types): Complete previous patch since the expression
of an expression-function may have iterators and loops with
defining identifiers which, as part of the preanalysis of the
expression, may be left decorated with itypes that will not be
available in the tree passed to the backend.

2017-01-13  Ed Schonberg  <schonberg@adacore.com>

* checks.adb (Apply_Type_Conversion_Checks): Optimize a type
conversion to Integer of an expression that is an attribute
reference 'Pos on an enumeration type.

2017-01-13  Bob Duff  <duff@adacore.com>

* atree.ads: Minor comment fix.

From-SVN: r244423

7 years agosem_ch6.adb (Check_Aggregate_Accessibility): Ignore function calls in accessibility...
Justin Squirek [Fri, 13 Jan 2017 11:06:54 +0000 (11:06 +0000)]
sem_ch6.adb (Check_Aggregate_Accessibility): Ignore function calls in accessibility check on return statement.

2017-01-13  Justin Squirek  <squirek@adacore.com>

* sem_ch6.adb (Check_Aggregate_Accessibility): Ignore function
calls in accessibility check on return statement.

From-SVN: r244422

7 years agosem_ch6.adb (Analyze_Subprogram_Body_Helper): Ensure that the input body is a subprog...
Hristian Kirtchev [Fri, 13 Jan 2017 10:57:01 +0000 (10:57 +0000)]
sem_ch6.adb (Analyze_Subprogram_Body_Helper): Ensure that the input body is a subprogram body before trying to determine...

2017-01-13  Hristian Kirtchev  <kirtchev@adacore.com>

* sem_ch6.adb (Analyze_Subprogram_Body_Helper):
Ensure that the input body is a subprogram body before trying to
determine whether it denoted an expression function.  Note that
subprogram body stubs cannot denote expression functions.

From-SVN: r244421

7 years agobindgen.adb, [...]: Minor reformatting and typo fixes.
Gary Dismukes [Fri, 13 Jan 2017 10:56:14 +0000 (10:56 +0000)]
bindgen.adb, [...]: Minor reformatting and typo fixes.

2017-01-13  Gary Dismukes  <dismukes@adacore.com>

* bindgen.adb, sem_ch6.adb, binde.adb, exp_ch3.adb: Minor reformatting
and typo fixes.

From-SVN: r244420

7 years ago[multiple changes]
Arnaud Charlet [Fri, 13 Jan 2017 10:54:43 +0000 (11:54 +0100)]
[multiple changes]

2017-01-13  Javier Miranda  <miranda@adacore.com>

* einfo.ads (Component_Bit_Offset): Fix documentation.
* sem_ch13.adb (Check_Record_Representation_Clause): Skip check
on record holes for components with unknown compile-time offsets.

2017-01-13  Bob Duff  <duff@adacore.com>

* ali.ads, ali.adb (Static_Elaboration_Model_Used): Remove unused flag.
* g-locfil.ads: Minor comment fix.

2017-01-13  Bob Duff  <duff@adacore.com>

* binde.adb (Elab_New): New elaboration order algorithm
that is expected to cause fewer ABE issues. This is a work in
progress. The new algorithm is currently disabled, and can be
enable by the -dp switch, or by modifying the Do_Old and Do_New
etc. flags and rebuilding. Experimental code is included to
compare the results of the old and new algorithms.
* binde.ads: Use GNAT.Dynamic_Tables instead of Table, so we
can have multiple of these tables, so the old and new algorithms
can coexist.
* bindgen.ads (Gen_Output_File): Pass Elab_Order as an 'in'
parameter of type array. This avoids the global variable, and
allows bounds checking (which is normally defeated by the tables
packages). It also ensures that the Elab_Order is read-only
to Bindgen.
* bindgen.adb: Pass Elab_Order as an 'in' parameter to all
subprograms that need it, as above.
* debug.adb: Document new -dp switch. Modify doc of old -do
switch.
* gnatbind.adb (Gnatbind): Make use of new interfaces to Binde
and Bindgen.  Move writing of closure (-R and -Ra switches)
to Binde; that's more convenient.

2017-01-13  Ed Schonberg  <schonberg@adacore.com>

* sem_ch6.adb (Analyze_Expression_Function): If the expression
function is a completion, all entities referenced in the
expression are frozen. As a consequence, a reference to an
uncompleted private type from an enclosing scope is illegal.

From-SVN: r244419

7 years ago[multiple changes]
Arnaud Charlet [Fri, 13 Jan 2017 10:51:45 +0000 (11:51 +0100)]
[multiple changes]

2017-01-13  Javier Miranda  <miranda@adacore.com>

* sem_ch6.adb (Freeze_Expr_Types): New subprogram.
(Analyze_Subprogram_Body_Helper): At the occurrence of an
expression function declaration that is a completion, its
expression causes freezing (AI12-0103).

2017-01-13  Vadim Godunko  <godunko@adacore.com>

* a-coinho-shared.adb: Fix memory leaks in Constant_Reference and
Reference functions of Ada.Containers.Indefinite_Holders.

2017-01-13  Bob Duff  <duff@adacore.com>

* s-os_lib.ads: Minor comment fixes.

2017-01-13  Hristian Kirtchev  <kirtchev@adacore.com>

* exp_ch3.adb (Default_Initialize_Object): Do not default
initialize an object when it is of a task type and restriction
No_Tasking is in effect because the initialization is obsolete.
* exp_ch9.adb (Build_Master_Entity): Do not generate a master when
restriction No_Tasking is in effect.
(Build_Master_Renaming): Do not rename a master when restriction
No_Tasking is in effect.

From-SVN: r244418

7 years ago[multiple changes]
Arnaud Charlet [Fri, 13 Jan 2017 10:48:57 +0000 (11:48 +0100)]
[multiple changes]

2017-01-13  Ed Schonberg  <schonberg@adacore.com>

* sem_aggr.adb (Resolve_Array_Aggregate): The code that verifies
the legality of An others clause applies as well to a choice in
an Iterated_component_ association.
(Resolve_Iterated_Component_Association): An others choice
is legal.
* exp_aggr.adb (Aggr_Assignment_OK_For_Backend): An
Iterated_Component_Association is not static.

2017-01-13  Hristian Kirtchev  <kirtchev@adacore.com>

* exp_ch3.adb (Freeze_Type): Mark the Ghost mode as set in case
control is passed to the expresion handler before the new mode
is set.
* sem_ch12.adb (Analyze_Package_Instantiation,
Analyze_Subprogram_Instantiation): Mark the Ghost mode as set
in case control is passed to the expresion handler before the
new mode is set.

From-SVN: r244417

7 years agosem_aggr.adb, [...]: Minor reformatting.
Hristian Kirtchev [Fri, 13 Jan 2017 10:47:25 +0000 (10:47 +0000)]
sem_aggr.adb, [...]: Minor reformatting.

2017-01-13  Hristian Kirtchev  <kirtchev@adacore.com>

* sem_aggr.adb, sem_ch3.adb, inline.adb, sem_util.adb, exp_ch4.adb,
exp_aggr.adb: Minor reformatting.

From-SVN: r244416

7 years agoinline.adb: Minor reformatting and typo fix.
Gary Dismukes [Fri, 13 Jan 2017 10:45:17 +0000 (10:45 +0000)]
inline.adb: Minor reformatting and typo fix.

2017-01-13  Gary Dismukes  <dismukes@adacore.com>

* inline.adb: Minor reformatting and typo fix.

From-SVN: r244415

7 years ago[multiple changes]
Arnaud Charlet [Fri, 13 Jan 2017 10:42:37 +0000 (11:42 +0100)]
[multiple changes]

2017-01-13  Ed Schonberg  <schonberg@adacore.com>

* sem_util.ads, sem_util.adb (Choice_List): Move function here
from sem_aggr.adb, for use elsewhere.
* sem_ch3.adb (Analyze_Object_Declaration): Use Choice_List.
* sem_aggr.adb (Resolve_Array_Aggregate): Remove
Iterated_Component_Present.
* exp_aggr.adb: Use Choice_List throughout, to handle
Iterated_Component_Associations.
(Gen_Loop): Generate proper loop for an
Iterated_Component_Association: loop variable has the identifier
of the original association. Generate a loop even for a single
component choice, in order to make loop parameter visible in
expression.
(Flatten): An Iterated_Component_Association is not static.

2017-01-13  Yannick Moy  <moy@adacore.com>

* exp_ch4.adb (Expand_N_Op_Expon): Ensure that the value of
float exponentiation for statically known small negative values
is the reciprocal of the exponentiation for the opposite value
of the exponent.
* s-exnllf.adb (Exn_Float, Exn_Long_Float, Exn_Long_Long_Float):
Ensure that the value of float exponentiation for negative values
is the reciprocal of the exponentiation for the opposite value
of the exponent.
* inline.adb (Expand_Inlined_Call): Fix the count
for the number of generated gotos.

From-SVN: r244414

7 years agore PR fortran/70697 ([Coarray] ICE on EVENT WAIT with array element UNTIL_COUNT argument)
Andre Vehreschild [Fri, 13 Jan 2017 10:39:52 +0000 (11:39 +0100)]
re PR fortran/70697 ([Coarray] ICE on EVENT WAIT with array element UNTIL_COUNT argument)

gcc/testsuite/ChangeLog:

2017-01-13  Andre Vehreschild  <vehre@gcc.gnu.org>

PR fortran/70697
* gfortran.dg/coarray/event_4.f08: New test.

gcc/fortran/ChangeLog:

2017-01-13  Andre Vehreschild  <vehre@gcc.gnu.org>

PR fortran/70697
* resolve.c (resolve_lock_unlock_event): Resolve the expression for
event's until_count.

From-SVN: r244413

7 years agoCode cleanups.
Arnaud Charlet [Fri, 13 Jan 2017 10:39:38 +0000 (11:39 +0100)]
Code cleanups.

From-SVN: r244412

7 years ago[multiple changes]
Arnaud Charlet [Fri, 13 Jan 2017 10:38:56 +0000 (11:38 +0100)]
[multiple changes]

2017-01-13  Yannick Moy  <moy@adacore.com>

* inline.adb: Code cleanup.
* sem_util.adb (Is_OK_Volatile_Context): Add
expression in delay statement as OK for volatile context.

2017-01-13  Ed Schonberg  <schonberg@adacore.com>

* sem_aggr.adb (Resolve_Array_Aggregate): In normal compilation
mode a choice that is a subtype with a static predicate is
replaced by the values it covers. This transformation must not
be performed in ASIS mode, to preserve the source for analysis.

2017-01-13  Justin Squirek  <squirek@adacore.com>

* nlists.ads: Correct minor typo.

From-SVN: r244411

7 years ago[multiple changes]
Arnaud Charlet [Fri, 13 Jan 2017 10:33:37 +0000 (11:33 +0100)]
[multiple changes]

2017-01-13  Gary Dismukes  <dismukes@adacore.com>

* sem_ch13.adb: Minor reformatting and typo fix.

2017-01-13  Ed Schonberg  <schonberg@adacore.com>

* par-ch4.adb (P_Aggregate_Or_Parent_Expr): An
Iterated_Component_Association is a named association in an
array aggregate.
* sem_aggr.adb (Resolve_Iterated_Component_Association): New
procedure, subsidiary of Resolve_Array_Aggregate, to analyze
and resolve the discrete choices and the expression of the
new construct.
* sinfo.adb, sinfo.ads: In analogy with N_Component_Association,
Loop_Actions and Box_Present are attributes of
N_Iterated_Component_Association nodes. Box_Present is always
False in this case.
* sprint.adb (Sprint_Node): An Iterated_Component_Association
has a Discrete_Choices list, as specified in the RM. A
Component_Association for aggregate uses instead a Choices list.
We have to live with this small inconsistency because the new
construct also has a defining identifier, and there is no way
to merge the two node structures.

From-SVN: r244410

7 years ago[multiple changes]
Arnaud Charlet [Fri, 13 Jan 2017 10:24:28 +0000 (11:24 +0100)]
[multiple changes]

2017-01-13  Yannick Moy  <moy@adacore.com>

* inline.adb (Remove_Aspects_And_Pragmas): Add Unused to the
list of pragmas to remove.  Remove pragmas from the list of
statements in the body to inline.
* namet.adb, namet.ads (Nam_In): New version with 12 parameters.

2017-01-13  Ed Schonberg  <schonberg@adacore.com>

* sem_ch3.adb (Resolve_Aspects): New procedure, subsidiary of
Analyze_Declarations, to analyze and resolve the expressions of
aspect specifications in the current declarative list, so that
the expressions have proper entity and type info.  This is needed
for ASIS when there is no subsequent expansion to generate this
semantic information.
* sem_ch13.adb (Check_Aspect_At_End_Of_Declarations): Use Etype of
original expression, to suppress cascaded errors when expression
has been constant-folded.
(Resolve_Aspect_Expressions, Resolve_Name): Preserve entities in
ASIS mode, because there is no subsequent expansion to decorate
the tree.

From-SVN: r244409

7 years agoinline.adb, inline.ads (Call_Can_Be_Inlined_In_GNATprove_Mode): New function to detec...
Yannick Moy [Fri, 13 Jan 2017 10:22:23 +0000 (10:22 +0000)]
inline.adb, inline.ads (Call_Can_Be_Inlined_In_GNATprove_Mode): New function to detect when a call may be inlined or not in GNATprove mode.

2017-01-13  Yannick Moy  <moy@adacore.com>

* inline.adb, inline.ads (Call_Can_Be_Inlined_In_GNATprove_Mode):
New function to detect when a call may be inlined or not in
GNATprove mode.
(Expand_Inlined_Call): Ensure that a temporary
is always created in the cases where a type conversion may be
needed on an input parameter in GNATprove mode, so that GNATprove
sees the check to perform.
* sem_res.adb (Resolve_Call): In GNATprove mode, skip inlining
when not applicable due to actual requiring type conversion
with possible check but no temporary value can be copied for
GNATprove to see the check.

From-SVN: r244408

7 years agore PR fortran/70696 ([Coarray] ICE on EVENT POST of host-associated EVENT_TYPE coarray)
Andre Vehreschild [Fri, 13 Jan 2017 10:22:21 +0000 (11:22 +0100)]
re PR fortran/70696 ([Coarray] ICE on EVENT POST of host-associated EVENT_TYPE coarray)

gcc/testsuite/ChangeLog:

2017-01-13  Andre Vehreschild  <vehre@gcc.gnu.org>

PR fortran/70696
* gfortran.dg/coarray/event_3.f08: New test.

gcc/fortran/ChangeLog:

2017-01-13  Andre Vehreschild  <vehre@gcc.gnu.org>

PR fortran/70696
* trans-expr.c (gfc_get_tree_for_caf_expr): Ensure the backend_decl
is valid before accessing it.

libgfortran/ChangeLog:

2017-01-13  Andre Vehreschild  <vehre@gcc.gnu.org>

PR fortran/70696
* caf/single.c (_gfortran_caf_register): Allocate enough memory for
the event counter.

From-SVN: r244407

7 years agosem_aggr.adb, [...]: Update all eligible case statements to reflect the new style...
Hristian Kirtchev [Fri, 13 Jan 2017 10:19:19 +0000 (10:19 +0000)]
sem_aggr.adb, [...]: Update all eligible case statements to reflect the new style for case alternatives.

2017-01-13  Hristian Kirtchev  <kirtchev@adacore.com>

* sem_aggr.adb, par_sco.adb, s-osprim-mingw.adb, exp_ch5.adb,
exp_prag.adb, sem_ch3.adb, xr_tabls.adb, lib-xref-spark_specific.adb,
layout.adb, sem_dist.adb, exp_spark.adb, exp_ch7.adb, gnatcmd.adb,
exp_util.adb, prj-proc.adb, sem_aux.adb, comperr.adb, g-memdum.adb,
exp_attr.adb, s-intman-solaris.adb, exp_ch9.adb, make.adb, live.adb,
g-sercom-linux.adb, sem_dim.adb, mlib-prj.adb, s-intman-posix.adb,
sem_ch9.adb, sem_ch10.adb, prep.adb, einfo.adb, scng.adb, checks.adb,
prj-strt.adb, sem_prag.adb, eval_fat.adb, sem_ch12.adb, sem.adb,
a-numaux-x86.adb, a-stwifi.adb, i-cobol.adb, prj.adb,
get_spark_xrefs.adb, s-tasini.adb, rtsfind.adb, freeze.adb,
g-arrspl.adb, par-ch4.adb, sem_util.adb, sem_res.adb, expander.adb,
sem_attr.adb, exp_dbug.adb, prj-pp.adb, a-stzfix.adb, s-interr.adb,
s-wchcnv.adb, switch-m.adb, gnat1drv.adb, sinput-l.adb, stylesw.adb,
contracts.adb, s-intman-android.adb, g-expect.adb, exp_ch4.adb,
g-comlin.adb, errout.adb, sinput.adb, s-exctra.adb, repinfo.adb,
g-spipat.adb, g-debpoo.adb, exp_ch6.adb, sem_ch4.adb, exp_ch13.adb,
a-wtedit.adb, validsw.adb, pprint.adb, widechar.adb, makeutl.adb,
ali.adb, set_targ.adb, sem_mech.adb, sem_ch6.adb, gnatdll.adb,
get_scos.adb, g-pehage.adb, s-tratas-default.adb, gnatbind.adb,
prj-dect.adb, g-socthi-mingw.adb, par-prag.adb, prj-nmsc.adb,
exp_disp.adb, par-ch12.adb, binde.adb, sem_ch8.adb,
s-tfsetr-default.adb, s-regexp.adb, gprep.adb, s-tpobop.adb,
a-teioed.adb, sem_warn.adb, sem_eval.adb, g-awk.adb, s-io.adb,
a-ztedit.adb, xoscons.adb, exp_intr.adb, sem_cat.adb, sprint.adb,
g-socket.adb, exp_dist.adb, sem_ch13.adb, s-tfsetr-vxworks.adb,
par-ch3.adb, treepr.adb, g-forstr.adb, g-catiio.adb, par-ch5.adb,
uname.adb, osint.adb, exp_ch3.adb, prj-env.adb, a-strfix.adb,
a-stzsup.adb, prj-tree.adb, s-fileio.adb: Update all eligible case
statements to reflect the new style for case alternatives. Various
code clean up and reformatting.

From-SVN: r244406

7 years ago[multiple changes]
Arnaud Charlet [Fri, 13 Jan 2017 10:13:41 +0000 (11:13 +0100)]
[multiple changes]

2017-01-13  Gary Dismukes  <dismukes@adacore.com>

* exp_util.adb: Minor reformatting.

2017-01-13  Yannick Moy  <moy@adacore.com>

* exp_spark.adb: Code cleanup.
* sem_ch9.adb (Analyze_Delay_Until): Resolve
expression so that calls are identified as such inside delay
until.

From-SVN: r244405

7 years agoMinor reformatting.
Arnaud Charlet [Fri, 13 Jan 2017 10:11:43 +0000 (11:11 +0100)]
Minor reformatting.

From-SVN: r244404

7 years agoexp_util.adb (Insert_Actions): Handle Iterated_Component_Association.
Ed Schonberg [Fri, 13 Jan 2017 10:11:17 +0000 (10:11 +0000)]
exp_util.adb (Insert_Actions): Handle Iterated_Component_Association.

2017-01-13  Ed Schonberg  <schonberg@adacore.com>

* exp_util.adb (Insert_Actions): Handle Iterated_Component_Association.
* par-ch3.adb (P_Discrete_Choice_List): An
Iterated_Component_Association is an array aggregate component.
* par-ch4.adb (P_Iterated_Component_Association): New procedure.
(Is_Quantified_Expression): New function that performs a lookahead
to distinguish quantified expressions from iterated component
associations.
(P_Aggregate_Or_Paren_Expr): Recognize iterated component
associations.
(P_Unparen_Cond_Case_Quant_Expression, P_Primary): Ditto.
* sem.adb (Analyze): Handle Iterated_Component_Association.
* sem_aggr.adb (Resolve_Array_Aggregate): Dummy handling of iterated
component associations.
* sinfo.ads, sinfo.adb: Entries for for
N_Iterated_Component_Association and its fields.
* sprint.adb (Sprint_Node_Actual): Handle
N_Iterated_Component_Association.

From-SVN: r244403

7 years agore PR sanitizer/78887 (Failure to build aarch64 allmodconfig Linux kernel 4.9)
Maxim Ostapenko [Fri, 13 Jan 2017 10:08:50 +0000 (10:08 +0000)]
re PR sanitizer/78887 (Failure to build aarch64 allmodconfig Linux kernel 4.9)

PR sanitizer/78887
* asan.c (asan_needs_odr_indicator_p): Don't emit ODR indicators
if -fsanitize=kernel-address is present.

From-SVN: r244402

7 years ago[multiple changes]
Arnaud Charlet [Fri, 13 Jan 2017 10:08:46 +0000 (11:08 +0100)]
[multiple changes]

2017-01-13  Justin Squirek  <squirek@adacore.com>

* sem_ch12.adb (Analyze_Package_Instantiation): Move disabiling
of the style check until after preanalysis of acutals.

2017-01-13  Yannick Moy  <moy@adacore.com>

* sem_ch13.adb: Minor reformatting.
* par-ch11.adb: minor style fix in whitespace
* gnatbind.adb (Gnatbind): Scope of Std_Lib_File
reduced to Add_Artificial_ALI_File; style fix in declaration of
Text; grammar fix in comment.
* osint-c.adb (Read_Library_Info): strip trailing NUL from result.
* freeze.adb: Cleanup to pass pragma instead of
expression to call.
* exp_spark.adb (Expand_SPARK_Attribute_Reference): New procedure to
replace System'To_Address by equivalent call.

From-SVN: r244401

7 years ago[multiple changes]
Arnaud Charlet [Fri, 13 Jan 2017 10:05:22 +0000 (11:05 +0100)]
[multiple changes]

2017-01-13  Arnaud Charlet  <charlet@adacore.com>

* bindusg.adb: Improve usage output for -f switch.

2017-01-13  Hristian Kirtchev  <kirtchev@adacore.com>

* frontend.adb, freeze.adb, sem_res.adb, sem_attr.adb, sem_ch8.adb:
Minor reformatting.

2017-01-13  Ed Schonberg  <schonberg@adacore.com>

* sem_ch13.adb (Is_Predicate_Static): Following the intent of the RM,
treat comparisons on strings as legal in a Static_Predicate.
(Is_Predicate_Static, Is_Type_Ref): Predicate also returns true on
a function call that is the expansion of a string comparison.The
function call is built when compiling the corresponding predicate
function, but the expression has been found legal as a static
predicate during earlier analysis.
* sem_eval.adb (Real_Or_String_Static_Predicate_Matches): Handle
properly a function call that is the expansion of a string
comparison operation, in order to recover the Static_Predicate
expression and apply it to a static argument when needed.

From-SVN: r244400

7 years ago[multiple changes]
Arnaud Charlet [Fri, 13 Jan 2017 10:01:38 +0000 (11:01 +0100)]
[multiple changes]

2017-01-13  Tristan Gingold  <gingold@adacore.com>

* s-mmap.adb, s-mmap.ads (Open_Read_No_Exception): New function.
(Open_Read): Re-implement using Open_Read_No_Exception.
(Open_Write): Raise exception in case of error.
* s-mmosin-mingw.adb (Open_Common): Do not raise exception.
* s-mmosin-unix.adb (Open_Read, Open_Write): Do not
reaise exception.
* s-mmosin-mingw.ads, s-mmosin-unix.ads (Open_Read): Adjust comment.

2017-01-13  Yannick Moy  <moy@adacore.com>

* checks.adb: Code cleanup.

2017-01-13  Yannick Moy  <moy@adacore.com>

* freeze.adb (Check_Inherited_Conditions): Use analyzed pragma
expression instead of unanalyzed aspect expression for checking
the validity of inheriting an operation. Also copy the expression
being passing it to Build_Class_Wide_Expression, as this call
modifies its argument.
* sem_util.ads Fix comment to reference correct function name
New_Copy_Tree.

2017-01-13  Javier Miranda  <miranda@adacore.com>

* sem_res.adb (Resolve_Generalized_Indexing): Compiling in ASIS mode,
when we propagate information about the indexes back to the original
indexing mode and the prefix of the index is a function call, do not
remove any parameter from such call.

2017-01-13  Gary Dismukes  <dismukes@adacore.com>

* exp_ch6.ads (Needs_BIP_Finalization_Master): Update comment.
* exp_ch6.adb (Needs_BIP_Finalization_Master): Return True for
a build-in-place function whose result type is tagged.

2017-01-13  Yannick Moy  <moy@adacore.com>

* sem_ch8.adb (Analyze_Subprogram_Renaming.Build_Class_Wide_Wrapper):
Do not generate a wrapper when the only candidate is a class-wide
subprogram.
(Analyze_Subprogram_Renaming): Do not freeze the renaming or renamed
inside a generic context.

From-SVN: r244399

7 years ago[multiple changes]
Arnaud Charlet [Fri, 13 Jan 2017 09:59:17 +0000 (10:59 +0100)]
[multiple changes]

2017-01-13  Hristian Kirtchev  <kirtchev@adacore.com>

* exp_util.adb (Add_Inherited_Tagged_DIC):
Pass the object parameters of both the parent and the derived
type DIC procedure to the reference replacement circuitry.
(Find_DIC_Type): Modify the circuitry to present the partial
view of a private type in case the private type defines its own
DIC pragma.
(Replace_Object_And_Primitive_References): Add two
optional formal parameters.  Update the comment on usage. Update
the replacement of references to object parameters.

2017-01-13  Gary Dismukes  <dismukes@adacore.com>

* einfo.adb, sem_ch6.adb, atree.adb: Minor reformatting and typo fix.

2017-01-13  Ed Schonberg  <schonberg@adacore.com>

* sem_res.adb (Resolve_Actuals): Apply Scalar_Range_Check to
an out parameter that is a type conversion, independently of th
range check that may apply to the expression of the conversion,
for use in GNATProve.

2017-01-13  Yannick Moy  <moy@adacore.com>

* gnat1drv.adb (Gnat1drv): Move the implicit with for System in
GNATprove_Mode here to Frontend.
* frontend.adb (Frontend): Move the implicit with for System
in GNATprove_Mode here as it ismore correct this way; the old
place only worked by chance, since there were no overloaded names.
* rtsfind.ads (RE_Id, RE_Unit_Table): Add RE_Tasking_State.
* sem_attr.adb (Analyze_Attribute): In GNATprove_Mode, for the
four attributes identified in SRM 9(18), add an implicit with
to Ada.Task_Identification.
* sem_ch8.adb (Analyze_Subprogram_Renaming.Build_Class_Wide_Wrapper):
Deal specially with the wrapper introduced for AI05-0071 in GNATprove
mode.
* checks.adb (Apply_Discriminant_Check,
Apply_Selected_Length_Checks, Apply_Selected_Range_Checks):
In GNATprove mode, we do not apply the checks, but we still
analyze the expression to possibly issue errors on SPARK
code when a run-time error can be detected at compile time.
(Selected_Length_Checks, Selected_Range_Checks): Perform analysis
in GNATprove mode.

From-SVN: r244398

7 years agoMinor reformatting.
Arnaud Charlet [Fri, 13 Jan 2017 09:44:48 +0000 (10:44 +0100)]
Minor reformatting.

From-SVN: r244397

7 years ago[multiple changes]
Arnaud Charlet [Fri, 13 Jan 2017 09:43:56 +0000 (10:43 +0100)]
[multiple changes]

2017-01-13  Hristian Kirtchev  <kirtchev@adacore.com>

* expander.adb (Expand): Add a warning about using return
statements in Ghost management code.
* exp_ch3.adb (Freeze_Type): Add a warning about using return
statements in Ghost management code.
* exp_ch7.adb (Build_Invariant_Procedure_Body,
Build_Invariant_Procedure_Declaration): Add a warning about
using return statements in Ghost management code.
* exp_disp.adb (Make_DT): Add a warning about using return
statements in Ghost management code.
* exp_util.adb (Build_DIC_Procedure_Body,
Build_DIC_Procedure_Declaration, Make_Predicated_Call): Add a
warning about using return statements in Ghost management code.
* freeze.adb (Freeze_Entity): Add a warning about using return
statements in Ghost management code.
* sem.adb (Analyze, Do_Analyze): Add a warning about using return
statements in Ghost management code.
* sem_ch3.adb (Analyze_Object_Declaration, Process_Full_View): Add
a warning about using return statements in Ghost management code.
* sem_ch5.adb (Analyze_Assignment): Add a warning about using
return statements in Ghost management code.
* sem_ch6.adb (Analyze_Procedure_Call,
Analyze_Subprogram_Body_Helper): Add a warning about using return
statements in Ghost management code.
* sem_ch7.adb (Analyze_Package_Body_Helper): Add a warning about
using return statements in Ghost management code.
* sem_ch12.adb (Analyze_Package_Instantiation,
Analyze_Subprogram_Instantiation, Instantiate_Package_Body,
Instantiate_Subprogram_Body): Add a warning about using return
statements in Ghost management code.
* sem_ch13.adb (Build_Predicate_Functions,
Build_Predicate_Function_Declarations): Add a warning about
using return statements in Ghost management code.
* sem_prag.adb (Analyze_Contract_Cases_In_Decl_Part,
Analyze_Initial_Condition_In_Decl_Part, Analyze_Pragma,
Analyze_Pre_Post_Condition_In_Decl_Part):  Add a warning about
using return statements in Ghost management code.

2017-01-13  Tristan Gingold  <gingold@adacore.com>

* s-mmosin-mingw.adb: Fix pragma import.

2017-01-13  Arnaud Charlet  <charlet@adacore.com>

* gnat1drv.adb (Adjust_Global_Switches): Ignore -gnateE in
codepeer mode.

From-SVN: r244396

7 years agoatree.adb (Allocate_Initialize_Node): A newly created node is no longer marked as...
Hristian Kirtchev [Fri, 13 Jan 2017 09:34:48 +0000 (09:34 +0000)]
atree.adb (Allocate_Initialize_Node): A newly created node is no longer marked as Ghost at this level.

2017-01-13  Hristian Kirtchev  <kirtchev@adacore.com>

* atree.adb (Allocate_Initialize_Node): A newly created node is
no longer marked as Ghost at this level.
(Mark_New_Ghost_Node): New routine.
(New_Copy): Mark the copy as Ghost.
(New_Entity): Mark the entity as Ghost.
(New_Node): Mark the node as Ghost.
* einfo.adb (Is_Checked_Ghost_Entity): This attribute can now
apply to unanalyzed entities.
(Is_Ignored_Ghost_Entity): This attribute can now apply to unanalyzed
entities.
(Set_Is_Checked_Ghost_Entity): This attribute now
applies to all entities as well as unanalyzed entities.
(Set_Is_Ignored_Ghost_Entity): This attribute now applies to
all entities as well as unanalyzed entities.
* expander.adb Add with and use clauses for Ghost.
(Expand): Install and revert the Ghost region associated with the node
being expanded.
* exp_ch3.adb (Expand_Freeze_Array_Type): Remove all Ghost-related code.
(Expand_Freeze_Class_Wide_Type): Remoe all Ghost-related code.
(Expand_Freeze_Enumeration_Type): Remove all Ghost-related code.
(Expand_Freeze_Record_Type): Remove all Ghost-related code.
(Freeze_Type): Install and revert the Ghost region associated
with the type being frozen.
* exp_ch5.adb Remove with and use clauses for Ghost.
(Expand_N_Assignment_Statement): Remove all Ghost-related code.
* exp_ch6.adb Remove with and use clauses for Ghost.
(Expand_N_Procedure_Call_Statement): Remove all Ghost-relatd code.
(Expand_N_Subprogram_Body): Remove all Ghost-related code.
* exp_ch7.adb (Build_Invariant_Procedure_Body): Install and revert the
Ghost region of the working type.
(Build_Invariant_Procedure_Declaration): Install and revert
the Ghost region of the working type.
(Expand_N_Package_Body): Remove all Ghost-related code.
* exp_ch8.adb Remove with and use clauses for Ghost.
(Expand_N_Exception_Renaming_Declaration): Remove all Ghost-related
code.
(Expand_N_Object_Renaming_Declaration): Remove all Ghost-related code.
(Expand_N_Package_Renaming_Declaration): Remove all Ghost-related code.
(Expand_N_Subprogram_Renaming_Declaration): Remove all Ghost-related
code.
* exp_ch13.adb Remove with and use clauses for Ghost.
(Expand_N_Freeze_Entity): Remove all Ghost-related code.
* exp_disp.adb (Make_DT): Install and revert the Ghost region of
the tagged type. Move the generation of various entities within
the Ghost region of the type.
* exp_prag.adb Remove with and use clauses for Ghost.
(Expand_Pragma_Check): Remove all Ghost-related code.
(Expand_Pragma_Contract_Cases): Remove all Ghost-related code.
(Expand_Pragma_Initial_Condition): Remove all Ghost-related code.
(Expand_Pragma_Loop_Variant): Remove all Ghost-related code.
* exp_util.adb (Build_DIC_Procedure_Body): Install
and revert the Ghost region of the working types.
(Build_DIC_Procedure_Declaration): Install and revert the
Ghost region of the working type.
(Make_Invariant_Call): Install and revert the Ghost region of the
associated type.
(Make_Predicate_Call): Reimplemented. Install and revert the
Ghost region of the associated type.
* freeze.adb (Freeze_Entity): Install and revert the Ghost region
of the entity being frozen.
(New_Freeze_Node): Removed.
* ghost.adb Remove with and use clauses for Opt.
(Check_Ghost_Completion): Update the parameter profile
and all references to formal parameters.
(Ghost_Entity): Update the comment on usage.
(Install_Ghost_Mode): New routines.
(Is_Ghost_Assignment): New routine.
(Is_Ghost_Declaration): New routine.
(Is_Ghost_Pragma): New routine.
(Is_Ghost_Procedure_Call): New routine.
(Is_Ghost_Renaming): Removed.
(Is_OK_Declaration): Reimplemented.
(Is_OK_Pragma): Reimplemented.
(Is_OK_Statement): Reimplemented.
(Is_Subject_To_Ghost): Update the comment on usage.
(Mark_And_Set_Ghost_Assignment): New routine.
(Mark_And_Set_Ghost_Body): New routine.
(Mark_And_Set_Ghost_Completion): New routine.
(Mark_And_Set_Ghost_Declaration): New routine.
(Mark_And_Set_Ghost_Instantiation): New routine.
(Mark_And_Set_Ghost_Procedure_Call): New routine.
(Mark_Full_View_As_Ghost): Removed.
(Mark_Ghost_Declaration_Or_Body): New routine.
(Mark_Ghost_Pragma): New routine.
(Mark_Ghost_Renaming): New routine.
(Mark_Pragma_As_Ghost): Removed.
(Mark_Renaming_As_Ghost): Removed.
(Propagate_Ignored_Ghost_Code): Update the comment on usage.
(Prune_Node): Freeze nodes no longer need special pruning, they
are processed by the general ignored Ghost code mechanism.
(Restore_Ghost_Mode): New routine.
(Set_Ghost_Mode): Reimplemented.
(Set_Ghost_Mode_From_Entity): Removed.
* ghost.ads Add with and use clauses for Ghost.
(Check_Ghost_Completion): Update the parameter profile
along with the comment on usage.
(Install_Ghost_Mode): New routine.
(Is_Ghost_Assignment): New routine.
(Is_Ghost_Declaration): New routine.
(Is_Ghost_Pragma): New routine.
(Is_Ghost_Procedure_Call): New routine.
(Mark_And_Set_Ghost_Assignment): New routine.
(Mark_And_Set_Ghost_Body): New routine.
(Mark_And_Set_Ghost_Completion): New routine.
(Mark_And_Set_Ghost_Declaration): New routine.
(Mark_And_Set_Ghost_Instantiation): New routine.
(Mark_And_Set_Ghost_Procedure_Call): New routine.
(Mark_Full_View_As_Ghost): Removed.
(Mark_Ghost_Pragma): New routine.
(Mark_Ghost_Renaming): New routine.
(Mark_Pragma_As_Ghost): Removed.
(Mark_Renaming_As_Ghost): Removed.
(Restore_Ghost_Mode): New routine.
(Set_Ghost_Mode): Redefined.
(Set_Ghost_Mode_From_Entity): Removed.
* sem.adb (Analyze): Install and revert the Ghost region of the
node being analyzed.
(Do_Analyze): Change the way a clean Ghost
region is installed and reverted.
* sem_ch3.adb (Analyze_Full_Type_Declaration): Remove
all Ghost-related code.
(Analyze_Incomplete_Type_Decl): Remove all Ghost-related code.
(Analyze_Number_Declaration): Remove all Ghost-related code.
(Analyze_Object_Declaration): Install and revert the Ghost region of
a deferred object declaration's completion.
(Array_Type_Declaration): Remove all Ghost-related code.
(Build_Derived_Type): Update the comment on
the propagation of Ghost attributes from a parent to a derived type.
(Derive_Subprogram): Remove all Ghost-related code.
(Make_Class_Wide_Type): Remove all Ghost-related code.
(Make_Implicit_Base): Remove all Ghost-related code.
(Process_Full_View): Install and revert the Ghost region of
the partial view.  There is no longer need to check the Ghost
completion here.
* sem_ch5.adb (Analyze_Assignment): Install and revert the Ghost
region of the left hand side.
* sem_ch6.adb (Analyze_Abstract_Subprogram_Declaration): Remove
all Ghost-related code.
(Analyze_Expression_Function): Remove all Ghost-related code.
(Analyze_Generic_Subprogram_Body): Remove all Ghost-related code.
(Analyze_Procedure_Call): Install and revert the Ghost region of
the procedure being called.
(Analyze_Subprogram_Body_Helper): Install and revert the Ghost
region of the spec or body.
(Analyze_Subprogram_Declaration): Remove all Ghost-related code.
(Build_Subprogram_Declaration): Remove all Ghost-related code.
(Find_Corresponding_Spec): Remove all Ghost-related code.
(Process_Formals): Remove all Ghost-related code.
* sem_ch7.adb (Analyze_Package_Body_Helper): Install and revert
the Ghost region of the spec.
(Analyze_Package_Declaration): Remove all Ghost-related code.
* sem_ch8.adb (Analyze_Exception_Renaming): Mark a renaming as
Ghost when it aliases a Ghost entity.
(Analyze_Generic_Renaming): Mark a renaming as Ghost when it aliases
a Ghost entity.
(Analyze_Object_Renaming): Mark a renaming as Ghost when
it aliases a Ghost entity.
(Analyze_Package_Renaming): Mark a renaming as Ghost when it aliases
a Ghost entity.
(Analyze_Subprogram_Renaming): Mark a renaming as Ghost when it
aliases a Ghost entity.
* sem_ch11.adb Remove with and use clauses for Ghost.
(Analyze_Exception_Declaration): Remove all Ghost-related code.
* sem_ch12.adb (Analyze_Generic_Package_Declaration): Remove all
Ghost-related code.
(Analyze_Generic_Subprogram_Declaration): Remove all Ghost-related
code.
(Analyze_Package_Instantiation): Install and revert the Ghost region
of the package instantiation.
(Analyze_Subprogram_Instantiation): Install
and revert the Ghost region of the subprogram instantiation.
(Instantiate_Package_Body): Code clean up. Install and revert the
Ghost region of the package body.
(Instantiate_Subprogram_Body): Code clean up. Install and revert the
Ghost region of the subprogram body.
* sem_ch13.adb (Build_Predicate_Functions): Install
and revert the Ghost region of the related type.
(Build_Predicate_Function_Declaration): Code clean up. Install
and rever the Ghost region of the related type.
* sem_prag.adb (Analyze_Contract_Cases_In_Decl_Part):
Install and revert the Ghost region of the pragma.
(Analyze_Initial_Condition_In_Decl_Part): Install and revert the
Ghost region of the pragma.
(Analyze_Pragma): Install and revert the Ghost region of various
pragmas.  Mark a pragma as Ghost when it is related to a Ghost entity
or encloses a Ghost entity.
(Analyze_Pre_Post_Condition): Install and revert the Ghost
region of the pragma.
(Analyze_Pre_Post_Condition_In_Decl_Part): Install and revert the
Ghost region of the pragma.
* sem_res.adb (Resolve): Remove all Ghost-related code.
* sem_util.adb (Is_Declaration): Reimplemented.
(Is_Declaration_Other_Than_Renaming): New routine.
* sem_util.ads (Is_Declaration_Other_Than_Renaming): New routine.
* sinfo.adb (Is_Checked_Ghost_Pragma): New routine.
(Is_Ghost_Pragma): Removed.
(Is_Ignored_Ghost_Pragma): New routine.
(Set_Is_Checked_Ghost_Pragma): New routine.
(Set_Is_Ghost_Pragma): Removed.
(Set_Is_Ignored_Ghost_Pragma): New routine.
* sinfo.ads: Update the documentation on Ghost mode and
Ghost regions. New attributes Is_Checked_Ghost_Pragma
and Is_Ignored_Ghost_Pragma along with usages in nodes.
Remove attribute Is_Ghost_Pragma along with usages in nodes.
(Is_Checked_Ghost_Pragma): New routine along with pragma Inline.
(Is_Ghost_Pragma): Removed along with pragma Inline.
(Is_Ignored_Ghost_Pragma): New routine along with pragma Inline.
(Set_Is_Checked_Ghost_Pragma): New routine along with pragma Inline.
(Set_Is_Ghost_Pragma): Removed along with pragma Inline.
(Set_Is_Ignored_Ghost_Pragma): New routine along with pragma Inline.

From-SVN: r244395

7 years agore PR tree-optimization/77283 (Revision 238005 disables loop unrolling)
Richard Biener [Fri, 13 Jan 2017 08:47:57 +0000 (08:47 +0000)]
re PR tree-optimization/77283 (Revision 238005 disables loop unrolling)

2017-01-13  Richard Biener  <rguenther@suse.de>

PR tree-optimization/77283
* gcc.dg/tree-ssa/split-path-9.c: Fix.

From-SVN: r244394

7 years agogimple-parser.c (c_parser_gimple_postfix_expression): Parse _Literal ( type-name...
Richard Biener [Fri, 13 Jan 2017 08:16:59 +0000 (08:16 +0000)]
gimple-parser.c (c_parser_gimple_postfix_expression): Parse _Literal ( type-name ) number.

2017-01-13  Richard Biener  <rguenther@suse.de>

c/
* gimple-parser.c (c_parser_gimple_postfix_expression): Parse
_Literal ( type-name ) number.

* tree-pretty-print.c (dump_generic_node): Dump INTEGER_CSTs
as _Literal ( type ) number in case usual suffixes do not
preserve all information.

* gcc.dg/gimplefe-22.c: New testcase.

From-SVN: r244393

7 years agore PR tree-optimization/77283 (Revision 238005 disables loop unrolling)
Richard Biener [Fri, 13 Jan 2017 08:11:01 +0000 (08:11 +0000)]
re PR tree-optimization/77283 (Revision 238005 disables loop unrolling)

2017-01-13  Richard Biener  <rguenther@suse.de>

PR tree-optimization/77283
* gimple-ssa-split-paths.c: Include gimple-ssa.h, tree-phinodes.h
and ssa-iterators.h.
(is_feasible_trace): Implement a cost model based on joiner
PHI node uses.

* gcc.dg/tree-ssa/split-path-7.c: Adjust.
* gcc.dg/tree-ssa/split-path-8.c: New testcase.
* gcc.dg/tree-ssa/split-path-9.c: Likewise.

From-SVN: r244392

7 years agoDaily bump.
GCC Administrator [Fri, 13 Jan 2017 00:16:16 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r244391

7 years agopr77862.c: Require fpic target.
Sandra Loosemore [Thu, 12 Jan 2017 22:42:33 +0000 (17:42 -0500)]
pr77862.c: Require fpic target.

2017-01-12  Sandra Loosemore  <sandra@codesourcery.com>

gcc/testsuite/
* gcc.dg/pr77862.c: Require fpic target.

From-SVN: r244387

7 years agore PR target/79004 (ICE in gcc.dg/torture/fp-int-convert-float128-ieee.c with -mcpu...
Michael Meissner [Thu, 12 Jan 2017 22:02:57 +0000 (22:02 +0000)]
re PR target/79004 (ICE in gcc.dg/torture/fp-int-convert-float128-ieee.c with -mcpu=power9)

[gcc]
2017-01-12  Michael Meissner  <meissner@linux.vnet.ibm.com>

PR target/79004
* config/rs6000/rs6000.md (FP_ISA3): Do not optimize converting
char or short to __float128/_Float128 directly.

[gcc/testsuite]
2017-01-12  Michael Meissner  <meissner@linux.vnet.ibm.com>

PR target/79004
* gcc.target/powerpc/pr79004.c: New test.

From-SVN: r244386

7 years ago(-Wformat-overflow): ...to this.
Martin Sebor [Thu, 12 Jan 2017 21:54:41 +0000 (21:54 +0000)]
(-Wformat-overflow): ...to this.

gcc/c-family/ChangeLog:

(-Wformat-overflow): ...to this.

gcc/ChangeLog:

to -Wformat-overflow.
* gimple-ssa-sprintf.c (pass_sprintf_length::gate): Adjust.
(min_bytes_remaining): Same.
(get_string_length): Same.
(format_string): Same.
(format_directive): Same.
(add_bytes): Same.
(pass_sprintf_length::handle_gimple_call): Same.

gcc/testsuite/ChangeLog:

* gcc.dg/pr78138.c: Adjust.
* gcc.dg/pr78768.c: Adjust.
* gcc.dg/tree-ssa/builtin-sprintf-4.c: Adjust.
* gcc.dg/tree-ssa/builtin-sprintf-warn-1.c: Adjust.
* gcc.dg/tree-ssa/builtin-sprintf-warn-2.c: Adjust.
* gcc.dg/tree-ssa/builtin-sprintf-warn-3.c: Adjust.
* gcc.dg/tree-ssa/builtin-sprintf-warn-4.c: Adjust.
* gcc.dg/tree-ssa/builtin-sprintf-warn-6.c: Adjust.
* gcc.dg/tree-ssa/builtin-sprintf-warn-7.c: Adjust.
* gcc.dg/tree-ssa/builtin-sprintf-warn-8.c: Adjust.
* gcc.dg/tree-ssa/builtin-sprintf-warn-9.c: Adjust.
* gcc.dg/tree-ssa/pr78605.c: Adjust.
* gcc.dg/tree-ssa/pr78622.c: Adjust.

From-SVN: r244385